[5.9] Depend on QueueManager contract

TLDR: This is a very minor upgrade, just making sure that Illuminate\Queue\Worker depends on the interface instead of the concrete class for Illuminate\Queue\QueueManager.
As for the use case, for a package I'm building here I wanted general access to the QueueManager singleton, and decorate it with some extra functionality, but the Worker would yell at me for injecting a different concrete class.
@X-Coder264 raised a valid point here when I targeted this change on 5.8, and earlier here, so I implemented his proposed change and targeted master / 5.9 now.
As a side note, I tried a few things to make this work without having to extend the default QueueManager class and replace it so the package could be plug & play. In the end I found this article which told me I could extend core bindings. I couldn't find this in the documentation, would a PR for adding that be appreciated?

Heya, thanks for your pr. But I think we shouldn't inject the entire application into the worker so it becomes a hardcoded dependency. This way the component is hard-coupled to the foundation framework component. Maybe we should rethink how the isDownForMaintenance method is called instead.

Heya, thanks for your pr. But I think we shouldn't inject the entire application into the worker so it becomes a hardcoded dependency. This way the component is hard-coupled to the foundation framework component. Maybe we should rethink how the isDownForMaintenance method is called instead.

Hey @driesvints , thank you for reviewing.
The other solution I considered was adding isDownForMaintenance to the Illuminate\Contracts\Queue\Factory contract. To me this seems like a cleaner and more correct solution, mostly because that method isn't in either of the interfaces used by the QueueManager at the moment. I initially decided against it because adding a method feels like a change with more risk for breakage elsewhere in the (admittedly unlikely) event that someone is using that contract for something other than the QueueManager.
However, seeing as this PR will have to target 5.9 anyways, maybe adding the isDownForMaintenance method to the interface is the correct course of action here. I'd love to hear your thoughts.

@nmokkenstorm That's not a perfect solution but probably a better one yeah. Let's go for that?

Maybe also squash your commits.

I've reverted unnecessary changes, and squashed the commits. This is the first time I'm doing the latter, so I hope it's correct, but it seems to be okay.

My proposed solution there was just the quickest solution, not the way I'd go about implementing this.
IMO, the manager isDownForMaintenance is called only in the worker and I don't see the need to have that method there (and thus no value to add it to the contract).
The worker can receive a callable|bool in its constructor which can be a closure passed from the service provider doing $this->app->isDownForMaintenance().
That way the worker does not need to depend on the entire application/container and that method doesn't have to be added to the contract and it can be deleted from the queue manager class.

@X-Coder264 that's a great idea 👍
@nmokkenstorm do you agree with this? If so you can make these changes if you like.

I had considered passing a boolean, but consider the following scenario:

One or more workers get started while the application is not in maintenance mode, get passed the proposed boolean flag.
Maintenance mode gets activated.
Workers will never pick up the fact that maintenance mode is activated.

I'm not too sure what the conventions are for putting apps in maintenance mode, if people use php artisan queue:restart afterwards the above is not an issue. We do risk creating a hard to track down  bug for people relying on the maintenance mode check being 'live'.
Passing a closure in QueueServiceProvider might work:
protected function registerWorker()
{
    $this->app->singleton('queue.worker', function () {

        $maintenanceModeCheck = function () use ($app) {
            return $app->isDownForMaintenance();
        }

        return new Worker(
            $this->app['queue'], $this->app['events'], $this->app[ExceptionHandler::class], $maintenanceModeCheck
        );
    });
}

Optionally the closure could be inlined in the Worker constructor, but I'm not sure how I feel about nesting things that deep. I'll happily make the changes, if you agree with the above.

Yes, that's way I said that it needs to be a closure passed from the service provider :)

Yes, that's way I said that it needs to be a closure passed from the service provider :)

My apologies, I might've misunderstood your comment about the paramater being a callable|bool

Np, I said callable|bool so that someone can pass directly a bool value if he wants to do so, but the default implementation provided by the framework should pass the closure.

@X-Coder264 hmm, that might be a little too unconventional no? Maybe we should just rename the method isDownForMaintenance method on the Factory interface to something more generic that makes sense?
What I'm also asking myself: why can't the queue continue the run when the app is in maintenance mode? In my view maintenance mode was always something front-end wise to inform the user that they can't interact with an app for a while. But that doesn't seems applicable to a queue imo.

@X-Coder264 hmm, that might be a little too unconventional no? Maybe we should just rename the method isDownForMaintenance method on the Factory interface to something more generic that makes sense?
What I'm also asking myself: why can't the queue continue the run when the app is in maintenance mode? In my view maintenance mode was always something front-end wise to inform the user that they can't interact with an app for a while. But that doesn't seems applicable to a queue imo.

@driesvints the framework specifically provides functionality for Jobs running / not running in maintenance mode as defined here. 5.8 documentation doesn't actually state this, but the code does reflect it.

@nmokkenstorm gotcha. Then maybe @X-Coder264's suggestion is the better approach.

Np, I said callable|bool so that someone can pass directly a bool value if he wants to do so, but the default implementation provided by the framework should pass the closure.

I think passing a boolean here is never a good idea for the reasons I outline above. Honestly I don't expect users to manually create workers anyways, and in the event that they do and they really want a constant expression, a direct return from the callable would fit their needs.

Hmm, after seeing these change I'm beginning to suspect that the "cleaner" approach is just adding the method on the interface after all. The app is already a big dependency on the factory. I don't think it matters much if the Factory has the maintenance check on its contract.
@X-Coder264 @nmokkenstorm what do you think?

The new functionality is in, I also took the liberty of adding a test because apparently this wasn't covered yet.
The one thing I am not sure about is how to call the closure. Right now I do it by function invocation but maybe call_user_func is better here. I'm open for suggestions.

Hmm, after seeing these change I'm beginning to suspect that the "cleaner" approach is just adding the method on the interface after all. The app is already a big dependency on the factory. I don't think it matters much if the Factory has the maintenance check on its contract.
@X-Coder264 @nmokkenstorm what do you think?

The Worker depends on the Manager, which depends on Application, so you're correct in that de dependency tree doesn't change that much. The way @X-Coder264 suggested it is definitely 'safer' with regards to breaking backwards compatibility.
I did do a quick search on public Github repositories to check if anyone is using the contract outside of the manager, but that didn't work as well as I would've liked it to.

@driesvints  The worker depends now on the factory contract. What are the dependencies of the factory contract implementation are irrelevant for the worker. And about the factory/QueueManager concrete implementation, it can now be also decoupled from the foundation application. Since the isDownForMaintenance method is being removed from it in this PR, the only two dependencies that it has now are the config and event dispatcher contracts which can be directly injected instead of the whole container/application and thus the queue component in general will be a lot less coupled to the framework foundation.

... the only two dependencies that it has now are the config and event dispatcher contracts which can be directly injected instead of the whole container/application and thus the queue component in general will be a lot less coupled to the framework foundation.

Huh, I hadn't even considered that. I'm not sure if this PR is the place to change that, but I might as well do that if I'm doing work there anyways. @driesvints  @taylorotwell , thoughts?

Let's just see what Taylor says.

To summarise after the weekend:
The goal of this PR is to make Illuminate\Queue\Worker not depend on a concrete instance of Illuminate\Queue\Manager but on the contract offered in Illuminate\Contracts\Queue\Factory.
The initial approach was to inject Illuminate\Foundation\Application into the worker, which @driesvints thought was a bit overkill.
The other two possible approaches here are adding the isDownForMaintenance method to the contract or adding a callable as a fourth argument to the constructor of Illuminate\Queue\Worker.
The latter option is the current state of the PR, but I feel that that injecting the Application into the Worker is still the cleanest way to go about this, minimal impact with regards to breaking changes.

Related to the above, this commit is now conflicting in the tests, but that should be an easy rebase fix.

The latter option is the current state of the PR, but I feel that that injecting the Application into the Worker is still the cleanest way to go about this, minimal impact with regards to breaking changes.

