Child or Prefixed, Merged Containers

Feature
I'd like to propose the ability to create a container with a key prefix so that all of the definitions on this container will be prefixed. This would very similar to cache key prefix. This also however, would then need the ability to merge/join containers together.
<?php

use Pimple\Container;

$app = new Container();
$app['key1'] = function() {};
$sub = new Container('app.prefix.');
$sub['key1'] = function() {};

$app = $app->join($sub); // join/merge not sure which method name I prefer
// this app now contains the keys: `key1` and `app.prefix.key1`

This would help a lot, but another feature similar to this that would be even nicer would be Child/View containers. In this scenario, a parent container can create a prefixed child container, when you look up a service in this child container, it will look in its own definitions first, if not found, then delegates responsibility to the parent container.
<?php

use Pimple\Container;

$app = new Container();
$app['app.key'] = function() {};
$child = $app->child('app.some_prefix.');
$child['key']; // this would resolve to `app.key` because the child container doesn't have this definition

Implementation
Now, you could skin this cat a few different ways. The straight forward solution would to just add these methods into the Pimple\Container, there'd be no BC breaks.
Another implementation (the one I'd really prefer), is if you created a ContainerInterface for Pimple. In this event, you could simply create decorators for each of these features. You could create a Prefix decorator that would take an app and apply a prefix to it. On set, it applies the prefix, on fetch or has, it will apply the prefix, if no match, then it will take out prefix and try again. In addition, using an interface would open up to a bunch of different possibilities of cool things you could do without breaking or even adding any API's.
example:

$app = new Pimple\Container();
$app['key'] = function() {};
$prefixed = new Pimple\PrefixedContainer($app, 'app.prefix.');
$prefixed['key1'] = function() {};

// $app now has two keys: `key` and `app.prefix.key`

Why
In some of my larger applications that use pimple, I create a service provider per module. Then I create one service provider for my entire application that will just register each of the modules service provider. And in some cases, I might have submodules that are big enough to warrant their own Service providers, and so I'll create like a hierarchy of service providers to help keep everything modularized and maintainable. Here's a small example.
src/ModuleA/ModuleAServiceProvider.php
src/ModuleB/ModuleBServiceProvider.php
src/ModuleB/ModuleC/ModuleCServiceProvider.php
src/AppServiceProvider.php

and then AppServiceProvider would look like:
<?php

public function register(Container $app) {
    $app->register(new ModuleA\ModuleAServiceProvider());
    $app->register(new ModuleB\ModuleBServiceProvider());
   // module c was registered in side of module b
}

Anyways, when you have a lot of service providers, you tend to namespace your keys for the container. So in module C, some of my keys would look like
myapp.module_b.module_c.some_provided_service

As you can see, these can get very long especially, if your namespace depth is large for some of these names. Having type out or copy and paste can be buggy at times. Hence, where being able to define your services in a prefixed container would help a lot with this.
Conclusion
I don't know if this feature is too specific to my needs or not, so that's why I'm posting it in here to get a feel for how other developers use pimple. I'm also more than willing to do the PR for this, but I didn't want to do the work if this wasn't something the community would agree on.

hello? anyone there?

IMO, this is outside the scope of Pimple itself

An alternative is to set the prefix as an argument of the ServiceProvider.
That's how the PredisServiceProvider can be registered several times with a different service prefix.

@GromNan I've done that before where you create a variable for the prefix, but because php closures don't automatically include outside vars, you have to constantly write use.

I did some more thinking about this, and my decorator implementation actually wouldn't work because of the app's injection into the register function. If you decorated the container, you can define service no problem; however, the container that's passed into the function would still be the default container where the prefixes won't apply.
So I guess:
$p = 'app.prefix.'

$app[$p.'service'] = function($app) use ($p) {
    return new Service($app[$p.'other_service']);
};

will have to be fine for now.
We can close this...


Add support of a custom executor

This PR adds support of a custom executors (defaults to tokio::executor::DefaultExecutor).
Required bounds for supported executors are defined as MyExecutor trait.
New constructors:

Conn::with_executor
Conn::from_url_with_executor
Pool::with_executor
Pool::from_url_with_executor

Changes to existing code should be minimal because of default value for new type parameter on Pool and Conn.

@PvdBerg1998, could you please test this branch with your executor?

Looks great! I'll test it now.

I have a question: what happens when the Pool is dropped? Are existing connections dropped immediately? Because requiring the Executor in drop would mean trouble for my usecase and I think it's weird to do so. Or are the connections only cleaned up when manually calling disconnect?

The same concern I have about this function: https://github.com/blackbeam/mysql_async/blob/7a978e629f891b4d8d12312270aaa2a9131ac163/src/conn/mod.rs#L39. Also, this still is hardcoded to use tokio.

I found something weird: my process does not exit after main finishes? Details:

The executor is halted, so it will fail to spawn a future.
The database pool is dropped at the end of main
Perhaps something is waiting forever inside a drop impl?

I found the issue: I have a wrapping type around a Pool, with a Drop impl that does this:
let _ = block_on(self.pool.clone().disconnect().compat());

Apparently this blocks forever when the executor is halted. Any idea how this could be prevented?

@blackbeam I would really like to fix this issue. Just fyi the PR most likely breaks something (or, hopefully, I'm doing something wrong) so it shouldn't be merged yet. If we wait until async await is stable and tokio is updated, I can move back to using tokio and this is no longer an issue. Still it is a nice flexibility feature but I expect tokio to get used most of the time


OAuth2: Minting an authkey with a tag it belongs to doesn't work - only child tags

Here's a tricky bug: When you assign a tag "tag:hoopsnake" to your OAuth2 client, you can not mint authkeys for that tag, you must use a child tag. Everything else fails with requested tags [tag:hoopsnake] are invalid or not permitted.
As mentioned, you have to use a child tag.
Say you have this tag structure:
        "tagOwners": {
		// hoopsnake for initrd boots:
		"tag:hoopsnake"<EMAIL_ADDRESS>		"tag:hoopsnake-selfhosted": ["tag:hoopsnake"],
		"tag:hoopsnake-remote":     ["tag:hoopsnake"],
        ...
        }

Then you can only request authkeys for tag:hoopsnake-selfhosted or tag:hoopsnake-remote (or both!), but no combination of the two with tag:hoopsnake in it.

Adding a couple files to highlight the differences in the HTTP requests between a working cURL based script and hoopsnake. I'm using OAuth creds that have device write permissions on a parent tag,
	"tagOwners": {
		"tag:workloads":      ["joshpearce@github"],
		"tag:hoopsnake-init": ["tag:workloads"],
	},

ts-oauth-curl-good.txt
ts-oauth-golib-bad.txt

Here's a capture from hoopsnake during boot, where it works.
ts-oauth-hoopsnake-boot-good.txt


Monad.lift(*) tests added

Current coverage is 94.74%

Merging #978 into master will increase coverage by +0.50% as of b33a192

@@            master    #978   diff @@
======================================
  Files           74      74
  Stmts         8884    8884
  Branches      1706    1706
  Methods          0       0
======================================
+ Hit           8373    8417    +44
  Partial        148     148
+ Missed         363     319    -44

Review entire Coverage Diff as of b33a192

Powered by Codecov. Updated on successful CI builds.

Thx :-))


Rust import: Traits on generated bindings

Hello again!
I have two types:
record entity-id {
    namespace: u8,
    id: u64,
    gen: s32,
}

enum event-type {
    game-start,
    frame,
    player-spawn,
}

For the former, I'd like to derive/implement PartialEq (so that I can compare IDs), and for the latter, I'd like to derive/implement Hash (so that I can use it as a hashmap key). Unfortunately, the current binding generation model doesn't really allow for this as you can't implement traits on foreign types in Rust.
I was wondering if there was a solution planned for this/the general problem of implementing additional behaviours on top of the binding types. Is my best bet just to newtype away? If so, how should I handle the bound functions that consume these types like entity-freeze: func(object: entity-id) - wrap them in functions that convert to/from the newtype?

I've thought some about it. My preferred solution is to switch from using  a proc macro in Rust to using an attribute macro, and then adding annotations that let you attach extra derives to things.
e.g.
#[wit-bindgen]
#[export("game.wit")]
#[add_derive("entity-id", PartialEq)]
struct Game;

That sounds like a promising start, but I see two potential problems / things to account for:

User-defined traits would be nice to have - for example, a custom Display (the host code uses a colon-separated representation for EntityId), or operator overloading for Vec3 (f32 x, y, z). With that being said, for Vec3 specifically, I'm thinking I'll hide the interface types and just add some casting to/from glam's Vec3.
Using attributes might get unwieldy if you have a lot of additions you need to make to the generated code, like having to add derives to every type you define.

My suggestion to address both issues would be an "augmentations" code block could be passed as the last argument of the proc macro:
wit_bindgen_rust::import!("src/main.wit", {
  #[derive(Hash, PartialEq)]
  struct EntityId;

  impl Display for EntityId { /* ... */ }
});

The only bit of magic would be associating the derives with the relevant structs.
That being said, I'm leaning more towards using the generated types purely at the interface layer, and building my own interface atop that, even though it's a bit of extra work. Is there any prior art / thoughts on how bindgen should be used 'canonically', or are things still in flux?

Another thing I've just realised would be nice to have is adding doc comments to types, but I'm not sure if that would be best handled as an "augmentation" or within the .wit file itself.

Another thing I've just realised would be nice to have is adding doc comments to types, but I'm not sure if that would be best handled as an "augmentation" or within the .wit file itself.

wit-bindgen already supports doc comments in .wit files, using triple-slash comments. They should probably be added to WIT.md.

Ah, my apologies, you're absolutely right! Should've tried that first 🤦

@philpax the solution you proposed doesn't mesh very well with how wit-bindgen is currently structured. We're not really taking in your Rust code and extending it, we're parsing a *.wit file and then dumping the results where you called the macro. These features will be much easier (and thus more likely) to implement if they are framed as things that configure the existing code generator instead of things that require the code generators to be rewritten.

Yes, I know - I'm not suggesting extending existing Rust code with the bindings from the wit, I'm suggesting extending the output of the generator with language-specific augmentations. That is, this example
wit_bindgen_rust::import!("src/main.wit", {
  #[derive(Hash, PartialEq)]
  struct EntityId;
});

tells the code generator to augment its output for EntityId with #[derive(Hash, PartialEq)], and anything that doesn't directly change how a language item is defined would be dumped into the output.
I think that would be easier to understand/manipulate and more flexible for the user than an attribute-based solution, but I also recognise that there would be difficulties associated with this in the implementation (you would basically need to be able to parse a subset of Rust).
An alternative would be to have the bindgen macros not create modules (so that users could augment the content of the generated module directly), but you'd still need a solution for the derive. If this was the case, I'd be fine with the attribute solution, as it should hopefully not occur too often.

If you're using the proc-macro support for wit_bindgen_rust then the type generated isn't a foreign type, it's still crate-local, so I think that PartialEq implementations (and other custom trait implementations) can still be added. I don't think that they can be added via #[derive] since you don't have access to the actual struct definition, but at least to me that seems like a reasonable tradeoff in complexity for generated bindings.
Support for something like this I think is probably best done through the wit-syntax as @Liamolucko mentions where there's something like a language-specific attribute where the Rust generator would recognize "oh add derive(PartialEq)" or something like that.

