Docker authorization plug-in infrastructure

REMARK: Code is intended to be complementary to the docker (authZ discussion) [https://github.com/docker/docker/issues/14674]. There are several aspects of the proposed code which require additional work and testing. Please use this commit as a low level design proposal.
=======
Docker authorization plug-in infrastructure enables extending the functionality of the Docker daemon with respect to user authorization.
The infrastructure enables registering a set of external authorization
plug-in. Each plug-in receives information about the user and the
request and decides whether to allow or deny the request. Only in case
all plug-ins allow accessing the resource the access is granted.
Each plug-in operates as a separate service, and registers with Docker
through general (plug-ins API)
[https://blog.docker.com/2015/06/extending-docker-with-plugins/]. No
Docker daemon recompilation is required in order to add / remove an
authentication plug-in. Each plug-in is notified twice for each
operation: 1) before the operation is performed and, 2) before the
response is returned to the client. The plug-ins can modify the response
that is returned to the client.
The authorization depends on the authorization effort that takes place
in parallel [https://github.com/docker/docker/issues/13697].
This is the official issue of the authorization effort:
https://github.com/docker/docker/issues/14674
(Here)[https://github.com/rhatdan/docker-rbac] you can find an open
document that discusses a default RBAC plug-in for Docker.

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 "14674-docker-authz" git@github.com:twistlock/docker.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.

cc @icecrime @crosbymichael  @NathanMcCauley @diogomonica perhaps you can have a look at this? General API description can be found in this document

Should there any limitations to what the Response rewriters can and cannot do? It looks like the proposal allows arbitrary modifications? I'm concerned that'll mean that we end up with accidental dependencies on the structure of the Docker Remote API request/response structure as 3rd party authz plugins now depend on being able to directly parse the response bodies.

How will this handle cases where data is streamed live back to the client, as in the case of the /logs endpoint. How will it deal with attach?

Added unit tests and fixed implementation according to comments.

@icecrime @crosbymichael @NathanMcCauley @diogomonica
Added detailed design document for the authorization feature [here] (https://docs.google.com/a/twistlock.io/document/d/1WH7IPfri8TwxhyL1fukNA2rtfib7J8eVPvhobyDID9c/edit?usp=sharing).

How does this work w PAM, it would be nice if it was easy for people to understand and familiar the design that way

Thanks for the review @diogomonica, @NathanMcCauley, @endophage,
We've updated the design doc and answered all comments, looking forward to discuss further and agree on the right approach for plugin authorization.
I expect that in the majority of scenarios, plugins will not be required to perform any additional queries to the daemon. However, we should find a proper mechanism for such scenarios (e.g., for plugins that need to scan the content of an image to decide whether permission should be granted or not).
Aggregating the feedback, I'd like to propose three possible solutions:

Capability based solution -
In the daemon level, each plugin will be configured with a dedicated policy for the command it can invoke (e.g., pull, inspect)
Authorization policy based solution -
Admin sets up a dedicated user for the plugin and defines a policy for this user. The plugin will be authenticated and authorized as a regular user.
Sending required metadata -
For example, send all image info for container run command.
I think we can rule out this solution since this can lead to sending a large chunk of redundant data. For example, assume that some flow requires examining the image history, which leads to sending the entire history for each command related to images, a scenario which we would probably like to avoid.

I personally think both solution 1 and 2 are plausible, but the former (1) will require much more logic in the daemon core, and will have to be maintained anytime new commands are added (which can have some maintenance pain).
What do you think?

@jfrazelle PAM is one of the mechanisms which can be used for authentication by plugins which will be built on top of the authentication framework (https://github.com/docker/docker/issues/13697) that is currently under development. Authorization plugins will depend upon the authentication data to achieve access control with greater granularity than the current dichotomy of full access or no access.
We'd love you to ask further questions and give suggestions regarding PAM and authentication in general at https://github.com/docker/docker/issues/13697 or straight at the design and UX doc

@liron-l Looking at the options you've laid out, I would tend to prefer the third from an architectural perspective, as it does not require additional requests to the public API. However, I can certainly understand how this might massively increase overhead, particularly in cases dealing with images. Option one would be a good alternative, assuming we have a reliable way of authenticating plugins (perhaps they could declare a public key in the plugin specification?). I really don't like the second option - it seems the sort of thing where it would be very easy for a user to shoot themselves in the foot if they had multiple authorization plugins.
As a possible alternative, perhaps plugins could tell the daemon they required more information to make a decision, and the daemon could reissue the authorization request with additional information on the image or container in question. This would significantly increase the complexity of authorization responded and the complexity of the daemon code, but would remove the need for additional requests from the authorization plugin to the public API.

ping @diogomonica, @NathanMcCauley, @jfrazelle PTAL (https://github.com/docker/docker/pull/15365#issuecomment-133906874)

I'd rather avoid premature optimizations. That will allow us to get this in sooner rather than later. If we don't need cross references with the daemon, let's not add them from now.
From a design point of view, this change looks good to me, but I'll wait for other maintainers to confirm.
From a code point of view, there have been a lot of changes in the server package that conflict with this. We can probably reduce the conflicts transforming this code in a middleware like we've done with other pre processing code in the server:
https://github.com/docker/docker/blob/master/api/server/middleware.go

I agree with @calavera and I think using middleware for this would be great.

@calavera, @jfrazelle thanks for the feedback and sounds good and much more appropriate moving the authZ plugin code to the middleware layer.
Any additional feedback about design/implemenation we should consider?

@NathanMcCauley any concerns about the design?

This is what I think we should do to move this forwards, I'll be happy to assist you in whatever I can, but I think it would be best if you could complete the patch:
1- Move the auth check to a middleware what will be injected only when there are authz plugins set, like we do with the debug middleware:
https://github.com/docker/docker/blob/master/api/server/middleware.go#L142-L147
2- After talking with @NathanMcCauley, I think we should remove the response management for two reasons:

It's very unexpected to allow third party applications to manipulate the response output, and very dangerous, from my point of view.
We won't probably be able to modify the response status code. Go guarranties that it's set only once. When the AuthzResponse function is called, the status might have been set already. Trying to ensure the code is not set before calling that function can be a mayor pain for the first version of this feature.

3- Integration tests, lots of them :smile_cat: We can create a mock plugin like we already have for volumes and networking and start a daemon for testing with it:
https://github.com/docker/docker/blob/master/integration-cli/docker_cli_start_volume_driver_unix_test.go#L54-L175

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 "14674-docker-authz" git@github.com:twistlock/docker.git somewhere
$ cd somewhere
$ git rebase -i HEAD~2
editor opens
change each 'pick' to 'edit'
save the file and quit
$ git commit --amend -s --no-edit
$ git rebase --continue # and repeat the amend for each commit
$ git push -f

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

@calavera

It's very unexpected to allow third party applications to manipulate the response output,

Well, what if the AuthZ plugin needs to keep track of tokens or other such things? Maybe allowing the plugin to set a particular Header within the response would be better (such as it returning the header value to pass to the response)?

@calavera thanks for the review, I've made the following changes in the original code:

Moved the authz handling to middleware
Removed ability to modify the response from authz plugin.
The middleware can still override the response returned from docker daemon (on deny scenario), but the implementation handles the GO limitation by wrapping the HTTP response (this is also tested in integration tests and UT). If you still think this is wrong, we can remove the ability to deny the response flow and just send the data. The response flow is essential since plugins may need to know whether the flow completed successfully. WDYT?
I've added unit tests and integration tests with mock plugins.

Thanks @liron-l. I agree with the design decisions. I'm moving this to code review so we can move it forward.

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 "14674-docker-authz" git@github.com:twistlock/docker.git somewhere
$ cd somewhere
$ git rebase -i HEAD~3
editor opens
change each 'pick' to 'edit'
save the file and quit
$ git commit --amend -s --no-edit
$ git rebase --continue # and repeat the amend for each commit
$ git push -f

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

Thanks for the review @calavera and @runcom.
I've extended the existing integration tests with additional commands and output validations.

@liron-l it looks like you latest changes broke some unit tests, can you take a look?

Thanks for adding the documentation in a separated commit, btw.

Thanks @calavera, I don't think the failures were related to my change.
I've rebased with the latest code and everything looks good.

LGTM

Let's do this LGTM 😁

Thanks for the review guys.
@cpuguy83 - The authz plugins receive the data only when the Content-Type is either application/json or text/. This ensures only the content of the docker remote API is passed to the plugins.
For commands that involve the hijacking of the HTTP connection (HTTP Upgrade), such as exec, the authorization plugins will only be called for the initial HTTP requests, once the commands are approved, authorization will not be applied to the rest of the flow. Specifically, the streaming data will not be passed to the authorization plugins.
@thaJeztah, the command line only supports passing the authz-plugins parameter multiple times (same as other list parameters, e.g., insecure-registry, dns-opt, etc...). I've kept the parameter name 'plugins' plural to indicate multiple plugins are supported and fixed the submitted documentation accordingly.

@liron-l It looks like we're draining the body into a buffer no matter what, and only sending to the client if it's text/ or application/json.

Good catch @cpuguy83. I've refactor the code according to your comment.
I've also added an explicit validation for body length in the integration tests.

Honestly I'm not sure what the benefit is of passing the request (or the response) body to the auth plugin.
In addition, docker login will indeed pass credentials to the auth plugin.

Adding the body enables the authz plugin to use the entire docker REST API.
For example, allow/deny [creating containers] (https://docs.docker.com/engine/reference/api/docker_remote_api_v1.21/#create-a-container) with specific tags.
This is equivalent to Kubernetes authorization approach that uses namespaces and resources.
Re login, the authorization plugin explicitly removes the authorization header. Does this makes sense?

@liron-l The specific case with docker login is the client sends the registry credentials in the POST body to the engine daemon.

Makes sense @cpuguy83, I've removed the the body from calls to the the /auth endpoint and also excluded the following headers: X-Registry-Config, X-Registry-Auth and Authorization.
I've also added validations in the integration tests.

This needs a rebase.
@cpuguy83 can you take a look at the changes?

Moving back to code review until we have @cpuguy83 approval.

Changes LGTM

Well.

:)

@liron-l I had a quick chat with @moxiegirl, who is one of our technical writers, and she'll be looking at the documentation later on. We think this is an important feature, so it needs the right attention for the documentation.
I'll continue reviewing after she's had a first pass on the documentation, thanks for being patient with us; it's a really cool feature!

@cpuguy83 thanks!
@thaJeztah @moxiegirl thanks for the comments! I will start working on the documentation fixes in the next couple of days.

Thanks, @dimastopel, ping us when it's ready for another review :+1:

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 "14674-docker-authz" git@github.com:twistlock/docker.git somewhere
$ cd somewhere
$ git rebase -i HEAD~6
editor opens
change each 'pick' to 'edit'
save the file and quit
$ git commit --amend -s --no-edit
$ git rebase --continue # and repeat the amend for each commit
$ git push -f

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

@moxiegirl thanks a lot for going through all the documentation!
I've just pushed the fixes.
Some notes:

I didn't add the specific authentication methods yet. Those will be finalized when the authentication work be completed (#17412). I prefer to add them then.
I've added some sequence diagrams to authorization.md file. Placed those under images. Hope it's OK.
Regarding the plugin code example, we have the one we use for test. Would you like to create a well commented skeleton of it and embed into documentation, or referencing it is enough? I can do both.
https://github.com/twistlock/docker/blob/14674-docker-authz/integration-cli/docker_cli_authz_unix_test.go
@moxiegirl I didn't understand your comment regarding "including the limit" above. Can you please elaborate?

@thaJeztah @moxiegirl other than that I think I have addressed all the comments. Looking forward to hear your thoughts.

@liron-l Looks like there was a bad rebase, also needs another rebase.

Thanks @cpuguy83. @dimastopel fixed the documentation comments and I did a final rebased from in a separate commit.

Thanks! I left some notes inline. Also, can you update https://github.com/docker/docker/blob/master/man/docker-daemon.8.md with the same information as commandline/daemon.md?

@thaJeztah thanks for the thorough review!
Fixed all the comments. Added changes to docker-daemon.8.md as well. Wasn't sure whether to add just the command line arguments or the documentation piece as well, since I did see all the documentation from daemon.md copied there.  Added it eventually.

@thaJeztah looks that changing the plugin_api.md/#plugin-discovery link failed the test, although it works flawlessly with make docs. For now removed the link since there is a link to the same page in the previous sentence.
======================
Filtered (engine) Summary:

link error: (in page engine/extend/authorization.md) plugin_api.md/#plugin-discovery

	Found 1040 files
	Found 1 errors
ERRORS = 1

Thanks @dimastopel. Wondering if it works without a /? e.g. plugin_api.md#plugin-discovery

@liron-l So this PR is only the authorization part or something that can replace powerstrip?

@thaJeztah yes it worked! Just returned the link.

Cool, thanks!

After reading the docs, I'm still a tiny bit unsure if we should call the flag --authz-plugins (plural), or --authz-plugin (singular), given that all other flags are singular, and each flag will specify a single plugin.
@cpuguy83 @calavera final thoughts?

Should be singular.

@liron-l can you change the flag to --authz-plugin to be more consistent with other flags? I discussed this internally, also with @moxiegirl, and if that's just a find & replace, we can merge this after! \o/

Thanks @thaJeztah, we've replaced all occurrences of the authz argument.

Thanks @liron-l, awesome!!

Awesome. Great to finally see some form of ACL support in Docker. It's been a long time coming. :smile_cat:

Thanks @thaJeztah ... sorry to be MIA, I'll take a look at the pr and carry any changes that might be necessary.  I'll ping @liron-l if that is actually  necessary.

just realized this also needs changes to the completion scripts. ping @albers @sdurrheimer if you have time to look at those? Otherwise I can see if there's a maintainer able to look at them :heart:

Sure, I'll take care of bash completion. Thanks for pinging me.

@albers you da bomb!
On Mon, Dec 14, 2015 at 5:19 AM, Harald Albers<EMAIL_ADDRESS>wrote:

Sure, I'll take care of bash completion. Thanks for pinging me.
—
Reply to this email directly or view it on GitHub
https://github.com/docker/docker/pull/15365#issuecomment-164433551.

So do I with zsh completion.
If I understand well, there is only a single new option --authz-plugin for docker daemon, right  ?

@sdurrheimer correct! And to use @jfrazelle's words; you're also da bomb! thanks so much

Been following this one. Awesome job.
Just a clarification - Did you ever mean that two users will not be aware about each others stuff if need be - i.e. - two users can have 2 container with the SAME name on the same engine (otherwise the later one gets the error about name exists and hence information he should not be getting).

@doronp no, that still won't be possible with these changes. Container names need to be unique per daemon, however, an Authz plugin would probably be able to prevent a user from connecting to a network that is not owner by that user, or use an image that's not allowed to be used by that user. There's lots of things involved in a multi-tenant setup, and this can help, but won't solve all.

It could also concatenate a unique ID such as user ID to the container name (modify request) and filter it out (modify response) in every response for example.
Not sure it the best path to go though.
I'd be great to see even a preliminary mapping of what is missing sometime.
WDYT?

@doronp yes, that would partly solve the problem, but may be quite tedious, and won't be a full solution; containers and images can be accessed by ID as well. Also think of (e.g.) volumes, and bind-mounted directories, people running docker-in-docker.
This PR offers the option to develop plugins to limit access, but for multi-tenant situations there are still lots of things to tackle. Writing up a list of things that may be needed to cover that can be a start; if you have ideas, feel free to open an issue (there may already be issues in that area)


Investigate alternative CD solutions

What should be investigated.
We are somewhat unconvinced about using Tekton for automatic security patching and updates of compliantkubernetes apps. Let's dig more before taking a decision.
Investigate each $candidate:

[x] TektonCD
[x] ArgoCD
[x] Flux2
[x] simple CronJob

Based on the detailed investigations of all the above 4 alternatives - It's results are compiled in one Doc - https://docs.google.com/spreadsheets/d/1AGIEX2L_ZQw71y4qz-_g-ZIb48jpAurSWjl_zTgfgAk/edit#gid=0

Based on the architecture meeting discussion happened on 25-08-2022 - https://docs.google.com/presentation/d/18cY5ynwY33q-D5GUoo5rM8mRsOQdehihUw1ioTSTCQs/edit#slide=id.g137fbaf61ac_0_0 , we decided to use the tekton for our internal automations apps upgrade CD solutions !!


Raise exception in to_dataset if resulting variable is also the name of a coordinate

Let me know if you think the error message is unclear or too verbose or too fancy or something.

[x] Closes #7823
[x] Tests added
[x] User visible changes (including notable bug fixes) are documented in whats-new.rst

This looks great, thanks @mgunyho .
I'll merge in the next day or so unless anyone has feedback.
Test failures are unrelated I think, will check they fal on main too

I think we need to adjust the error message tests for the tests to pass

Ah of course, I missed that! Fixed now.

Thanks @mgunyho !
Unfortunately we also have a break in the docs — would you care to take a look? https://readthedocs.org/projects/xray/builds/22540466/
(This also likely means the docs were bad, so it's good news your code found it!)

Yeah, the issue was indeed with my code, it didn't show up in the tests because test_to_dataset_split was using just a 1D array, and in that case the problem didn't show up. I've updated that test now and fixed the logic. (I also rebased onto main)

I can't tell if the tests fail because of my code or something else. I changed the logic from {k: v for k, v in self._coords.items() if k != dim} to {c: for c in self._coords[c] for c in coord_names}, where coord_names is a set, so the order might differ. I thought that my version would be easier to understand. So either the tests are assuming a specific order for the coords, or the failures are due to something unrelated.

I can't tell if the tests fail because of my code or something else. I changed the logic from {k: v for k, v in self._coords.items() if k != dim} to {c: for c in self._coords[c] for c in coord_names}, where coord_names is a set, so the order might differ. I thought that my version would be easier to understand. So either the tests are assuming a specific order for the coords, or the failures are due to something unrelated.

To respond quickly though not fully — does the previous approach work? It may well require a specific order. If the former works well then that's fine...
Thanks for adding more tests, really good we caught the issue prior

I was also confused because I couldn't reproduce the error locally. But I changed it back to the original self._coords.items() version.

Hm, at least the failures in https://github.com/pydata/xarray/actions/runs/6869006192/job/18680869980?pr=8433 and https://github.com/pydata/xarray/actions/runs/6860572749/job/18654637893?pr=8433 seem to be the same for both implementations, so maybe it's not my code but something else.

Yep, here's the same failure from another PR: https://github.com/pydata/xarray/actions/runs/6865796013/job/18670620776?pr=8450

Super, thanks @mgunyho !
(Sorry for the test failures, hopefully those will resolve shortly...)


Strapi 5: Make use of the document service

Feature request
Summary
Currently the plugin still makes use of the old entity service from Strapi 4. Luckily Strapi 5 supports backwards compatibility for the entity service, but in time we will need to switch over.
Why is it needed?
To future proof the plugin

This has been implemented and released with the stable version 2.0.0.


Code comment cleanup

Closes an issue from OPHD titled "Remove low value comments - Constructor/Destructor"

I do not have permission to push changes into nas-2D if someone wants to review. Please feel free to edit this changeset if anything looks incorrect.

Yes, the NAS2D library is hosted under the "Lairworks" GitHub account, rather than the "OPU" GitHub account. As such, it has different default write permissions than the OPHD project.
I'll send you another invite for Lairworks.

Reference: https://github.com/OutpostUniverse/OPHD/issues/677


Develop dynamic disparity shift given target distance?

Required Info

Camera Model
D435i

Firmware Version
<IP_ADDRESS>

Operating System & Version
Linux (Ubuntu 20.04.03 LTS)

Kernel Version (Linux Only)
5.11.0-43-generic

Platform
PC

SDK Version
2.50.0

Language
python

Segment
3D Scanning

Issue Description
In BKMs section 4.C there's stated:
"given that there is a complex interplay between all parameters, we currently use machine learning to globally optimize for different usages"
In my case, I want to tweak the Disparity Shift so that it can be optimized automatically for objects given in front of the camera to be 3D scanned, which the object distance from camera is less than 50cm but the distance could be changed depends on the size of the object.
I have using Intel RealSense Viewer to customize HighAccuracyPreset.json (Stereo Module -> Advanced Controls -> Depth Table -> Disparity Shift) so the Disparity Shift (aux-param-disparityshift and param-disparityshift in the .json file after exported) can be adjusted by myself. However, it still need manual tuning by looking at Intel RealSense Viewer with the basic from BKMs section 5.C
Is there any method to automate these things so that the Disparity Shift can be dynamically changed to optimize the depth accuracy from any distance from the objects? (like autofocus in other camera)
Or at least how to generate optimal Disparity Shift value from input Distance?
Thanks

Hi @ridanlukita  If you are using a D435i then it may not be worthwhile to implement such a mechanism.  The default minimum depth sensing distance of this model is already just 0.1 meters / 10 cm.  Whilst that minimum distance could be reduced further below 10 cm with Disparity Shift, you will soon reach a point somewhere below 7 cm where the image begins blurring because the depth sensor of the D435 / d435i models is not designed for very close range.  This blurring effect is discussed in https://github.com/IntelRealSense/librealsense/issues/7631
Whilst there are a range of factors that can affect accuracy, using a resolution of 848x480 for depth (which is the optimal depth accuracy resolution of D435 / D435i) will be helpful.  You may also find that using the Medium Density preset will produce a better image than High Accuracy, as Medium Density provides a good balance between accuracy and the amount of detail on the depth image (whereas High Accuracy may over-strip detail).
If the scene that is being observed is well lit then disabling the IR Emitter to remove the IR dot pattern projection from the scene should reduce error that increases linearly over distance (RMS Error) by around 30% according to the camera tuning guide that you quoted.
If you require an automated change of Disparity Shift then you could conceivably program a simple 'If' logic check where, if the observed distance at the center pixel of the camera is < 0.5 m then Disparity Shift = '50', else Disparity Shift = '0' (its default value).  https://github.com/IntelRealSense/librealsense/issues/6749#issuecomment-654185205 has a Python example of calculating the distance from the camera to a given pixel.
https://github.com/IntelRealSense/librealsense/issues/2015 has an example of changing the Disparity Shift value in Python.

Thank you! @MartyG-RealSense for your quick response.
I have tried both of your suggestions in #6749 and #2015
When I try to dynamically change Disparity Shift while streaming, it turns out reading depth value to calculate the average depth while in streaming were very computationally intensive. So instead I create a process where it calculates the Disparity Shift automatically based on target distance before streaming, and it worked.
Therefore, this issues can be closed

That's excellent news that you achieved a solution, @ridanlukita - thanks very much for the update!


Color Contrast in cookie settings box is not sufficient

Describe the bug
In the "We collect and process your personal information..." box, there is green text on the black background. The contrast between these two is not sufficient: accessibility requirements say it should be 4.5:1, but it is only 3.27:1.
To Reproduce
Use WAVE on the page, or fill https://webaim.org/resources/contrastchecker/

PR #3039 has partially fixed this issue (for 7.6.2 and 8.0).  That PR updates the styles of the initial Klaro popup window to have proper color contrast.  Here's the new look:

However, if you click on "Customize" in that popup, you'll see a larger list of all possible settings.  This larger popup still has color contrast issues (a lot of dark gray text on a black background) as shown in this screenshot:

@tdonohue Hi, I'd like to take this activity. I understood that the problem was only the gray color of some texts. Is that right?

@Andrea-Guevara : I'm not exactly sure if the gray color is the only issue.  I was mentioning it as an example.  The primarily problem is that this page in the popup fails when analyzed by an accessibility scanner (e.g. WAVE or the "axe DevTools" plugin in Chrome).
https://private-user-images.githubusercontent.com/483997/339895603-a59a2e57-3d0a-4565-9c6d-aceaf24ce2b1.png
So, to fix this ticket would require that all pages within the Klaro popup to succeed accessibility scanning.
To reproduce:

Visit https://sandbox.dspace.org in an Incognito browser
Klaro cookie popup should appear.  Click on "Customize" to bring up the screen above
Expand all sections on that screen.
Run an accessibility scanner (either WAVE or "axe DevTools).  Both will report 5-10 color contrast issues.  Those are what need to be fixed.

I'll assign this to you @Andrea-Guevara .  But, if you change your mind, let me know and we can find a different volunteer.

Hello, good afternoon.
I did some tests and managed to reduce the accessibility problems of the cookis configuration box.
However, I had to use "!important" in some parts of the code for the css changes to take effect. Is this a problem?
I look forward to your feedback.

Good afternoon @tdonohue! I've made a PR so you can see the code.
https://github.com/DSpace/dspace-angular/pull/3140
I look forward to your feedback

Good afternoon @tdonohue! I made a new PR updated to DSpace version 8 and the pull request has now gone to the dspace-8_x branch.
Is that right?
If not, let me know! I'll be waiting.
PR updated: https://github.com/DSpace/dspace-angular/pull/3328

Closing, fixed by #3328


License

what license are you releasing this under? I tried this out and the models are REALLY good… I found this because I was looking for example code using PhotogrammetrySample.

MIT (updated repo with corresponding LICENSE file)

Awesome!


Eloquent Issue when using ->select() after ->withExists()

Laravel Version: 8.43.0
PHP Version: 7.3.28
Database Driver & Version: mariadb 10.0

Description:
Hello,
when i'm calling ->withExists and then ->select, the *_exists field is missing from the data,
the only solution to make it work is to move the select before the withExists.
Steps To Reproduce:
add a dummy relation to User referencing itself:
public function dummy()
{
    return $this->belongsTo(User::class, 'id');
}

then in a controller :
dump(User::withExists('dummy')->select('*')->first()->dummy_exists); // return null
dump(User::withExists('dummy')->first()>dummy_exists); // return true

there is no scenario where dummy_exists could be null or false, since it's referencing itself, it should always exist no matter what.
moving the select before the withExists fix the issue
dump(User::withExists('dummy')->select('*')->first()->dummy_exists); // return null
dump(User::select('*')->withExists('dummy')->first()->dummy_exists); // return true

i've not created a github repo for this since i think this behaviour is easily testable with any given project with a user model.
thanks.

I see in all of the tests of withExists that select comes before withExists so that's indeed probably required. If this isn't clear in the docs we'd appreciate PR's 👍


abaplint.json issue when excluding objects(programs) with namespace in check "names_no_dash"

I am trying to exclude an object from from the check "names_no_dash" which has a namespace /somenamespace/foobar.prog.abap:
"names_no_dash": {
      "exclude": ["#somenamespace#foobar.prog.abap"]
    },

Abaplint doesn't process the exclusion, but when I copy the prog.abap and prog.xml file to zfoobar.prog.abap and zfoobar.prog.xml the check excludes the object from the check.
for example:
"names_no_dash": {
      "exclude": ["zfoobar.prog.abap"]
    },

Also can regular expression be used in the "exclude": [......] statement?
Regards,

regular expressions, go to https://rules.abaplint.org/names_no_dash/ and hover the mouse on "excloude" => yes, case insensitive regexes
the "#"'s are actually a problem, when running in vscode the filenames are URIs, which contain "%23" instead of the "#", but I think the command line version keeps the "#"'s, https://github.com/abaplint/abaplint/issues/673
so, I suggest trying
"exclude": ["somenamespace[\w#%]+foobar.prog.abap"]

Thanks @larshp , thank you for the tip!
The following resolved it for me:
["[\\w#%]+somenamespace[\\w#%]+foobar.prog.abap"]
Regards,

ah yea, I always forget the escaping


[Bugfix] Cant render headerLeft on first scene

https://github.com/react-navigation/stack/issues/164

Thanks for the PR! But I have already fixed it in<PHONE_NUMBER>1ffbfee8b7245eab92305b378a2ef3

Nice! @satya164


ProgressView color change

Hi I loved this library and thanks for such a awesome work. I have implemented it into my project and it works like charm. But I have facing some strange issue.
I have used Tab on my project in which on my first tab I have used progressView into TableViewCell. When I run the project ProgressView display the same color that have been set by me it looks like below image.

But When I changed my tab (means from 1st Tab to 2nd Tab and then back to 1st Tab) then the progress colour changed it looked like below image

Don't know whats wrong with it.. Banging my head from last several hours. Thanks

Hmm, that's a pain. Are you using animated colors, or is the popUpView a constant color throughout?

If you're using animated colors, could you try the following quick hack: reset the animated colors when the tab changes?
self.progressView.popUpViewAnimatedColors = …

No I am not using animated colors. Please have look my code
func initProgressPopUp() {
    myProgressPopUpView.progress = 0
    myProgressPopUpView.popUpViewCornerRadius = 12.0
    myProgressPopUpView.font = UIFont(name: "Futura-CondensedExtraBold", size: 28)
    myProgressPopUpView.popUpViewColor = UIColor(red: 0.0/255.0, green: 184.0/255.0, blue: 226.0/255.0, alpha: 1)
}

func setProgress(destination: Double) {
    tar = Double(destination/100)
    progress()
}

func progress() {
    myProgressPopUpView.showPopUpViewAnimated(true)
    let TIMES = 0.05
    var progress = myProgressPopUpView.progress
    if progress < Float(tar) {
        progress += 0.005
        self.myProgressPopUpView.setProgress(progress, animated: true)
        var timer = NSTimer.scheduledTimerWithTimeInterval(TIMES,
            target: self,
            selector: Selector("progress"),
            userInfo: nil,
            repeats: false)
    }
}

Thanks

Does it help to set autoAdjustTrackColor to NO?

Let me check it and let you know in 2 min

It will change the color of my progressView. Now progressView look like this

It look same when load first time and when tab switched.

Ok, we're making progress ; )
Could you then set the progressTintColor to the appropriate color afterwards. This might fix the problem (though it is a bit of a hack).

Bravo .... It works man .... you are life saviour  :+1:
Thank you so much for your help.... ;)

Glad it's working for you now : )
Though the problem you experienced is clearly a bug. I'll have to look into it. If you are able to post a demo project that demonstrates that problem it would be really helpful – understand if this is not possible though.
Al the best,
Al

I will create demo project for you and send it to you soon .. But it will be in Swift version hope you don't mind about it.

Swift is good :+1:

Great .. I will send you soon. Thanks again


Updated token labels and added workflow for automation

Description
This pull request updates the seed token labels csv file and creates a YML file to automate the process. Solves issue #135.
Tests

[x] Please provide evidence of your successful dbt run / dbt test here

DBT SEED
root@04796fd0a159:/near# dbt seed --full-refresh
01:15:19  Running with dbt=1.0.0
01:15:20  Unable to do partial parsing because a project config has changed
01:15:36  Found 38 models, 700 tests, 0 snapshots, 0 analyses, 628 macros, 1 operation, 1 seed file, 3 sources, 0 exposures, 0 metrics
01:15:37
01:15:49
01:15:49  Running 1 on-run-start hook
01:15:49  1 of 1 START hook: near.on-run-start.0.......................................... [RUN]
01:15:49  1 of 1 OK hook: near.on-run-start.0............................................. [OK in 0.00s]
01:15:49
01:15:49  Concurrency: 4 threads (target='dev')
01:15:49
01:15:49  1 of 1 START seed file seeds.token_labels....................................... [RUN]
01:15:54  1 of 1 OK loaded seed file seeds.token_labels................................... [CREATE 228 in 4.80s]
01:15:54
01:15:54  Finished running 1 seed, 1 hook in 17.65s.
01:15:54
01:15:54  Completed successfully
01:15:54
01:15:54  Done. PASS=1 WARN=0 ERROR=0 SKIP=0 TOTAL=1

DBT RUN
root@04796fd0a159:/near# dbt run -s silver__token_labels+ silver__prices_oracle+ --full-refresh
01:20:48  Running with dbt=1.0.0
01:20:54  Found 38 models, 700 tests, 0 snapshots, 0 analyses, 628 macros, 1 operation, 1 seed file, 3 sources, 0 exposures, 0 metrics
01:20:54
01:21:04
01:21:04  Running 1 on-run-start hook
01:21:04  1 of 1 START hook: near.on-run-start.0.......................................... [RUN]
01:21:04  1 of 1 OK hook: near.on-run-start.0............................................. [OK in 0.00s]
01:21:04
01:21:04  Concurrency: 4 threads (target='dev')
01:21:04
01:21:04  1 of 6 START table model silver.token_labels.................................... [RUN]
01:21:10  1 of 6 OK created table model silver.token_labels............................... [SUCCESS 1 in 5.21s]
01:21:10  2 of 6 START view model core.dim_token_labels................................... [RUN]
01:21:10  3 of 6 START incremental model silver.dex_swaps................................. [RUN]
01:21:10  4 of 6 START incremental model silver.prices_oracle............................. [RUN]
01:21:14  2 of 6 OK created view model core.dim_token_labels.............................. [SUCCESS 1 in 4.54s]
01:25:20  3 of 6 OK created incremental model silver.dex_swaps............................ [SUCCESS 1 in 250.63s]
01:25:20  5 of 6 START view model core.ez_dex_swaps....................................... [RUN]
01:25:24  5 of 6 OK created view model core.ez_dex_swaps.................................. [SUCCESS 1 in 3.83s]
01:25:34  4 of 6 OK created incremental model silver.prices_oracle........................ [SUCCESS 1 in 264.46s]
01:25:34  6 of 6 START view model core.fact_prices........................................ [RUN]
01:25:38  6 of 6 OK created view model core.fact_prices................................... [SUCCESS 1 in 3.94s]
01:25:38
01:25:38  Finished running 1 table model, 3 view models, 2 incremental models, 1 hook in 283.92s.
01:25:38
01:25:38  Completed successfully
01:25:38
01:25:38  Done. PASS=6 WARN=0 ERROR=0 SKIP=0 TOTAL=6

DBT TEST
root@04796fd0a159:/near# dbt test -s silver__prices_oracle
01:26:41  Running with dbt=1.0.0
01:26:48  Found 38 models, 700 tests, 0 snapshots, 0 analyses, 628 macros, 1 operation, 1 seed file, 3 sources, 0 exposures, 0 metrics
01:26:48
01:26:55
01:26:55  Running 1 on-run-start hook
01:26:55  1 of 1 START hook: near.on-run-start.0.......................................... [RUN]
01:26:55  1 of 1 OK hook: near.on-run-start.0............................................. [OK in 0.00s]
01:26:55
01:26:55  Concurrency: 4 threads (target='dev')
01:26:55
01:26:55  1 of 21 START test dbt_expectations_expect_column_values_to_be_in_type_list_silver__prices_oracle_BLOCK_ID__NUMBER__FLOAT [RUN]
01:26:55  2 of 21 START test dbt_expectations_expect_column_values_to_be_in_type_list_silver__prices_oracle_BLOCK_TIMESTAMP__TIMESTAMP_NTZ [RUN]
01:26:55  3 of 21 START test dbt_expectations_expect_column_values_to_be_in_type_list_silver__prices_oracle_INDEX__NUMBER [RUN]
01:26:55  4 of 21 START test dbt_expectations_expect_column_values_to_be_in_type_list_silver__prices_oracle_PRICE_USD__FLOAT__DOUBLE [RUN]
01:27:00  3 of 21 PASS dbt_expectations_expect_column_values_to_be_in_type_list_silver__prices_oracle_INDEX__NUMBER [PASS in 5.31s]
01:27:00  5 of 21 START test dbt_expectations_expect_column_values_to_be_in_type_list_silver__prices_oracle_SOURCE__STRING__VARCHAR [RUN]
01:27:00  4 of 21 PASS dbt_expectations_expect_column_values_to_be_in_type_list_silver__prices_oracle_PRICE_USD__FLOAT__DOUBLE [PASS in 5.40s]
01:27:00  6 of 21 START test dbt_expectations_expect_column_values_to_be_in_type_list_silver__prices_oracle_SYMBOL__STRING__VARCHAR [RUN]
01:27:00  2 of 21 PASS dbt_expectations_expect_column_values_to_be_in_type_list_silver__prices_oracle_BLOCK_TIMESTAMP__TIMESTAMP_NTZ [PASS in 5.43s]
01:27:00  7 of 21 START test dbt_expectations_expect_column_values_to_be_in_type_list_silver__prices_oracle_TOKEN_CONTRACT__STRING__VARCHAR [RUN]
01:27:00  1 of 21 PASS dbt_expectations_expect_column_values_to_be_in_type_list_silver__prices_oracle_BLOCK_ID__NUMBER__FLOAT [PASS in 5.49s]
01:27:00  8 of 21 START test dbt_expectations_expect_column_values_to_be_in_type_list_silver__prices_oracle_TOKEN__STRING__VARCHAR [RUN]
01:27:04  5 of 21 PASS dbt_expectations_expect_column_values_to_be_in_type_list_silver__prices_oracle_SOURCE__STRING__VARCHAR [PASS in 3.77s]
01:27:04  9 of 21 START test dbt_expectations_expect_column_values_to_be_in_type_list_silver__prices_oracle_TX_HASH__STRING__VARCHAR [RUN]
01:27:04  6 of 21 PASS dbt_expectations_expect_column_values_to_be_in_type_list_silver__prices_oracle_SYMBOL__STRING__VARCHAR [PASS in 3.89s]
01:27:04  10 of 21 START test dbt_expectations_expect_column_values_to_be_in_type_list_silver__prices_oracle__INSERTED_TIMESTAMP__TIMESTAMP_NTZ [RUN]
01:27:04  7 of 21 PASS dbt_expectations_expect_column_values_to_be_in_type_list_silver__prices_oracle_TOKEN_CONTRACT__STRING__VARCHAR [PASS in 3.89s]
01:27:04  11 of 21 START test dbt_expectations_expect_row_values_to_have_recent_data_silver__prices_oracle_BLOCK_TIMESTAMP__day__1 [RUN]
01:27:04  8 of 21 PASS dbt_expectations_expect_column_values_to_be_in_type_list_silver__prices_oracle_TOKEN__STRING__VARCHAR [PASS in 4.01s]
01:27:04  12 of 21 START test not_null_silver__prices_oracle_BLOCK_ID..................... [RUN]
01:27:08  12 of 21 PASS not_null_silver__prices_oracle_BLOCK_ID........................... [PASS in 3.89s]
01:27:08  13 of 21 START test not_null_silver__prices_oracle_BLOCK_TIMESTAMP.............. [RUN]
01:27:08  10 of 21 PASS dbt_expectations_expect_column_values_to_be_in_type_list_silver__prices_oracle__INSERTED_TIMESTAMP__TIMESTAMP_NTZ [PASS in 4.40s]
01:27:08  14 of 21 START test not_null_silver__prices_oracle_INDEX........................ [RUN]
01:27:08  9 of 21 PASS dbt_expectations_expect_column_values_to_be_in_type_list_silver__prices_oracle_TX_HASH__STRING__VARCHAR [PASS in 4.72s]
01:27:08  15 of 21 START test not_null_silver__prices_oracle_PRICE_USD.................... [RUN]
01:27:09  11 of 21 WARN 1 dbt_expectations_expect_row_values_to_have_recent_data_silver__prices_oracle_BLOCK_TIMESTAMP__day__1 [WARN 1 in 4.65s]
01:27:09  16 of 21 START test not_null_silver__prices_oracle_SOURCE....................... [RUN]
01:27:11  13 of 21 PASS not_null_silver__prices_oracle_BLOCK_TIMESTAMP.................... [PASS in 2.83s]
01:27:11  17 of 21 START test not_null_silver__prices_oracle_SYMBOL....................... [RUN]
01:27:12  16 of 21 PASS not_null_silver__prices_oracle_SOURCE............................. [PASS in 3.25s]
01:27:12  15 of 21 PASS not_null_silver__prices_oracle_PRICE_USD.......................... [PASS in 3.46s]
01:27:12  18 of 21 START test not_null_silver__prices_oracle_TOKEN........................ [RUN]
01:27:12  14 of 21 PASS not_null_silver__prices_oracle_INDEX.............................. [PASS in 3.58s]
01:27:12  19 of 21 START test not_null_silver__prices_oracle_TOKEN_CONTRACT............... [RUN]
01:27:12  20 of 21 START test not_null_silver__prices_oracle_TX_HASH...................... [RUN]
01:27:14  17 of 21 PASS not_null_silver__prices_oracle_SYMBOL............................. [PASS in 3.07s]
01:27:14  21 of 21 START test not_null_silver__prices_oracle__INSERTED_TIMESTAMP.......... [RUN]
01:27:15  18 of 21 PASS not_null_silver__prices_oracle_TOKEN.............................. [PASS in 3.36s]
01:27:15  20 of 21 PASS not_null_silver__prices_oracle_TX_HASH............................ [PASS in 3.46s]
01:27:16  19 of 21 PASS not_null_silver__prices_oracle_TOKEN_CONTRACT..................... [PASS in 3.59s]
01:27:17  21 of 21 PASS not_null_silver__prices_oracle__INSERTED_TIMESTAMP................ [PASS in 2.80s]
01:27:17
01:27:17  Finished running 21 tests, 1 hook in 29.23s.
01:27:17
01:27:17  Completed with 1 warning:
01:27:17
01:27:17  Warning in test dbt_expectations_expect_row_values_to_have_recent_data_silver__prices_oracle_BLOCK_TIMESTAMP__day__1 (models/silver/silver__prices_oracle.yml)
01:27:17    Got 1 result, configured to warn if != 0
01:27:17
01:27:17    compiled SQL at target/compiled/near/models/silver/silver__prices_oracle.yml/dbt_expectations_expect_row_va_2ba14d7786e3e53c9cfd825ee95651e3.sql
01:27:17
01:27:17  Done. PASS=20 WARN=1 ERROR=0 SKIP=0 TOTAL=21

[x] Any comparison between prod and dev for any schema change

Checklist

[x] Follow dbt style guide
[x] Run git merge main to pull any changes from remote into your branch prior to merge.
[x] Tag the person(s) responsible for reviewing proposed changes @amasucci13
[x] IMPORTANT Note for deployment if a full-refresh is needed for any model this PR impacts.

If any schema is changing, whether it be a table or a view, we will need to run a full-refresh in prod to avoid errors with the scheduled refresh jobs.
The PR can be reviewed, but should not be merged unless by someone with prod access.

Tag forgxyz if a full-refresh will be required on prod. @forgxyz

@D0R11 I am about to push a major overhaul to start loading the blocks and shards from the S3 source into silver models over the weekend.
Once we finish the source-swap early next week, I'll review this update & GH Action.


[WIP] feat(docker): enable single curl of docker-compose.yml

SUMMARY
As the title says, this PR tries to address https://github.com/apache/superset/discussions/24987

instead of mounting the docker/ directory into the container, moved the scripts in docker/ into the docker image
moved default (environment) variables from .env into superset_config.py

BEFORE/AFTER SCREENSHOTS OR ANIMATED GIF

TESTING INSTRUCTIONS

ADDITIONAL INFORMATION

[ ] Has associated issue:
[ ] Required feature flags:
[ ] Changes UI
[ ] Includes DB Migration (follow approval process in SIP-59)

[ ] Migration is atomic, supports rollback & is backwards-compatible
[ ] Confirm DB migration upgrade and downgrade tested
[ ] Runtime estimates and downtime expectations provided

[ ] Introduces new feature or API
[ ] Removes existing feature or API

Current blocker:

the Postgres examples-init.sh

@sebastianliebscher Thank you for this!  This will be a big win.  What do you think is needed to unblock the examples-init.sh piece?  Is there support you need or options that we should discuss?

@sfirke Both, I'm not sure which is the best way to initlialize the Postgres db, without the docker/docker-entrypoint-initdb.d/examples-init.sh.
I'm thinking of the following possibilities:

provide another docker image tag e.g. superset:examples-db. the docker-compose-non-dev.yml would get the examples db as its own postgres service like I mentioned here https://github.com/apache/superset/discussions/23399#discussioncomment-6708360
move the logic of examples-init.sh into the cli command superset load-examples. for this you would have to detect if the example-db is postgres
copy examples-init.sh into the superset-init container and add logic to run the script. to do this you would need to detect if the examples-db is postgres and the superset-init container would also need the postgres-client package

I think 3. is not a good idea as it is too much customization. 2. I am not familiar with superset load-examples. I would go for 1.
What do you think?

Ooh I also like #1. Another bonus: I loaded the example data into what became my production instance and it was hard to get it out b/c it was intermingled with the metadata (unless I'm confused). If we had this paradigm you propose in #1 I could have just dropped the examples container (or dropped the data source in Superset), easy peasy.
Would the pip workflow continue as is, if we make this modification to docker?

Thinking more about this, and the fact that Superset 4.0 will not support SQLite as a metadata db -- would we need a whole separate Postgres container for the examples, or just a separate db (and maybe user) in the same Postgres container?

Would the pip workflow continue as is, if we make this modification to docker?

Yes, the pip workflow still uses SQLite by default.

would we need a whole separate Postgres container for the examples, or just a separate db (and maybe user) in the same Postgres container?

Ideally we should just use one Postgres service and have Superset's metadata separated from the examples, yes. This was already achieved and merged by https://github.com/apache/superset/pull/25003. But that requires an initialization script (examples-init-sh) to set up the other database and user. To still be able to curl and start just the single docker-compose-non-dev.yml, this init script logic has to be removed/moved without losing the separation between metadata and examples. That's what I tried to express with my comment above https://github.com/apache/superset/pull/25546#issuecomment-1751479161.
The current solution in this PR uses two separate Postgres services with examples enabled by default. If a user decides not to use examples, it is as easy as deleting the examples service + volume and SUPERSET_LOAD_EXAMPLES config.

Is this still needed, or should we close it out?


Load NuGet dependencies from full dll path

Attempting to load a project with NuGet dependencies resulted in a .NET EXCEPTION
EXCEPTION: Path "../ParquetDotNet/nuget-dependencies/published/Parquet.dll" is
not an absolute path. (Parameter 'path')
LoadNuGetDependencies[40] assemblies←_dotnetReflection.Assembly.LoadFile¨dlls
                                                                        ∧

I'm developing in Linux so Link saved my changes to a file NuGetDependencies.aplf instead of the NugetDependencies.aplf that exists.


Signer service

Found a good library to work with to sign eth txs using Google KMS
Built a POC to sign and send read txs in base, sepolia and op
The library supports only legacy tx types so I made a PR to add EIP1559 used by batcher and proposer. The PR is missing EIP4844 tx which is a blob tx. I think we need to support it eventually but the library used for tx manipulation<EMAIL_ADDRESS>doesn’t support blobs within its minor versions. They added it in 5.x but they also broke ABIs. I made necessary changes in a branch but testing them have been tricky so I am gonna wait to see how the author responds to my PR.
Next step: create a server to accept http requests to sign txs. Test it with a batcher or proposer from Optimism.


linkedin & github links not in their right place

Clicking on linkedin icon redirects to github page and vice versa.

hhahahaaaaaaaaaaa.i know bhai
thanks
On Mon, Dec 26, 2016 at 6:47 PM, Mohd Huzaifa Faruqui <
<EMAIL_ADDRESS>wrote:

Clicking on linkedin icon redirects to github page and vice versa.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/zmf0507/CPITER/issues/1, or mute the thread
https://github.com/notifications/unsubscribe-auth/AUQFtsVIS55vcGEcg12m03T9Nov1WUvPks5rL755gaJpZM4LVxcR
.

yeah i checked that..thanks for the info


Follow 18F API best practices

18F which is the technology team inside the US federal government has built an API best practices and standards document. Think it's a good idea to follow as much as we can: https://github.com/18f/api-standards
As I see good ideas from the document I'll be adding more issues as we go along!

@ErnieAtLYD what do you think about jsonapi.org ?

Also @leordev that's the first time I've seen this jsonapi.org site; I'm open to it. Very cool!

jsonapi.org turned out to be too complicated. Assigned this one to myself: implementing 18F and startDate/endDate optional

Will take care of using optional dates. Also will handle incorrect date format.

PR #33 Will take care of this one. Still a work in progress. Hopefully it makes everyone happy.


Change password Should need old password

Current behaviour:
user can change password even if he didn't know the old password.
Expected Behaviour:
to change password old password is needed.
and app should have 1 more edittext on change password activity for old password verification.

This is not how the API works right now, but thanks for the suggestion! 👍

oh!, but for now (for security purpose). this feature also can be implemented using Shared Preferences..On first Login we can store password in shared preferences and verify password when user wants to change. and update it after user changed it.


x/dotc: add slices streams + tests

Codecov Report

Merging #226 into master will increase coverage by <.01%.
The diff coverage is 88.23%.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 0e8bdcf...bc0b88c. Read the comment docs.


Remove option to add reference to same database

Hiding same database option for now because of https://github.com/microsoft/azuredatastudio/issues/12487. Fix needs to be made in DacFx, so we don't want to have a broken experience in the meantime.

Pull Request Test Coverage Report for Build 261991824

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 38.246%

Totals

Change from base Build 261989124:
0.0%

Covered Lines:
19159

Relevant Lines:
45790

💛  - Coveralls


I have written a couple packages for SQLite3MultipleCiphers that work cross platform.

Hi,
I have written a set of packages that can be used to load SQLite3MultipleCiphers similar to the the sqlcipher_flutter_libs  package, along with a drift compatible database package.  These work on all platforms including the browser.
I am probably not the right person to maintain these, as they must be updated on every change made here and on Drift. I wanted to reach out and see if you would be open to inclusion here for the sqlite3mc_flutter_lib package and in Drift for the drift specific database packages.
You can find it at https://github.com/thinkassembly/sqlite3mc.dart .  I have put off publishing and housekeeping around docs until I find a home for it.

Thanks for your work on those packages.
I don't fully understand why these need to be updated with every change in drift and sqlite3.dart. Is it not ABI compatible with sqlite3? If so, don't we just need sqlite3mc_flutter_libs?
For SQLCipher, our recommendation in drift is to manually issue the pragma for encryption. Is there a similar mechanism in sqlite3mc?

You are right,  sqlite3mc_flutter_libs is ABI compatible and you can be substituted for either of the existing sqlite*_flutter_libs and use the encryption related pragma's in setup.   This works fine for native builds.
What I actually meant by keeping up to date with changes is the sqlite3mc_drift_database package, I tried to adapt your current solution for the browser, it should have been straightforward but I never could get it to work reliably with the VFS in SQLite3MultipleCiiphers,  I ended up rewriting that using the same atomics / SharedArrayBuffer techniques as absurdSQL for the file system calls,  this isn't the first sqlite3 to idb shim I've written so I have some experience and this technique has been the most solid implementation I've worked with, I wouldn't like to regress it.
I think you are right about working towards restructuring drift to make it easier to add alternate sqlite3 forks. It isn't so much that I have to actually do anything every time a change is made upstream, its that I have to check to make sure I don't need to do anything.  I rely on bindings and things like the function_store functions that could be changed, and  some needed interfaces are marked internal and not exported, or experimental so I like to make sure none of that has changed since it isn't guaranteed by semver.
I don't mind cleaning up and publishing things myself, I just want to make sure I'm not causing users any issues by relying on something that I know wasn't public api.
Examples of some of the internals I have needed.
info: The member 'package:drift/src/sqlite3/database.dart' can only be used within its package. (invalid_use_of_internal_member at [sqlite3mc_drift_database] lib/src/native/sqlite3mc_native_database.dart:17)
info: Don't import implementation files from another package. (implementation_imports at [sqlite3mc_drift_database] lib/src/native/sqlite3mc_native_database.dart:17)
info: Don't import implementation files from another package. (implementation_imports at [sqlite3mc_drift_database] lib/src/native/sqlite3mc_native_database.dart:19)
info: Don't import implementation files from another package. (implementation_imports at [sqlite3mc_drift_database] lib/src/wasm/bindings.dart:15)
info: Don't import implementation files from another package. (implementation_imports at [sqlite3mc_drift_database] lib/src/wasm/bindings.dart:16)
info: Don't import implementation files from another package. (implementation_imports at [sqlite3mc_drift_database] lib/src/wasm/database.dart:7)
info: Don't import implementation files from another package. (implementation_imports at [sqlite3mc_drift_database] lib/src/wasm/database.dart:8)
info: Don't import implementation files from another package. (implementation_imports at [sqlite3mc_drift_database] lib/src/wasm/database.dart:9)
info: The value of the local variable 'cursor' isn't used. (unused_local_variable at [sqlite3mc_drift_database] lib/src/wasm/file.dart:28)
info: Don't import implementation files from another package. (implementation_imports at [sqlite3mc_drift_database] lib/src/wasm/function_store.dart:7)
info: Avoid using private types in public APIs. (library_private_types_in_public_api at [sqlite3mc_drift_database] lib/src/wasm/js_interop.dart:77)
info: Don't import implementation files from another package. (implementation_imports at [sqlite3mc_drift_database] lib/src/wasm/sqlite3.dart:5)
info: The member 'package:drift/src/sqlite3/database.dart' can only be used within its package. (invalid_use_of_internal_member at [sqlite3mc_drift_database] lib/src/wasm/sqlite3mc_wasm_database.dart:25)
info: Don't import implementation files from another package. (implementation_imports at [sqlite3mc_drift_database] lib/src/wasm/sqlite3mc_wasm_database.dart:25)
info: The value of the field '_fileSystem' isn't used. (unused_field at [sqlite3mc_drift_database] lib/src/wasm/sqlite3mc_wasm_database.dart:140)
info: Don't import implementation files from another package. (implementation_imports at [sqlite3mc_drift_database] lib/src/wasm/statement.dart:5)
info: Don't import implementation files from another package. (implementation_imports at [sqlite3mc_drift_database] lib/src/wasm/statement.dart:7)
info: The class 'Cursor' shouldn't be extended, mixed in, or implemented because it's sealed. (subtype_of_sealed_class at [sqlite3mc_drift_database] lib/src/wasm/statement.dart:316)


Annotations/labels inheritance

Rancher version:
v2.1.5
Issue Type:
Feature Request
Description:
Due to security reasons we would need each one of the API objects under project, specially pods, deployments and jobs labelled with some info that comes from the project (owner, requestor etc...)
We would like to store that info in annotations better than labels, but we would like Rancher to do this automatically, each time that someone create a pod, deployment or job under a project, some of the project annotations would be written as annotations in the deployment and the children pods.
The projects' annotations are created by us automatically during the project creation process..
Do you have something to force this annotations heritage?
gz#5031
gz#11057
gz#13411

This would also be beneficial in our organization, similar to tagging strategies on cloud resources, where we've built automation to inherit tags from a resource group level.  Helps confirm ownership, accountability, costs, etc...

I'd like that too.
Example:
scheduler.alpha.kubernetes.io/node-selector: env=dev inherited to Namespaces to be used with the PodNodeSelector Admission Plugin https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#podnodeselector

I'd like to have that feature aswell.
For example:
Configure allowed-registries as an annotation on the project and it will be inherited to all namespaces, so I can check with gatekeeper that only images from the allowed-registries can be pulled.
Maybe with an option that inherited annotations can't be overwritten on the namespace.

Related to https://github.com/rancher/rancher/issues/19729

Related to https://github.com/rancher/rancher/issues/19729

SURE-4862

After reviewing, this can be considered as part of scope for projects v2, but it is not currently in the design.


wxRichTextCtrl should use smart_size not mimimum size for default size setting

Description:

wxRichTextCtrl is defaulting to a minimum size of 200x100. It we're going to set the minimum size, then we should probably use the new smart_size property instead.

smart_size was removed because of the number of problems it was causing in other controls, so it is no longer available.


filter

hello, i want to ask you some problems about filter_generated.py,  how to count the number of generated molecules not in training set and in this code, i cant find how to check valency. Thank U!

Sure! So for both of these questions, there is an implementation in the original G-SchNet code but it's more specific to the QM9 datasets.
-For checking molecules between generated and training set: here
-For checking valency: here
Is this the type of thing you mean when saying you want to check valency?
In terms of our 3D-Scaffold adaptation of G-SchNet, there is no specific valency checker (see G-SchNet for why).
Just as a personal anecdote, I've never seen any duplicates between the training and generated datasets. I can definitely leave this issue open while I see if it would be simple enough to just add those functionalities back in. But for now I'd say if you really wanted to double check, to use the two implementations listed above.


fix precommit hook failing for selfdrive import in selfdrive.ui.tests.test_translations

Was getting the following when running precommit hook with any changes.

Check hooks apply to the repository..................(no files to check)Skipped
Check for useless excludes...........................(no files to check)Skipped
check python ast.........................................................Passed
check json...........................................(no files to check)Skipped
check xml............................................(no files to check)Skipped
check yaml...........................................(no files to check)Skipped
check for merge conflicts................................................Passed
check for broken symlinks............................(no files to check)Skipped
check for added large files..............................................Passed
codespell................................................................Passed
mypy.....................................................................Passed
flake8...................................................................Passed
pylint...................................................................Passed
cppcheck.............................................(no files to check)Skipped
test translations........................................................Failed
- hook id: test_translations
- exit code: 1

Traceback (most recent call last):
  File "/home/chris/openpilot/selfdrive/ui/tests/test_translations.py", line 9, in <module>
    from selfdrive.ui.update_translations import TRANSLATIONS_DIR, LANGUAGES_FILE, update_translations
ModuleNotFoundError: No module named 'selfdrive'

poetry-check.........................................(no files to check)Skipped

Removing the init file from the ui.tests subdirectory seems to allow it to find selfdrive again.

This isn't what fixed it. not sure why I'm getting this message on the imports.

I've seen it from time to time, setting PYTHONPATH appropriately to your openpilot installation fixes it.

had to make a script to replace git executable in SmartGit.
Couldn't get the environment right even running SmartGIt from a poetry shell.
#!/bin/bash

if [ "$PWD" == "$HOME/openpilot" ] ; then
	echo "redirectid git to poetry"
	poetry run git "$@"
else
	git "$@"
fi


New Domain request (lib/domains/tn/r-iset/beja.txt)

@kthiri Please provide us with:

the school official website URL
the school street address, including city and country
an URL of a page on the official website where the school offers an IT-related long-term (>1 year) course
a proof, which shows that the school recognizes the domain you are submitting as an official email domain for the students.

@kthiri You might miss my previous comment. Please react.

@kthiri I am sorry, this request remains unanswered for a while. I have to close it without merging. Please reopen and comment if you have an update regarding the aforementioned issue. Thank you for your understanding!


Git: Stage selected ranges on unsaved file stages everything

VSCode Version: 1.48.0
OS Version: OS X

Steps to Reproduce:

Do multiple changes in a file without saving the file.
Select one of the changes for inclusion in the next commit "Stage Selected Ranges"
Try committing.

Select "Save All & Commit".
Now you will see that all changes in the file was included in the commit.
What happens is "Save All & Commit All".  What I want is either that the dialog box is updated to indicate what is happening, or that the selected range is the only part that is committed.

Does this issue occur when all extensions are disabled?: Yes/No

Looking at this bug. Would swapping the order of await Promise.all(documents.map(d => d.save())); and await repository.add(documents.map(d => d.uri)); help address this?
https://github.com/microsoft/vscode/blob/e6b0f45556ff76631c4cf4621aa8e2be564f674e/extensions/git/src/commands.ts#L1374-L1376

I see another related issue:  When selecting "Commit Staged (Amend)" when nothing is staged, it will also commit everything.
Expected is that I will just update the commit message.

Changed the first button to Commit Staged Changes to make it clear what's happening.


check related elements outside form (#2156)

Test for new functionality is missing.

No new failures when running tests on Firefox.
Could not run tests on edge browser, can not yet load the page.
IE does not even run all tests.

unsure if 0b3fbb4 only finds expected error elements, or even normal labels


Deprecation warnings

I'm using gulp-clipboard on Node.js v7.6.0
Requiring gulp-clipboard gives me the following warnings.
DeprecationWarning: os.tmpDir() is deprecated. Use os.tmpdir() instead.
DeprecationWarning: 'GLOBAL' is deprecated, use 'global'

The warnings seem to go away if I modify gulp-clipboard to use the latest version of the copy-paste npm package.

Will bump the dependency tomorrow. PR always welcome

I didn't think or test it thoroughly but it seemed that you have to also replace
	copy_paste = require("copy-paste").silent()

with
	copy = require("copy-paste").copy

Think this is what cyberixae is suggesting.
I'm using this with npm copy-paste v1.3.0
then changed the index for this -
copy_paste = require("copy-paste").silent()
to
copy_paste = require("copy-paste");
and
copy(String(file.contents));
to
copy_paste.copy(String(file.contents));
now working fine.

PR always welcome


More of a comment than an issue

We should really be working on the original layer saver script and get it to work in PS CC 2017
This script was fast and had many many more options than this one,
The things that set it apart was the fact that you could save layers with Prefixes and increment the files with hyphens and numbers such as MFOTL395 and it would merge visible and/or selected layers in to files and name them MFOTL395-01.jpg, MFOTL395-02.jpg and so on
You could also set it to save selected layers along with the top or bottom most layers, including smart objects and backgrounds
Please someone update this script so it works in PS CC 2017, i have it safe if anyone has the talent to do this, it works in CS6 and I think it works in CC 2015
I create t-shirt designs and have all the 13 colours of shirt at the bottom of my file and all the smart vector objects above, i can select all 13 blank coloured t-shirts and merge each one with a selected smart vector object and create all the colour variation images or ebay, amazon, my website etc in seconds for each design

Here is the original, no disrespect meant to anyone who has contributed to this project
Layer Saver.zip

Maybe file an issue with those guys then. We don't work on or have control over other projects.


HttpUtilityExtensions in two libraries

Error CS0433 Type "HttpUtilityExtensions" exists in "MyToolkit.Extended, Version = <IP_ADDRESS>, Culture = neutral, PublicKeyToken = null", and the "MyToolkit, Version = <IP_ADDRESS>, Culture = neutral, PublicKeyToken = 3e349a1360994d26"

Should be fixed in v2.5.2, please try again

Yes it's OK.


[Event Request] Page 9153 - My Accounts - OnBeforeSyncFieldsWithGLAccount

Dear ALAppExtensions team,
through this issue we would like to request adding event publisher OnBeforeSyncFieldsWithGLAccount to Page 9153 My Accounts with the following signature:
[IntegrationEvent(false, false)]
local procedure OnBeforeSyncFieldsWithGLAccount(var MyAccount: Record "My Account"; var IsHandled: Boolean)
begin
end;

which would be called as follows in SyncFieldsWithGLAccount:
local procedure SyncFieldsWithGLAccount()
var
    MyAccount: Record "My Account";
    // >>>> New >>>>>>>>>>>>>>>>
    IsHandled: Boolean;
    // <<<< New <<<<<<<<<<<<<<<<
begin
    // >>>> New >>>>>>>>>>>>>>>>
    OnBeforeSyncFieldsWithGLAccount(Rec, IsHandled);
    if IsHandled then
        exit;
    // <<<< New <<<<<<<<<<<<<<<<

    Clear(GLAccount);
    if GLAccount.Get("Account No.") then begin
        GLAccount.CalcFields(Balance);
        if ("Account Balance" <> GLAccount.Balance) or (Name <> GLAccount.Name) then begin
            "Account Balance" := GLAccount.Balance;
            Name := GLAccount.Name;
            if MyAccount.Get("User ID", "Account No.") then
                Modify;
        end;
    end;
end;

Thanks for reporting this. We agree, and we’ll publish a fix asap, either in an update for the current version or in the next major release. Please do not reply to this, as we do not monitor closed issues. If you have follow-up questions or requests, please create a new issue where you reference this one.
Build ID: 49170.


SW-4958 Add per-project document storage settings

When documents are uploaded for accelerator projects, they need to be stored in
project-specific locations and have a project-specific element added to their
filenames. Add a table to store those settings, and allow them to be edited from
the list of a participant's projects in the admin UI.

#1711  👈
main

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @sgrimm and the rest of your teammates on  Graphite


Add TomoChain sharding proposal

Estimated time: 2h

Why:

More SEO friendly than Google Docs
User can read  TomoChain sharding proposal in the docs site

What:
TomoChain sharding proposal https://docs.google.com/document/d/1u7TajABjbllZTAkz741wqvbP5v4t4HvJq935rpefvBE/edit

merged in #68


Link from NPM to source

Noticed on the project page on NPM doesn't have a link back to this git repo.
Just took a few more clicks to look up the name/repo in google and github. I'm sure I'm not the only person to have trouble finding the repo.
Not sure how to add, but I believe you just add the repo to your package.json
See this link https://docs.npmjs.com/files/package.json#repository

@ObjectiveTruth Thanks for the heads up .. I updated it https://www.npmjs.com/package/github-slack-reminder


Updated readme file

Updated readme file which describes data processing steps and cleans up language for others to recreate

@ceenell I should have merged this and done a new PR but realize now the changes I just pushed up are showing here now. So, if you want to take a look at the updated _targets.R file it should be much streamlined. We'll just need to update the path to the data if it is posted on S3 somewhere.

By the way, the plots that get exported out on my computer the color looks washed out compared to the versions from you. Is that a rendering on mac difference?

Huh, that's funny about the color. I have no idea why that would happen. Seems like it's just the 40 year chart though.

Merging and will add the data link


Added the message on the README file

Related Issue
Added the message Made with ❤ for the people of India on the README file under the vaccine gif (above devIncept) thus closing the issue #87
Check List

[ ] I have commented my code, particularly in hard-to-understand areas.
[X] I have made corresponding changes to the documentation.
[ ] New and existing unit tests pass locally with my changes.

Screenshots (if appropriate):

Original
Updated

**  **
**  **

@shivanshi-s The text is not much visible in the readme file. Can you add that in form of badge or something else so that its more visible and looks good?

@shivanshi-s I am merging this PR for now. You can do one thing, create a separate issue and  try adding badges to the readme file wherever possible. Will assign it to you if you are interested.


Success/error status issue

Resolves  #73
Resolved Issue #73 by added a new dialogue which is triggered when  a user completes an action (Form Submission)
The dialogue is reusable and the same can be used for any future dialogue requirements in case of success or error.
How to test
Tests

Submit the add clinic form
Report a clinic

Screenshots

Documentation
Documentation for file : components/StatusModal.vue
This is a dialogue or modal component to show status Success or error preferably when
a user does a action such as submitting a form
Props
title : The Title of the dialogue (Modal) preferably "Success" or "Error"
text: The paragraph which gives more information about the status.
Events
Closed: This event is emitted from the component when the user clicks Action Button Ok.
Example
the following snippet can be used in template to initialize the model with appropriate data.
<StatusModal ref="successDialog" title="Success" text="New clinic data successfully inserted to the database." @closed="$router.push('/')"/>

The following snippet can be added in any method to trigger the dialog to open
this.$refs.successDialog.open();

As an FYI, there are existing Vue/Nuxt libraries for popups like this, such as @nuxt/toast, and using an existing library may be easier to maintain and probably offers more options. That said, I don't think there's any particular problem using a custom solution if everyone's okay with it!

I was trying to create a reusable dialog box to be used across all form submissions or any other case where a dialog maybe necessary so we are consistent with the design/look and feel of the dialog.
Is it better to have a existing library for the same?
What do y'all think?

We definitely would want a consistent UI for displaying status messages. I'm not a design expert by any means so unless there are any around it will probably just come down to personal preferences
I think for simple messages like "submitted successfully" or "login failed" it might be easier to choose an existing library to reduce the chances of making mistakes (speaking from experience of trying to replicate seemingly simple stuff and ending up spending hours on it), but I'll defer to the full on maintainers here.

@PsychicNoodles is right! We need a consistent experience and toast notifications would be great to have. I’ve created #103 to set them up.
@theyokohamalife let’s talk about our library options!
Cc @amar-prabhu-29


format.linesBetweenQueries "preserve" is not working?

Describe the bug
A clear and concise description of what the bug is.

To Reproduce
Steps to reproduce the behavior:

edit a sql
format sql
"preserve" is not working, and linesBetweenQueries seems not correct.

Expected behavior
A clear and concise description of what you expected to happen.
Screenshots
ezgif-2-cd3033ced553.zip
From the video:

"format.linesBetweenQueries": "preserve" --> No lines
"format.linesBetweenQueries": 1 --> No lines
"format.linesBetweenQueries": 2 --> 1 line
"format.linesBetweenQueries": 3 --> 2 lines

Desktop (please complete the following information):

SQLTools Version [e.g. v0.17.x] 0.23.0
VSCode Version: [e.g 1.x.y] 1.51.1
OS: [e.g. Windows, Linux, Mac] Linux
Driver:

[ ] PostgreSQL/Redshift
[ ] MySQL/MariaDB
[ ] MSSQL/Azure
[ ] SQLite
[ ] Other? Which...

Database version: [e.g. MySQL v5.6, PostgreSQL vX...]

Same issue here

SQLTools Version: 0.23.0
VSCode Version: 1.67.0
OS: Linux

just a bystander note: Regarding the "linesBetweenQueries seems not correct" (e.g. 2 becomes 1 etc.), that is misunderstanding of the property. It is not number of empty lines between queries, but number of line breaks. Thus 1 line break means each query is on separate  lines without any empty lines between them. 2 means 2 line breaks, meaning 1 empty line between queries and so on.
The config name is confusing here :) I actually stumbled on this when looking at similar problem in (I guess) original library https://github.com/sql-formatter-org/sql-formatter which this repo forked :)


how to build this for manual HA with no addons?

run HA in docker so HACS and addons are not an option. Can I just build the dockerfile run the container and use it?

I suppose it should work but I never tried it.

What I tried though in development is to run an Apache locally with the php site running and change apache web root to point to "ipmi-server/rootfs/app/public".

No, doesn't really work straight up building from here.  Docker starts but doesn't respond, probably missing things that "regular" bare metal install provides.  eg don't what supervisor is here:
s6-rc: info: service s6rc-oneshot-runner: starting s6-rc: info: service s6rc-oneshot-runner successfully started s6-rc: info: service base-addon-banner: starting curl: (6) Could not resolve host: supervisor [10:14:57] ERROR: Something went wrong contacting the API s6-rc: info: service base-addon-banner successfully started s6-rc: info: service fix-attrs: starting s6-rc: info: service base-addon-log-level: starting s6-rc: info: service fix-attrs successfully started curl: (6) Could not resolve host: supervisor [10:14:57] ERROR: Something went wrong contacting the API s6-rc: info: service base-addon-log-level successfully started s6-rc: info: service legacy-cont-init: starting s6-rc: info: service legacy-cont-init successfully started s6-rc: info: service legacy-services: starting services-up: info: copying legacy longrun nginx (no readiness notification) services-up: info: copying legacy longrun php-fpm (no readiness notification) [10:14:57] INFO: Starting PHP-FPM... s6-rc: info: service legacy-services successfully started [10:14:58] INFO: Starting NGinx...

Run in your browser http://[ip_of_docker_installation]:9595/command?params=-I%20lanplus%20-H%20YOUR_IPMI_SERVER_IP%20-U%20ADMIN%20-P%20YOUR_PASSWORD%20bmc%20info which translates to ipmitool -I lanplus -H YOUR_IPMI_SERVER_IP -U YOUR_USER -P YOUR_PASSWORD bmc info. %20 stands for space (url encoding). You should get back a json with success and output keys.
Does it work?

It works on the docker CLI, but which port I should publish from the docker?  80:9595
{
  "success": true,
  "output": "Device ID                 : 32\nDevice Revision           : 1\nFirmware Revision         : 2.81\nIPMI Version              : 2.0\nManufacturer ID           : 674\nManufacturer Name         : Dell Inc.\nProduct ID                : 256 (0x0100)\nProduct Name              : Unknown (0x100)\nDevice Available          : yes\nProvides Device SDRs      : yes\nAdditional Device Support :\n    Sensor Device\n    SDR Repository Device\n    SEL Device\n    FRU Inventory Device\n    IPMB Event Receiver\n    Bridge\n    Chassis Device\nAux Firmware Rev Info     : \n    0x00\n    0x05\n    0x51\n    0x51\n"
}

root@cf5471ce9e36:/$netstat -plant
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 <IP_ADDRESS>:9000          <IP_ADDRESS>:*               LISTEN      96/php-fpm.conf)
tcp        0      0 <IP_ADDRESS>:80              <IP_ADDRESS>:*               LISTEN      145/nginx.conf
tcp        0      0 <IP_ADDRESS>:8099            <IP_ADDRESS>:*               LISTEN      145/nginx.conf

OK, published container port 80 to host port 9595 and the integration added successfully :D

Good job! :)
You could now close the issue if it's all working.


PR 80 merged?

Pull Request #80  status says it was merged to master.
But master copy still shows -1 on line 1190 in PureJavaSerialPort.java, this should have been changed to TIMEOUT ?

thx for the update:
https://github.com/nyholku/purejavacomm/commit/ecda27582eaefb1a600ca75d58e80495198e86b0


Invalid service_data, no brightness or color attributes found for some hue lights

Home Assistant Adaptive Lighting Issue Template
Bug Reports
If you need help with using or configuring Adaptive Lighting, please open a Q&A discussion thread here instead.
Before submitting a bug report, please follow these troubleshooting steps:
Please confirm that you have completed the following steps:

[X] I have updated to the latest Adaptive Lighting version available in HACS.
[X] I have reviewed the Troubleshooting Section in the README.
[X] (If using Zigbee2MQTT) I have read the Zigbee2MQTT troubleshooting guide in the README.
[X] I have checked the V2 Roadmap and open issues to ensure my issue isn't a duplicate.

Required information for bug reports:
Please include the following information in your issue.
Issues missing this information may not be addressed.

Debug logs captured while the issue occurred. See here for instructions on enabling debug logging:

2023-07-26 08:47:27.849 ERROR (MainThread) [homeassistant.components.websocket_api.http.connection] [140180791355216] Invalid service_data, no brightness or color attributes found: service_data={'entity_id': 'light.lounge_floor_lamp', 'transition': 1.0}
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/components/websocket_api/commands.py", line 205, in handle_call_service
    await hass.services.async_call(
  File "/usr/src/homeassistant/homeassistant/core.py", line 1965, in async_call
    response_data = await coro
                    ^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/core.py", line 2005, in _execute_service
    return await cast(
           ^^^^^^^^^^^
  File "/config/custom_components/adaptive_lighting/hass_utils.py", line 46, in service_func_proxy
    await intercept_func(call, data)
  File "/config/custom_components/adaptive_lighting/switch.py", line 1965, in _service_interceptor_turn_on_handler
    adaptation_data = await adaptive_switch.prepare_adaptation_data(
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/adaptive_lighting/switch.py", line 1192, in prepare_adaptation_data
    return prepare_adaptation_data(
           ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/adaptive_lighting/adaptation_utils.py", line 200, in prepare_adaptation_data
    lighting_type = _identify_lighting_type(service_data)
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/adaptive_lighting/adaptation_utils.py", line 165, in _identify_lighting_type
    raise NoColorOrBrightnessInServiceDataError(msg)
custom_components.adaptive_lighting.adaptation_utils.NoColorOrBrightnessInServiceDataError: Invalid service_data, no brightness or color attributes found: service_data={'entity_id': 'light.lounge_floor_lamp', 'transition': 1.0}
2023-07-26 08:48:04.616 WARNING (MainThread) [aiohomekit.controller.coap.pdu] Transaction 0 failed with error 6 (Invalid request
2023-07-26 08:48:52.219 ERROR (MainThread) [homeassistant] Error doing job: Task exception was never retrieved
Traceback (most recent call last):
  File "/config/custom_components/adaptive_lighting/switch.py", line 1114, in _async_update_at_interval_action
    await self._update_attrs_and_maybe_adapt_lights(
  File "/config/custom_components/adaptive_lighting/switch.py", line 1399, in _update_attrs_and_maybe_adapt_lights
    await self._adapt_light(light, transition, context=context)
  File "/config/custom_components/adaptive_lighting/switch.py", line 1225, in _adapt_light
    data = await self.prepare_adaptation_data(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/adaptive_lighting/switch.py", line 1192, in prepare_adaptation_data
    return prepare_adaptation_data(
           ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/adaptive_lighting/adaptation_utils.py", line 200, in prepare_adaptation_data
    lighting_type = _identify_lighting_type(service_data)
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/adaptive_lighting/adaptation_utils.py", line 165, in _identify_lighting_type
    raise NoColorOrBrightnessInServiceDataError(msg)
custom_components.adaptive_lighting.adaptation_utils.NoColorOrBrightnessInServiceDataError: Invalid service_data, no brightness or color attributes found: service_data={'entity_id': 'light.office_light_1', 'transition': 45.0}

Your Adaptive Lighting configuration:

Sorry I dont know how to export the config

(If using Zigbee2MQTT), provide your configuration files (remove all personal information before posting):

devices.yaml
groups.yaml
configuration.yaml ⚠; Warning REMOVE ALL of the PERSONAL INFORMATION BELOW before posting ⚠;

mqtt: server:
mqtt: user:
mqtt: password:
advanced: pan_id:
advanced: network_key:
anything in log_syslog if you use this

Brand and model number of problematic light(s)

Describe the bug and how to reproduce it:

Enable Adaptive Lighting, issue happens, disable lights work as expected

Steps to reproduce the behavior:

It only seems to happen for some hue lights which is strange (note all of my hue light bulbs are just the white/warm white kind), I have not worked out why this is. My hue light strips and nanoleaf light strips are fine.

Hi @Greminn, thanks a lot for reporting!
It would be really valuable to have the debugging logs because from just that error message alone I cannot figure out what happened.
Check https://github.com/basnijholt/adaptive-lighting#sos-troubleshooting

I am relatively sure that #662 fixes this issue, I released v1.17.2.
Let me know if this works.

I am relatively sure that #662 fixes this issue, I released v1.17.2.
Let me know if this works.

Works ✅ thank you


[Feature Request] Add a Bloom Filter to the Move standard library

DISCLAIMER: This issue is NOT funded by cUSD, It is funded by 0L GAS, the native token for the 0L Network. The 0L GAS token is currently not liquid -- and may never be -- although, it is possible that it will at some point become available via a DEX through community development initiatives.
ABOUT 0L: 0L is a new Layer 1 blockchain protocol. 0L is open, permissionless, and community governed. Inspired by Satoshi, and informed by experience, 0L combines state-of-the-art blockchain technology with truly decentralized governance. The technology stack is built on Rust and employs the Move smart contracting language. The protocol includes an innovative Sybil protection mechanism (Delay Towers). There is no foundation, no corporate backers, no venture capital firms. This is a community-driven project with a meaningful commitment to social impact and democratic decision-making. It is based upon the Diem/Move ecosystem. More information regarding economic incentives and roadmap can be found at the (0L Website)[https://0l.network/] and (0L Discord)[https://discord.gg/fb8UEBS6]
🚀 Feature Request
Porting this Bloom Filter example over to the Move standard library(0x01)
Are you willing to open a pull request? (See CONTRIBUTING)
Additional context
Solidity example

@imerkle I know you had completed this work. Would you like it to be added to the repo and receive your bounty or should I close this?