I disagree, there should be no reason that the worker should depend on the entire application (I agree with @driesvints that it's overkill). As far as breaking changes go it's the same impact for both approaches as a new argument has to be added to the constructor either way.
TL;DR; I don't see any reason why the former option would be chosen over the latter (the current state of the PR)..

@X-Coder264  you're correct, either of the three options work, which is why we want to defer to @taylorotwell here

@nmokkenstorm @X-Coder264 Thank you both so much! This makes using the Queue component by itself significantly more easy.
Now I just need to wait for the release. :hourglass_flowing_sand:

Should the setManager() function (which isn't used within the framework) be renamed to setFactory() as well? (Aliasing the Factory contract to QueueManager is quite confusing, hehe...)


Add undef before defining AT_LOGGING_LEVEL_INFO to prevent warning

This removes the only warning when installing with CocoaPods. It doesn't change the functionality.

anyone checking this?

Sorry, must've fallen through the cracks. I'll take a look later today!

We've implemented a slightly different version of this in 3.2:
You can now edit your .xcconfig to customize log levels. By default they include DEBUG and up.


Response Type 'id_token' in implicit flow

I'm trying to do the implicit flow with response_type id_token and requestAccessToken: false.
The library is throwing the error 'Error validating tokens' in 'angular-oauth2-oidc.js:1785'.
My AuthConfig:
export const authConfig: AuthConfig = {
  issuer: environment.url,
  skipIssuerCheck: true,
  redirectUri: window.location.href,
  clientId: environment.clientId,
  responseType: 'id_token',
  requestAccessToken: false,
  scope: 'openid groups',
  showDebugInformation: true,
};

Versions:

"angular-oauth2-oidc": "^9.2.0",
"angular-oauth2-oidc-jwks": "^9.0.0",

Entire stack trace:
TypeError: Cannot read property 'words' of undefined
    at init.concat (jsrsasign.js:26)
    at Object._append (jsrsasign.js:26)
    at Object.update (jsrsasign.js:26)
    at push../node_modules/jsrsasign/lib/jsrsasign.js.KJUR.crypto.MessageDigest.updateString (jsrsasign.js:242)
    at push../node_modules/jsrsasign/lib/jsrsasign.js.KJUR.crypto.MessageDigest.digestString (jsrsasign.js:242)
    at JwksValidationHandler.calcHash (angular-oauth2-oidc-jwks.js:118)
    at JwksValidationHandler.<anonymous> (angular-oauth2-oidc.js:100)
    at Generator.next (<anonymous>)
    at tslib.es6.js:74
    at new ZoneAwarePromise (zone-evergreen.js:960)

ERROR Error: Uncaught (in promise): TypeError: Cannot read property 'words' of undefined
TypeError: Cannot read property 'words' of undefined
    at init.concat (jsrsasign.js:26)
    at Object._append (jsrsasign.js:26)
    at Object.update (jsrsasign.js:26)
    at push../node_modules/jsrsasign/lib/jsrsasign.js.KJUR.crypto.MessageDigest.updateString (jsrsasign.js:242)
    at push../node_modules/jsrsasign/lib/jsrsasign.js.KJUR.crypto.MessageDigest.digestString (jsrsasign.js:242)
    at JwksValidationHandler.calcHash (angular-oauth2-oidc-jwks.js:118)
    at JwksValidationHandler.<anonymous> (angular-oauth2-oidc.js:100)
    at Generator.next (<anonymous>)
    at tslib.es6.js:74
    at new ZoneAwarePromise (zone-evergreen.js:960)
    at resolvePromise (zone-evergreen.js:798)
    at resolvePromise (zone-evergreen.js:750)
    at zone-evergreen.js:860
    at ZoneDelegate.invokeTask (zone-evergreen.js:399)
    at Object.onInvokeTask (core.js:41344)
    at ZoneDelegate.invokeTask (zone-evergreen.js:398)
    at Zone.runTask (zone-evergreen.js:167)
    at drainMicroTaskQueue (zone-evergreen.js:569)
    at ZoneTask.invokeTask [as invoke] (zone-evergreen.js:484)
    at invokeTask (zone-evergreen.js:1621)

Best regards
Nick

I think you can try once with NullValidationHandler and see the output. It might help to understand the problem better.

For implicit flow, I think you should ask for id_token token. Could you try that?

@dineshba I've added the NullValidationHandler and it works now. Can you explain the difference to me?
@jeroenheijmans I'm developing an application to test our oauth2-workflow. You can configure AuthConfig via the web interface.

Hmm? I'm not sure what your response means? Or maybe I didn't explain myself well. I think you should set responseType to token id_token for implicit flow, you mentioned only setting the latter?

As far as i understand, JwksValidationHandler is used when your jwt tokens are encrypted using some asymmetric key. By default, JWT tokens are not encrypted just encoded. You can debug your id_token/access_token in https://jwt.io/#debugger.
Is your tokens encrypted ?

@jeroenheijmans Yes and that is what we are testing. We want to ensure with this webinterface that the server can handle all these different response type variations.
@dineshba My token is encrypted but i decript the the token by myself.
Thanks for your responses!

JWTs are usually not encrypted. They are signed though, and the JwksValidationHandler can be used for that. I also believe validation is only called for processing the IdToken.
If your token is encrypted, then a JavaScript client should not be processing it at all (since they could never be trusted to hold the decryption key). I think there's no way to disable processing of the id token by this library if you ask for it (though I'm not sure).
Either way, to further help you debug the issue, we'd need a way to reproduce it. At the very least, we'd need a sample token, but probably we'd need a minimal repro. I can imagine that's hard to provide, but without it it's a bit of a guessing game for us...

Sorry i meant encoded. My fault.

Sorry i missed the last sentence of you. @jeroenheijmans
I changed the Validation Handler to the NullValidationHandler like @dineshba said.
Without the validation i'm recieving the following id token.
{
  "sub": "User",
  "groups": [],
  "iss": "http://example.issuer.com/",
  "aud": "Test_OAuth2_Client",
  "exp":<PHONE_NUMBER>,
  "iat":<PHONE_NUMBER>,
  "auth_time":<PHONE_NUMBER>,
  "nonce": "VFhIbVVjU2M3Qzh-bDVlUkQtTndvTTUuUEp3MDZWNUV4Vy4uYWNBamVxR0Ju",
  "amr": [
    "Password"
  ],
  "acr": "0",
  "jti": "it_FT1DF5qTHcrgObff59boMwEQoQ2ZIRavBGVTcdjl",
  "azp": "Test_OAuth2_Client"
}

I debugged through the code and found the error.
There is no at_hash in my id token. I set the property "disableAtHashCheck" in the AuthConfig  to true and now it is working.
Many thanks for the suggestion with the ID token.

@nick1699 Was the issue closed by recent merge? Or is there still an open issue?

@jeroenheijmans The issue can be closed.


Add support for dash ('-') in titles & keys

The dash should really be supported as a title/key part. It it a commonly used "spacer" in titles and keys, and AWS INI files already support it.
Partially deals with accense/eini#2, but I have left spaces for another day—it is not clear what the policy should be here.

This appears to be broken in the same way as master—for some reason, on Erlang 17+, it seems to be inconsistently measuring the line numbers—ignoring empty lines. Not sure how to correct that, but it seems outside the scope of this PR. All tests pass in R16B03-1.

I figured out why it's broken. It appears to be a problem with OTP. I filed an issue:
ERL-263

@motobob @waisbrot any chance one of you could merge this? I have dashes in my AWS credentials file, and it kinda ticks me off that I have to patch it to make it erlcloud compatible.
This has no effect on the unit tests. ERL-263 is patched, but that won't make these unit tests pass on Erlangs 17-19.0. I don't really want to fix those broken unit tests as part of this PR.


Add stress tensor and fix scaling

Codecov Report
Base: 93.26% // Head: 92.68% // Decreases project coverage by -0.57% :warning:

Coverage data is based on head (54aeb75) compared to base (7f978f7).
Patch coverage: 52.94% of modified lines in pull request are covered.

Additional details and impacted files
@@            Coverage Diff             @@
##             main       #6      +/-   ##
==========================================
- Coverage   93.26%   92.68%   -0.58%
==========================================
  Files          16       16
  Lines         638      656      +18
==========================================
+ Hits          595      608      +13
- Misses         43       48       +5

Flag
Coverage Δ

unittests
92.68% <52.94%> (-0.58%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

src/torch_m3gnet/model/litmodule.py
63.79% <23.80%> (-1.63%)
:arrow_down:

src/torch_m3gnet/config.py
100.00% <100.00%> (ø)

src/torch_m3gnet/model/build.py
100.00% <100.00%> (ø)

src/torch_m3gnet/nn/gradient.py
100.00% <100.00%> (ø)

src/torch_m3gnet/nn/readout.py
100.00% <100.00%> (ø)

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

:umbrella: View full report at Codecov.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


npm WARN<EMAIL_ADDRESS>requires a peer of<EMAIL_ADDRESS>but none is installed

Bug report

What is the current behavior?
npm WARN<EMAIL_ADDRESS>requires a peer of<EMAIL_ADDRESS>but none is installed. You must install peer dependencies yourself.
If the current behavior is a bug, please provide the steps to reproduce.

What is the expected behavior?
inclusion of ajv in package.json

Other relevant information:
webpack version:  4.44.2
Node.js version: 14.15.0
Operating System: OSX 10.15.7
Additional tools:

Thank you for creating this issue. However, issues need to follow one of our templates so that we can clearly understand your particular circumstances.
Please fill out all fields.


Questions about visualisation

Thank you very much for your excellent work. Can you provide a visual code?

Sorry for the late reply. We've been busy with other projects.
The visualization code  (tools/misc/visualizer.py) is now uploaded. Feel free to modify it as you need.


🔷 [Epic] Group feature scoping & technical planning [MVP]

Description
(Overview of milestone or function governed by this epic)
Resources
(Relevant documentation, Figma links, and other reference material)

Item 1
Item 2
Item 3

https://github.com/NearSocial/SEPs/pull/2


⚠ Bofrost.lu has degraded performance

In c5efc6c, Bofrost.lu (https://www.bofrost.lu) experienced degraded performance:

HTTP code: 200
Response time: 1634 ms

Resolved: Bofrost.lu performance has improved in 0880fc0 after 6 minutes.


easygcm's GET_ACCOUNTS permission turns off app's permission

Because of

app can not request for get_accounts permission on api > 13. I tried to set app's manifest permissions to maxSdkVersion="22", but gradle fails to merge two manifests. It suggest a solution though:
Error:(20, 9) Attribute uses-permission#android.permission.GET_ACCOUNTS@maxSdkVersion value=(22) from AndroidManifest.xml:20:9
Error:(20, 9) Execution failed for task ':app:processDebugManifest'.

Manifest merger failed : Attribute uses-permission#android.permission.GET_ACCOUNTS@maxSdkVersion value=(22) from AndroidManifest.xml:20:9
is also present at eu.inloop:easygcm:1.4.0:15:9 value=(13)
Suggestion: add 'tools:replace="android:maxSdkVersion"' to  element at AndroidManifest.xml:18:5 to override

ehh, sorry, been solved before


add shell completions to the process plugin

most shells enable completions (e.g. filenames)
would be nice to enable the same completions as the user gets in their shell

since 2.15.x we have the shell tab. It has recent commands support. But terminal support was depricated.


Arduino OTA

Tell me, can McLighting be downloaded to esp using the Arduino OTA?
I tried to download the BasicOTA sketch first, the esp port appears, I load the McLighting sketch through OTA, after that there is no esp port.
What am I doing wrong?

http://<IP_ADDRESS>/update


List cards in workspace (index card)

I wanted to test this locally so I rebased to main because there are many new changes there.
This is how it looks for me in operator mode. Probably we can limit the height and move the scroller in one of the nested containers:

Looks ok to me. Do you mind if I start working on opening cards on stack when clicking on these items?

Sounds good. I'll work on tests.


[WIP] Add XBlocks

Todo

Tests
Example content

There are some existing XBlock conventions that I'd like you to use here please:

Any data that defines how to render the XBlock but is not user-specific should be in a method called:def student_view_data(self, context=None):

(dndv2 example, video example)

Such data gets cached aggressively in memcached and can be retrieved using the Course Blocks API (for modulestore) and TBD for blockstore. In the meantime, it makes sense to have an inherited v1_student_view_data handler that can retrieve this data, but the underlying methods should follow the existing API as documented in the edX wiki and implemented in existing blocks. However, I can probably add a method to get this data to the new runtime quite easily, in which case we won't need the v1_student_view_data handler at all.
So please rename student_view_context to student_view_data

Any data that is user-specific (such as the assignment scores) must not be in the student_view_data since that is aggressively cached in a user-agnostic way. Instead, convention is for such data to be in an XBlock handler called student_view_user_state - see this drag and drop v2 example

@bradenmacdonald I have made the following changes:

Renamed student_view_context() to student_view_data().
Had to keep a separate handler though since the API signature is different.
Moved user state for Assignment out to a separate handler: student_view_user_state.

@symbolist Code looks good now, thanks! I will test this together with the other PR and then approve.

:+1: for what you have so far.

[x] I tested this: via the LabXchange PR "XBlock custom learner views"
[x] I read through the code
[x] I checked for accessibility issues
[x] Includes documentation: the existing readme has an overview

@ormsbee I have sent you an invite to a course with these XBlocks setup. Let me know whenever you signup and I can add you as course staff.

@symbolist: Did the signup, username dave

@ormsbee Added to course team.
One note: there is very little styling included. Adding it via the LX frontend to avoid need to bump up this package version whenever we tweak anything.

Hmm. Looks like the import did not work correctly.

@ormsbee  Okay, so I was in the middle of a rebase when I exported and so the archive was missing the olx. I have created another course with the content and invited you as course staff.
Sorry for the inconvenience!

@ormsbee Let me know whenever you have completed your testing and I can merge this.

@symbolist: Simulation box size seems a bit small, but that's out of the scope of my concerns. LGTM in terms of merging. Thank you.


[FEATURE REQ] YouTube video

Please describe the feature.
Just letting you know I've recorded a video on YouTube on how to implement this on three envs
Dev, test, and prod
https://youtu.be/8ZIt_DlNCoo
If you'd like to share it here somehow

Excellent walkthrough. I will link to it from our repo as a complementary one to the video that already exists on our repo. On a separate note I am a huge fan of your work around apim. Keep it up!

Thanks Wael! Much appreciated!!
H

@habdelfattah thanks again for your contributions. We now reference your video from our repo as you can see here
If you create a similar video in the future for Gtihub feel free to notify us and we will be more than happy to reference that as well.


allow modify labels/annotations of copied resources

This is solution for issues #509 and #465
Is adding new annotations kubed.appscode.com/sync-labels and kubed.appscode.com/sync-annotations
which can be added to source resource...
...
  annotations:
    kubed.appscode.com/sync: copy-this-resource=true

    # label `app.kubernetes.io/instance` will be removed in target resource because doesn't specify any value
    # label  `managed-by` will be created or replaced in target resource by value 'author'
    kubed.appscode.com/sync-labels: |
      app.kubernetes.io/instance
      managed-by=author

    # same logic but applied for target annotations
    kubed.appscode.com/sync-annotations:
...

@profiprog Bump on this PR. This feature would be really useful if you're using a central config-syncer to push secrets/configmaps to remove cluster and then using config-syncer to synchronize resources to specific namespaces. Either this, or build support for config-syncer to push secrets/configmaps to multiple namespaces on the same cluster. Currently, if you configure your kubeconfig to have multiple contexts to the same cluster, config-syncer throws an error.


Introduce balanced pipe stacking

About the PR
Readded pipe stacking, but good.
Pipes only anchor if they add a new pipe direction to the tile. This means not only are we limited to 4 (for now, pipe layers/multiZ just a week away) devices per tile, but they also MUST necessarily provide value to the Atmos Tech at hand. Not to mention the immense readability increase since now you can just rightclick and mouse over pipes, though a future PR (i.e. making context-menu-highlighted pipe outlines overlay green over all entities) might alleviate this issue.
Why / Balance
It has become increasingly harder to make clean and readable Atmos and SM setups for anything complicated, such as a hybrid SM+TEG setup on Oasis - let alone running a frezon setup in parallel. Modern atmos setups are in some ways more spaghetti than pre-stacking change setups; although those can be reverted to be available on demand with a CVar change.
Consequently, it is also impossible to stack an infinite amount of gas this way.
The absolute highest volume a tile can hold is 1600L + canister + air tile. However, it would still take an experienced atmosian to push to effective use of at least 1200L.

Small rant on readability
Back in April2023mos days readability was a big issue since every setup was so goddamn convoluted you needed to either BE THERE to understand it, or be one of the few people to notice the shitty green outline that at the time was inconsistent.
Since then, spray painters had a feature added to them that allowed pipes to be painted over with a color. I haven't seen Atmos use this, but it also doesn't take an atmos to use it and figure out which pipes go where.
Gas analyzers can also be used to identify pipes in-tile by comparison, which is far easier to teach, and in a pinch could be used to identify pipe bends. However, outline code has been changed a bit since, and all three of these can be used for atmos debugging.
Personally, I'd make spray painters smaller/integrated into an RPD or be almost instant for pipes, for now, I think it's Atmos's own fault for not making their own builds readable.

Technical details
If atmos.strict_pipe_stacking is disabled (by default), use AND logic for unanchoring. Otherwise, use OR logic.
Media
Can't add any because github 2FA is broken and uploading is made egregiously difficult. Oh well.
Picture two pipe bends on each other with strict pipe stacking off. They're stable and anchored.
Video of same thing, but with strict pipe stacking turned on through console (sudo cvar atmos.strict_pipe_stacking true). Second pipe doesn't fit when built or anchored.
Video of pipe stacking off, showing a canister port, pipe bend and two mixers being placed in Sandbox.
"Technically" the highest storage setup for a single tile.

[ ] I have added screenshots/videos to this PR showcasing its changes ingame, or this PR does not require an ingame showcase

Breaking changes
No.
Changelog
:cl: router

tweak: Reintroduced limited pipe stacking. Beware of placement order, as you can't place smaller pipes overlaying large pipes doing the same thing - each new pipe must add a new flow direction to get anchored on.

CI fails due to wizden, builds/runs just fine on linux


Incorrect entity position in rasa adapter

{
"entities": [
{
"end": 112,
"entity": "bot_job",
"start": 93,
"value": "sứ mệnh như thế nào"
}
],
"intent": "ask_for_bot_job",
"text": "xếp sứ mệnh như thế nào"
},
The 1.6.0 version and I are having the error of generating the wrong locations of entities in the sentence, above is an example. Please check again! Thank you

I cannot reproduce this bug, I get the following output:
    {
        "entities": [
          {
            "end": 23,
            "entity": "slot",
            "start": 4,
            "value": "sứ mệnh như thế nào"
          }
        ],
        "intent": "intent",
        "text": "xếp sứ mệnh như thế nào"
      }

Are you using a different file encoding than UTF-8? (this is likely the case if you're using Windows.) Chatette should always work well with Unicode files.
If this is not an encoding problem, could you provide the template you used to get this output please?

I'm having the same problem, the file encode is us-ascii.
It is also interesting notice that if I configure the training down to 1 or 2, the generation works out fine, but as I raised its value, the result became like showed below.
My template:
`%askPopulation
~[greet?] ~[population] @[city]
@[city]
new york
tokyo
~[greet]
hi
hello
~[population]
what is the population of
how many people are there in
`
The output:
{   "rasa_nlu_data": {     "common_examples": [       {         "entities": [           {             "end": 183,             "entity": "city",             "start": 178,             "value": "tokyo"           }         ],         "intent": "askPopulation",         "text": "how many people are there in tokyo"       },       {         "entities": [           {             "end": 186,             "entity": "city",             "start": 178,             "value": "new york"           }         ],         "intent": "askPopulation",         "text": "hello what is the population of new york"       },       {         "entities": [           {             "end": 183,             "entity": "city",             "start": 178,             "value": "tokyo"           }         ],         "intent": "askPopulation",         "text": "what is the population of tokyo"       },       {         "entities": [           {             "end": 186,             "entity": "city",             "start": 178,             "value": "new york"           }         ],         "intent": "askPopulation",         "text": "how many people are there in new york"       },       {         "entities": [           {             "end": 186,             "entity": "city",             "start": 178,             "value": "new york"           }         ],         "intent": "askPopulation",         "text": "what is the population of new york"       }     ],     "entity_synonyms": [],     "lookup_tables": [],     "regex_features": []   } }

There is a problem indeed. It doesn't seem related to encoding. I'll fix that as soon as I can.
Thanks for the heads up :)

This is fixed on master branch. The fix will be present in the next release.
Cheers

The newest version of Chatette (v1.6.1) has just been released with this bug fixed!


Adding available file filters to README

Ignoring FILTER_PDF_EXPORT as it appears redundant and uses a different nomenclature.

Thank you for contributing, this is definitely worth documentation.


gltfpack: Encode textures in its source format

Motivation:
Currently the gltfpack tool can resize and encode textures, but only in ktx2 format, but this format could increase load time (decode time) or textures, and could suffer from compatiblity issues, especally for low-end devices.
Proposal:
Add support of resize and encode textures in its original format, currently jpeg, png, and webp.
Candidate encoders:

jpeg: mozjpeg (lossy and lossless)
png: pngquant (lossy), oxipng (lossless)
webp: libwebp (lossy and lossless)

Non-goals:
Support this proposal in wasm build.
Risks:

Introducing external libraries could introduce their possible vulnerabilities.
Binary size could increase greatly (maybe 2x more).
A lot of code and developing could be needed.
Building and testing could be slower.

Alternatives:
Use 2 passes, first to output gltf, and process textures as image files using external tools, and a second pass to pack it to glb.

Both PNG options here are in Rust. MozJPEG wasn't updated in a year although that by itself is probably fine. Unsure if any of these provide resizing code by themselves (correct resizing requires careful filtering).
But more broadly speaking, I don't think it would make sense for gltfpack to gain more dependencies. KTX2 encoding is harder to do externally because of the necessary metadata and performance issues in existing CLI options (gltfpack does it optimally to the extent the underlying algorithms allow), wheres PNG/JPEG resize can be done externally as a pre-process or post-process, so the extra value here is minor convenience. On the flip side, integrating with a bunch of third party libraries is definitely not something I want to explore.
I've considered the use of stb_image+stb_image_write+stb_image_resize in gltfpack for this purpose before - they at least are straightforward to build - but I am worried that stb_image is not very secure wrt untrusted images. This also will not support WebP, and I assume that the resulting images will not be as small as they could be when a PNG/JPEG optimizer is used - I haven't tested the impact here though.
In general, I am currently treating non-KTX formats as "nice to have support for"; you kinda want super-compression for large assets or low-end devices, and PNG/JPEG/WebP result in a high memory consumption post-decode and slower rendering (even if the transmission size could be better). The reason why WebP support was added for gltfpack was precisely to allow the hybrid workflows (eg compress to webp before gltfpack) to avoid the need to integrate with any third party libraries for first-class support.

stb_image_write unfortunately is not really fit for the purpose; it routinely generates ~30% larger outputs in my testing. The documentation does list it as a limitation.

The PNG output is not optimal; it is 20-50% larger than the file
written by a decent optimizing implementation; though providing a custom

This can be partially mitigated by using sdefl.h (not used by gltfpack atm, not treated as production code) as a replacement; however that makes encoding very slow (~45 seconds to encode a 33 MB GLB file)

For PNG the additional issue is that stb_image_write does not support palettized images, which is the mode (for some types of content) that you would want to achieve maximum reduction in size.

pngquant, in addition to being written in Rust, is GPL with a separate commercial license.
Overall I think this is all way too much work for me to want to maintain, let alone develop. For flows where PNG/JPEG/WebP is the expected storage format I think a separate step (that can run before or after gltfpack, as gltfpack will preserve PNG/JPEG/WebP images) would be appropriate.


Optimize: clips

We should be able to pre-process clips such that we do not require any clipping at runtime.
For example, use path intersection logic to produce a path or set of paths that fit within the clipped area.

This has to take into account stroking properties altering the effective size of the path. For example, a path with a stroke width that != 1 or a non-butt cap will draw additional pixels that should be clipped.
For instance, the following relatively simple SVG cannot be clipped without tessellating the stroke into a fill (or at least into vertices):
<svg width="10" height="10">
  <clipPath id="clip0">
    <path d="M2 3h7.9v2H1" />
  </clipPath>
  <path d="M2, 5L8,6" stroke="black" stroke-linecap="round" stroke-width="2" clip-path="url(#clip0)" />
</svg>


7mpwCUDO Set up Core Data and Player model

 Core Data model for Player

 Create new Xcode project

 Set up Core Data stack


Ability to disable the value change on scroll for NumberField

Provide a general summary of the feature here
It would be useful to be able to disable the on scroll change to NumberField without disabling the field itself, I can see in useNumberField there is logic to disable it, could we add a prop that could disable it too
🤔 Expected Behavior?
When passing isScrollChangeDisabled as true the behaviour of changing the NumberField value should be disabled. Otherwise it should default to disabled === false.
😯 Current Behavior
There is no way to disable the scroll change behaviour
💁 Possible Solution
    let scrollingDisabled = isDisabled || isReadOnly || !focusWithin || isScrollChangeDisabled;

🔦 Context
We have a large number of important NumberFields in use and are getting reports of users submitting wrong values as they have scrolled the trackpad (to locate the submit button) whilst a NumberField is focused.
💻 Examples
No response
🧢 Your Company/Team
No response
🕷 Tracking Issue
No response

Relevant issue which looks like it dropped off our radar https://github.com/adobe/react-spectrum/issues/1602
I think it's fine to open a PR with your change for further discussion.


Add support for the get_vcpu_ms hostcall

This adds support for a hostcall that fetches the amount of time that the guest has spent on the VCPU, but does not include any time the guest has spent idle. The Viceroy implementation is forthcoming.
The raw hostcall provides this value in milliseconds, but the little reading on time in Go suggested that translating this to a
Duration would be more natural. I can revisit this decision, or obviously folks can reach in and get the raw millisecond value from the internal library.
The test case included makes sure that we don't count sleeping time. It may be worth adding an additional test to verify that we do count active time.

The test failures here make me wonder if we need to bump our Viceroy requirement?

The timout during the test makes me think it might be a scheduler issue where the process isn't running asynchronously because something is stalled in the sleep. I can look into this more.


Using the promise-template fails with an error

Using the promise-template fails with the following error:
❯ npm run dev

><EMAIL_ADDRESS>dev
> waku dev --with-ssr

(node:21449) ExperimentalWarning: Custom ESM Loaders is an experimental feature and might change at any time
(Use `node --trace-warnings ...` to show where the warning was created)
(node:21449) DeprecationWarning: Obsolete loader hook(s) supplied and will be ignored: getSource, transformSource
Listening on 3000
1:55:21 PM [vite] Error when evaluating SSR module /private/tmp/waku-project/src/entries.js: failed to import "waku/client"
|- file:///private/tmp/waku-project/node_modules/waku/dist/client.js:202
import { createFromFetch, encodeReply } from "react-server-dom-webpack/client";
         ^^^^^^^^^^^^^^^
SyntaxError: Named export 'createFromFetch' not found. The requested module 'react-server-dom-webpack/client' is a CommonJS module, which may not support all module.exports as named exports.
CommonJS modules can always be imported via the default export, for example using:

import pkg from 'react-server-dom-webpack/client';
const { createFromFetch, encodeReply } = pkg;

    at ModuleJob._instantiate (node:internal/modules/esm/module_job:124:21)
    at async ModuleJob.run (node:internal/modules/esm/module_job:190:5)

Steps to recreate

npm create waku@latest
Choose the promise-template
npm install
npm run dev

This happens when I'm using the Node.js 18 (which is the LTS version still)
I get a different error when I try to use Node.js 20
❯ npm run dev

><EMAIL_ADDRESS>dev
> waku dev --with-ssr

(node:22795) ExperimentalWarning: Custom ESM Loaders is an experimental feature and might change at any time
(Use `node --trace-warnings ...` to show where the warning was created)
Listening on 3000

node:internal/event_target:1083
  process.nextTick(() => { throw err; });
                           ^
Error: The React Server Writer cannot be used outside a react-server environment. You must configure Node.js using the `--conditions react-server` flag.
    at Object.<anonymous> (/private/tmp/waku-project/node_modules/react-server-dom-webpack/server.js:3:7)
    at Module._compile (node:internal/modules/cjs/loader:1241:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1295:10)
    at Module.load (node:internal/modules/cjs/loader:1091:32)
    at Module._load (node:internal/modules/cjs/loader:938:12)
    at cjsLoader (node:internal/modules/esm/translators:283:17)
    at ModuleWrap.<anonymous> (node:internal/modules/esm/translators:233:7)
    at ModuleJob.run (node:internal/modules/esm/module_job:217:25)
    at async ModuleLoader.import (node:internal/modules/esm/loader:308:24)
    at async loadESM (node:internal/process/esm_loader:42:7)
Emitted 'error' event on Worker instance at:
    at [kOnErrorMessage] (node:internal/worker:326:10)
    at [kOnMessage] (node:internal/worker:337:37)
    at MessagePort.<anonymous> (node:internal/worker:232:57)
    at [nodejs.internal.kHybridDispatch] (node:internal/event_target:807:20)
    at exports.emitMessage (node:internal/per_context/messageport:23:28)

Node.js v20.6.1

Hi again. Thanks. Yeah, I can reproduce it. Hmm.

to use Node.js 20

Yeah, I noticed that error yesterday. It's a different issue. For now, please use Node 18. We need to investigate it too.

Well, it's interesting that basic-template and async-template work. Only promise-template fails.

Ohh, I see. It's because the promise template imports from waku/client.

https://www.npmjs.com/package/waku/v/0.15.1 is out. (And just found there's no README)


Documentation dead links

These links in the documentation readme.md are dead:

ajv-formats - formats defined in JSON Schema specification
ajv-keywords - additional validation keywords (select, typeof, etc.)
ajv-errors - defining error messages in the schema
ajv-i18n - internationalised error messages
ajv-cli - command line interface

Looks like this one was moved to the parent folder and renamed. Easy fix.
ajv-keywords - additional validation keywords (select, typeof, etc.)

Thanks for pointing these out, I will take a look.


What happens when we use terms and query_strings filter query in elastalert rule files?

@Qmando
I have a situation where rule file has 2 filters in rule file: terms and query_string filter together, as shown below.
name:
type: any
run_every:
minutes: 5
index:
filter:

terms:
field1:["value1","value2"]
filter:
query:
query_string:
query: "<query_string>" and so on.

As you can see we have 2 filters here. The rule does not throw any error. However when i checked the elastalert.log generated by --es_debug_trace option, i could see only query_string used within  CURL command to fetch results from elasticsearch and no terms query under bool..filter.
@Qmando could you please help me understand this. Does it mean we can use only one filter tag in a rule file at one time. How does the above scenario get translated by elastalert?
Your inputs will be very helpful to me here. Look forward to your inputs.

We also recommend asking questions on the Gitter channel
https://gitter.im/Yelp/elastalert

Yelp/elastalert is no longer maintained. Please use jertel/elastalert. Questions to the discussion below
https://github.com/jertel/elastalert/discussions


Unable to install this plugin

try without @latest version, make sure that you can reach NPM to fetch the required files (some corporate systems will block it in my experience).


Some widgets are not working in APIM 3.0.0 GA with MSSQL

Description:
Following widgets are not working in APIM Analytics 3.0.0 GA when configured with MsSQL.

APIMApiCreated
APIMApiCreatedAnalytics
APIMAppCreated
APIMAppCreatedAnalytics
APIMDeveloperSignups
APIMSignupsAnalytics
APIMSubscriptions
APIMSubscriptionsAnalytics

Suggested Labels:
Bug
Suggested Assignees:

Affected Product Version:
APIM Analytics 3.0.0 GA
OS, DB, other environment details and versions:
Steps to reproduce:
Configure An analytics DBs in MsSQL and run the dashboard profile. Then, log into analytics dashboard and access the Publisher dashboard.
Related Issues:

Fixed in https://github.com/wso2/analytics-apim/pull/838


Transition to use the CCCL monorepo

Maybe starting at v2.2.0?

@jrhemstad when would you recommend to make this move? 2.2.0 or another version?

The monorepo has been the source of truth since 2.2.0, so that seems like the right place to start.

Thanks Jake! 🙏

@conda-forge-admin , please update version

Have implemented with an update to 2.2.0 in PR: https://github.com/conda-forge/cccl-feedstock/pull/6
Please let us know if we need to add anything else there


Load from font resource directory?

Is this possible with Calligraphy?
I want to use the native font support but don't want to refactor all my old code that I've been using Calligraphy with. Is it possible for me to move the font files to the res/font folder and somehow have them still loaded by Calligraphy?

resources don't allow that kind of file, they would be "raw" files a best, but no, they shouldn't live in resources, they are assets.

resources do allow that kind of file https://developer.android.com/guide/topics/resources/font-resource
or you meant something else?

They were added in Android 8.0 (API level 26), if your min version is 26+ then I would 100% use that instead of Calligraphy as thats offically supported. Otherwise older versions just don't read it.


[WIP] Conda deploy

Description
This PR mainly adds conda builds for the following OSes/versions:

OS
Python

Windows (x64)
3.6

Windows (x64)
3.7

macOS
3.6

macOS
3.7

Linux
3.6

Linux
3.7

Why just those versions?
The main reason we can't use 3.5 is because both SciPy and Cython (and maybe others) don't build conda distributions for Python versions <3.6.
Why just x64?
The main reason we can't use x86 machines is because even though we can mimic 32-bit machines for building our wheels, conda requires actual 32-bit hardware, which we don't have access to.
In-depth description

The root of a conda recipe is the meta.yaml file, which essentially contains everything from requirements to documentation

Since our requirements are constantly changing, this file is rendered at build time from our requirements.txtfile

On Azure DevOps our conda distribution is part of our main jobs, so rather than re-invent the wheel (pun intended), we build the conda distribution from our wheel files
On Circle CI, we build from source
Our Azure DevOps builds now live in one parameterized job, and we just have to supply variables such as python_version or build_conda

Type of change

[X] New feature (non-breaking change which adds functionality)
[ ] Documentation change

How Has This Been Tested?
Please describe the tests that you ran to verify your changes.
Provide instructions so we can reproduce. Please also list any relevant details
for your test configuration

[X] Run our test suite using conda on all OS/Version combinations above

Checklist:

[X] I have performed a self-review of my own code
[X] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[X] My changes generate no new warnings
[X] New and existing unit tests pass locally with my changes

I have not done any documentation changes yet primarily because we don't have a conda channel to deploy to. Once we have that channel (and I know the correct commands for a conda install), I will update documentation

Superseded by #263


TODO for registration

I would really like for this package to be registered. What do you think that needs to be done for this?

[ ]  Fix builds  #42
[ ]  Julia 0.7/1.0?

I don't think we need to wait for Julia 0.7/1.0 (unless it's there by the time we get to it).
But yes, #42 would need to be fixed. I think we can try fixing it by setting up a GDALBuilder with BinaryBuilder.jl, and have it link to the same zlib as Julia. Working on setting it up for GEOS and PROJ first, such that we can use those as dependencies.
And might be good to go through #13 and #19 as well again before we register.

Ok I'll go ahead and register now. It is passing tests on 0.6 and 0.7 beta (with deprecation warnings).
How about we make a v0.1.0 release, with v0.1.x being for fixing possible bugs on 0.6. Then we can use master to switch to REQUIRE julia 0.7.


Tome 201602

Add sfCoreNLP

Merged excluding chapas-part and extensions to Cabocha (which fails in test in the latest version).


Linux fixes

I fixed the build under Linux (modernized the autoconf files a bit), and added a pkg-config file.
Archlinux package here: https://aur.archlinux.org/packages/ta-lib-git/

Since there are a lot of space changes in the PR, to make it easier to review, the following way is suggested.
git fetch origin pull/1/head:fix-build
git checkout fix-build
git diff --ignore-space-change 48f5ed37b6e4b66eba6a9ab1dee78b23607117d9 HEAD

Hey Vincent - this repo was just a mirror of the original SVN repo on SF. I'm not planning to maintain the project. But since the upstream is frozen for a long time, I'd like merge some compatible improvements to make it easier for community to use (like this PR).

Thanks @vbmithr !


chore(e2e): Skip flaky specs

What this PR does / why we need it:

Skip failing specs both locally and in CI. Will be fixing failures 1 by 1 as discussed

Which issue(s) does this PR fixes?:

Fixes #
Additional comments?:
Developer Checklist:

[ ] Read your code changes at least once
[ ] Tested on iOS/Android device (e.g, No crashes, library supported etc.)
[ ] No console errors on web
[ ] Tested on Light mode and Dark mode*
[ ] Your UI implementation visually matched the rendered design*
[ ] Unit tests*
[ ] Added e2e tests*
[ ] Added translations*

Codecov Report

Merging #3955 (7b75c62) into main (d930a92) will decrease coverage by 52.35%.
The diff coverage is n/a.

@@             Coverage Diff             @@
##             main    #3955       +/-   ##
===========================================
- Coverage   70.98%   18.63%   -52.35%
===========================================
  Files         459      448       -11
  Lines       12348    12173      -175
  Branches     4082     4060       -22
===========================================
- Hits         8765     2269     -6496
- Misses       3509     9860     +6351
+ Partials       74       44       -30

see 261 files with indirect coverage changes
:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


Is there a way to switch resolv.conf while switching namespace

We have a resolv.conf file for every namespaces.
When switching from one namespace (say VRF_1) to another (say VRF_2), it seems that the resolv.conf file attached to VRF_1 is used to resolve the DNS instead of VRF_2.
Is there any way as of today to ensure use of a different resolv.conf while switching the namespace.

Hi, I don't know is it still relevant. I tried two different ways:

to create resolv.conf under /etc/netns directory before creating the namespace OR forcing sudo resolvconf -u in netns after;
to add some wrapper on DNS Mask to handle dynamic changes with it.

The first one looks more natural, but I agree - both are workarounds

/etc/resolv.conf is an ordinary file, read by many DNS client libraries.
As an ordinary file, /etc/resolv.conf is subject to mount namespaces, but not network namespaces.
a process with a DNS client resolver library thus reads the /etc/resolv.conf from its currently active mount namespace, and if you don't change that to the one used by your boxed processes using separate different network and mount namespaces, your process uses the wrong /etc/resolv.conf.
Switching a process into a different mount namespace is a point of no return and fails when your process is already multi-threaded.


Forward Projection Example

Hi,
I followed the steps in
http://wiki.openrtk.org/index.php/RTK/Scripts/ForwardProjection
to generate projections. However, when I visualize the projections, it seems that the rotations of the source and detector are along the A-P axis. The followings are some projections.

My question is, shouldn't the source-detector pair rotates with respect to I-S axis? The version is
rtkforwardprojections 1.4.0, git hash 33107fb777bff65b78dd35695375a1213241610a
Thank you!

This is not an issue, please use the mailing list<EMAIL_ADDRESS>for user questions.
RTK geometry rotates around the y axis by default, see documentation here. Change your input volume if you want to change the orientation, either by flipping axes or by changing the TransformMatrix in the mhd header (which will modify the itk::Image::m_Direction, see itk documentation).


XamlBehaviors

Port of the https://github.com/Microsoft/XamlBehaviors

Moved code to separate repository: https://github.com/XamlBehaviors/XamlBehaviors


AndroidKeyboard ask

What is your question?
By the way, how did you make Android Keyboard? Can you tell me the .hx that has too Keyboard? I hope it can be answered

FlxG.stage.window.textInputEnabled = true;


Updated peerDependencies to support nestjs v9

I have added "^9.0.0" to the package config file to support the new NestJS version 9 they just released

@jasonsoft-net Can you please have a look a this one :-)

thanks, updated peerDependencies to support nestjs v9


axum feature flag

Hi!
There is a tonic feature flag. I argue that there should be a axum feature flag that is activated by default to not force tonic only users to fetch axum dependencies.
What do you think?

fwiw while this could be easily done especially with #54, tonic itself depends on axum so you'd get it in some parts anyway


Additional rabbit configs

Implement additional rabbit configs using additional_rabbit_configs attribute, #181.

@Jacyzon Can you add a spec for this?

@cmluciano spec added =)