For a slightly wider context of the issue at hand: @theduke may be working on a proposal to address this (component-model issue #58). Seems to me that with this being a syntax issue, it might be better discussed further in the component-model repo.

Note that support for custom derives has landed thanks to @thomastaylor312 : https://github.com/bytecodealliance/wit-bindgen/pull/678

Awesome! Thanks to Thomas for implementing this :D

Default doesn't work though


Make it so that the numba.__version__ ends up in the reportable error message copy-paste sections.

Feature request
Make it so that the numba.__version__ ends up in the reportable error message copy-paste sections.

https://github.com/numba/numba/commit/11a00b87136e79d54074fbfdc888db4948b52f52 does this, but for help messages.


Adding CDEP example

simple app cut out from hello-libs to showcase the CDEP
@jomof  PTAL, thx

Runs on Pixel fine, merging it in!


Added mouse sensitivity to rootcamera and improved efficiency of the cameras.

RootCamera.Sensitivity can eventually be turned into some easily accessibly value of player or mouse

Mouse sensitivity sounds like a good idea to eventually have in the settings or read from the OS, but I am not confident in this implementation. It looks like one of big things that you are doing is replacing the renderstepped update with a mouse moved update loop. Unfortunately, there are a very large number of cases where the camera needs to be updated even if the mouse has not received updates.
Examples may include:
Moving your character with the keyboards
An object moving in-between you and the camera and the camera needs to pop in
Updating character transparency based on the distance from your character changing
Zooming in and out or moving the camera around using keyboard commands (i,o, <, >, pageup, pagedown)
Values changing such as CameraOffset on humanoid
The CameraSubject changed to a new subject

Ah, didnt realise about those flaws with the mouse changed instead of render stepped, probally due to my testing enviroment having the coregui camera running at the same time also running the poppercam to make up for when my camera didnt use it.
And with mouse sensitivity my reasoning behind that was not for a game wide mouse sensitivity or anything like that, more of a way to change the sensitivity the mouse is moved in first person in a script, for instance ads on a gun.

Having a lot of built-in features, used (a lot) or not, isn't that bad of an idea.
Developers are encouraged to copy those scripts, improve and re-improve them.
With some code snippets on how to do certain stuff, editing will be a lot easier.


[1.5.0] Cosign attestations

docs for Cosign attestations:
https://github.com/kyverno/kyverno/issues/2486
apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
  name: check-image
spec:
  validationFailureAction: enforce
  background: false
  rules:
    - name: check-image
      match:
        resources:
          kinds:
            - Pod
      verifyImages:
      - image: "ghcr.io/jimbugwadia/*"
        key: |-
          -----BEGIN PUBLIC KEY-----
          MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEHMmDjK65krAyDaGaeyWNzgvIu155
          JI50B2vezCw8+3CVeE0lJTL5dbL3OP98Za0oAEBJcOxky8Riy/XcmfKZbw==
          -----END PUBLIC KEY-----
      - image: "ghcr.io/jimbugwadia/*"
        key: |-
          -----BEGIN PUBLIC KEY-----
          MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEHMmDjK65krAyDaGaeyWNzgvIu155
          JI50B2vezCw8+3CVeE0lJTL5dbL3OP98Za0oAEBJcOxky8Riy/XcmfKZbw==
          -----END PUBLIC KEY-----
        attestations:
        - predicateType: https://example.com/CodeReview/v1
          conditions:
            - all:
              - key: "{{ repo.uri }}"
                operator: Equals
                value: "https://github.com/example/my-project"
              - key: "{{ repo.branch }}"
                operator: Equals
                value: "prod"

It looks like there's already a section here  where this appears to be covered. I would need your help to understand if there is anything further needed.


Feature/invoice company endpoint

Added backend endpoint for the db calls selecting a specific company id from invoice

wow. great pr. 10/10 would review again


Add JobSpawn() function for plugin interface

Accepting shell command as string can cause problems for some cases, so I think it is nice to have an interface to invode external programs with argument lists.
For example, when one of installed plugins has a line like  JobStart("./compile.sh " .. buf.Path), and open a file which has a name like a b c.txt in micro, then an unexpected command will be executed.
JobSpawn can avoid cases like this.

First of all, we shouldn't be changing JobStart and replacing it with JobSpawn, because that breaks backwards compatibility. I'm not really sure I see the use for changing JobStart because it would be so similar to the new JobSpawn.
Perhaps what you are looking for is a way to run shell commands as jobs (so that the shell will parse the command first). In that case, I think it would be good to add a JobShell command which runs the given cmd:
func JobShell(cmd string, onStdout, onStderr, onExit string) *exec.Cmd {
    return JobStart("sh", onStdout, onStderr, onExit, "-c", cmd)
}

Thank you for reviewing!

because that breaks backwards compatibility

No, this patch does not break backward compatibility.
Here I only add one new function JobSpawn, and do not change the behavior of existing functions at all (at least, I mean to). JobStart will completely work in the same way as it works now with this patch.

Perhaps what you are looking for is a way to run shell commands as jobs

It is not what I want, and actually this idea is much much worse, IMO.
For example, consider opening a file like a.txt; rm -rf /*. micro tries to delete all files when a plugin is going to run a command for this file with this function (Quoting filename does not solve this. How about a.txt'; rm -rf '/ ! ).
I know this example is very artificial, but IMO it is not good when plugins has a possibility to run unexpected command, anyway.

Oh I'm sorry, I misunderstood what you were trying to do with this pull request. This is a good addition. Sorry about that!

No problem!
Thanks 👍


CocoaPods could not find compatible versions

CocoaPods could not find compatible versions for pod "desktop_webview_window":
In Podfile:
desktop_webview_window (from Flutter/ephemeral/.symlinks/plugins/desktop_webview_window/macos)
Specs satisfying the desktop_webview_window (from Flutter/ephemeral/.symlinks/plugins/desktop_webview_window/macos) dependency were found, but they required a higher minimum deployment target.

seems duplicate of https://github.com/MixinNetwork/flutter-plugins/issues/32
Can you take a try with https://github.com/MixinNetwork/flutter-plugins/issues/32#issuecomment-986860258


Add more badges

badges

repo size
issues
pull requests

Self evaluation:

Build test:	 [X]Passed [ ]Failed [ ]Skipped
Run test:	 [X]Passed [ ]Failed [ ]Skipped

Signed-off-by: jijoong.moon<EMAIL_ADDRESS>

:memo: TAOS-CI Version: 1.4.20191203. Thank you for submitting PR #47. Please a submit 1commit/1PR (one commit per one PR) policy to get comments quickly from reviewers. Your PR must pass all verificiation processes of cibot before starting a review process from reviewers. If you are new member to join this project, please read manuals in documentation folder and wiki page. In order to monitor a progress status of your PR in more detail, visit http://ec2-54-180-96-14.ap-northeast-2.compute.amazonaws.com/.

INFO: You can read if there are misspelled characters at our misspelling check report. Please read http://ec2-54-180-96-14.ap-northeast-2.compute.amazonaws.com/nntrainer/ci/repo-workers/pr-checker/47-202004200852440.91023302078247-2780aa88e4a5595fe7fd23df4b39a2d5ecd70692/report/misspelling_result.txt.


Bug: cannot access admin features

V7.0.977 - i only have one user account on the entire server. If I try to go to /admin or /accounts, I immediately get redirected to my project page.  On /admin, the page shows for a split second and says something like I'm not authorized.

How do I toggle the isMasterAdmin property for my user account in the database?

Flip isMaterAdmin in Users Table for that user. Log out and log back in.


Handle cases where a Kobo device hasn't been seen before

There should be a fallback option for newly released Kobos that October doesn't support

Defered this to post-v1.0.0 because I don't believe there are currently any Kobos that October doesn't support

The underlying kobo utils library I'm using was updated to support new kobos so fallbacks I have are irrelevant

Addressed in #49

This is now supported


Describe CI/CD jobs

Description
Changes proposed in this pull request:
-describe pre submit and post submit CI/CD jobs
Related issue(s)
https://github.com/kyma-project/keda-manager/issues/105

/cla-recheck


Could not find com.google.android.exoplayer:exoplayer:2.13.2

Hi! 👋
Firstly, thanks for your work on this project! 🙂
Today I used patch-package to patch<EMAIL_ADDRESS>for the project I'm working on.

Here is the diff that solved my problem:
diff --git a/node_modules/react-native-video/android-exoplayer/build.gradle b/node_modules/react-native-video/android-exoplayer/build.gradle
index d005a58..6a9922b 100644
--- a/node_modules/react-native-video/android-exoplayer/build.gradle
+++ b/node_modules/react-native-video/android-exoplayer/build.gradle
@@ -28,7 +28,7 @@ android {

 dependencies {
     implementation "com.facebook.react:react-native:${safeExtGet('reactNativeVersion', '+')}"
-    implementation('com.google.android.exoplayer:exoplayer:2.13.2') {
+    implementation('com.google.android.exoplayer:exoplayer:2.13.3') {
         exclude group: 'com.android.support'
     }

@@ -37,7 +37,7 @@ dependencies {
     implementation "androidx.core:core:1.1.0"
     implementation "androidx.media:media:1.1.0"

-    implementation('com.google.android.exoplayer:extension-okhttp:2.13.2') {
+    implementation('com.google.android.exoplayer:extension-okhttp:2.13.3') {
         exclude group: 'com.squareup.okhttp3', module: 'okhttp'
     }
     implementation 'com.squareup.okhttp3:okhttp:${OKHTTP_VERSION}'

This issue body was partially generated by patch-package.

Solved my issue. Thanks.

How to let developers know about this problem?

Please tell the solution in steps.

The culprit for this is likely that exoplayer 2.13.2 is not available on the maven repo: https://mvnrepository.com/artifact/com.google.android.exoplayer/exoplayer
2.13.3 is though.
@erfanshekari could you open a PR with that change?

Also, the latest version of exoplayer is 2.17.1 which exists. But if you use this version in this file,
/node_modules/react-native-video/android-exoplayer/build.gradle b/node_modules/react-native-video/android-exoplayer/build.gradle
then it also will not work.
It seems like react-native-video is written only for 2.13 or lesser version.

thanks, please open a PR

It seems there is no need for PR. This file already has 2.13.3 version: https://github.com/react-native-video/react-native-video/blob/master/android-exoplayer/build.gradle
Can you release new version for this package? This is a painful issue.

@hueniverse this ticket can be closed ! :)

@hueniverse please also release a new version so this is fixed.

I'll see if I can do a quick patch.

Hey, is a 5.2.1 patch still planned?
(The patch-packages hack is still needed until a new version is released)

Unfortunately no patch is planned. This will have to wait until we have a v6 released due to lack of resources to put together a properly tested branch off 5.2.0. Until then, local patching is the way to go (I am using one myself for my projects).

That solved my issue! Thank you!

@hueniverse any timelines on v6? The problem is that patching is fine for testing etc but as part of our product we ask clients to install this package. They going thorough this entire flow is not ideal. Moreover the incremental testing of updating ExoPlayer to a patch version should be minimal. I suggest you consider also making a patch release.

@hueniverse any luck on v6?

@hueniverse  who else is looking after this now? can you please mention them

I should take the lead, but unfortunately, I have no time available yet ...

Has this been resolved in 5.2.1?

@mashad6 yes

Media controls are floating on screen on android. Please help me.


Change the way doNotStrip is set

I don't think this is ideal solution, but it works.
Fixes #92858

@Summersay415 Can you link to the documentation for your change.

Documentation of Godot or Gradle?
If Godot, then here

Documentation of Godot or Gradle? If Godot, then here

Documentation for gradle; from a quick google search, I cannot find any references to project.ext.doNotStrip.

This way property are added to the project to be detected by
ext.shouldNotStrip = { ->     return isAndroidStudio() || project.hasProperty("doNotStrip") }
Previous way of adding doNotStrip parameter didn't work and shouldNotStrip returned false even in dev build. This way of setting property works properly and symbols are saved in resulting template

Sorry for the delay on this PR. I was able to confirm your fix is correct by checking the following documentation:
https://docs.gradle.org/current/javadoc/org/gradle/api/Project.html#properties

Thanks!


Support list of propertysource

i debug this condition is false

This should have been fixed by https://github.com/spring-cloud/spring-cloud-kubernetes/pull/526


Bug: Escape closes Sidebar

Pressing the Escape key, closes the Sidebar, but you can't open it again

@JWO719 I was unable to reproduce this. Perhaps it was fixed, can you confirm?

Hi I could reproduce it in Chrome. You just have to click on an operator and during focus you could hide the sidebar with escape. But this bug also occurs in firefox. I don't want to test it in IE but I'm quite sure there is this bug also :D

Gotcha! Okay I was able to reproduce now. Thanks!

Pressing escape to close the sidebar was intentional. We wanted the ability to skip the menu, for accessibility reasons, after you selected the option you desired. You can open it up, again, by going to the menu and selecting operators.
The bug that does still exist is that on mobile, selecting an operator doesn't close the menu.

@knittingcodemonkey Cool, that makes sense. Glad to hear it was intentional.
As the UX stands right now:
As a user
Given I am on an inner operator page
And the it is not an operator at the top of the menu
And the sidenav is closed
When I select the button to open the sidenav
And I select operators
I start at the top of the list of operators

Would it be better if...
When I select the button to open the sidenav
And I select operators
I start at the place I was at in the list of operators

Re:

The bug that does still exist is that on mobile, selecting an operator doesn't close the menu.
I'll :eyes: for a logged issue, and I can put some effort into fixing that.

I do like the option of setting the focus, when you open the menu, to the page and/or operator on which you are currently located.
The bug for not closing the side menu on mobile sizes is #277. I just added it.

Thanks for making #277 I'll put some :eyes: on it

Thank you for your help, and your contributions! You're doing great work.

Per the discussion here @JWO719 , can we close this issue?
I've opened #278 to capture UX improvements when reopening the sidenav.

closing due to #277


h2::Connection never returns Ready

Running cargo run --example akamai should exit as soon as the response is processed, but the program hangs until presumably the peer hangs up.

Closed by #222.


Fulltext: update query parser to work with the fulltext field

In query parser we should keep supporting the keyword fulltext FCC .

TECH NOTES
Add here a key-value pair which will map fulltext to documents.attachment.content


[Enhancement] Improve command SHOW PROC "/statistics" performance

Why I'm doing:
If there are many tablet in a single db, like hundreds of thousand, there would be millions replica. Then, command SHOW PROC '/statistic' may be very slow to finish, in the meanwhile, it will occupy the db lock during execution, which may slow down other query executions.
The performance bootle neck is that it calls method SystemInfoService.getBackendIds too many times (one call for each replica).
If there are 200 backends, each call may take hundred milliseconds:

To improve command SHOW PROC "/statistics" performance, and other general operation which may call SystemInfoService.getBackendIds.
The main performance bottle neck of method SystemInfoService.getBackendIds is that it calls this.getBackend(...), which is unnecessary.

I made a micro benchmark for this improvement, if there are 200 backends, and 1000000 replicas, we can gain 5X performance improvement.

What type of PR is this:

[ ] BugFix
[ ] Feature
[x] Enhancement
[ ] Refactor
[ ] UT
[ ] Doc
[ ] Tool

Does this PR entail a change in behavior?

[x] Yes, this PR will result in a change in behavior.
[ ] No, this PR will not result in a change in behavior.

If yes, please specify the type of change:

[ ] Interface/UI changes: syntax, type conversion, expression evaluation, display information
[ ] Parameter changes: default values, similar parameters but with different default values
[ ] Policy changes: use new policy to replace old one, functionality automatically enabled
[ ] Feature removed
[ ] Miscellaneous: upgrade & downgrade compatibility, etc.

Checklist:

[ ] I have added test cases for my bug fix or my new feature
[ ] This pr needs user documentation (for new or modified features or behaviors)
[ ] I have added documentation for my new feature or new function
[ ] This is a backport pr

Bugfix cherry-pick branch check:

[ ] I have checked the version labels which the pr will be auto-backported to the target branch

[x] 3.3
[x] 3.2
[ ] 3.1
[ ] 3.0
[ ] 2.5

@wangshisan wondering what exactly the cost will be in the original implementation, guess it is the additional lookup of getBackend() by id in the concurrent hash map. Is it possible to add additional bench in your test, suppose there will be beNum * invokeNum calls of getBackend, how much time spent on this portion out of the total 5322ms.

@wangshisan wondering what exactly the cost will be in the original implementation, guess it is the additional lookup of getBackend() by id in the concurrent hash map. Is it possible to add additional bench in your test, suppose there will be beNum * invokeNum calls of getBackend, how much time spent on this portion out of the total 5322ms.

Sorry, I made a mistake, the above benchmark didn't set backends to alive, a backend is not alive on created.
In that case, method _iterator.remove_ method took long time...

After set all the backends to alive, I made another benchmark. There is almost 20% improvement..

After set all the backends to alive, I made another benchmark. There is almost 20% improvement..

Yes, that looks reasonable now. So what benefits most from this PR, may not be the performance gain, but a clear and consistent code logic retrieving backends directly from the idToXXXRef.

After set all the backends to alive, I made another benchmark. There is almost 20% improvement..

Yes, that looks reasonable now. So what benefits most from this PR, may not be the performance gain, but a clear and consistent code logic retrieving backends directly from the idToXXXRef.

Yes, the change in class SystemInfoService would not gain much performance improvement.
And the actually improvement comes from here:

According to the above benchmark, a single database takes almost 2 seconds to execute method SystemInfoService.getAvailableBackendIds, 10 databases may take almost 20 seconds. That's a large portion for execution of command SHOW PROC "/statistics".


Fatal error in brand new install of 0.2.0

Describe the bug:
On a brand new installation of secret-manager with the default values (no value modified)
$ helm get values secret-manager --all
COMPUTED VALUES:
affinity: {}
apiServerHost: ""
extraArgs: []
fullnameOverride: ""
healthCheck:
  enabled: true
  port: 8400
image:
  pullPolicy: IfNotPresent
  repository: itscontained/secret-manager
  tag: ""
imagePullSecrets: []
installCRDs: false
kubeConfig: ""
leaderElect: true
nameOverride: ""
namespace: ""
nodeSelector: {}
podAnnotations: {}
podSecurityContext: {}
prometheus:
  enabled: false
  service:
    annotations: {}
    labels: {}
    port: 9321
rbac:
  create: true
replicaCount: 1
resources: {}
securityContext: {}
serviceAccount:
  annotations: {}
  create: true
  name: ""
tolerations: []

It seems the pod has been restarting a few times
$ kubectl get pods
NAME                                                         READY   STATUS    RESTARTS   AGE
secret-manager-79d4d7d758-qqswk                              1/1     Running   10         40m

The logs are the following:
I1015 04:24:50.801817       1 controller.go:132] Starting secret manager controller: version (v0.2.0) (d6720b56b6b27b68878d6e0e49515874ce0fb8b3)
W1015 04:24:50.802776       1 client_config.go:552] Neither --kubeconfig nor --master was specified.  Using the inClusterConfig.  This might not work.
I1015 04:24:50.899921       1 listener.go:44] controller-runtime/metrics "msg"="metrics server is starting to listen"  "addr"=":9321"
I1015 04:24:50.900466       1 controller.go:109] Starting manager
I1015 04:24:50.900542       1 leaderelection.go:242] attempting to acquire leader lease  cluster-services/secret-manager-controller...
I1015 04:24:50.900777       1 internal.go:391] controller-runtime/manager "msg"="starting metrics server"  "path"="/metrics"
I1015 04:26:08.369311       1 leaderelection.go:252] successfully acquired lease cluster-services/secret-manager-controller
I1015 04:26:08.369778       1 controller.go:139] controller "msg"="Starting EventSource" "controller"="externalsecret" "reconcilerGroup"="secret-manager.itscontained.io" "reconcilerKind"="ExternalSecret" "source"={"Type":{"metadata":{"creationTimestamp":null},"spec":{"storeRef":{"name":""}},"status":{}}}
E1015 04:26:08.381047       1 source.go:117] controller-runtime/source "msg"="if kind is a CRD, it should be installed before calling Start" "error"="no matches for kind \"ExternalSecret\" in version \"secret-manager.itscontained.io/v1alpha1\""  "kind"={"Group":"secret-manager.itscontained.io","Kind":"ExternalSecret"}
E1015 04:26:08.399643       1 controller.go:111] Error while running manager: no matches for kind "ExternalSecret" in version "secret-manager.itscontained.io/v1alpha1"
Error: no matches for kind "ExternalSecret" in version "secret-manager.itscontained.io/v1alpha1"
Usage:
  secret-manager-controller [flags]

Flags:
      --health-port int                           The port number to listen on for health connections. (default 8400)
  -h, --help                                      help for secret-manager-controller
      --kubeconfig string                         Path to a kubeconfig. Only required if out-of-cluster.
      --leader-elect                              If true, secret-manager will perform leader election between instances to ensure no more than one instance of secret-manager operates at a time (default true)
      --leader-election-lease-duration duration   The duration that non-leader candidates will wait after observing a leadership renewal until attempting to acquire leadership of a led but un-renewed leader slot. This is effectively the maximum duration that a leader can be stopped before it is replaced by another candidate. This is only applicable if leader election is enabled. (default 1m0s)
      --leader-election-namespace string          Namespace used to perform leader election. Only used if leader election is enabled (default "kube-system")
      --leader-election-renew-deadline duration   The interval between attempts by the acting master to renew a leadership slot before it stops leading. This must be less than or equal to the lease duration. This is only applicable if leader election is enabled. (default 45s)
      --leader-election-retry-period duration     The duration the clients should wait between attempting acquisition and renewal of a leadership. This is only applicable if leader election is enabled. (default 15s)
      --master string                             Optional ApiServer host address to connect to. If not specified, autoconfiguration will be attempted.
      --metric-port int                           The port number that the metrics endpoint should listen on. (default 9321)
      --namespace string                          If set, this limits the scope of secret-manager to a single namespace and ClusterSecretStores are disabled. If not specified, all namespaces will be watched

F1015 04:26:08.400131       1 main.go:33] error executing command: no matches for kind "ExternalSecret" in version "secret-manager.itscontained.io/v1alpha1"
goroutine 1 [running]:
k8s.io/klog/v2.stacks(0xc000124001, 0xc00067e000, 0x9d, 0xf6)
        /go/pkg/mod/k8s.io/klog/v2@v2.3.0/klog.go:996 +0xb8
k8s.io/klog/v2.(*loggingT).output(0x29bb700, 0xc000000003, 0x0, 0x0, 0xc0000aa000, 0x2910fda, 0x7, 0x21, 0x0)
        /go/pkg/mod/k8s.io/klog/v2@v2.3.0/klog.go:945 +0x19d
k8s.io/klog/v2.(*loggingT).printf(0x29bb700, 0x3, 0x0, 0x0, 0x197fc9e, 0x1b, 0xc000a9ff68, 0x1, 0x1)
        /go/pkg/mod/k8s.io/klog/v2@v2.3.0/klog.go:733 +0x17b
k8s.io/klog/v2.Fatalf(...)
        /go/pkg/mod/k8s.io/klog/v2@v2.3.0/klog.go:1463
main.main()
        /workspace/cmd/controller/main.go:33 +0x138

goroutine 18 [chan receive, 1 minutes]:
k8s.io/klog.(*loggingT).flushDaemon(0x29bb620)
        /go/pkg/mod/k8s.io/klog@v1.0.0/klog.go:1010 +0x8b
created by k8s.io/klog.init.0
        /go/pkg/mod/k8s.io/klog@v1.0.0/klog.go:411 +0xd6

goroutine 5 [select, 1 minutes]:
go.opencensus.io/stats/view.(*worker).start(0xc000382000)
        /go/pkg/mod/go.opencensus.io@v0.22.4/stats/view/worker.go:276 +0x100
created by go.opencensus.io/stats/view.init.0
        /go/pkg/mod/go.opencensus.io@v0.22.4/stats/view/worker.go:34 +0x68

goroutine 6 [chan receive, 1 minutes]:
k8s.io/klog/v2.(*loggingT).flushDaemon(0x29bb700)
        /go/pkg/mod/k8s.io/klog/v2@v2.3.0/klog.go:1131 +0x8b
created by k8s.io/klog/v2.init.0
        /go/pkg/mod/k8s.io/klog/v2@v2.3.0/klog.go:416 +0xd6

goroutine 50 [IO wait]:
internal/poll.runtime_pollWait(0x7f801f028f18, 0x72, 0xffffffffffffffff)
        /usr/local/go/src/runtime/netpoll.go:203 +0x55
internal/poll.(*pollDesc).wait(0xc000302598, 0x72, 0x4300, 0x4363, 0xffffffffffffffff)
        /usr/local/go/src/internal/poll/fd_poll_runtime.go:87 +0x45
internal/poll.(*pollDesc).waitRead(...)
        /usr/local/go/src/internal/poll/fd_poll_runtime.go:92
internal/poll.(*FD).Read(0xc000302580, 0xc0006e0000, 0x4363, 0x4363, 0x0, 0x0, 0x0)
        /usr/local/go/src/internal/poll/fd_unix.go:169 +0x19b
net.(*netFD).Read(0xc000302580, 0xc0006e0000, 0x4363, 0x4363, 0x203000, 0x420715, 0xc0009afdc0)
        /usr/local/go/src/net/fd_unix.go:202 +0x4f
net.(*conn).Read(0xc00000e3e0, 0xc0006e0000, 0x4363, 0x4363, 0x0, 0x0, 0x0)
        /usr/local/go/src/net/net.go:184 +0x8e
crypto/tls.(*atLeastReader).Read(0xc0009afdc0, 0xc0006e0000, 0x4363, 0x4363, 0x362, 0x431a, 0xc0001c79a8)
        /usr/local/go/src/crypto/tls/conn.go:760 +0x60
bytes.(*Buffer).ReadFrom(0xc000113ad8, 0x1cf4d60, 0xc0009afdc0, 0x40a1e5, 0x177a6e0, 0x18f31e0)
        /usr/local/go/src/bytes/buffer.go:204 +0xb1
crypto/tls.(*Conn).readFromUntil(0xc000113880, 0x1cf7100, 0xc00000e3e0, 0x5, 0xc00000e3e0, 0x8)
        /usr/local/go/src/crypto/tls/conn.go:782 +0xec
crypto/tls.(*Conn).readRecordOrCCS(0xc000113880, 0x0, 0x0, 0xc0001c7d18)
        /usr/local/go/src/crypto/tls/conn.go:589 +0x115
crypto/tls.(*Conn).readRecord(...)
        /usr/local/go/src/crypto/tls/conn.go:557
crypto/tls.(*Conn).Read(0xc000113880, 0xc000476000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
        /usr/local/go/src/crypto/tls/conn.go:1233 +0x15b
bufio.(*Reader).Read(0xc00046c4e0, 0xc000454118, 0x9, 0x9, 0xc0001c7d18, 0x1a2ab00, 0x9198c5)
        /usr/local/go/src/bufio/bufio.go:226 +0x24f
io.ReadAtLeast(0x1cf4ba0, 0xc00046c4e0, 0xc000454118, 0x9, 0x9, 0x9, 0xc000102050, 0x0, 0x1cf4f00)
        /usr/local/go/src/io/io.go:310 +0x87
io.ReadFull(...)
        /usr/local/go/src/io/io.go:329
golang.org/x/net/http2.readFrameHeader(0xc000454118, 0x9, 0x9, 0x1cf4ba0, 0xc00046c4e0, 0x0, 0x0, 0xc0009d4540, 0x0)
        /go/pkg/mod/golang.org/x/net@v0.0.0-20200822124328-c89045814202/http2/frame.go:237 +0x87
golang.org/x/net/http2.(*Framer).ReadFrame(0xc0004540e0, 0xc0009d4540, 0x0, 0x0, 0x0)
        /go/pkg/mod/golang.org/x/net@v0.0.0-20200822124328-c89045814202/http2/frame.go:492 +0xa1
golang.org/x/net/http2.(*clientConnReadLoop).run(0xc0001c7fa8, 0x0, 0x0)
        /go/pkg/mod/golang.org/x/net@v0.0.0-20200822124328-c89045814202/http2/transport.go:1794 +0xd8
golang.org/x/net/http2.(*ClientConn).readLoop(0xc000001980)
        /go/pkg/mod/golang.org/x/net@v0.0.0-20200822124328-c89045814202/http2/transport.go:1716 +0x6f
created by golang.org/x/net/http2.(*Transport).newClientConn
        /go/pkg/mod/golang.org/x/net@v0.0.0-20200822124328-c89045814202/http2/transport.go:695 +0x64a

goroutine 38 [syscall, 1 minutes]:
os/signal.signal_recv(0x463e66)
        /usr/local/go/src/runtime/sigqueue.go:147 +0x9c
os/signal.loop()
        /usr/local/go/src/os/signal/signal_unix.go:23 +0x22
created by os/signal.Notify.func1
        /usr/local/go/src/os/signal/signal.go:127 +0x44

goroutine 40 [chan receive, 1 minutes]:
sigs.k8s.io/controller-runtime/pkg/manager/signals.SetupSignalHandler.func1(0xc000077980, 0xc000380300)
        /go/pkg/mod/sigs.k8s.io/controller-runtime@v0.6.2/pkg/manager/signals/signal.go:36 +0x34
created by sigs.k8s.io/controller-runtime/pkg/manager/signals.SetupSignalHandler
        /go/pkg/mod/sigs.k8s.io/controller-runtime@v0.6.2/pkg/manager/signals/signal.go:35 +0xd0

goroutine 41 [chan receive, 1 minutes]:
k8s.io/apimachinery/pkg/watch.(*Broadcaster).loop(0xc000297240)
        /go/pkg/mod/k8s.io/apimachinery@v0.18.6/pkg/watch/mux.go:207 +0x66
created by k8s.io/apimachinery/pkg/watch.NewBroadcaster
        /go/pkg/mod/k8s.io/apimachinery@v0.18.6/pkg/watch/mux.go:75 +0xcc

goroutine 174 [chan receive]:
k8s.io/client-go/tools/record.(*eventBroadcasterImpl).StartEventWatcher.func1(0x1d04aa0, 0xc0007fe120, 0xc0007fe0f0)
        /go/pkg/mod/k8s.io/client-go@v0.18.6/tools/record/event.go:288 +0xaa
created by k8s.io/client-go/tools/record.(*eventBroadcasterImpl).StartEventWatcher
        /go/pkg/mod/k8s.io/client-go@v0.18.6/tools/record/event.go:286 +0x6e

goroutine 180 [chan send]:
sigs.k8s.io/controller-runtime/pkg/manager.(*controllerManager).startLeaderElection.func1()
        /go/pkg/mod/sigs.k8s.io/controller-runtime@v0.6.2/pkg/manager/internal.go:628 +0x8c
k8s.io/client-go/tools/leaderelection.(*LeaderElector).Run.func1(0xc0005f8120)
        /go/pkg/mod/k8s.io/client-go@v0.18.6/tools/leaderelection/leaderelection.go:200 +0x40
k8s.io/client-go/tools/leaderelection.(*LeaderElector).Run(0xc0005f8120, 0x1d314a0, 0xc00012b540)
        /go/pkg/mod/k8s.io/client-go@v0.18.6/tools/leaderelection/leaderelection.go:209 +0x119
created by sigs.k8s.io/controller-runtime/pkg/manager.(*controllerManager).startLeaderElection
        /go/pkg/mod/sigs.k8s.io/controller-runtime@v0.6.2/pkg/manager/internal.go:649 +0x217

goroutine 230 [chan receive, 1 minutes]:
k8s.io/client-go/util/workqueue.(*Type).updateUnfinishedWorkLoop(0xc0004709c0)
        /go/pkg/mod/k8s.io/client-go@v0.18.6/util/workqueue/queue.go:198 +0xac
created by k8s.io/client-go/util/workqueue.newQueue
        /go/pkg/mod/k8s.io/client-go@v0.18.6/util/workqueue/queue.go:58 +0x132

goroutine 175 [chan receive, 1 minutes]:
k8s.io/client-go/tools/record.(*eventBroadcasterImpl).StartEventWatcher.func1(0x1d04aa0, 0xc0007fe150, 0xc0007d6e70)
        /go/pkg/mod/k8s.io/client-go@v0.18.6/tools/record/event.go:288 +0xaa
created by k8s.io/client-go/tools/record.(*eventBroadcasterImpl).StartEventWatcher
        /go/pkg/mod/k8s.io/client-go@v0.18.6/tools/record/event.go:286 +0x6e

Expected behavior
No fatal error.
Steps to reproduce the bug:
I simply installed the chart on my EKS cluster, 1.18.
Anything else we need to know?:
The Pod hasn't restarted while I was writing this bug report, so the total restarts is still 10 currently.
However, I noticed the restarts while I was doing a helm upgrade and setting installCRDs to true. So, maybe the fatal error is related to the -previously- missing CRDs? (that's pure conjecture though)
Environment details::

Kubernetes version (e.g. v1.18.9): EKS 1.18
Secret-Manager version (e.g. v0.2.0): secret-manager 0.2.0, chart 0.1.2
SecretStore type(e.g. Vault vs AWS SecretManager): None defined yet
Install method (e.g. helm or static manifests): Helm

/kind bug

Yeah this looks like CRD's are not installed. Did this error still occur after they were added?
We don't have install instructions available yet for kustomize/manifests, so using installCRDs set to true is recommended.

The error did not happen anymore once the helm upgrade installing the CRDs was done. So, yes, most likely reproducible by simply not installing the CRDs.

We can include this in the troubleshooting section we are working on.


Implement a purely sql-based api

This library already generates a dart dsl to execute most queries and it also features custom queries. It would be nice to look at sql statements at compile time, figure out what variables appear in them, and then generate appropriate dart methods automatically.
The api could look like this:
@UseMoor(tables: [], queries: {Sql('SELECT * FROM users WHERE name = :name', name: 'usersByName')})
class MyDatabase extends _$MyDatabase {}

In that case, _$MyDatabase should have generated a method like:
Future<List<User>> usersByName(String name) {
  return //...
}
Stream<List<User>> watchUsersByName(String name) {
  return // ...
}

Current progress
All of these features should make it into the next version of moor, 1.5.

[X] Prototype implementation without sql functions
[x] Support common sqlite functions, with type resolution
[x] Support the BETWEEN and CASE expressions in sql.
[x] Support the LIKE operator
[x] Support EXISTS and (NOT) IN  expressions - skipping NOT IN for now.
[x] Better error handling, don't crash the builder on invalid sql
[x] Documentation
[x] Potential api revamps, ability to use custom queries in transactions and migrations

For now, parsing update, delete and inserts statements is out of scope, they will not be available in the next 1.5 release. Edit: Update and delete statements turned out to be quite simple, they definitely will be implemented in 1.5.

This is making some good progress on the develop branch :) We can parse select statements, including more advanced features like joins or subqueries and we can infer parameter and return types.
As a reference, this is what the API looks like at the moment: https://github.com/simolus3/moor/blob/33682a0ad12cfd229b77a107195af3e5901b084b/moor/test/data/tables/todos.dart#L57-L70
I see some potential to make the api less verbose by using a map... For now, this is what's generated for the first query:
https://github.com/simolus3/moor/blob/33682a0ad12cfd229b77a107195af3e5901b084b/moor/test/data/tables/todos.g.dart#L1055-L1082

This is part of moor 1.5, which has just been released. See the documentation.


How to write dynamic query？

If you do not use Macros and use sql to splice it into a string, it is easy to generate "SQL Injection Attack "

This is shown in the third and fifth examples in the Querying section in the README: https://github.com/launchbadge/sqlx#querying
let mut cursor = sqlx::query("SELECT * FROM users WHERE email = ?")
    .bind(email)
    .fetch(&mut conn).await?;

while let Some(row) = cursor.next().await? {
    // map the row into a user-defined domain type
}

#[derive(sqlx::FromRow)]
struct User { name: String, id: i64 }

let mut stream = sqlx::query_as::<_, User>("SELECT * FROM users WHERE email = ? OR name = ?")
    .bind(user_email)
    .bind(user_name)
    .fetch(&mut conn);

The query() and query_as() functions were deliberately designed to be easiest to use with string literals to discourage formatting parameters into strings instead of using binds.
These examples could stand to be copied to the documentation, however.

let mut stream = sqlx::query_as::<_, User>("SELECT * FROM users WHERE email = ? OR name = ?")
    .bind(user_email)
    .bind(user_name)
    .fetch(&mut conn);

one error it give "no method fetch"

In the error message it should have suggested importing one of the following:

sqlx::mysql::MySqlQueryAs
sqlx::postgres::PgQueryAs
sqlx::sqlite::SqliteQueryAs

These are workarounds for a compiler bug/missing feature and will be removed in 0.4.

I want to dynamically add  it to the SQL based on whether the field value of the object is None
for example:
let mut sql_str = "select * from user_group where 1=1".to_string();
 if !user_group.group_name.is_none(){
     sql_str = format!("{} and {} = ?",sql_str,"group_name".to_string());
 }
let mut query_tmp =sqlx::query_as::<_,UserGroup>(&sql_str);
if !user_group.group_name.is_none(){
    query_tmp = query_tmp.bind(user_group.group_name);
}

how do I code

We're discussing that in #291

@abonander , would you have an idea on how to insert a statement like the following into the WHERE clause?
The purpose of the following query string is to run a wildcard like keyword search in a JSONB field (POSTGRES). So, the string 'ABC' is searched within the whole 'column_x'.
This runs without an error:
select * from sample_table where jsonb_path_exists(column_x, '$.** ? (@.type() == "string" && @ like_regex "ABC")');
Numerous different attempts to build the above with Sqlx have failed. As the final resort, the following compiles with query_as!, only to end up with the run-time error given by the DB.
select * from sample_table where ($1 OR $1 IS NULL)
where I provide $1 as the following string literal:
let jsob_search_clause = format!(
                r#"jsonb_path_exists(column_x, '$.** ? (@.type() == "string" && @ like_regex "{}")')"#,
                _some_variable
            )

The error given by the DB:
PgDatabaseError {
        severity: Error,
        code: "42804",
        message: "argument of OR must be type boolean, not type text",

By the way, in the DB tool I use (DBeaver) I can do this, that is, provide the whole raw string starting with the method jsonb_path_exists(... as a single bind variable.


backfill script doesn't work after migration to transformer v2

Before opening, please confirm:

[X] I have installed the latest version of the Amplify CLI (see above), and confirmed that the issue still persists.
[X] I have searched for duplicate or closed issues.
[X] I have read the guide for submitting bug reports.
[X] I have done my best to include a minimal, self-contained set of instructions for consistently reproducing the issue.
[X] I have removed any sensitive information from my code snippets and submission.

How did you install the Amplify CLI?
npm
If applicable, what version of Node.js are you using?
No response
Amplify CLI Version
8.0.2
What operating system are you using?
Mac
Did you make any manual changes to the cloud resources managed by Amplify? Please describe the changes made.
No
Amplify Categories
Not applicable
Amplify Commands
Not applicable
Describe the bug
After upgrading to transformer v 2, we can no longer run the backfill script here: AWS.config.credentials
{'ResponseMetadata': {'RequestId': '9e18740d-87d1-40a1-8b47-20ed960851c3', 'HTTPStatusCode': 200, 'HTTPHeaders': {'date': 'Tue, 03 May 2022 00:49:48 GMT', 'content-type': 'application/json', 'content-length': '4', 'connection': 'keep-alive', 'x-amzn-requestid': '9e18740d-87d1-40a1-8b47-20ed960851c3', 'x-amzn-remapped-content-length': '0', 'x-amz-executed-version': '$LATEST', 'x-amzn-trace-id': 'root=1-62707c2a-7f25c8cb5368f0b93259c35a;sampled=0'}, 'RetryAttempts': 0}, 'StatusCode': 200, 'ExecutedVersion': '$LATEST', 'Payload': <botocore.response.StreamingBody object at 0x10377eb20>}
Traceback (most recent call last):
  File "/Users/cody/workspace/javascript/serverless/propswapv2/scripts/search/backfill.py", line 104, in <module>
    main()
  File "/Users/cody/workspace/javascript/serverless/propswapv2/scripts/search/backfill.py", line 42, in main
    import_dynamodb_items_to_es(args.tn, args.sk, args.ak, args.st, args.rn, args.esarn, args.lf, scan_limit)
  File "/Users/cody/workspace/javascript/serverless/propswapv2/scripts/search/backfill.py", line 65, in import_dynamodb_items_to_es
    response = table.scan(ExclusiveStartKey=response['LastEvaluatedKey'], Limit=scan_limit)
  File "/opt/homebrew/lib/python3.9/site-packages/boto3/resources/factory.py", line 520, in do_action
    response = action(self, *args, **kwargs)
  File "/opt/homebrew/lib/python3.9/site-packages/boto3/resources/action.py", line 83, in __call__
    response = getattr(parent.meta.client, operation_name)(*args, **params)
  File "/opt/homebrew/lib/python3.9/site-packages/botocore/client.py", line 391, in _api_call
    return self._make_api_call(operation_name, kwargs)
  File "/opt/homebrew/lib/python3.9/site-packages/botocore/client.py", line 708, in _make_api_call
    self.meta.events.emit(
  File "/opt/homebrew/lib/python3.9/site-packages/botocore/hooks.py", line 357, in emit
    return self._emitter.emit(aliased_event_name, **kwargs)
  File "/opt/homebrew/lib/python3.9/site-packages/botocore/hooks.py", line 228, in emit
    return self._emit(event_name, kwargs)
  File "/opt/homebrew/lib/python3.9/site-packages/botocore/hooks.py", line 211, in _emit
    response = handler(**kwargs)
  File "/opt/homebrew/lib/python3.9/site-packages/boto3/dynamodb/transform.py", line 202, in inject_attribute_value_output
    self._transformer.transform(
  File "/opt/homebrew/lib/python3.9/site-packages/boto3/dynamodb/transform.py", line 253, in transform
    self._transform_parameters(
  File "/opt/homebrew/lib/python3.9/site-packages/boto3/dynamodb/transform.py", line 260, in _transform_parameters
    getattr(self, '_transform_%s' % type_name)(
  File "/opt/homebrew/lib/python3.9/site-packages/boto3/dynamodb/transform.py", line 274, in _transform_structure
    self._transform_parameters(
  File "/opt/homebrew/lib/python3.9/site-packages/boto3/dynamodb/transform.py", line 260, in _transform_parameters
    getattr(self, '_transform_%s' % type_name)(
  File "/opt/homebrew/lib/python3.9/site-packages/boto3/dynamodb/transform.py", line 299, in _transform_list
    self._transform_parameters(
  File "/opt/homebrew/lib/python3.9/site-packages/boto3/dynamodb/transform.py", line 260, in _transform_parameters
    getattr(self, '_transform_%s' % type_name)(
  File "/opt/homebrew/lib/python3.9/site-packages/boto3/dynamodb/transform.py", line 285, in _transform_map
    params[key] = transformation(value)
  File "/opt/homebrew/lib/python3.9/site-packages/boto3/dynamodb/types.py", line 271, in deserialize
    return deserializer(value[dynamodb_type])
  File "/opt/homebrew/lib/python3.9/site-packages/boto3/dynamodb/types.py", line 301, in _deserialize_m
    return dict([(k, self.deserialize(v)) for k, v in value.items()])
  File "/opt/homebrew/lib/python3.9/site-packages/boto3/dynamodb/types.py", line 301, in <listcomp>
    return dict([(k, self.deserialize(v)) for k, v in value.items()])
  File "/opt/homebrew/lib/python3.9/site-packages/boto3/dynamodb/types.py", line 271, in deserialize
    return deserializer(value[dynamodb_type])
  File "/opt/homebrew/lib/python3.9/site-packages/boto3/dynamodb/types.py", line 280, in _deserialize_n
    return DYNAMODB_CONTEXT.create_decimal(value)
decimal.Rounded: [<class 'decimal.Rounded'>]

Expected behavior
The backfill script populates elastic search
Reproduction steps

upgrade to transformer 2
run the backfill script

GraphQL schema(s)

# Put schemas below this line

Log output

# Put your logs below this line

Additional information
No response

Hi @CodySwannGT, Are you still experiencing this issue?

@AnilMaktala not sure. We gave up on trying to migrate.


add getElement

Summary & motivation
Add support for accessing the underlying Element using refs. This API is a bit more obvious than the onReady handler, and will make it easier to document and support new Stripe.js APIs that take an Element but do not work well with RSE's element injection strategy.

Testing & documentation
I wrote unit tests

cc @fred-stripe


Podspec: split debug / release, remove source, resource_bundle

Proper debug and release versions of the podspec
Remove all source from podspec
Podspec style to match documentation examples
Switch from 'resources' to 'resource_bundle', from CocoaPods docs: We strongly recommend library developers to adopt resource bundles as there can be name collisions using the resources attribute. https://guides.cocoapods.org/syntax/podspec.html#resource_bundles:

Fixes #127
TESTED=yes
Normal Xcode build is debug. Release build is done using “Product > Build For > Profiling”. Tested by hiding libj2objc-shared and then looking at the command line when the build failed.
“Profiling” uses iosRelease:
-L/Users/brunobowden/dev/taptap/base/build/j2objcOutputs/lib/iosRelease
Everything else uses iosRelease:
-L/Users/brunobowden/dev/taptap/base/build/j2objcOutputs/lib/iosDebug

@advayDev1, @confile, @alexmetcalfe - PTAL

Does anyone use ClassLoader at the moment? I've never used it and I'm not sure if it works at all. If someone is using that right now and it is working, then perhaps the switch to the resouce_bundles might break it. Need to look in to this further.

FYI, ClassLoader is how you load files with Java from the src/main/resources directory and similar locations.

Yes, I'm using the class loader indirectly through resource loading.  Will give this a try tomorrow...

resouce_bundle's are **strongly recommended" partly to prevent collisions. I presume this is done by putting it in subdirectories, which would break the classloader. I'm not sure how to do isolation between multiple projects that are linked in to the same iOS app.

On the Android, I don't think any separation occurs.  Multiple Java/Android projects all get their resources mixed into the root dir of the APK.

I've reverted the resouce_bundles part of this change until I'm at a point that I can test this end to end.

LGTM with 1 comment


Figure out how to pull data on a schedule

How do we follow up on stories? On the hour? Start a new timer for every story and check every minute to see if it's time to report (cheap solution)

It looks like Carebot 1 checked for data every 30 minutes.
I think we should refresh a little more often -- maybe every 15 minutes.
The workflow would look something like this:
Every 15 minutes:

Poll the stories doc
For each story, if the story isn't already in carebot's database, add the story title, URL and slug with a timestamp. (stop once we hit a story we already have; don't go through the whole list)
Record metrics for each story as a JSON blob. Can store as plain text for now (maybe use RDS / JSON datatypes later)
If the story is greater than 4, 8, etc hours old, have Carebot mention the latest average viewing time.
** Don't report out if we have already reported for that timeframe.
** Note in the database (boolean fields?) that we have done the 4, 8, etc. hour reportouts.

Alternately, instead of polling the stories doc, people could say:
@carebot, please track my-slug-here

Closing -- dupe of #42


Adding ZRS support for snapshots, new apiversion 2018-04-01

This checklist is used to make sure that common issues in a pull request are addressed. This will expedite the process of getting your pull request merged and avoid extra work on your part to fix issues discovered during the review process.
PR information

[ ] The title of the PR is clear and informative.
[ ] There are a small number of commits, each of which have an informative message. This means that previously merged commits do not appear in the history of the PR. For information on cleaning up the commits in your pull request, see this page.
[ ] Except for special cases involving multiple contributors, the PR is started from a fork of the main repository, not a branch.
[ ] If applicable, the PR references the bug/issue that it fixes.
[ ] Swagger files are correctly named (e.g. the api-version in the path should match the api-version in the spec).

Quality of Swagger

[ ] I have read the contribution guidelines.
[ ] My spec meets the review criteria:

[ ] The spec conforms to the Swagger 2.0 specification.
[ ] The spec follows the guidelines described in the Swagger checklist document.
[ ] Validation tools were run on swagger spec(s) and have all been fixed in this PR.

Automation for azure-sdk-for-python

Automation for azure-sdk-for-go

@carissasun has this been reviewed by the ARM team yet?

@jhendrixMSFT - Good to merge based on answers to the above comments.

@carissasun there are still quite a few examples missing, please see the linter log (search for disk.json) and the modeler log (search for operation groups added in disk.json).  When do you plan to add these?

Automation for azure-sdk-for-node

@jhendrixMSFT that build was from 5 days ago, how do I request a new build? I updated the readme.md so it generates disks from the 2018-04-01 version and everything else from the current version

@carissasun there is a new build with your changes to the readme so we should have results soon.

@carissasun latest build is ready, under allowed failures please see the linter and model tasks where PR_ONLY=true

@jhendrixMSFT it's saying it's missing examples for both disk.json and compute.json... they mostly say "Found errors in validating the response with statusCode "200" " why do we need these? Also this job is asking for " minimum/maximum property set ", what is this?

Take the following error.
message: 'Following response status codes "200" for operation "Disks_CreateOrUpdate" were present in the swagger spec, however they were not present in x-ms-examples. Please provide them.'

This operation defines responses for 200 and 202 status codes however the example only defines a response for 202.  The above error message is telling you that you're missing an example response for 200.

I don't understand what the "minimum/maximum" thing is about (I will follow up on that) but for example Disks_Update doesn't have an example so I suspect this is what it's complaining about.

@jhendrixMSFT these are existing files though, it's complaining about the 200 for both disk.json and compute.json. We don't actually need these examples.... is there any way to suppress them?

You can ignore the issues outside of compute.json as that was broken before your PR.  Why don't you need examples for 200?

@jhendrixMSFT  the response for 200 would be exactly the same as 202 though?

I don't know, it's your service.  :)  But if that's the case then it should be a simple copy/paste to add the missing responses yes?

I actually have added them yesterday (copy paste) if you check the commits

On Mar 7, 2018, at 9:00 AM, Joel Hendrix<EMAIL_ADDRESS>wrote:
I don't know, it's your service. :) But if that's the case then it should be a simple copy/paste to add the missing responses yes?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.

In the example I cited earlier, for its example file CreateAnEmptyManagedDisk.json I only see a 202 response.

@jhendrixMSFT  please check again linkhttps://github.com/carissasun/azure-rest-api-specs/blob/master/specification/compute/resource-manager/Microsoft.Compute/stable/2018-04-01/examples/CreateAnEmptyManagedDisk.json and let me know if this works

@jhendrixMSFT they're all saying (Please provide x-ms-examples describing minimum/maximum property set) for disks.json. I don't know what that means. Can you please merge

@jhendrixMSFT, can we please address the linter warnings for existing swagger later and merge the changes needed for Zones at this time?

@jhendrixMSFT  exactly, this is an error based on pre-existing json so can we ignore it for now.... The only thing I'm changing in 208-04-01 is adding Standard_ZRS to account types and changing it to modelAsString

@carissasun So you're saying that only some of the content in disk.json is new in this PR?  Assuming that's the case please be sure to make that clear in future PRs.  When introducing a new API version that augments a previous one it's ideal to first copy the existing one (the original disk.json), commit that, then add the new functionality and updated API version in a separate commit; this way it's very clear what's been added and we can focus on just that part.


Add support for setting a SIPREC application at the account level

We want to make change to the Add/Edit account panel to allow setting a new variable.  Currently, the panel looks like this:

What we want to do is add a new field right below "Application for SIP Device Calls".
In fact, we want it to be very similar.  It will be a field just like that one, which will show the same dropdown list of applications and let the user choose one.  The label should read "Application for SIPREC Calls"
In the POST or PUT to the API, include the application sid identifier in a property named "siprec_hook_sid"

Also can yo make this UI change?  Right align the dropdown for "Application for SIP Device Calls" and then put the label on one line instead of two lines.  And please do the same with the new label and dropdown

Got it.


Handle already confirmed email

fixes #2731.
And maybe #2199.
Or should the PR be to "dev"?

PR looks good, can you base it on "dev" branch? (sorry for the added work there, I can rebase it but then GitHub doesn't properly link the PR to it)

@maartenba sure! https://github.com/NuGet/NuGetGallery/pull/2733


config.js configuration for laravel path resolve help

Hi ive read the documentation but im kinda new with node...
it says there if i did this... then
i can generate front-end assets into my backend project.
this 3 line is kinda confusing...
// vue-ui\resources\assets\js\vue\config.js
index: path.resolve(__dirname, 'dist/index.html'),
    assetsRoot: path.resolve(__dirname, 'dist'),
    assetsSubDirectory: 'static',

i tried to rename it with
// vue-ui\resources\assets\js\vue\config.js
Index: path.resolve('./resources/views/index.blade.php'),
    assetsRoot: path.resolve('./public'),
    assetsSubDirectory: 'static',

I know this is wrong since my path is not on App but rather on
resources/assets/js/vue...
How i can set the path.resolve to point to that  path...
and public folder...

solve it ... by trying it in node
got it ...
index: path.resolve(__dirname, '../../../../views/vue.blade.php'),
    assetsRoot: path.resolve(__dirname, '../../../../../public'),


Transition Group with Keep Alive

Vue version
3.3.4
Link to minimal reproduction
https://stackblitz.com/edit/vite-jqfhgu?file=src%2Fcomponents%2FAppSlideViews.vue,src%2Fcomponents%2FFinalView.vue,src%2Fcomponents%2FNextView.vue,src%2Fcomponents%2FSlideTransition.vue,src%2FApp.vue,vite.config.ts,package.json
Steps to reproduce
Try to click "go further".
What is expected?
I would expect it to be possible to use TransitionGroup with KeepAlive and properly transition between components while preserving components state for pages which are "before" the current page.
What is actually happening?
As you see there is an
vue.js:10099 Uncaught (in promise) TypeError: child.el.getBoundingClientRect is not a function
    at Proxy.<anonymous> (vue.js:10099:43)
    at renderComponentRoot (vue.js:2224:17)
    at ReactiveEffect.componentUpdateFn [as fn] (vue.js:7162:26)
    at ReactiveEffect.run (vue.js:423:19)
    at instance.update (vue.js:7212:52)
    at updateComponent (vue.js:7039:18)
    at processComponent (vue.js:6974:7)
    at patch (vue.js:6436:11)
    at ReactiveEffect.componentUpdateFn [as fn] (vue.js:7171:9)
    at ReactiveEffect.run (vue.js:423:19)

error which I am not sure is desired. I've seen some usages of transitions and keep alive and I think that one should work.
Here is the demo in Vue 2
https://stackblitz.com/edit/node-fqext6?file=src%2Fcomponents%2FAppSlideViews.vue,src%2Fcomponents%2FTest.vue,src%2FApp.vue,src%2Fcomponents%2FNextView.vue,src%2Fcomponents%2FFinalView.vue
Basically the idea is to preserve the state of the component which are "before" the current view while destroying the state of components which are "after" current view. It's just some sort of form wizard behavior. I was able to make it work in Vue 2, but after migration to Vue 3 and a couple of fixes I was only able to make it work without transitions:
https://stackblitz.com/edit/vite-swkwhb?file=src%2Fcomponents%2FAppSlideViews.vue,src%2Fcomponents%2FFinalView.vue,src%2Fcomponents%2FNextView.vue,src%2Fcomponents%2FSlideTransition.vue,src%2FApp.vue,vite.config.ts,src%2Fcomponents%2FTest.vue
System Info
No response
Any additional comments?
No response

There is a warn message. When I try to filter the null vnode, it works.

You are right, after closer inspection it seems that it works properly when filtering null values before mapping over.


Cannot read properties of null (reading 'finishedPaste')

Paste text copied from anywhere into the panel chat input box
:bug: get a warning popup

https://github.com/microsoft/vscode/issues/200597


Have created a Windows Installer Package of asn1c 0.9.24

Have created a Windows Installer Package of asn1c 0.9.24 (except unber/enber, that will not compile under that version using CygWin).
One .exe file contains the installer.
This may help other people and cut down on support requests...
I am willing to create these packages on a continuous base.
/Stefan

@StefanGu65 Any chance you will update to the current 0.9.27 version?
Alternatively, you could share a more detailed readme how to build it on windows (e. G. makefile modifications, which cygwin packages you need etc...), and make a pull request for that documentation. :-)
Thanks in advance!

@vlm: would you accept pull requests for a "native" windows build? Either using GCC, MinGW or VS?

Sure,
I can update the windows version, it’s just that I have not had any reason to as the one I have worked well for me.
I’ll be on the road for about 2 weeks, if you can hold on a bit, I should be able to update it after this.
The resulting app is self-contained and works natively on windows. Due to the placement of the skeletons in windows, you may have to use the –s parameter as described in my readme.
S
From: Markus Schaber<EMAIL_ADDRESS>Sent: Saturday, October 08, 2016 12:48 PM
To: vlm/asn1c
Cc: StefanGu65; Mention
Subject: Re: [vlm/asn1c] Have created a Windows Installer Package of asn1c 0.9.24 (#30)
@StefanGu65 https://github.com/StefanGu65  Any chance you will update to the current 0.9.27 version?
Alternatively, you could share a more detailed readme how to build it on windows (e. G. makefile modifications, which cygwin packages you need etc...), and make a pull request for that documentation. :-)
Thanks in advance!
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub https://github.com/vlm/asn1c/pull/30#issuecomment-252435128 , or mute the thread https://github.com/notifications/unsubscribe-auth/ADxHpYL799crALy2jGbHXfxbrK7JL6ycks5qx8kngaJpZM4Ahmlw .  https://github.com/notifications/beacon/ADxHpT20jHuO5zHyhQZCZIM-c8usR3XIks5qx8kngaJpZM4Ahmlw.gif

This email has been checked for viruses by Avast antivirus software.
https://www.avast.com/antivirus

I tried to build it with cygwin myself. After installing some missing packages, it builds fine, but "make check" fails with:
GeneralizedTime.c: At top level: GeneralizedTime.c:132:15: error: static declaration of 'timegm' follows non-static declaration  static time_t timegm(struct tm *tm) {                ^ In file included from /usr/include/time.h:173:0,                  from GeneralizedTime.c:12: /usr/include/cygwin/time.h:21:16: note: previous declaration of 'timegm' was here  time_t __cdecl timegm (struct tm *);
I also noted that GeneralizedTime.c does not work with Non-GCC compilers on Windows due to the #warning pragmas.

Unfortunately my build machine had a failed HDD and I don’t seem to be able to find the correct version of autotools to get the .27 version work.
What versions of autoreconf and autotools did you use? It’s been a while and I normally use Cmake…
/Stefan
From: Markus Schaber<EMAIL_ADDRESS>Sent: Saturday, October 08, 2016 12:48 PM
To: vlm/asn1c
Cc: StefanGu65; Mention
Subject: Re: [vlm/asn1c] Have created a Windows Installer Package of asn1c 0.9.24 (#30)
@StefanGu65 https://github.com/StefanGu65  Any chance you will update to the current 0.9.27 version?
Alternatively, you could share a more detailed readme how to build it on windows (e. G. makefile modifications, which cygwin packages you need etc...), and make a pull request for that documentation. :-)
Thanks in advance!
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub https://github.com/vlm/asn1c/pull/30#issuecomment-252435128 , or mute the thread https://github.com/notifications/unsubscribe-auth/ADxHpYL799crALy2jGbHXfxbrK7JL6ycks5qx8kngaJpZM4Ahmlw .  https://github.com/notifications/beacon/ADxHpT20jHuO5zHyhQZCZIM-c8usR3XIks5qx8kngaJpZM4Ahmlw.gif

This email has been checked for viruses by Avast antivirus software.
https://www.avast.com/antivirus

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.


Addresses #1365 Fix typos for pituitary and basophilic

Addresses #1365 Fix typos for pituitary and basophilic

FYI @paola-scibite

Thanks for fixing these typos, btws looking at these terms, we should really add 'has characteristic' some 'basophilic' to these (PATO:0002094) not part of this ticket so won't hold it back, but something to look into

Thanks for suggesting this, @shawntanzk. Feel free to create a ticket with your proposal.


[MERGE] merge os into FACL

jenkins, test this please

@bf8086 Since the main part of the merge has to do with PermissionChecker, could you take a look at the last commit plz? thanks

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/19946/Failed Tests: 7org.alluxio:alluxio-core-common: 1alluxio.wire.FileInfoTest.thriftorg.alluxio:alluxio-tests: 6alluxio.server.ft.journal.ufs.UfsJournalIntegrationTest.directoryalluxio.server.ft.journal.ufs.UfsJournalIntegrationTest.setAclalluxio.server.ft.journal.ufs.UfsJournalIntegrationTest.persistDirectoryLateralluxio.server.ft.journal.ufs.UfsJournalIntegrationTest.pinalluxio.server.ft.journal.ufs.UfsJournalIntegrationTest.filealluxio.server.ft.journal.ufs.UfsJournalIntegrationTest.loadMetadata
Test FAILed.

PermissionChecker changes look good. Only one minor comment regarding formatting.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/19948/
Test PASSed.

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/19947/Failed Tests: 3org.alluxio:alluxio-tests: 3alluxio.server.ft.journal.JournalShutdownIntegrationTest.multiMasterMountUnmountJournalalluxio.server.ft.journal.JournalShutdownIntegrationTest.singleMasterJournalStopIntegrationalluxio.server.ft.journal.JournalShutdownIntegrationTest.singleMasterMountUnmountJournal
Test FAILed.

jenkins, test this please

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/19952/
Test PASSed.

@gpang  PTAL

Jenkins, test this please

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/19976/
Test PASSed.

@gpang  addressed comments, PTAL.


ModuleNotFoundError: No module named 'object_detection'

x python .\solver.py
Traceback (most recent call last):
File "D:\textCaptcha\Text-Captcha-Solver\solver.py", line 1, in
from captcha_detector import Captcha_detection
File "D:\textCaptcha\Text-Captcha-Solver\captcha_detector.py", line 17, in
from object_detection.utils import ops as utils_ops
ModuleNotFoundError: No module named 'object_detection'

You need to use python3. if that still does not work try pip install tensorflow-object-detection-api

Python 3.9.13
python .\solver.py
Traceback (most recent call last):
  File "D:\textCaptcha\Text-Captcha-Solver\solver.py", line 1, in <module>
    from captcha_detector import Captcha_detection
  File "D:\textCaptcha\Text-Captcha-Solver\captcha_detector.py", line 28, in <module>
    label_map = label_map_util.load_labelmap(PATH_TO_LABELS)
  File "C:\Users\pc\AppData\Roaming\Python\Python39\site-packages\object_detection\utils\label_map_util.py", line 132, in load_labelmap
    with tf.gfile.GFile(path, 'r') as fid:
AttributeError: module 'tensorflow' has no attribute 'gfile'

pip3.exe install tensorflow-object-detection-api

    * after installing this

pip3.exe install object-detection

Traceback (most recent call last):
  File "D:\textCaptcha\Text-Captcha-Solver\solver.py", line 1, in <module>
    from captcha_detector import Captcha_detection
  File "D:\textCaptcha\Text-Captcha-Solver\captcha_detector.py", line 17, in <module>
    from object_detection.utils import ops as utils_ops
ModuleNotFoundError: No module named 'object_detection.utils'

Python 3.9.13
python .\solver.py
Traceback (most recent call last):
  File "D:\textCaptcha\Text-Captcha-Solver\solver.py", line 1, in <module>
    from captcha_detector import Captcha_detection
  File "D:\textCaptcha\Text-Captcha-Solver\captcha_detector.py", line 28, in <module>
    label_map = label_map_util.load_labelmap(PATH_TO_LABELS)
  File "C:\Users\pc\AppData\Roaming\Python\Python39\site-packages\object_detection\utils\label_map_util.py", line 132, in load_labelmap
    with tf.gfile.GFile(path, 'r') as fid:
AttributeError: module 'tensorflow' has no attribute 'gfile'

Go back to when you recieve this error. Here is the fix:
Okay, please go to this file C:\Users\pc\AppData\Roaming\Python\Python39\site-packages\object_detection\utils\label_map_util.py, From there CTRL + F in the file and search for tf.gfile.GFile, next you will need to replace all apperences of tf.gfile.GFile to tf.io.gfile.GFile


Switch to OFL

The OFL isn't compatible with "any other license", and creates a commons which this font isn't part of. Would you consider switching? :)

Sorry for this being so late: the OFL isn't, but other licenses can be compatible with the OFL (i.e., this font isn't OFL-licensed, but a deriv. can be). Actually my intention here was to be essentially public domain. But in any case this font isn't really useful. It's far too sloppy. I'd have to start over now. And I hope to do so at some point when I have time.


How to build without Docker

Hi, there
Thank you for your amazing work.
I can not access the docker server, so, are there solution to build without docker?
And I can not find the example about how to use caffe model.
Would  you please make more introduction about caffe model usage? Thank you so much~

We will update the document soon.

https://github.com/XiaoMi/mace-models/blob/master/vgg16/vgg16-caffe-gpu.yml

The document was updated and aliyun docker registry was provided.


Add support for (github) emoji

Github markdown includes support for emoji. Currently these are not rendered.
Consider adding support for emoji, for example via this library:
https://github.com/iamcal/js-emoji
Note that this is just an example - there are many, and I don't mean to recommend a specific library.

You can use emoji right now if you insert them Emoji & Symbols in Intellij

or if you copy them for example from http://getemoji.com/ .
But I'll have a look to support :someemoji: format.

i'm don't have that

I'm try to off offline generation.
With offline generation

Withot offline generation

In first case image in local folder are not rendered
In second case not rendered emoji


No idea how to map specific JSON

I'm implementing an iOS app for existing project and got stuck on parsing a JSON containing list of events, where key for each event is a "timestamp": [ array of events during that date ].
It looks like this:
List of places with ids, containing list of events, where the keys are dates.
[
   {
      "place_id":1,
      "events":[
         {
            "1460604671":[
               {
                  "event_name":"some name",
                  "other_event_field":1
               }
            ],
            "2460604671":[
               {
                  "event_name":"some name",
                  "other_event_field":1
               }
            ]
         }
      ]
   }
]

Is it possible to map that structure with ObjectMapper?

yes. it is

I would like to get a list of Places that contains a list of all events, something like this:
PlaceList -> array of places
Place -> place_id, array of events
Event -> date (from the timestamp that is problematic for me), event_name, other_event_field
Thanks for the quick response.

What i mean is, can you show what you want the structure that you want the JSON be mapped to look like?
struct MyEventPlacesStruct {
   ????
}

Sure.
struct PlaceEvents {
    var placeId: Int
    var events: [Event]
}

struct Event {
    var date: NSDate
    var name: String
    var otherField: String // for the sake of this example. I can handle all other fields except the date thing in the json format
}

Any my API should return [PlaceEvents] (for multiple places).

ObjectMapper provides several different functions which you can use for mapping. I think the following is probably what you are looking for:
public func mapDictionaryOfArrays(JSONDictionary: [String : [[String : AnyObject]]]) -> [String : [N]]?

Also available:
public func map(JSON: AnyObject?) -> N?
public func mapArray(JSONArray: [[String : AnyObject]]) -> [N]?
public func mapDictionary(JSONDictionary: [String : [String : AnyObject]]) -> [String : N]?

@tristanhimmelman hi, is there any documentation giving an example of how those methods are used?

Unfortunately, not at the moment. Given a JSON string, you should be able use the functions just like you use Mapper<T>.map(JSON). So in your case, it would look something like:
let JSONString = "..."
if let dictionary = Mapper<Person>().mapDictionaryOfArrays(JSONString){

}


Add David's Forms Video to Resources page

https://www.youtube.com/watch?v=4C4bmDOV5hk

fix in branch


Add support for groups

Adding support for groups related endpoints according to https://github.com/toggl/toggl_api_docs/blob/master/chapters/groups.md.

GET /api/v8/workspaces/{id}/groups
POST /api/v8/groups
PUT /api/v8/groups/{id}
DELETE /api/v8/groups/{id}

Coverage increased (+0.3%) to 92.115% when pulling 48890da49653a703965ba22e8472f20c030e9a60 on kamil89:feature/add-groups into fc95d6559fde784bae37018b52ef7b8f05ba0540 on kanet77:master.

Coverage increased (+0.3%) to 92.115% when pulling 48890da49653a703965ba22e8472f20c030e9a60 on kamil89:feature/add-groups into fc95d6559fde784bae37018b52ef7b8f05ba0540 on kanet77:master.

Coverage increased (+0.3%) to 92.115% when pulling 48890da49653a703965ba22e8472f20c030e9a60 on kamil89:feature/add-groups into fc95d6559fde784bae37018b52ef7b8f05ba0540 on kanet77:master.


Using 'limit' param can break promise toasts

Demo:
Notice the promise modals do not close until removed and restarted manually.
https://jam.dev/c/628dd8da-b239-46ab-afc4-db5d063a5f26
Reproduce:

Go to the demo page @ https://vue3-toastify.js-bridge.com/
Set the 'Limit' to something, e.g. 5 (doesn't matter what as long as it's set)
Press the 'with promise' button
While the promise toasts are open, press the 'normal toast' button several times, so the queued toasts exceed the limit number

Expected:
Queued toasts show, and the promise toasts complete
Actual:
Queued toasts show, but the promise toasts never complete
Notes:
Appears to require a combination of limit + promise + normal + a queue/backlog of toasts to cause the issue.

@0.10.11


Wiki for User controls / More user friendly code

Feature Request or Enhancement
GUIslice is very advanced library for creating GUI for MCU's, but it is very harsh with newcomers, when they are facing C code and trying to figure out what to do (with devices that are not touch screen). Sadly some of us lack C/C++ programming experience and most of code that is done is just importing of libraries, instantiating them and using methods over those libraries in loop routine.
There are some different input devices:

Button (Seen examples with EasyButton)
Joystick
Rotary Encoder with click function
Wheel-button (Those, seen on Sony Ericsson back in a day).
Accelerometer
Gyroscope
GPS
Other sensors

Some of them don't have well implemented libraries with events / interrupts implemented so user have to do GPIO reading and handling in a loop or some other way.
There few options that can help:

Wiki page, with detailed explanation or simple example - how to assign GPIO state to a screen Event. Or if there would be a possibility to assign variable to GUI state - for cases where non-binary input device is used.
Provide code example with minimal breadcrumbs (for example button and screen event declaration, and CbPinPoll method for event handling, etc).

Something like here with steps:
https://github.com/igorantolic/ai-esp32-rotary-encoder#Details

Hi @shafr -- those are some great suggestions.
Although we have the ex21_ard_input_pin example to demonstrate how to manipulate a GUI with external buttons, it is might not be generic enough for users to see how to integrate other input devices.
Let me look at some example peripheral libraries (perhaps a rotary encoder) or other GPIOs and see if I can create a simple example demonstrating how one can integrate. I would probably start with an new example, but may end up creating a wiki page (as you have indicated) if that looks more appropriate to handle different use-cases.

Great!
One more question - I see that some documentation is in wiki, some in gh-pages branch. Is it all in Markdown or some of that is generated from other sources? (as in gh-pages).
It would be easier to migrate to Jekyll for example for better structure, reusability and layout.

How did you go with this? I am now introducing a rotary coder into my tire tool project. A simple example would be awesome.

How did you go with this? I am now introducing a rotary coder into my tire tool project. A simple example would be awesome.

For reference, I posted an example of how one might do this with an encoder in #348 .

For reference, I posted an example of how one might do this with an encoder in #348 .

Hello, I am also trying to get joystick control, but only see Focus Next and Previous actions available.  These work fine for left/right buttons, but how can up/down buttons be used?  Specifically, I'm trying to get these to work with the virtual keyboard... not user friendly to only have left/right navigation when typing.  Let me know if possible, thanks!


Merge refs/heads/feature/find-as-cursor into alpha

Merge refs/heads/feature/find-as-cursor into alpha

This PR has been merged into alpha and tagged as 1.6.0-alpha-202304131352. Thanks for your contribution!


Write tests for findUniqueFilename() in UploadWorker.kt

Description
Look at PR #5877 for more details.
I have updated the method findUniqueFilename() in UploadWorker.kt to improve its efficiency in finding a unique name, fixing #2506. I don't have time to write tests for it at the moment so if someone would like to write tests for it that would be appreciated.
Tests should insure that the file name is changed as expected (appended with a three digit hash in the form #XXX) and that the file name is indeed unique.

I would like to work on this issue :)


Add parentProcessInstanceKey to ProcessInstanceFilter. Closes #36

Operate's Swagger documentation includes an attribute called parentProcessInstanceKey, which is currently missing from Operate's official documentation (issue raised here).
This PR addresses the issue by adding the parentProcessInstanceKey attribute to ProcessInstanceFilter. As a result, it now correctly filters process instances by their parent key.

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.afelipe seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.

Hi @alexdefelipe,
Many thanks for your PR! I'll release it and come back to you when it's ok :)

<IP_ADDRESS> has been released


Type safe storage API

Everybody will be encoding/decoding useful types from a byte array. This can be included in the user lib.
Supporting types from the ABI.
https://github.com/fulldecent/aion-aip040/blob/master/src/main/java/org/aion/AVMBlockchainWrapper.java

Method naming could be harmonized with the ABIStreamingEncoder or other class


import DNX project types

Fixup project for dnx.

This pull request is now managed with CodeReviewHub. Refresh.


VoxelGeneratorV2

t@daf9cc3e7a2d:/share/trt/tiny-tensorrt7.2/build#  ./unit_test --onnx_path ../model/pointpillars_large_model.onnx --data_path  /media/sl/e933ce17-ab7c-4841-a336-59ca4297b23e/dataset/OpenPCDet_kitti_dataset/training/velodyne_reduced --calibrate_path ../testbin
cali_files name:../testbin/000005.bin
fileName:../testbin/000005.bin
bin file length: 319392
num: 19962
cali_files name:../testbin/000001.bin
fileName:../testbin/000001.bin
bin file length: 298080
num: 18630
[2021-07-24 16:23:00.910] [info] build onnx engine from ../model/pointpillars_large_model.onnx...
Input filename:   ../model/pointpillars_large_model.onnx
ONNX IR version:  0.0.6
Opset version:    10
Producer name:    pytorch
Producer version: 1.7
Domain:
Model version:    0
Doc string:
--- after parse model1   Constant  1  151
--- after parse model2  (1)
INVALID_ARGUMENT: getPluginCreator could not find plugin VoxelGeneratorV1 version 001
While parsing node number 1 [VoxelGeneratorV1]:
ERROR: /share/trt/TensorRT7.2/parsers/onnx/builtin_op_importers.cpp:4208 In function importVoxelGeneratorV1:
[8] Assertion failed: plugin != nullptr && "VoxelGeneratorV2 plugin was not found in the plugin registry!"
[2021-07-24 16:23:12.111] [error] error: could not parse onnx engine
[2021-07-24 16:23:12.111] [error] error: could not deserialize or build engine
Segmentation fault (core dumped)

58  cp -r /share/trt/TensorRT7.2/build/.so /usr/lib/x86_64-linux-gnu/
59  cp -r /share/trt/TensorRT7.2/build/.so ./
60  history
root@daf9cc3e7a2d:/share/trt/tiny-tensorrt7.2/build#

I met the same problem as yours, have you solved the problem?

try :
echo "export LD_LIBRARY_PATH=/share/trt/TensorRT7.2/build/:$LD_LIBRARY_PATH" >> ~/.bashrc
source ~/.bashrc
It does not need to be copied.


How this guy has so many workers by just 1 exe can i do same like this

@UnamSanctam sir how can i do like this...how can i make multiple workers by just 1 exe

Looks like he might use a central database that assigns the worker names (something similar to a web panel or server), but for my miner you can either use {COMPUTERNAME} or {RANDOM} if you want a dynamic name.

Can i do same like this from your webpanel? @UnamSanctam

Can i do same like this from your webpanel? @UnamSanctam yeah i can name randomly it doesn't matter but i can i name 1 exe uncountable times.? If this is possible then tell me how..where i put the names ?

You can code it into it the endpoint.php, it's not too difficult to do.
Not fully sure what you mean by "yeah i can name randomly it doesn't matter but i can i name 1 exe uncountable times", if you enter {RANDOM} then it will randomize the worker name for each pool connection it does.

Sir i mean how can i name 1 exe several times... suppose i am spreading my exe file through a website...but..how will i get these names of exe for each download thats what i am asking sir..i can name 1 exe while building it...only

Sir i mean how can i name 1 exe several times... suppose i am spreading my exe file through a website...but..how will i get these names of exe for each download thats what i am asking sir..i can name 1 exe while building it...only

@UnamSanctam sir..i want to contact you personally please

The exe name does not matter, that's not what shows up in the pool. What shows up in the pool is the worker name you choose, if you choose {COMPUTERNAME} or {RANDOM} as the worker name then they will be dynamic like they are in your screenshot (though his names look centralized).

Ok sir i understood thanks..
@UnamSanctam can i contact you personally please

My only personal contact right now is my email<EMAIL_ADDRESS>


Make charged arrows configurable

It seems like charged arrows are the only thing in this mod that isn't possible to disable without disabling the whole tools module, if there isn't a strong reason for this I'd really like to suggest it be made configurable, since the redstone charge is very helpful to me but I'd really like to avoid things that (to me) feel blatantly non-vanilla like the charged arrows

Disable the redstone charges/charger, it's tied to that config IIRC. Might make sense to separate it though

It isn't, according to Line 101 of InspirationsTools.java, it seems to just be undisableable

oh wait, i see

ah, okay, I see!
Regardless, it would probably be useful to separate the config for the two so I'll leave this open and rename it.


pdf rendered with errors: "Error: Required "glyf" or "loca" tables are not found"

http://www.tp-link.com/resources/document/Archer_C7_V2_User_Guide_1910010809.pdf
tested with ff 37.0.2 on linux.
on page 3/4:
"PDF 81db909953679b4aa345f95eb9537722 [1.6 Adobe PDF Library 10.0 / Acrobat PDFMaker 10.1 Word 版] (PDF.js: 1.1.124)" viewer.js:6397:0
"Error: Required "glyf" or "loca" tables are not found" pdf.worker.js:243:4
"Font_checkAndRepair@resource://pdf.js/build/pdf.worker.js:17896:11
Font@resource://pdf.js/build/pdf.worker.js:16462:16
PartialEvaluator_translateFont@resource://pdf.js/build/pdf.worker.js:12002:14
PartialEvaluator_loadFont@resource://pdf.js/build/pdf.worker.js:10775:1
PartialEvaluator_handleSetFont@resource://pdf.js/build/pdf.worker.js:10547:14
next@resource://pdf.js/build/pdf.worker.js:10936:22
next/<@resource://pdf.js/build/pdf.worker.js:10941:19
" pdf.worker.js:244:0
"Warning: Unsupported feature "unknown"" pdf.worker.js:235:4
"Warning: Unsupported feature "unknown"" pdf.js:235:4
"Warning: Unsupported feature "font"" pdf.worker.js:235:4
"Warning: Unsupported feature "font"" pdf.js:235:4
"Warning: Error during font loading: Required "glyf" or "loca" tables are not found" pdf.js:235:4

Possibly a duplicate of #4684.

Developers and leaders of Mozilla, which are shemales ass!

They should then put it long as needed by the throat until he swallows themselves in suicide!
You Mozilla is...

 And to do a favour... I'm going to do that!
I kicked her so hard failure golden eggs until they are ringing and sing you all the melodies of forward and back pain in an instant!

Was it expected?
Oh, Yes, that was!
A movement such as the Mozilla!
So happy that I never upgraded to Firefox 29 and beyond!
Let me tell you something Mozilla developers! If I would be still using your latest crap-ware that really my mission would at this time to find out where you live and then drill him often in Golden's failure until you analyzes and understands how to threaten power users in the correct way!
Without a doubt, has been said before - but may not be repeated enough... You are...

Developers and leaders of Mozilla, which are shemales ass!

They should then put it long as needed by the throat until he swallows themselves in suicide!
You Mozilla is...

 And to do a favour... I'm going to do that!
I kicked her so hard failure golden eggs until they are ringing and sing you all the melodies of forward and back pain in an instant!

Was it expected?
Oh, Yes, that was!
A movement such as the Mozilla!
So happy that I never upgraded to Firefox 29 and beyond!
Let me tell you something Mozilla developers! If I would be still using your latest crap-ware that really my mission would at this time to find out where you live and then drill him often in Golden's failure until you analyzes and understands how to threaten power users in the correct way!
Without a doubt, has been said before - but may not be repeated enough... You are...
Stupid cones!

not fixed in Fedora 22, Firefox 40.0.3, PDF.js 1.1.444