Thanks @Jacyzon can you give me a use case for additional_configs that I would want to put into here. I'm trying to find some documentation.

[LDAP Plugin] (https://www.rabbitmq.com/ldap.html) as an example:
Enable both internal and ldap backend, like so
override additional_rabbit_configs attribute
override['rabbitmq']['additional_rabbit_configs'] = {
  'auth_backends' => '[
    rabbit_auth_backend_internal,
    rabbit_auth_backend_ldap
  ]'
}

render following config
{rabbit,[{auth_backends, [rabbit_auth_backend_internal, rabbit_auth_backend_ldap]}]}

👍


snyk-bot is not whitelisted

https://github.com/HaloSPV3/SPV3.Loader/pull/101

Why?
snyk-bot is an automated user account instead of a GitHub Bot. It will need to be manually whitelisted until the Snyk organization uses a GitHub Bot.

Thanks for filling an issue.
Yeah, this is caused by the nature of the account itself, which is not a bot account. A possible fix I can think of is to allow account whitelisting. I'm open to better ideas though.

The only alternative I can think of is whitelisting with a string.Contains("bot") filter, but that would lead to false-positives.
So, whitelisting specific accounts would be preferred. I hope the account whitelist wont need to be updated frequently.

@BinToss , you can try v0.9.0 now. For the input, try adding ignored_users: snyk-bot

Sorry for the late response. Confirmed it working the other day. It took me a while to circle back to ci work.


sprint field from jira - map to devops

hello,
is there a way to map the 'Sprint' field from jira issues to devops tasks and user stories?
@Alexander-Hjelm

If the field is a simple string field, then it should be easy. You can find a config sample that shows how to do the mapping here: https://github.com/solidify/jira-azuredevops-migrator/blob/master/docs/config.md


coverage run in parallel with multiprocessing doesn't measure test coverage for coroutines.

Describe the bug
Test coverage is not measured for coroutines when coverage is run in parallel with concurrency = multiprocessing. The following commit introduced this regression in Django: https://github.com/django/django/commit/69352d85fa8412865db9e0c7f177b333c0eac3e2. Running coverage without concurrency = multiprocessing works
$ coverage run runtests.py --settings=test_sqlite3 --parallel=1
$ coverage html

when run in parallel with concurrency = multiprocessing, coroutines are not marked as covered:
$ coverage run runtests.py --settings=test_sqlite
$ coverage combine
$ coverage html

To Reproduce
How can we reproduce the problem?  Please be specific. Don't link to a failing CI job. Answer the questions below:

What version of Python are you using?

3.10.9 and 3.11.1

What version of coverage.py shows the problem?

7.2.1

What versions of what packages do you have installed?

MarkupSafe-2.1.2 Pillow-9.4.0 PySocks-1.7.1 PyYAML-6.0 aiohttp-3.8.4 aiosignal-1.3.1 aiosmtpd-1.4.4.post2 argon2-cffi-21.3.0 argon2-cffi-bindings-21.2.0 asgiref-3.6.0 async-generator-1.10 async-timeout-4.0.2 atpublic-3.1.1 attrs-22.2.0 bcrypt-4.0.1 black-23.1.0 certifi-2022.12.7 cffi-1.15.1 charset-normalizer-3.1.0 click-8.1.3 docutils-0.19 exceptiongroup-1.1.1 frozenlist-1.3.3 geoip2-4.6.0 h11-0.14.0 idna-3.4 jinja2-3.1.2 maxminddb-2.2.0 multidict-6.0.4 mypy-extensions-1.0.0 numpy-1.24.2 outcome-1.2.0 packaging-23.0 pathspec-0.11.1 platformdirs-3.1.1 pycparser-2.21 pylibmc-1.6.3 pymemcache-4.0.0 pywatchman-1.4.1 redis-4.5.1 requests-2.28.2 selenium-4.8.2 sniffio-1.3.0 sortedcontainers-2.4.0 sqlparse-0.4.3 tblib-1.7.0 trio-0.22.0 trio-websocket-0.10.0 tzdata-2022.7 urllib3-1.26.15 wsproto-1.2.0 yarl-1.8.2

What code shows the problem?

coroutines

What commands did you run?

$ coverage run runtests.py --settings=test_sqlite
$ coverage combine
$ coverage html

Expected behavior
Test coverage is measured for coroutines.

It's hard for me to see how multiprocessing could interfere with in-process measurement of coroutines.  Can you provide use with a reproducible demonstration of the problem.

The minimal reproducer with the Django test suite is for auser() coroutine.
It is marked as covered when running:
coverage run runtests.py auth_tests.test_middleware --settings=test_sqlite --parallel=1
coverage html

but not when running:
coverage run --concurrency=multiprocessing runtests.py auth_tests.test_middleware --settings=test_sqlite
coverage combine
coverage html

@felixxm Taking a look at this issue at PyCon sprints. I was able to reproduce your scenario both in the Django project and  in an isolated scenario.
Determined that threads (spun by asgiref.sync.AsyncToSync in the Django test cases) are being ignored when --concurrency=multiprocessing is set.
Setting --concurrency=multiprocessing,thread solves the immediate issue and auser() is reported in coverage.
Investigating making this the default behaviour when using multiprocessing.


decay_patient_epoch is hardcoded to 1

on line 144 in train_ctc_multigpu.py : decay_patient_epoch=1,
This would mean the setting for decay_patient_epoch in the config file would be unused.

@jesuistay
I have fixed it.


August component does not load because of invalid API key

Home Assistant release with the issue: 0.75.2 (although its not tied to release)

Last working Home Assistant release (if known): 0.75.2
Operating environment (Hass.io/Docker/Windows/etc.): Hass.io

Component/platform: august

Description of problem:
August component stopped working and a restart of hass gives an invalid configuration
Problem-relevant configuration.yaml entries and (fill out even if it seems unimportant):

Traceback (if applicable):
ERROR (MainThread) [homeassistant.setup] Error during setup of component august
Traceback (most recent call last):
  File "/usr/local/lib/python3.6/site-packages/homeassistant/setup.py", line 148, in _async_setup_component
    component.setup, hass, processed_config)  # type: ignore
  File "/usr/local/lib/python3.6/concurrent/futures/thread.py", line 56, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/usr/local/lib/python3.6/site-packages/homeassistant/components/august.py", line 151, in setup
    return setup_august(hass, config, api, authenticator)
  File "/usr/local/lib/python3.6/site-packages/homeassistant/components/august.py", line 120, in setup_august
    hass.data[DATA_AUGUST] = AugustData(api, authentication.access_token)
  File "/usr/local/lib/python3.6/site-packages/homeassistant/components/august.py", line 161, in __init__
    self._doorbells = self._api.get_doorbells(self._access_token) or []
  File "/usr/local/lib/python3.6/site-packages/august/api.py", line 119, in get_doorbells
    access_token=access_token).json()
  File "/usr/local/lib/python3.6/site-packages/august/api.py", line 243, in _call_api
    response.raise_for_status()
  File "/usr/local/lib/python3.6/site-packages/requests/models.py", line 939, in raise_for_status
    raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 403 Client Error: Forbidden for url: https://api-production.august.com/users/doorbells/mine

Additional information:
I tried sending the GET command to the URL indicated using
x-august-api-key: 727dba56-fe45–498d-b4aa-293f96aae0e5
Content-Type: application/json
Accept-Version: 0.0.1
User-Agent: August/Luna-3.2.2
x-august-access-token: removed

but always received
{
	"code": "ForbiddenError",
	"message": "API key is not valid"
}

If I instead used the following key which I found online, then I get valid data for my locks.
x-august-api-key:79fd0eb6-381d-4adf-95a0-47721289d1d9
Content-Type: application/json
Accept-Version: 0.0.1
User-Agent: August/Luna-3.2.2
x-august-access-token: removed

It seems the key that is used is no longer valid

I'm getting the same exact error.  It happened to me on 74.0 this evening.  Home assistant successfully unlocked the door for me at about 5:15PM EST, and then about an hour later when we left, I noticed my automation didn't lock my door.  Upon further investigation, I'm getting the same errors as OP.  Just wanted to confirm this does not seem to be a one-off.

The api key is received from the August api during authentication, so it's probably the api key refresh logic that needs to be fixed, not just replacing a hard coded key with another key.
The api key is generated at least the first time you login, ie the first time the component was setup with your credentials. Clearing the auth cache might force a new attempt to generate api key, after restarting home assistant.
The auth cache file is in the config directory and named:
.august.conf
Note that it's hidden.
Make sure you backup your auth cache file before trying this, so you can go back to previous state of needed.
If a new api key needs to be generated when the old one expires, that problem needs to be fixed first in the py-August library.

Sorry, I misread this issue.

I'm experiencing the same issue.  Since this morning I am no longer able to use the component.  I attempted to change the API key as indicated above but was getting a 403 forbidden error on my frontend.

@snjoetw has the API access been removed?

I'm also having this issue. It started yesterday after an HA reboot, while I was making unrelated config changes. I tried deleting my .august.conf file and instead of the configurator popup asking for the verification code, I now get the error: "403 Client Error: Forbidden for url: https://api-production.august.com/session" on my frontend.
I also tried poking around the API using Postman. Sending a POST to https://api-production.august.com/session using the API key that @gary-reyes noted in his OP, and a randomly generated UUID. The response body comes back with this:
{     "installId": "<removed>",     "applicationId": "",     "userId": "<removed>",     "vInstallId": false,     "vPassword": true,     "vEmail": false,     "vPhone": false,     "hasInstallId": true,     "hasPassword": true,     "hasEmail": true,     "hasPhone": true,     "isLockedOut": false,     "captcha": "",     "email": [],     "phone": [],     "expiresAt": "2018-12-06T19:43:11.574Z",     "LastName": "",     "FirstName": "" }
and also returns a x-august-access-token response header.
Using the x-august-access-token, I sent a GET to https://api-production.august.com/session and response body was:
{     "code": "MethodNotAllowedError",     "message": "GET is not allowed" }
I'm able to help run any other tests, if needed to assist with troubleshooting.

I'm also getting the 403 Client Error. I also get it when using py-august directly. The response code and content received by the _call_api method is:
403 b'{"code":"ForbiddenError","message":"API key is not valid"}'

Just updated the API key: https://github.com/snjoetw/py-august/commit/688ed4e3727447109868d4ed848f3bedc99a00db
I've tested and it seems to work locally, at least I'm able to authenticate myself now. But I can't really tell if all the APIs are still working as I don't own any August product any more.
I'll make a release and hopefully someone can help testing this component

@snjoetw I changed the API key in the .august.conf file but its still not working for me.

using HASS 0.74.0 on python venv and changed the HEADER_VALUE_API_KEY, it now works.

@accelle17 do you know if this can be done within hass.io?

I am experiencing this same problem.

I ran into problem when I was publishing the new version yesterday. I’ll give it another try tonight.

@manniac if you’re able to change API key manually as @accelle17 suggested you’ll also need to nuke .august and re-authenticate again

I'm also trying to figure out how to make the adjustments with Hassio..  I've never had to use a command interface with it and the stuff I've been looking up has commands being run to fix.  Thanks for helping us out, snjoetw!  I'm sure I'll figure out how to apply your fix after playing with it enough.. hoping it works for ya tonight!

I have access to the command line within hass.io but cannot locate where api.py would be located.

@jsnyde30 @Maaniac I'm not running hass.io, but in my home assistant docker, the August lock's "api.py" file is located at:
/usr/local/lib/python3.6/site-packages/august/api.py
Try running a find command from your root directory to locate it:
find . -name "api.py"

For those if you with hass.io, here's my command history for how I fixed this:
ssh -p 22222 root@<ha-ip>
login
docker exec -ti homeassistant /bin/bash
vi /usr/local/lib/python3.6/site-packages/august/api.py

Changing the API key seems to have worked A-OK for me. Nice when things are simple!

@rfpludwick when I run the docker exec -ti homeassistant /bin/bash command it is asking me for a password.  Any idea what that would be?

@Maaniac No idea. I wasn't prompted for one. Also, I removed my comment because restarting the HA Docker container resets that API key anyway, so that's not a good fix for hass.io.

@TimothyLeeAdams no such directory in Hass.io

@rfpludwick I would have expected the file to revert too, as you suggested, but I was able to change the HEADER_VALUE_API_KEY to the new API key that @snjoetw provided, and even after a docker restart, the new key persisted.  Still, I believe the API is only used when authenticating anyway, to create the .august.conf file and once that is done, the August component only needs the access token. And since .august.conf is located in the home-assistant config folder, that file is protected.

@TimothyLeeAdams
The API key is sent with each rest command. The access token is sent with each command that requires returning information about the account.
See
https://medium.com/@nolanbrown/august-lock-rest-apis-the-basics-7ec7f31e7874

Ahhh yes, you're correct. My mistake, thanks for the clarification @gary-reyes

I've submitted a PR for this https://github.com/home-assistant/home-assistant/pull/15916. Hopefully this can be released sooner than 0.76

Just updated to HASS.IO 0.78.1 and the issue is back


feat: 🎸 validate chain spec version when connecting

Description

Fetch and compare chain spec version as well as rpc node version with the expected ranges, throw if not compatible

Breaking Changes

Throw an error instead of a warning when the chain versions aren't
within the expected ranges

JIRA Link
https://polymath.atlassian.net/browse/DA-324
Checklist

[ ] Updated the Readme.md (if required) ?

:tada: This PR is included in version 14.0.0-alpha.16 :tada:
The release is available on:

npm package (@alpha dist-tag)
GitHub release

Your semantic-release bot :package::rocket:

:tada: This PR is included in version 15.0.0-beta.1 :tada:
The release is available on:

npm package (@beta dist-tag)
GitHub release

Your semantic-release bot :package::rocket:

:tada: This PR is included in version 15.0.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


[ruby] Ruby language support does not include %() string syntax

VScode will report an error: The mode has failed while tokenizing the input. if the ruby file contains the % notation string syntax.

duplicate of #20


refactor: enclave runs as a stateful service instead instead of single ecalls

In order to improve

performance ( now lots of synchronous file-IO)

amount of marshalling per function call

now ugly maximum-sized ecall arguments allocation

We should turn the enclave into a service providing websockets so the worker has a ws API for interaction with enclave
This way,

file-io (state dump to IPFS) could happen asynchronously
no need to en-decrypt state for each request
optional: enclave could instantiate its own api-client to talk to the node directly

How would we change the API from essentially a C-API (enclave EDL) to a websocket interface? Isn't the EDL the only way in- and out of the enclave? Can we circumvent this somehow?
The idea would then be to run a WS daemon/client inside the enclave that accepts connections?

I guess we would use a network interface for this, yes. possibly ws (from local) and wss into enclave (from remote)
But I'm not sure if this is really the best option. We have recently worked with atomic pointers for stateful stuff, which seems to do the trick as well for the cases we've seen. @haerdib Opinions?
The problem described in the issue is actually already solved by executing TrustedCalls blockwise. That's done already, so there's not as much file IO anymore as when we files this issue

If we turn the enclave into a WS interface the biggest issue I see is multithreading. Within the enclave we are not able to spawn threads ( this will be different with SGX2 hopefully) - so a websocket call directly into the enclave will block the entire socket until the task is finished (of course TCP stream is still able to receive messages, but they are not read until previous task is finished).
Atomic pointers are working very well. Thanks to the rust compiler I've not yet run into any deadlocks or multithreading issue. However, I've not yet done any stress testing.

We already have a stateful enclave with locks & atomic pointer, so this issue is obsolete now.


🐛 Bug Report: OpenAI spans are not always started as current span

Which component is this bug for?
OpenAI Instrumentation
📜 Description
When having httpx instrumentation enabled, the POST span to the chat completions endpoint does not have openai.chat as a parent.
#1541 reports a similar behavior for the Langchain instrumentation.
👟 Reproduction steps

Use opentelemetry-instrumentation-httpx and opentelemetry-instrumentation-openai
Send a chat completions request

👍 Expected behavior
The POST request should have openai.chat as a parent.
👎 Actual Behavior with Screenshots
The httpx span and the openai.chat span have the same parent.
{
    "name": "POST",
    "context": {
        "trace_id": "0x8252aa8e6eab7da39677aeb684257982",
        "span_id": "0xbbb358e3bb731dda",
        "trace_state": "[]"
    },
    "kind": "SpanKind.CLIENT",
    "parent_id": "0x174f1749b1e29d48",
    "start_time": "2024-07-12T05:54:09.501887Z",
    "end_time": "2024-07-12T05:54:10.174165Z",
    "status": {
        "status_code": "UNSET"
    },
    "attributes": {
        "http.method": "POST",
        "http.url": "<redacted>",
        "http.status_code": 200
    },
    "events": [],
    "links": [],
    "resource": {
        "attributes": {
            "telemetry.sdk.language": "python",
            "telemetry.sdk.name": "opentelemetry",
            "telemetry.sdk.version": "1.25.0",
            "service.name": "unknown_service"
        },
        "schema_url": ""
    }
}

{
    "name": "openai.chat",
    "context": {
        "trace_id": "0x8252aa8e6eab7da39677aeb684257982",
        "span_id": "0x7a611da25eb9b760",
        "trace_state": "[]"
    },
    "kind": "SpanKind.CLIENT",
    "parent_id": "0x174f1749b1e29d48",
    "start_time": "2024-07-12T05:54:09.490627Z",
    "end_time": "2024-07-12T05:54:10.246270Z",
    "status": {
        "status_code": "OK"
    },
    "attributes": {
        "llm.request.type": "chat",
        "gen_ai.system": "OpenAI",
        "gen_ai.request.model": "gpt-35-turbo",
        "llm.headers": "None",
        "llm.is_streaming": true,
        "gen_ai.openai.api_base": "<redacted>",
        "gen_ai.openai.api_version": "2023-07-01-preview",
        "gen_ai.response.model": "gpt-35-turbo"
    },
    "events": [],
    "links": [],
    "resource": {
        "attributes": {
            "telemetry.sdk.language": "python",
            "telemetry.sdk.name": "opentelemetry",
            "telemetry.sdk.version": "1.25.0",
            "service.name": "unknown_service"
        },
        "schema_url": ""
    }
}

🤖 Python Version
3.11
📃 Provide any additional context for the Bug.
The spans appear not to be consistently set as the currently active span when starting:
https://github.com/traceloop/openllmetry/blob/fe2393a31cdb307d3638c8995a907f846e8befec/packages/opentelemetry-instrumentation-openai/opentelemetry/instrumentation/openai/shared/chat_wrappers.py#L70-L74
versus
https://github.com/traceloop/openllmetry/blob/fe2393a31cdb307d3638c8995a907f846e8befec/packages/opentelemetry-instrumentation-openai/opentelemetry/instrumentation/openai/shared/embeddings_wrappers.py#L58-L62
👀 Have you spent some time to check if this bug has been raised before?

[X] I checked and didn't find similar issue

Are you willing to submit PR?
Yes I am willing to submit a PR!

Thanks for reporting @bastbu! You mentioned you'd like to issue a fix - would love that if you have time! If not let me know and we'll take care of it. Let me know if you need guidance / assistance.

Thanks @nirga! I realized that the fix is a little bit more involved than I originally anticipated, due to the differences in the non-streaming and streaming cases.
It'd probably take me a while before I get the time to attempt a proper fix for this. Hence, if you'd want to take care of it, that may be better.


uuid error with nextJS... sometimes

I'm not sure how to reliably reproduce this, but every now and then I get this error:

Which is probably related to the other uuid related issues that are open here.
For me it usually goes away sooner than later so I typically just move on instead of trying to debug it. But if I get more info I'll add it here.

I got the same issue, any work around?


image request is missing tags

Currently the K8sImageRequest does only provide a list of image names, but no tags or hashes.
To start exactly those images one needs a tag or hash.
Furthermore the response for an image request looks like this:
{
   containers: [
       { image: 'quay.io/imageName', ports: ... }
   ]
}

I would propose to adapt this response to make it more clear, that images are returned:
{
   images: ['image1:tag', 'image2:tag']
}

I have to correct myself on this one. It's possible to write container specs like this:
   image: some.registry.org/my/image

So it's possible there is no tag available. So this is fine. I would like to add the key from containers to images anyways.


What is the world-menu?

Read something about lively kernel came to http://lively-web.org/ and after loading is done I arrive at http://lively-web.org/welcome.html
Lower down it says "To add new content, save an existing world with different name: World menu -> Save world as...."
How can I access the world menu. I'm new to Lively kernel and already on the first page I'm told to use something and it doesn't tell me how.

Thanks for the feedback.  A world menu can be opened by right clicking into the background, I tried to improve the description on the welcome page a little.

Hmm... I was accessing the site on my tablet and I'm unable to right click. Single left click to the background was the initial solution in Smalltalk and later Squeak, and it always seemed awkward in the multi button windows world. From a design standpoint it's rather unusual to have 'no action' for left click on the background and 'world-menu' for second button click.
As a side note, the website isn't mobile friendly as Lively was conceived right at the start of the now 'mobile age'. I used to be very hard to implement anything that left click on any page but iOS 8 fixed that by adding improved gesture recognizers to Safari to make them available in web pages.
https://www.sitepen.com/blog/2011/12/07/touching-and-gesturing-on-iphone-android-and-more/

Yes, you are right, the Lively UI was not designed for touch interaction.  We had some experiments with it in the past but have not consistently mapped the UI functionality to touch gestures.  One challenge there is to allow both "app-level" and "meta-level" user interactions and customizations there of.  App-level is everyhing related to the thing you are building, meta-level the actions used to build.  In Lively we tried hard to stay away from modes and we would like to do so in the future.  For desktop interaction it works quite well using user enabled drag/dropping and menus as well as halos.  For touch interaction we need to experiment and specify what the mapping is supposed to be.  For example, most web apps use touch-and-drag for panning.  We currently have it mapped to dragging/grabbing objects.  These decisions need to be reviewed, extended and made consistent.
One experiment in the past was to add a "Bert-Button", that's the round thing with a Lively logo that appears only when you open a world on a touch device.  When you press it, e.g. with your thumb and then touch another object you will be able to open halos on that object.  The top-left halo opens the menu of a morph.  So, when you do that for the world (the background) you will be able to open the world menu and save.  Not really intuitive I agree.

touch experiments are on the way...


Uninstalled this since it captures my pointer.

Uninstalled this since it captures my pointer and there is nothing I can do about it.
Sorry but I need to take screenshots without a mouse pointer in the middle of the text.

Just Search in settings bruh


git tool missing from the ingestion-base image

Describe the bug
Since 2066f1f the git binary is missing from the datahub-ingestion-base images, making ingestions that import the gitpython module fail.
In 2066f1f the base image changed from python:3.10 to ubuntu:22.04. The Python image includes git, but the Ubuntu doesn't, so after upgrading to the latest 0.14 Datahub version ingestions started to fail.

datahub-actions image in versions 0.1.0 and 0.1.1 doesn't have git
base image: acryldata/datahub-ingestion-base:2066f1f
datahub-actions image in version <=0.0.18 does have git
base image: acryldata/datahub-ingestion-base:3903b17

Error message:
<class 'ImportError'>: Failed to initialize: Bad git executable. The git executable must be specified in one of the following ways: - be included in your $PATH - be set via $GIT_PYTHON_GIT_EXECUTABLE - explicitly set via git.refresh(<full-path-to-git-executable>) All git commands will error until this is rectified. This initial message can be silenced or aggravated in the future by setting the $GIT_PYTHON_REFRESH environment variable. Use one of the following values: - quiet|q|silence|s|silent|none|n|0: for no message or exception - warn|w|warning|log|l|1: for a warning message (logging level CRITICAL, displayed by default) - error|e|exception|raise|r|2: for a raised exception Example: export GIT_PYTHON_REFRESH=quiet

To Reproduce
Steps to reproduce the behavior:

Get a Datahub deployment that uses a datahub-actions image with version >= 0.1.0
create an ingest job that imports the gitpython module
Run the job

Expected behavior
gitis available on the path
Screenshots

Nice, now the latest ingestion-base has git included... ❤
@hsheth2 , maybe now a build of the datahub-actions image should be triggered so it builds on the new base?

@andor-pierdelacabeza yup - I just cut datahub-actions v0.1.2, which will have git in the image.

Now that https://github.com/acryldata/datahub-actions/pull/134 is merged, the datahub-actions head tag should also have git.


Update CDN links and hashes for<EMAIL_ADDRESS>

Updates CDN links and hashes in README. Waiting for confirmation of upload to CDN from @jmckennon

Coverage remained the same at 76.169% when pulling ba6e1f48e595386f3fbfc336636bad5374742a40 on 1.2.2-cdn-links-hash into 1935d0020dfcd673fd59d184b0ecc883d2b1d08d on dev.


Add TOA Uniques

Closes https://github.com/BossHuso/discord-rare-drop-notificater/issues/72
I have added TOA uniques to EventRarity.java, using rough droprates and assuming a ~2% purple chance. Including 7 main uniques, pet, jewels, and thread.

Could not merge / add your commit since it had several typo's (ItemID of pet, fang name) and missed the regular loot table.
I just added the entire TOA loot table.
Thanks for your PR / work tho, appreciated!


Fix non expressive variable name on interactive.py

Proposed changes:

Change variable named i to interactive_story_counter
Resolve: #8453
Status (please check what you already did):
[ ] added some tests for the functionality
[ ] updated the documentation
[x] updated the changelog (please check changelog for instructions)
[x] reformat files using black (please check Readme for instructions)

Thanks for submitting a pull request 🚀 @samsucik will take a look at it as soon as possible ✨

Thanks @rafaelteodosio! Before we merge this into main, could you remove the changelog entry? The changelog is meant for bigger changes, especially ones that affect users 🙂

Ok @samsucik I made the requested change. Thanks.


Wrong name binpacking

There's no strategy named binpacking, if there was, it should be error
Signed-off-by: harry<EMAIL_ADDRESS>

Please sign your commits following these rules:
https://github.com/docker/docker/blob/master/CONTRIBUTING.md#sign-your-work
The easiest way to do this is to amend the last commit:
$ git clone -b "binpack" git@github.com:resouer/swarm.git somewhere
$ cd somewhere
$ git commit --amend -s --no-edit
$ git push -f

Ammending updates the existing PR. You DO NOT need to open a new one.

@resouer
The same as https://github.com/docker/swarm/pull/2061, we can have more discussions there.

I choose close this and just leave it there


Add allowEmptyValues flag for parseKVString

This simply adds an allowEmptyValues flag for the parseKVString function, as it is necessary for some cases, such as labels for resources deployed via GH Actions. Currently this use case requires using labels: 'label1=true' or similar, when value-less keys are allowed as labels for a resource.
I've updated docs and tests to accommodate for this new value.
This change is fully backwards-compatible thanks to using the default value, and thus typing is inferred too. All tests pass (I can implement extra

1, this actively prevents me from using an empty env variable for bypassing a annoying breaking change in app engine deployment.

Relevant links for anyone else trying to find this issue.
https://cloud.google.com/docs/buildpacks/nodejs#google_node_run_scripts
https://github.com/GoogleCloudPlatform/buildpacks/issues/287

1, this actively prevents me from using an empty env variable for bypassing a annoying breaking change in app engine deployment.

Relevant links for anyone else trying to find this issue. https://cloud.google.com/docs/buildpacks/nodejs#google_node_run_scripts GoogleCloudPlatform/buildpacks#287

Didn't even know about this, but yes, this change would solve that issue as well


ci: configure renovate automerge

currently fiddling around on how to in https://github.com/JonasPammer/ansible-role-bootstrap

https://github.com/JonasPammer/ansible-role-bootstrap/commit/624a33f2845308a710385d421f0a2a88e8259d51 worked https://github.com/JonasPammer/ansible-role-bootstrap/pull/84