Add support for using webgl in a worker via offscreen canvas

Description

tensorflow/tfjs#102
Offscreen Canvas is currently only shipping in Chrome so this could break for users who try to use WebGL backend in a worker in unsupported browsers.
The same issue applies to tests hence the support check in the test
Add feature to check if in worker
Add types for offscreen canvas
Add test for canvas when running in worker

For repository owners only:
Please remember to apply all applicable tags to your pull request.
Tags: FEATURE, BREAKING, BUG, PERF, DEV, DOC, SECURITY
For more info see: https://github.com/tensorflow/tfjs/blob/master/DEVELOPMENT.md

This change is

I'm trying to port the mnist-core example to run in a worker, the plumbing between the worker is the tricky bit, but the main functionality seems to work fine
Can't confirm until it completely works
fingers crossed

I have a few issues that I would like some discussion around

There is a lot of duplication of the IS_WORKER feature check in the previous commit since it is needed for multiple checks that rely on the canvas to figure out which kind of canvas to use. My idea to improve this was to abstract away the creation of canvases, and default to using OffscreenCanvas instead of the full canvas element, falling back to the canvas element on unsupported browsers. Does that seem too future facing for now?
OffscreenCanvas doesn't have TypeScript types since it hasn't shipped in many browsers so this means creating the types for the time being. As a quick fix I have created it such that the type is the same as that of HTMLCanvasElement since the API is the same. Do we continue with that or define a separate type for OffscreenCanvas and extend the class property to return type HTMLCanvasElement | OffscreenCanvas? I think the second one is the better option in the long run but just checking
the NUM_BYTES_BEFORE_PAGING is currently based on a screen size heuristic which isn't available in workers, is there a sensible default for this?

@bkazi Sorry for the long delay in reviewing this, its the kind of change that requires a fair amount of background research for us to consider maintainability over time and we just didn't have the bandwidth recently. I will be taking a closer look at this though. One question I had is whether you have a proof-of-concept application using this functionality. You mentioned the mnist-core example. Is that available on github somewhere?

@tafsiri cheers, it is a fairly large change so any feedback is appreciated
I have a PR for minst-core using web workers at tensorflow/tfjs-examples#129

@bkazi Thanks, so i took a look at this and I wonder if a potentially simpler approach would be to feature test for OffscreenCanvas (rather than being in a webworker) and always use it when available. That way we would not need the IS_WORKER code path.
Something along the lines of
if (ENV.get('IS_BROWSER')) {
  if (window && ('OffscreenCanvas' in window)) {
    // console.log('USING OFFSCREEN CANVAS');
    this.canvas = new OffscreenCanvas(1, 1);
  } else {
    this.canvas = document.createElement('canvas');
  }
}

I tried this and the tests passed, there is another canvas element created that would also need to be replaced by an optional OffScreenCanvas as well.
But I think the advantage of this is that we have fewer code paths and can more easily test this code path without having it execute in an actual web worker in our tests.
There would still remain things to figure out like NUM_BYTES_BEFORE_PAGING, but we can start by setting that to infinity if there is no window object as we develop some helpful heuristics for workers.
How does that sound to you? I'll take a look at your tfjs-example today.

As an addendum to the comment above I also did some perf testing and there seemd to be no perf hit from using OffscreenCanvas compared to regular canvas.

hey sorry it's taken a while, I've been busy. This sounds great! I was leaning towards something like you suggested but avoided it because I wasn't sure if it would cause any regressions.
I'll make the change and see how it goes, and update this PR when I can

@bkazi 	Just thought I'd check in with you on how this is going. This is something we are interested in supporting internally so if you don't have bandwidth for this let us know and we can probably take a pass at it. Thanks!

@dsmilkov Offscreen Canvas + ImageBitmap + Workers = zero copy non-blocking gpu accelerated ML

@tafsiri looking at these edits, they're on a much older release of TensorFlow. On the most recent release of TensorFlow, things have moved around quite a bit, so the edits don't apply 1:1. Additionally, OffscreenCanvas inherits from EventTarget, not HTMLElement, so even though they are similar in respect to canvas calls, they aren't with respect to everything not event listener related. It's probably a better idea to support OffscreenCanvas directly by adding it to the TypeScript definitions and exposing it as a return type.
I'm new to this codebase as of today, so I don't know how much of TensorFlow is actually using canvas elements in place but never returning them. Hopefully, anything TF related is only using it as a proxy for performing ML work on the GPU. If that's the case and it's not returning the canvas element itself as part of the returned results, this ends up being way easier to do.

So, both the Canvas and OffscreenCanvas share EventTarget. If you return OffscreenCanvas as a default, and then anywhere that could or does need to return an actual canvas element, have that convert the OffscreenCanvas to Canvas on the fly, I think that works for everyone. If that's not a supported use case (returning canvas in tf results) then just always consider the canvas OffscreenCanvas when supported and never think of it as a HTMLCanvasElement.

@jeffreytgilbert the types for OffScreenCanvas I included were kinda duck typing because at the time TS didn't have OffScreenCanvas types, I assume because there wasn't much browser support. Maybe TS has added the types now?
As far as I understand tfjs only uses the canvas to access a webgl context to interact with the GPU and the library users don't have direct access to the canvas, and most of the library too interacts with the webgl context not the canvas. So the idea was to default to OffScreenCanvas where supported
I have been neglecting this PR, have a month left until I hand in my dissertation so I'll be glad to pick up the slack on this after that, if someone doesn't beat me to it

You also don't get User Interactive support in OffscreenCanvas. The detection logic around OffscreenCanvas couples the code to the global "window" object which precludes them from running in a Worker thread. One of the main goals of this should be allowing this code to run in a background process so it doesn't block the UI. Any coupling to scope not compatible with a worker environment is suspect.
https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Functions_and_classes_available_to_workers

TS hasn't added the types, but I'm going through and adding them. I'm not starting from scratch, but I'm starting from 1.0.4 trying to get this working for a proof of concept which allows my app to do head coupled perspective tracking similar to what was available in the headtrackr from years ago. TF added a lot of cool bells and whistles, but it's sooo slow it crushes the RAF performance.
My project is on my page called "goto-booth" if you're interested to see what I'm working on. The headtrackr project has a demo here: https://www.auduno.com/headtrackr/examples/targets.html
It works if you catch the first exception in debugger and then run these commands:
video.srcObject = stream; video.play();
What was cool about this project is that it's using a simpler ML engine, but it's already running on web workers and that code was written 9 years ago! Anyway, I'm making comments here as I go through the updates one by one. If I get something working, I'll consider pushing updates back to the project.

@jeffreytgilbert Yep a lot has moved around in the code base recently.
@bkazi is correct, the webgl backend of tfjs uses canvas primarily as a way to get a WebGL context, and it is not directly exposed to end users.
We will probably have more bandwidth to look at this ourselves sometime next month as we look to support more environments where document is not available. But anyone interested can jump in on it before hand (thanks @bkazi for the giving it a start!). Ideally this would be orthogonal (bot helpful for) code for getting tfjs working smoothly in workers.

Keeping this thread going, I don't think this code does what the original author thinks it does. backend_webgl.ts has a dispose method that runs ".remove()" on the canvas, but that method silently does nothing because the element is not attached to the dom/document and the method actually belongs to Element, not Canvas, and is intended to remove an element from its parent (in this case, there is none). This is important to note because OffscreenCanvas of course does not inherit from Element, so it will fail in this case.
I think what should probably happen is there should be a new Canvas created at this point.

There do not appear to be many worrisome references to "document" in TF. The only references I see are related to elements that aren't supported in workers anyway (images, videos, canvas elements). That's likely due to this already being designed to work in Node.js.
I do see references to "window" though. Those would need to get updated to check WorkerGlobalScope as a fallback for cases like in Engine.ts. There are some methods related to files that use window.URL.createObjectURL that wont be compatible with workers. I made the following edit in Engine.ts, and I don't believe there is anything else that should keep this from working within a web worker now.
let GLOBAL: { _tfengine: Engine };
function getGlobalNamespace(): { _tfengine: Engine } {
if (GLOBAL == null) {
// tslint:disable-next-line:no-any
let ns: any; // WindowOrWorkerGlobalScope
if (typeof WorkerGlobalScope !== 'undefined') {
ns = self;
} else if (typeof (window) !== 'undefined') {
ns = window;
} else if (typeof (global) !== 'undefined') {
ns = global;
} else if (typeof (process) !== 'undefined') {
ns = process;
} else {
throw new Error('Could not find a global object');
}
GLOBAL = ns;
}
return GLOBAL;
}
I'm going to try it out tomorrow. My plan is to run TF outside of a web worker, then run it inside a web worker. In both cases, there should be better performance, but I also want it to be off the main thread so even if it's still a bit slow, it doesn't block the RAF. I have to see how the face-api.js interface I'm using wraps, calls, and sends data to TF. I probably have to edit that library too so once TF is in a worker, I can use ImageBitmap to transfer video data over to it.

Latest Typescript looks like it has offscreencanvas definitions. https://github.com/Microsoft/TypeScript/blob/master/src/lib/webworker.generated.d.ts
Lib might need an upgrade. also, the latest version of TF wont build by default because it has TSC errors. This project must have an interesting release process I don't understand.

@jeffreytgilbert Looks like you are making progress! Wrt to typescript versions we pin to the version of ts used internally at Google (currently 3.3.3333). If you have build errors with that versions feel free to file an issue.

Updating to typescript@next and a liberal sprinkling of // @ts-ignore for the unrelated build issues, and I finally got it to compile with typescript. I've opened up a typescript bug ticket for the issues I found around the OffscreenCanvas support. That ticket is here: https://github.com/Microsoft/TypeScript/issues/30998

I was not able to get TF to work as expected due to incompatibilities with the existing code using typescript 3.5.0+. Those issues were insurmountable given the time I have to work on my pet project, but the updates i've posted in this thread should be valuable for anyone working on official support within the project.
I pushed the code changes I made up to a fork, but I abandoned trying to merge those in via a PR when something in VS Code kept autoformatting the whitespace on edited files on save, in spite of having all IDE settings telling it not to. Maybe this is someone else's config or a project config for TensorFlow? Not sure what it was picking up that was making it do that, but it made the edits really noisy and I didn't have time to debug it. If you can find the option on github to "ignore whitespace" on the diffs, checkout the edits here to see my work: https://github.com/jeffreytgilbert/tfjs-core/commits/master
Mainly, the things of note are that anything where I added @ts-ignore to the code, that was something that was broken for the project and/or<EMAIL_ADDRESS>which will have to be fixed. Anything else I edited, I did as a 1-off edit, not a shared utility function. The project is enormous. I wasn't worried too much about the extra if/else logic added. Also, there were a few spots where type hints had to be applied because of a bug in typescript where it would not be able to correctly pick the right function signature and map those to the correct returned data-type, so I had to do that for the library in those cases.
I'm interested in this project, so if someone else starts working on it, please feel free to @ me on here.

@tafsiri
Just a quick update. I was able to fool tensorflow into running within a worker. Canvas works as expected. I did not need to update the library once the worker was updated to appear as though it were a browser. Obviously, video and image support are not available, however Canvas processing works well.
I've only tested this on Chrome. It's possible Firefox doesn't work at all, and no other browsers support OffscreenCanvas at this time.
https://github.com/justadudewhohacks/face-api.js/issues/47

@jeffreytgilbert I've been following this discussion because we've been using a badly outdated hacked-in OffscreenCanvas in tfjs-core for running tfjs-tsne in a Worker. Can confirm that it works in Firefox 44+ with gfx.offscreencanvas.enabled flag set to true via about:config.

@jebeck my case was specific to Chrome (since it was a kiosk) and I did not put any time into validating Firefox works. I did put in a ton of time updating tfjs to natively use OffscreenCanvas, but ultimately that required a full rebuild of multiple components with a version of typescript yet to be released. Because of my limited time, instead I found it easier to polyfill a worker with the values tfjs expected and make sure I wasn't trying to send it unsupported media types, like video elements and image elements, instead passing it only canvas elements, image data, or image bitmaps. Once I had done this, it worked for chrome and was very fast. Software hurdles aside, what ended up being the most problematic was the integrated graphics chip (Intel Iris Pro Graphics 5200) on the old macbook pro i was using. It did not have enough power or shaders to be able to split up the load efficiently, and it ended up blocking the ui thread with unyielding calls to the limited GPU. Turns out GPU lock is just as real a concern as UI main thread event loop lock for CPUs.
The project was here if you want to take a look at the worker patches. You shouldn't need anything more complicated to get something working with background threads than simply mocking out the environmental requirements. https://github.com/jeffreytgilbert/goto-booth/

Closing this issue since support for Web Workers was already added. Thanks for the contribution though!


chore(main): release 0.5.0

:robot: I have created a release beep boop
0.5.0 (2024-01-03)
Features

improved statistics (afe3a1e)

Bug Fixes

deps: pin dependencies (a55bf5c)
deps: update rust crate cached to v0.47.0 (4c53b8f)
improve help text, add some cmd aliases (b0bdc2b)
re-enable markdown for help command (fd04e87)

This PR was generated with Release Please. See documentation.

:robot: Release is at https://github.com/FruitieX/add-bot-rs/releases/tag/v0.5.0 :sunflower:


D3D11 Applications wont's Launch via RenderDoc

Description of Bug
HI,
I am working on a DirextX11 renderer with SharpDX, the SwapChain is hosted in a WPF HwndHost,
Whenever i launch the exe from RenderDoc it wont open
I simply locate the exe and click launch.
So I tried to use some games i have, mainly Dark Souls 3 that uses DirectX 11 API and Elden Ring that uses DirectX 12 API
DS3 would open and immediately close while ER works fine and i can capture as intended .
I have tried some other D3D11 games as well as the SharpDX DirectX11 Tutorials
but i would experience the same behavior as DS3
I also tried a D3D12 SharpDX sample and it worked without a problem .
Steps to reproduce
Opening any DX11 application will cause the issue for me
like here

the game opens , stays white for a few seconds then closes .
Environment
RenderDoc version: 1.35
Operating System: Win11 ,Dell Laptop with intel 620 UHD and RTX3050
Graphics API: DirextX11

RenderDoc is only intended for capturing your own programs. Capturing programs that are not your own is not endorsed or allowed for any reason, and I will provide absolutely no support for it.


investigate spectrum

We're moving a lot of data to Spectrum soon. Definitely excited to follow any progress here 👍


WikipediaReader may be broken

This code:
from gpt_index.readers import WikipediaReader
WikipediaReader().load_data(["cats"])

returns the following exception:

ConnectionError: HTTPConnectionPool(host='en.wikipedia.org', port=80): Max retries exceeded with url: /w/api.php?list=search&srprop=&srlimit=1&limit=1&srsearch=cats&srinfo=suggestion&format=json&action=query (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0xffff471bf1f0>: Failed to establish a new connection: [Errno 111] Connection refused'))

This code also returns the same error:
import wikipedia
wikipedia.summary("Wikipedia")

@hsm207 seems like a spurious + rate-limit issue. i tried your code and it's working for me


New version: RestrictedBoltzmannMachines v0.4.5

Registering package: RestrictedBoltzmannMachines
Repository: https://github.com/RBMpro/RestrictedBoltzmannMachines.jl
Created by: @cossio
Version: v0.4.5
Commit: afe189872da2360565af0e80aa3f9a5704880e63
Reviewed by: @cossio
Reference: https://github.com/RBMpro/RestrictedBoltzmannMachines.jl/commit/afe189872da2360565af0e80aa3f9a5704880e63#commitcomment-42961780

Please CLOSE this


Align pre-footer with Proper Spacing

Fixes #9719
Add proper spacing from left and bottom for pre-footer.
Signed-off-by: Akshay Gaikwad<EMAIL_ADDRESS>

In your preview, I don't see what visually changed: https://deploy-preview-9766--kubernetes-io-master-staging.netlify.com/docs/test/

I can see the change on my local server. I am running hugo version 0.46. I see that there are auto generated changes in following files when I start hugo server:
resources/_gen/assets/sass/sass/styles.sass_cb957da2191fde4902dd41b139c8069d.content
resources/_gen/assets/sass/sass/styles.sass_cb957da2191fde4902dd41b139c8069d.json

Do I need to push these files as well?

@akshay196 I don't think you'd need to push those files, since browsers don't use them to render CSS (unless something I don't know about has changed.) @mistyhacks mayhaps you have a browser cache to invalidate? I know that gets me like all the time on frontend dev.

/reopen

@mistyhacks @zacharysarah We can now see changes in the preview. :smiley:

Thanks so much for following up, @akshay196; the new padding looks great!
It's a super nit, but could you possibly align the pre-footer with the main body content or the left edge of the Twitter icon? Right now, it's just floating between the left nav and main content area.

@cody-clark Thanks for suggestion. PR is now update to align pre-footer with the content of doc.

Sorry for the merry-go-round, but please rebase to fix the conflict. 👼


dependecies: update several deps

What type of PR is this?
/kind cleanup
Any specific area of the project related to this PR?

Uncomment one (or more) /area <> lines:

/area build

/area config

/area outputs

/area tests

/area helm

What this PR does / why we need it:
Update dependencies

Update cloud.google.com/go/pubsub dependency to v1.8.3 which is the latest available and has the following changes
Update github.com/Azure/azure-event-hubs-go/v3 dependency to v3.3.3 which is the latest available and has the following changes
Update github.com/DataDog/datadog-go dependency to v4.2.0 which is the latest available and has the following changes
Update github.com/aws/aws-sdk-go dependency to v1.35.30 which is the latest available and has the following changes
Update github.com/Azure/azure-sdk-for-go dependency to v48.2.0 which is the latest available and has the following changes
Update github.com/emersion/go-smtp dependency to v0.14.0 which is the latest available and has the following changes
Update github.com/nats-io/nats.go dependency to v1.10.0 which is the latest available and has the following changes
Update github.com/prometheus/client_golang dependency to v1.8.0 which is the latest available and has the following changes
Update github.com/spf13/viper dependency to v1.7.1 which is the latest available and has the following changes
Update google.golang.org/api dependency to [v0.35.0]https://github.com/googleapis/google-api-go-client/tree/v0.35.0) which is the latest available and has the following changes
Update github.com/emersion/go-sasl dependency to v0.0.0-20200509203442-7bfe0ed36a21
Update golang.org/x/oauth2 dependency to v0.0.0-20201109201403-9fd604954f58

Which issue(s) this PR fixes:

Fixes #
Special notes for your reviewer:

Thanks for your pull request. Before we can look at it, you'll need to add a 'DCO signoff' to your commits.
:memo: Please follow instructions in the contributing guide to update your commits with the DCO
Full details of the Developer Certificate of Origin can be found at developercertificate.org.
The list of commits missing DCO signoff:

bd7909e dependecies: update several deps

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

[APPROVALNOTIFIER] This PR is NOT APPROVED
This pull-request has been approved by:
To complete the pull request process, please assign nibalizer after the PR has been reviewed.
You can assign the PR to them by writing /assign @nibalizer in a comment when ready.
The full list of commands accepted by this bot can be found here.

Needs approval from an approver in each of these files:

OWNERS

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

[APPROVALNOTIFIER] This PR is APPROVED
This pull-request has been approved by: Issif
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

OWNERS [Issif]

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

LGTM label has been added.  Git tree hash: 32a8eb764d97aa2b4a913ed5a4efdb669ad7df8a

Thanks, that's a good point. 👍


bpf/skb: Fix netcap load fail in some kernel verison

Error log:
R2 unbounded memory access, use 'var &= const' or 'if (var < const)'.
The reason is that some variable types are inconsistent, and the min and max attribute is lost after type conversion, resulting bpf load failed.

Thank you so much！

thanks,
I've clone the latest source code,and then compiled and tested on centos 8(4.18.0-383.el8.x86_64 #1 SMP Wed Apr 20 15:38:08 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux),it's working,very good.


🌐 Add Portuguese translation for docs/pt/docs/how-to/separate-openapi-schemas.md

I tried making another pull request from my fork branch, but i accidentally commited it in this same pull request. Is there a way to separate the commits into the two pull requests?

I tried making another pull request from my fork branch, but i accidentally commited it in this same pull request. Is there a way to separate the commits into the two pull requests?

@ilacftemp, pull requests are made by using branches, so if you want to separate two commits into two pull requests you must put each one commits into a branch then to do the pull request using each branch separately.
I hope have to be clear or understandable. 😊

Thanks @nazarepiedady !! That helped me correct this and change that other commit to a pull request :)

Thanks for your contribution! @ilacftemp :nerd_face:
And thanks for the help @nazarepiedady @cassiobotaro :v:


Set initiative of NPC to same as PC

Hello! I am loving this FG extension! It makes it a MUCH better experience for PCs to control things like familiars, pets, etc. I'm even using it for spells that have tokens that PCs can move around, such as dancing lights or spiritual weapon. Dancing lights is really neat because I can put lighting effects on the token.
One thing that's a bit annoying though: can you have the NPC's initiative set to the same as the PCs? That way they show up next to each other in the combat tracker. I end up doing this manually at the start of every combat, which can get annoying if there's quite a few cohort NPCs

I'll go one further and suggest the possibility of adding a "Spell Effects" category to go along with "Vehicles" as interesting implementations of this idea.  Using this extension for Dancing Lights is inspired.

Sorry for the radio silence on this! It appears to have slipped past my radar with how busy I've been as of late.
For the main request, check out my Temporal Fixation extension, which satisfies that use case and a handful more beside.
Did the spell effect category request, whole I agree that is an extremely clever way to use Friend Zone, from a development perspective it is a feature that I would rather give full consideration as it's own extension.

Did the spell effect category request

In the interest of clarification, does that mean we can see this implemented as a stopgap in an upcoming release of Friend Zone while we await what for lack of another name I shall call Spelling Be's release?

I would consider the current capabilities of Friend Zone to qualify as a stop gap, so I don't plan on doing anything more direct with spell effect tokens here.

re: Temporal Fixation, I'll check that out
re: spell tokens, I've done something very similar, making a token that can move around the map and have lights attached. The problem with putting that into Cohorts, is that it gives the player vision from that token, which shouldn't be true for spell tokens. I agree that a separate section for that would be worthwhile, and everything in that section is controllable by the player, but they don't get vision from them. No idea how hard that would be to implement though 😅


Change format of copied captions

When copying author, would like to change format of the following things to:
-Sri Guru Granth Sahib Ji to 'SGGS Ji'
-For dasam bani, Remove panna from Sri Dasam Granth as it's not accurate as far as i'm aware, so just Guru Gobind Singh Ji - Sri Dasam Granth
-same with Bhai Gurdas Ji, change to 'Bhai Gurdas Ji - Vaaran'
-Guru Amardas Ji to Guru Amar Das Ji
-Guru Raamdas Ji to Guru Raam Das Ji

@bhajneet not sure how to approach this - we use the default source names and author names as defined by the database. Is there an extensible solution to this? Or should we look at developing a plugin/side-app to support BoS?

I think a plugin/side-app must be used for this level of customization. I can't imagine this level of specificity being used by 80% of our users.
Could have something that "queries the API" when running Shabad OS and converts them to whatever BoS needs.
This way we can also have proper MLA/APA citations for reference/scholarly work and a separate citation method for BoS. Related to #429. Our sources are supposed to be based on "publications" so we'd change it to something like
Bhai Nand Lal Granthavali. Edited by Ganda Singh, 4th ed., Punjabi University, Patiala, 2009, p. 143, www.sikhbookclub.com/Book/Bhai-Nand-Lal-Granthavali. Accessed 22 Jan 2019.
As we proof, the better the citations will become.

It would make more sense if BoS or Preetcharan opened up a repo for this than for us to host such a specific app. Can maybe work on licenses to make it so that if we want to make it more useful to other orgs we can pull it back into this org with a repo honoring the original's license. What do you think @Harjot1Singh ?

I think this has been resolved with short names being added to db
Even if not, we can hard code requirements for BoS in Shabad OS desktop even if it differs to Shabad OS database as a much easier solution than writing an API and interface


Clock control settings for MCUX Audio Clock are Incorrect

Describe the bug
The Audio PLL Clock Rate calculation for the I2S Clock is incorrect, resulting in incorrect downstream clocks (for example I2S MCLK). Additionally, the PLL configuration for NXP RT parts configures the PLL settings outside of their allowable ranges according to the datasheet.
This affects:

MCUX Clock Control Driver when using the Audio PLL
IMX RT Parts configuring the SAI module in DTS

To Reproduce
Steps to reproduce the behavior:
Run the sample I2S test code on a compatible NXP RT part:
https://github.com/zephyrproject-rtos/zephyr/tree/main/tests/drivers/i2s/i2s_api

west build -p auto -b mimxrt1060_evk tests/drivers/i2s/i2s_api
Probe the MCLK output line with a scope or logic analyzer and measure the MClk frequency
Compare it to the calculated MCLK rate (from the driver: here)
Notice the measured value and the calculated value do not agree.

Expected behavior
The calculated mclk rate should match the actual produced rate and the driver should set up the PLL according to datasheet specifications.
Impact
I2S cannot be correctly configured on RT parts.

Fixed by: https://github.com/zephyrproject-rtos/zephyr/pull/44935/


add unary plus

#144

Codecov Report

Merging #157 (2932af9) into main (3f3c314) will increase coverage by 0.00%.
The diff coverage is 100.00%.

@@           Coverage Diff           @@
##             main     #157   +/-   ##
=======================================
  Coverage   93.99%   93.99%
=======================================
  Files          18       18
  Lines        5360     5361    +1
=======================================
+ Hits         5038     5039    +1
  Misses        272      272
  Partials       50       50

Impacted Files
Coverage Δ

engine/builtin.go
91.39% <100.00%> (+<0.01%)
:arrow_up:

interpreter.go
92.61% <100.00%> (ø)

Continue to review full report at Codecov.

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


Fix Brightness::DIMMEST, allow custom Brightness control

@kalkyl

DIMMEST was effectively off because the contrast was zero
made Brightness::custom public so that a user can have full control
added Brightness to one example

oh, and changed to probe-rs for the examples

Great! Thanks!


Product -> Supports is incorrect

Should be:
  supportsProducts {
    supports {
      name
    }
  }

fixed by https://github.com/The-Grid-Data/Explorer/commit/ff24e0c6bed1a0fd187c48faa43e07bea38c988b


Add IncludeXmlCommentsForAssembly convience overload

Pull Request
The issue or feature being addressed
Fixed #2750
Details on the issue fix or feature implementation

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 89.90%. Comparing base (432c417) to head (5ea3d5e).

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@            Coverage Diff             @@
##           master    #2909      +/-   ##
==========================================
+ Coverage   89.89%   89.90%   +0.01%
==========================================
  Files          72       72
  Lines        2711     2715       +4
  Branches      429      429
==========================================
+ Hits         2437     2441       +4
  Misses        274      274

Flag
Coverage Δ

Linux
89.90% <100.00%> (+0.01%)
:arrow_up:

Windows
?

macOS
89.90% <100.00%> (+0.01%)
:arrow_up:

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

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

What about updating some of the tests and the README to use this? code search

What about updating some of the tests and the README to use this? code search

Updated tests and README

I don't understand why windows build is failing. Could we restart this to understand if this is some kind of instability?

#2893


接入flutter_tencentad: ^1.0.0 iOS编译报错

因为我不太懂iOS望帮忙解答一下谢谢
Xcode's output:
↳
/Users/love/work/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/flutter_tencentad-1.0.0/ios/Classes/interstitialad/InterstitialAd.swift:18:34: error: cannot find type 'GDTUnifiedInterstitialAd' in scope
private var interstitialAd : GDTUnifiedInterstitialAd?
^~~~~~~~~~~~~~~~~~~~~~~~
/Users/love/work/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/flutter_tencentad-1.0.0/ios/Classes/interstitialad/InterstitialAd.swift:50:67: error: cannot find type 'GDTUnifiedInterstitialAd' in scope
public func unifiedInterstitialClicked(_ unifiedInterstitial: GDTUnifiedInterstitialAd) {
^~~~~~~~~~~~~~~~~~~~~~~~
/Users/love/work/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/flutter_tencentad-1.0.0/ios/Classes/interstitialad/InterstitialAd.swift:61:72: error: cannot find type 'GDTUnifiedInterstitialAd' in scope
public func unifiedInterstitialSuccess(toLoad unifiedInterstitial: GDTUnifiedInterstitialAd) {
^~~~~~~~~~~~~~~~~~~~~~~~
/Users/love/work/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/flutter_tencentad-1.0.0/ios/Classes/interstitialad/InterstitialAd.swift:69:72: error: cannot find type 'GDTUnifiedInterstitialAd' in scope
public func unifiedInterstitialWillExposure(_ unifiedInterstitial: GDTUnifiedInterstitialAd) {
^~~~~~~~~~~~~~~~~~~~~~~~
/Users/love/work/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/flutter_tencentad-1.0.0/ios/Classes/interstitialad/InterstitialAd.swift:80:73: error: cannot find type 'GDTUnifiedInterstitialAd' in scope
public func unifiedInterstitialRenderSuccess(_ unifiedInterstitial: GDTUnifiedInterstitialAd) {
^~~~~~~~~~~~~~~~~~~~~~~~
/Users/love/work/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/flutter_tencentad-1.0.0/ios/Classes/interstitialad/InterstitialAd.swift:92:69: error: cannot find type 'GDTUnifiedInterstitialAd' in scope
public func unifiedInterstitialFail(toLoad unifiedInterstitial: GDTUnifiedInterstitialAd, error: Error) {
^~~~~~~~~~~~~~~~~~~~~~~~
/Users/love/work/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/flutter_tencentad-1.0.0/ios/Classes/interstitialad/InterstitialAd.swift:105:76: error: cannot find type 'GDTUnifiedInterstitialAd' in scope
public func unifiedInterstitialDidDownloadVideo(_ unifiedInterstitial: GDTUnifiedInterstitialAd) {
^~~~~~~~~~~~~~~~~~~~~~~~
/Users/love/work/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/flutter_tencentad-1.0.0/ios/Classes/interstitialad/InterstitialAd.swift:113:76: error: cannot find type 'GDTUnifiedInterstitialAd' in scope
public func unifiedInterstitialDidPresentScreen(_ unifiedInterstitial: GDTUnifiedInterstitialAd) {
^~~~~~~~~~~~~~~~~~~~~~~~
/Users/love/work/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/flutter_tencentad-1.0.0/ios/Classes/interstitialad/InterstitialAd.swift:124:76: error: cannot find type 'GDTUnifiedInterstitialAd' in scope
public func unifiedInterstitialDidDismissScreen(_ unifiedInterstitial: GDTUnifiedInterstitialAd) {
^~~~~~~~~~~~~~~~~~~~~~~~
/Users/love/work/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/flutter_tencentad-1.0.0/ios/Classes/interstitialad/InterstitialAd.swift:135:77: error: cannot find type 'GDTUnifiedInterstitialAd' in scope
public func unifiedInterstitialWillPresentScreen(_ unifiedInterstitial: GDTUnifiedInterstitialAd) {
^~~~~~~~~~~~~~~~~~~~~~~~
/Users/love/work/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/flutter_tencentad-1.0.0/ios/Classes/interstitialad/InterstitialAd.swift:142:80: error: cannot find type 'GDTUnifiedInterstitialAd' in scope
public func unifiedInterstitialWillLeaveApplication(_ unifiedInterstitial: GDTUnifiedInterstitialAd) {
^~~~~~~~~~~~~~~~~~~~~~~~
/Users/love/work/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/flutter_tencentad-1.0.0/ios/Classes/interstitialad/InterstitialAd.swift:150:72: error: cannot find type 'GDTUnifiedInterstitialAd' in scope
public func unifiedInterstitialFail(toPresent unifiedInterstitial: GDTUnifiedInterstitialAd, error: Error) {
^~~~~~~~~~~~~~~~~~~~~~~~
/Users/love/work/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/flutter_tencentad-1.0.0/ios/Classes/interstitialad/InterstitialAd.swift:163:70: error: cannot find type 'GDTUnifiedInterstitialAd' in scope
public func unifiedInterstitialRenderFail(_ unifiedInterstitial: GDTUnifiedInterstitialAd, error: Error) {
^~~~~~~~~~~~~~~~~~~~~~~~
/Users/love/work/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/flutter_tencentad-1.0.0/ios/Classes/interstitialad/InterstitialAd.swift:176:87: error: cannot find type 'GDTUnifiedInterstitialAd' in scope
public func unifiedInterstitialAdDidPresentFullScreenModal(_ unifiedInterstitial: GDTUnifiedInterstitialAd) {
^~~~~~~~~~~~~~~~~~~~~~~~
/Users/love/work/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/flutter_tencentad-1.0.0/ios/Classes/interstitialad/InterstitialAd.swift:183:87: error: cannot find type 'GDTUnifiedInterstitialAd' in scope
public func unifiedInterstitialAdDidDismissFullScreenModal(_ unifiedInterstitial: GDTUnifiedInterstitialAd) {
^~~~~~~~~~~~~~~~~~~~~~~~
/Users/love/work/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/flutter_tencentad-1.0.0/ios/Classes/interstitialad/InterstitialAd.swift:190:88: error: cannot find type 'GDTUnifiedInterstitialAd' in scope
public func unifiedInterstitialAdWillPresentFullScreenModal(_ unifiedInterstitial: GDTUnifiedInterstitialAd) {
^~~~~~~~~~~~~~~~~~~~~~~~
/Users/love/work/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/flutter_tencentad-1.0.0/ios/Classes/interstitialad/InterstitialAd.swift:197:88: error: cannot find type 'GDTUnifiedInterstitialAd' in scope
public func unifiedInterstitialAdWillDismissFullScreenModal(_ unifiedInterstitial: GDTUnifiedInterstitialAd) {
^~~~~~~~~~~~~~~~~~~~~~~~
/Users/love/work/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/flutter_tencentad-1.0.0/ios/Classes/interstitialad/InterstitialAd.swift:204:83: error: cannot find type 'GDTUnifiedInterstitialAd' in scope
public func unifiedInterstitialAdViewDidPresentVideoVC(_ unifiedInterstitial: GDTUnifiedInterstitialAd) {
^~~~~~~~~~~~~~~~~~~~~~~~
/Users/love/work/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/flutter_tencentad-1.0.0/ios/Classes/interstitialad/InterstitialAd.swift:211:83: error: cannot find type 'GDTUnifiedInterstitialAd' in scope
public func unifiedInterstitialAdViewDidDismissVideoVC(_ unifiedInterstitial: GDTUnifiedInterstitialAd) {
^~~~~~~~~~~~~~~~~~~~~~~~
/Users/love/work/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/flutter_tencentad-1.0.0/ios/Classes/interstitialad/InterstitialAd.swift:218:84: error: cannot find type 'GDTUnifiedInterstitialAd' in scope
public func unifiedInterstitialAdViewWillPresentVideoVC(_ unifiedInterstitial: GDTUnifiedInterstitialAd) {
^~~~~~~~~~~~~~~~~~~~~~~~
/Users/love/work/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/flutter_tencentad-1.0.0/ios/Classes/interstitialad/InterstitialAd.swift:225:84: error: cannot find type 'GDTUnifiedInterstitialAd' in scope
public func unifiedInterstitialAdViewWillDismissVideoVC(_ unifiedInterstitial: GDTUnifiedInterstitialAd) {
^~~~~~~~~~~~~~~~~~~~~~~~
/Users/love/work/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/flutter_tencentad-1.0.0/ios/Classes/interstitialad/InterstitialAd.swift:235:80: error: cannot find type 'GDTUnifiedInterstitialAd' in scope
public func unifiedInterstitialAdDidRewardEffective(_ unifiedInterstitial: GDTUnifiedInterstitialAd, info: [AnyHashable : Any]) {
^~~~~~~~~~~~~~~~~~~~~~~~
/Users/love/work/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/flutter_tencentad-1.0.0/ios/Classes/interstitialad/InterstitialAd.swift:242:62: error: cannot find type 'GDTUnifiedInterstitialAd' in scope
public func unifiedInterstitialAd(_ unifiedInterstitial: GDTUnifiedInterstitialAd, playerStatusChanged status: GDTMediaPlayerStatus) {
^~~~~~~~~~~~~~~~~~~~~~~~
/Users/love/work/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/flutter_tencentad-1.0.0/ios/Classes/interstitialad/InterstitialAd.swift:242:116: error: cannot find type 'GDTMediaPlayerStatus' in scope
public func unifiedInterstitialAd(_ unifiedInterstitial: GDTUnifiedInterstitialAd, playerStatusChanged status: GDTMediaPlayerStatus) {
^~~~~~~~~~~~~~~~~~~~
/Users/love/work/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/flutter_tencentad-1.0.0/ios/Classes/interstitialad/InterstitialAd.swift:10:40: error: cannot find type 'GDTUnifiedInterstitialAdDelegate' in scope
public class InterstitialAd : NSObject,GDTUnifiedInterstitialAdDelegate{
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/love/work/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/flutter_tencentad-1.0.0/ios/Classes/interstitialad/InterstitialAd.swift:25:31: error: cannot find 'GDTUnifiedInterstitialAd' in scope
self.interstitialAd = GDTUnifiedInterstitialAd.init(placementId: self.mCodeId!)
^~~~~~~~~~~~~~~~~~~~~~~~
/Users/love/work/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/flutter_tencentad-1.0.0/ios/Classes/rewardedvideoad/RewardedVideoAd.swift:117:53: warning: expression implicitly coerced from 'Any?' to 'Any'
"transId":info["GDT_TRANS_ID"],
^~~~~~~~~~~~~~~~~~~~
/Users/love/work/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/flutter_tencentad-1.0.0/ios/Classes/rewardedvideoad/RewardedVideoAd.swift:117:57: note: provide a default value to avoid this warning
"transId":info["GDT_TRANS_ID"],
^~~~~~~~~~~~
?? <#default value#>
/Users/love/work/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/flutter_tencentad-1.0.0/ios/Classes/rewardedvideoad/RewardedVideoAd.swift:117:57: note: force-unwrap the value to avoid this warning
"transId":info["GDT_TRANS_ID"],
^~~~~~~~~~~~
!
/Users/love/work/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/flutter_tencentad-1.0.0/ios/Classes/rewardedvideoad/RewardedVideoAd.swift:117:57: note: explicitly cast to 'Any' with 'as Any' to silence this warning
"transId":info["GDT_TRANS_ID"],
^~~~~~~~~~~~
as Any
/Users/love/work/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/flutter_tencentad-1.0.0/ios/Classes/splashad/SplashAdView.swift:15:27: error: cannot find type 'GDTSplashAd' in scope
private var splashAd: GDTSplashAd!
^~~~~~~~~~~
/Users/love/work/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/flutter_tencentad-1.0.0/ios/Classes/splashad/SplashAdView.swift:45:44: error: cannot find type 'GDTSplashAd' in scope
public func splashAdClosed(_ splashAd: GDTSplashAd!) {
^~~~~~~~~~~
/Users/love/work/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/flutter_tencentad-1.0.0/ios/Classes/splashad/SplashAdView.swift:53:45: error: cannot find type 'GDTSplashAd' in scope
public func splashAdClicked(_ splashAd: GDTSplashAd!) {
^~~~~~~~~~~
/Users/love/work/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/flutter_tencentad-1.0.0/ios/Classes/splashad/SplashAdView.swift:61:47: error: cannot find type 'GDTSplashAd' in scope
public func splashAdExposured(_ splashAd: GDTSplashAd!) {
^~~~~~~~~~~
/Users/love/work/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/flutter_tencentad-1.0.0/ios/Classes/splashad/SplashAdView.swift:70:45: error: cannot find type 'GDTSplashAd' in scope
public func splashAdDidLoad(_ splashAd: GDTSplashAd!) {
^~~~~~~~~~~
/Users/love/work/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/flutter_tencentad-1.0.0/ios/Classes/splashad/SplashAdView.swift:83:50: error: cannot find type 'GDTSplashAd' in scope
public func splashAdFail(toPresent splashAd: GDTSplashAd!, withError error: Error!) {
^~~~~~~~~~~
/Users/love/work/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/flutter_tencentad-1.0.0/ios/Classes/splashad/SplashAdView.swift:94:48: error: cannot find type 'GDTSplashAd' in scope
public func splashAdWillClosed(_ splashAd: GDTSplashAd!) {
^~~~~~~~~~~
/Users/love/work/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/flutter_tencentad-1.0.0/ios/Classes/splashad/SplashAdView.swift:103:58: error: cannot find type 'GDTSplashAd' in scope
public func splashAdSuccessPresentScreen(_ splashAd: GDTSplashAd!) {
^~~~~~~~~~~
/Users/love/work/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/flutter_tencentad-1.0.0/ios/Classes/splashad/SplashAdView.swift:112:68: error: cannot find type 'GDTSplashAd' in scope
public func splashAdApplicationWillEnterBackground(_ splashAd: GDTSplashAd!) {
^~~~~~~~~~~
/Users/love/work/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/flutter_tencentad-1.0.0/ios/Classes/splashad/SplashAdView.swift:119:63: error: cannot find type 'GDTSplashAd' in scope
public func splashAdDidPresentFullScreenModal(_ splashAd: GDTSplashAd!) {
^~~~~~~~~~~
/Users/love/work/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/flutter_tencentad-1.0.0/ios/Classes/splashad/SplashAdView.swift:126:63: error: cannot find type 'GDTSplashAd' in scope
public func splashAdDidDismissFullScreenModal(_ splashAd: GDTSplashAd!) {
^~~~~~~~~~~
/Users/love/work/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/flutter_tencentad-1.0.0/ios/Classes/splashad/SplashAdView.swift:133:64: error: cannot find type 'GDTSplashAd' in scope
public func splashAdWillPresentFullScreenModal(_ splashAd: GDTSplashAd!) {
^~~~~~~~~~~
/Users/love/work/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/flutter_tencentad-1.0.0/ios/Classes/splashad/SplashAdView.swift:141:64: error: cannot find type 'GDTSplashAd' in scope
public func splashAdWillDismissFullScreenModal(_ splashAd: GDTSplashAd!) {
^~~~~~~~~~~
/Users/love/work/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/flutter_tencentad-1.0.0/ios/Classes/splashad/SplashAdView.swift:10:58: error: cannot find type 'GDTSplashAdDelegate' in scope
public class SplashAdView : NSObject,FlutterPlatformView,GDTSplashAdDelegate{
^~~~~~~~~~~~~~~~~~~
/Users/love/work/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/flutter_tencentad-1.0.0/ios/Classes/splashad/SplashAdView.swift:36:20: error: cannot find 'GDTSplashAd' in scope
splashAd = GDTSplashAd.init(placementId: self.codeId)
^~~~~~~~~~~
/Users/love/work/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/flutter_tencentad-1.0.0/ios/Classes/splashad/SplashAdView.swift:15:27: error: cannot find type 'GDTSplashAd' in scope
private var splashAd: GDTSplashAd!
^~~~~~~~~~~
Command CompileSwift failed with a nonzero exit code
Command CompileSwift failed with a nonzero exit code
Command CompileSwift failed with a nonzero exit code
Command CompileSwift failed with a nonzero exit code
/Users/love/work/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/agora_rtc_engine-4.0.6/ios/Classes/Base/Extensions.swift:121:22: warning: 'delay' is deprecated
"delay": delay,
^
Command CompileSwift failed with a nonzero exit code
Command CompileSwift failed with a nonzero exit code
Command CompileSwift failed with a nonzero exit code
Command CompileSwift failed with a nonzero exit code
Command CompileSwift failed with a nonzero exit code
Command CompileSwift failed with a nonzero exit code
note: Using new build system
note: Building targets in parallel
note: Planning build
note: Constructing build description
Could not build the precompiled application for the device.

编译缓存问题已解决 flutter clean就好了


Samples: Bluetooth: Minor changes to improve the user experience

This PR contains some minor changes which make it easier to get started with some of the Bluetooth samples.

@rugeGerritsen Looks like the RSSI change is failing some of the BSIM tests, as they get -59 and your new cutoff is -50

@rugeGerritsen Looks like the RSSI change is failing some of the BSIM tests, as they get -59 and your new cutoff is -50

Let me know if you know where this comes from. Otherwise I can change the limit to -60 dBm

@rugeGerritsen Looks like the RSSI change is failing some of the BSIM tests, as they get -59 and your new cutoff is -50

Let me know if you know where this comes from. Otherwise I can change the limit to -60 dBm

@aescolar might know

@rugeGerritsen
For the default channel model (NtNcable), its default channel attenuation is 60dB.
So you need to lower it to say 40dB.
So for example for tests/bsim/bluetooth/ll/multiple_id/tests_scripts/multiple.sh
in this line
https://github.com/zephyrproject-rtos/zephyr/blob/main/tests/bsim/bluetooth/ll/multiple_id/tests_scripts/multiple.sh#L21
add -argschannel -at=40
So the line looks like:
-D=2 -sim_length=4500e6 $@ -argschannel -at=40
Meaning, with -argschannel you say that the next parameters are for the channel model,
-at=40 is this channel parameter to adjust the attenuation.

@rugeGerritsen For the default channel model (NtNcable), its default channel attenuation is 60dB. So you need to lower it to say 40dB. So for example for tests/bsim/bluetooth/ll/multiple_id/tests_scripts/multiple.sh in this line https://github.com/zephyrproject-rtos/zephyr/blob/main/tests/bsim/bluetooth/ll/multiple_id/tests_scripts/multiple.sh#L21 add -argschannel -at=40 So the line looks like: -D=2 -sim_length=4500e6 $@ -argschannel -at=40
Meaning, with -argschannel you say that the next parameters are for the channel model, -at=40 is this channel parameter to adjust the attenuation.

Thanks for the answer. I assumed it was something along those lines. Should I apply this to all bsim tests or would you rather like to keep it as is?

Should I apply this to all bsim tests

I'd do it just to the ones that are affected by this PR samples changes.
(Other tests may have their own requirements for the RSSI levels)

@jhedberg should these go for 3.6? Samples are kindof documentation imo
@henrikbrixandersen @MaureenHelm

@jhedberg should these go for 3.6? Samples are kindof documentation imo
@henrikbrixandersen @MaureenHelm

I think it's a little late in the release cycle for non-critical changes like this. I'd suggest aiming for v3.7.0.

@jhedberg should these go for 3.6? Samples are kindof documentation imo

I'm fine waiting until 3.7.


python312Packages.cyclopts: 3.0.0 -> 3.0.1

Diff: https://github.com/BrianPugh/cyclopts/compare/refs/tags/v3.0.0...v3.0.1
Changelog: https://github.com/BrianPugh/cyclopts/releases/tag/v3.0.1

Things done

Built on platform(s)

[ ] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
25.05 Release Notes (or backporting 24.11 and 25.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[ ] Fits CONTRIBUTING.md.

Add a :+1: reaction to pull requests you find important.

nixpkgs-review result
Generated using nixpkgs-review.
Command: nixpkgs-review pr 357790

x86_64-linux

:white_check_mark: 4 packages built:

python311Packages.cyclopts
python311Packages.cyclopts.dist
python312Packages.cyclopts
python312Packages.cyclopts.dist


Update glob dependency

The newer version of glob supports follow: true (follow symlinked directories when expanding ** patterns).
This is needed for https://github.com/ember-cli/ember-cli/issues/4137.

why does follow: true need to be set by default? Following symlinked directories is not necessary (and IMHO not desirable) for the vast majority of use cases.
It would make more sense to start with a pr that bumps glob, and then create an issue to discuss setting follow: true as a default.

You're right. I don't think follow: true is necessary at this level and it can be passed as an option.

Any news on this?

@cowboy ping

this has been updated as of 0.3.0, this can be closed

whoops, sorry @btecu, I didn't see this PR before I cut the release.


Pyyaml requirements differ on github from package on pypi.org

The latest 1.10.0 version of the civis python package on github lists its pyyaml requirement as "pyyaml>=3.0,<=5.99" (link) but downloading the source of 1.10.0 on pypi.org (link) the requirement is "pyyaml>=3.0,<=3.99"
When using the default source in pip to install this can cause problems, as some other packages require pyyaml > 3.99

Sorry, my bad, the release of 1.10 was back in April -- requirements only updated recently.

Yes, we updated the requirements in https://github.com/civisanalytics/civis-python/pull/293 . It will be included in the next release.


How to add LED ?

I want to add LED on Pi-board to be glow when stream is playing else it will be off

Sorry, i cannot help you here. You have to find this out yourself.


Bottom button on transfer balance, Merchant and status pages are missing padding

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Version Number: 1.4.63-0
Reproducible in staging?: y
Reproducible in production?: n
If this was caught during regression testing, add the test name, ID and link from TestRail: n/a
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Expensify/Expensify Issue URL:
Issue reported by: @shawnborton
Slack conversation: https://expensify.slack.com/archives/C049HHMV9SM/p1713434632519999
Action Performed:

Go to Settings > Wallet > transfer balance
Click Fab + > submit expense > Merchant
Go to profile > status
Observe the buttons at the bottom

Expected Result:
The bottom button should have 20px of padding around it
Actual Result:
The bottom button does not have any padding around it
Workaround:
unknown
Platforms:

Which of our officially supported platforms is this issue occurring on?

[ ] Android: Native
[ ] Android: mWeb Chrome
[ ] iOS: Native
[ ] iOS: mWeb Safari
[x] MacOS: Chrome / Safari
[ ] MacOS: Desktop

Screenshots/Videos
Add any screenshot/video evidence

View all open jobs on GitHub

I think we already found the offending PR and it's being handled: https://github.com/Expensify/App/pull/38039

Cool cool, we can close this then?

I think so?

Cool cool, closing then!


Title: Improving Services section

Is your feature request related to a problem? Please describe.
The styling of the Services section is too simple and can be made more interactive.  I can solve this issue. Please assign it to me under GSSOC'23.
Describe the solution you'd like.
Changes in the design and CSS are to be made.
Describe alternatives you've considered.
The various services can be shown like a gallery of images with proper transitions and adding slider and hover effects where hovering on a particular service will change it from grayscale to colourful.
Add any other context or screenshots about the feature request here.

Sure @Anikinee

Sure @Anikinee

Thank you so much for assigning.


write USAGE for README.md

hey @jstooley I'm curious to know if you are done writing this gem? I'm a student and as part of my project portfolio I have to make some meaningful open source contributions, I'm interested in writing some usage examples for your README.md file. Would it be ok with you if I did that?

Yeah that would be fine.

thanks! I will get started on that


Add logic to export/import all persistent EVM state

Describe your changes and provide context
Add export/import for EVM states. For those that are unlikely to be set manually in genesis file, we made it serialized to simplify importing/exporting.
Testing performed to validate your change
unit test

Codecov Report
Attention: Patch coverage is 62.10526% with 36 lines in your changes are missing coverage. Please review.

Project coverage is 61.44%. Comparing base (b7c1875) to head (05e7fc9).

Additional details and impacted files

@@            Coverage Diff             @@
##             main    #1636      +/-   ##
==========================================
- Coverage   61.48%   61.44%   -0.04%
==========================================
  Files         366      366
  Lines       26418    26512      +94
==========================================
+ Hits        16243    16291      +48
- Misses       9088     9134      +46
  Partials     1087     1087

Files
Coverage Δ

x/evm/genesis.go
90.41% <100.00%> (+37.07%)
:arrow_up:

x/evm/keeper/keeper.go
49.32% <0.00%> (-0.82%)
:arrow_down:

x/evm/keeper/code.go
81.57% <0.00%> (-18.43%)
:arrow_down:

x/evm/keeper/nonce.go
58.82% <0.00%> (-41.18%)
:arrow_down:

x/evm/keeper/address.go
86.20% <0.00%> (-13.80%)
:arrow_down:

x/evm/keeper/state.go
28.00% <0.00%> (-13.18%)
:arrow_down:

... and 1 file with indirect coverage changes


Support semantic release and commitizen

refs: https://github.com/semantic-release/semantic-release

Looks very nice.


update react 16

Changes Unknown when pulling 79b2cb044e6f5d70d5f43f7c5d2601d777788420 on react16 into ** on master**.

Changes Unknown when pulling db825d85b0c72a1caed6b452df24c4b7c6c9ba68 on react16 into ** on master**.

Changes Unknown when pulling 0fb0d58f4a1766c5bbe6304235621c806bc8634b on react16 into ** on master**.


Add TaskManager class and support to repeat failed tests.

TaskManager is responsible for dealing with times, logger and test_results, keeping track of what tasks have been executed and which tasks should be repeated.
The only semantic change should be that now, when we repeat the tasks with the --repeat flag, we wait until we finish executing the test to schedule the next execution. This is because running several instances of a test at the same time might cause problems.

@pbos @kwiberg
Please take a look :)

--repeat needs to support running the same test in parallel, --gtest_filter=OneTest.OneTest -r2000 should run that same test in parallel.

Ok, done.
Retries are done immediately, in the same thread.

Please take a look.


Feat: Implement automated reviewer assignment workflow for Pull Requests

What feature?
This issue addresses the need for a GitHub Actions workflow that automatically assigns reviewers to pull requests upon their opening. Automating the reviewer assignment process will streamline code review processes and ensure timely feedback from team members.
Proposed Feature:
The proposed feature involves the creation of a GitHub Actions workflow that triggers upon the opening of a pull request. This workflow will automatically assign designated reviewers based on predefined list of reviewers in the workflow config.
Expected Behavior:

When a pull request is opened, the workflow should trigger automatically.
Based on defined rules or configurations, reviewers will be assigned to the pull request.
Reviewer assignments should be customizable and adaptable to project-specific requirements.

Benefits:

Streamlines the code review process by automating reviewer assignments.
Ensures timely feedback and reduces bottlenecks in the development workflow.
Improves collaboration and accountability among team members.

Add screenshots
No response
Record

[X] I agree to follow this project's Code of Conduct
[X] I want to work on this issue
[X] I am SWOC'2024 contributor

Hi @harmeetsingh11 this feature is already implemented. When user creates a pull request, contributor will automatically assigned

@Sanchitbajaj02 when someone creates a pull request, a reviewer/reviewrers will be automatically assigned not contributor.

@Sanchitbajaj02 when someone creates a pull request, a reviewer/reviewrers will be automatically assigned not contributor.

But there is only one reviewer for now, how is it giving benefit to the project?


pokeget-rs: init at 1.2.0

Description of changes

https://github.com/talwat/pokeget-rs
Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[x] Tested basic functionality of all binary files (usually in ./result/bin/)
23.11 Release Notes (or backporting 23.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

@ofborg eval

Result of nixpkgs-review pr 248524 run on x86_64-linux 1

1 package built:

pokeget-rs


Reduce repetitive oci format verification logic

Reduce repetitive oci format verification logic
replace strings.HasPrefix(repoURL, "oci://") by registry.IsOCI
Output of helm version:
helm v3.7.1
Output of kubectl version:
None
Cloud Provider/Platform (AKS, GKE, Minikube etc.):
None

souce code file:
helm/pkg/downloader/manager.go

@tamboliasir1 Welcome. Thanks very much.

@tamboliasir1 done


Website doesn't seem to work

I entered my script into the box, and clicked submit but it returned with a blank page: http://<IP_ADDRESS>:8000/action_page.php
Here's the script I entered:
ap = argparse.ArgumentParser()
ap.add_argument("-i", "--image", required=True,
help="path to the input image")
args = vars(ap.parse_args())

It will be updated soon, by this week!
Thank you for publishing issue ^_^

Bug fixed! but I didn't fully automate 'required' and 'action' syntax.

Unfortunately it's still giving me a blank page after clicking submit.

Today 18/Aug, It gives me result-
class args:
  image = ## required : True ##

('required' & 'action' syntaxes are not fully automated.)
I can't figure out the reason of different result for now (maybe cached page not updated?)
I changed input box size today, so would you please check if the modification is applied?
http://<IP_ADDRESS>:8000/arg2cls.html
If the problem persists, please leave a comment here. I'll try another things.

Just tried it again and it returned
class args:

Yesterday there's one log that dosen't have argparse functions. (e.g. add_argument, set_default..)
as this script only handles python argsparse scripts, another usage are not available.
Would you please check your script again?

Dear alay,
Recently many bugs are fixed, including explicit call for python3 in server script.
I'm not sure it would work for you but I hope it would.


Queries on Number of Points Inside a Circle

Enter your question -
You are given an array points where points[i] = [xi, yi] is the coordinates of the ith point on a 2D plane. Multiple points can have the same coordinates.
You are also given an array queries where queries[j] = [xj, yj, rj] describes a circle centered at (xj, yj) with a radius of rj.
For each query queries[j], compute the number of points inside the jth circle. Points on the border of the circle are considered inside.
Return an array answer, where answer[j] is the answer to the jth query.
Enter link to the question(if question belongs to any online platform) -
https://leetcode.com/problems/queries-on-number-of-points-inside-a-circle/
Tags for the question(eg - Array, Basic, Stack, etc.) -
Maths, basic, Array, Geometry

Can I work on this issue for Hactoberfest 2021

@sachin4429,
Kindly add your solution to "leetcode" folder.
Deadline - 03/10/2021


BUG: Exception: The passed model is not callable and cannot be analyzed directly with the given masker! Model: GBTClassificationModel (uid=GBTClassifier_c6502ed2671a) with 100 trees

Issue Description
I`ve loaded a GBTCLassifierModel from hdfs, and I get the folling exception:
---------------------------------------------------------------------------
Exception                                 Traceback (most recent call last)
/workspace/ana_crm_fisicas/exceles/shaply.py in ()
----> 1 explainer=shap.Explainer(model)

/opt/cloudera/parcels/Anaconda3/lib/python3.7/site-packages/shap/explainers/_explainer.py in __init__(self, model, masker, link, algorithm, output_names, feature_names, **kwargs)
    128                 # if we get here then we don't know how to handle what was given to us
    129                 else:
--> 130                     raise Exception("The passed model is not callable and cannot be analyzed directly with the given masker! Model: " + str(model))
    131
    132             # build the right subclass

Exception: The passed model is not callable and cannot be analyzed directly with the given masker! Model: GBTClassificationModel (uid=GBTClassifier_c6502ed2671a) with 100 trees

Minimal Reproducible Example
pipeline=PipelineModel.load(ruta_pipeline_hdfs)
model=pipeline.stages[-1]

explainer=shap.Explainer(model)

Expected Behavior
It should works as I train GBTClassifierModel without saving of loading and it works.
Bug report checklist

[X] I have checked that this issue has not already been reported.
[X] I have confirmed this bug exists on the latest release of shap.
[X] I have confirmed this bug exists on the master branch of shap.
[x] I'd be interested in making a PR to fix this bug

Installed Versions
Latest

I think it comes from the fact of using categorical variables in GBTClassifier. Can anyone give an example of solcing this issue? I heard, df.rdd.toDF() solve the problem, but im not sure. It has to be used after or before indexing categorical variables?

Hi, the example given is not reproducible at the moment. What is ruta_pipeline_hdfs, And how is the model trained? It would be best if the problem can be reproduced using synthetic data such as from np.random.rand().

It is a common GBTClassifier trained with some categorical and numemric variables, so the problem comes from the categorical ones. It is said that SHAP doesnt work with pyspark models trained with string indexers.
As soon as i come back from holidays i will let you an example that is reproducible.

@thatlittleboy here you have an example. Ive just used two columns, and a binary target. Then Ive used a GBTClassifier. Then I try to run SHAP, but the same BUG.
from pyspark.sql import SparkSession
from pyspark.sql.functions import col
import random

# Create Spark Session
spark = SparkSession.builder.appName("Shap").getOrCreate()

def categoria_aleatoria():
    categorias = ["A","B","C"]
    return random.choice(categorias)

# Create DataFrame
data = [(random.randint(1, 100), categoria_aleatoria(), random.randint(0, 1)) for _ in range(10)]

# Create Spark DataFrame
df = spark.createDataFrame(data, ["numeric", "categoric", "label"])

from pyspark.ml.classification import GBTClassifier
from pyspark.ml.feature import StringIndexer, VectorAssembler
from pyspark.ml import Pipeline

# Indexing categoric column
indexer = StringIndexer(inputCol='categoric', outputCol='indexed_categoric')

# Assambling columns
assembler = VectorAssembler(inputCols=["numeric","indexed_categoric"], outputCol='features')

# GBTClassifier
gbt_classifier = GBTClassifier(featuresCol="features", labelCol="label")

# Pipeline for each step
pipeline = Pipeline(stages=[indexer, assembler, gbt_classifier])

# Train
pipeline = pipeline.fit(df)

import shap
import numpy as np

explainer=shap.Explainer(pipeline.stages[-1])

However, if I run the same code, building the column cindexed_categoric with CASE in sql, without the indexer, it works.

from pyspark.sql import SparkSession
from pyspark.sql.functions import col
import random

# Create Spark Session
spark = SparkSession.builder.appName("Shap").getOrCreate()

def categoria_aleatoria():
    categorias = ["A","B","C"]
    return random.choice(categorias)

# Create DataFrame
data = [(random.randint(1, 100), categoria_aleatoria(), random.randint(0, 1)) for _ in range(10)]

# Create Spark DataFrame
df = spark.createDataFrame(data, ["numeric", "categoric","label"])\
    .withColumn("indexed_categoric",sf.expr("""CASE WHEN categoric = 'A' THEN 0
                                                    WHEN categoric = 'B' THEN 1
                                                    ELSE 2
                                                    END"""))

from pyspark.ml.classification import GBTClassifier
from pyspark.ml.feature import StringIndexer, VectorAssembler
from pyspark.ml import Pipeline

# Indexing categoric column
indexer = StringIndexer(inputCol='categoric', outputCol='indexed_categoric')

# Assambling columns
assembler = VectorAssembler(inputCols=["numeric","indexed_categoric"], outputCol='features')

# GBTClassifier
gbt_classifier = GBTClassifier(featuresCol="features", labelCol="label")

# Pipeline for each step
pipeline = Pipeline(stages=[assembler, gbt_classifier])

# Train
pipeline = pipeline.fit(df)

import shap
import numpy as np

explainer=shap.Explainer(pipeline.stages[-1])

The code above works. @thatlittleboy, do you know how to make SHAP work with indexer, or can i help in fixing it?
Thanks

@thatlittleboy Still waiting a response, does anyone know how to solve it?

@venser12 Sorry for the delayed reply, I was on a business trip the past 2 weeks. I'll take a look at it this weekend.

@thatlittleboy Could I help you in fixing it?? I am working with PySpark at the moment.

@venser12 Hi sorry again for the late reply. I took a look at the problem described (thanks for the reproducible example, btw! appreciate it)
Unfortunately, this issue is part of a larger problem / gap with the shap library at the moment, which is the inability of the TreeExplainer in handling categorical splits. It's not a pyspark-specific problem. See, e.g. https://github.com/shap/shap/issues/2899 for the same issues in LightGBM models. The error message you encountered is a little cryptic, but the root cause is essentially that. If you used shap.TreeExplainer(...) directly instead of shap.Explainer(...), you should see the error message
NotImplementedError: CategoricalSplit are not yet implemented

The bad news is that the solution for this isn't straightforward, I've not wrapped my head around how to fix this yet. (I welcome others to try though, happy to work it through with you).

@thatlittleboy the more difficult, the more fun.
This is important for SHAP, because it would enable any PySpark ML models (everybody uses categorical features, and even more in tree based models), bringing a lot of new users.
I will fork the repository and see what can we do.

@thatlittleboy, I have seen here #1322 that the BUG can be solve with just modifing your df with df = df.rdd.toDF(). However, It just transforms the categoric columns in numeric columns, when the model is trained. So when the Categorical Splits are meant to be done, the model just do a numeric split instead of categorical Split when you use .rdd.toDF().
As a result, .rdd.toDF() will get worse models metrics, because the model lose chances.

@thatlittleboy I have been looking for methods of getting "categorical thresholds" in PySpark trees but I only found the .toDebugString method. Do you know other ones?

@mriomoreno

I have seen here https://github.com/shap/shap/issues/1322 that the BUG can be solve with just modifing your df with df = df.rdd.toDF().

Yea. That's more a workaround than a solution since it involves retraining your model.

@thatlittleboy I have been looking for methods of getting "categorical thresholds" in PySpark trees but I only found the .toDebugString method. Do you know other ones?

Not of the top of my head, no.
So for the record, since there is interest here, here's what I think would need to be done before this problem can be resolved cleanly. (Shorter solutions might exist, I didn't investigate too deeply into this):

Locate how categorical splits and thresholds are implemented in pyspark ml.
Change SingleTree to be able to handle categorical splits somehow, preferably in a way that can be applied to all the other tree-based boosters/models like LGBM, XGB, Sklearn, etc.
Modify the cext module, most likely. Depending on how step 2 was implemented.

@thatlittleboy Okay, lets see how to solve 1.

@thatlittleboy so I have the first point. We can know which categories go to left and which to right with the following method
left_categories = list(node.split().leftCategories())
right_categories = list(node.split().rightCategories())

where node is org.apache.spark.ml.tree.InternalNode

@thatlittleboy Im modifing 'SingleTree', adding left and right categories. I will open a PR when Im finish.

@thatlittleboy, one question, how can i run the _tree.py file straight?
I have the following error:
---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
Cell In[12], line 11
      8 import scipy.special
      9 from packaging import version
---> 11 from .. import maskers
     12 from .._explanation import Explanation
     13 from ..utils import assert_import, record_import_error, safe_isinstance

ImportError: attempted relative import with no known parent package```

@venser12 Sorry for the late reply, must've missed this.

how can i run the _tree.py file just straight?

I'm not sure that you can, I suggest you create a python file that imports from the _tree.py file (after doing an editable install).
Then you can set breakpoints in that file and run a debugger if you want to run through the file line-by-line.


Remove code smells from app

[ ] Remove any use of Any. This is not a dynamic language project, there is no need to return Any type from anywhere
[ ] Use List instead of ArrayList. NEVER return or accept implementation details/concrete classes, use abstractions
[ ] Remove casts wherever used. There is not a single instance where code written by us will use a cast. As with any use of cast by now in this project, it is just a mistake on the part of developer to first return Any or ArrayList and then cast to appropriate types

Would love to take this issue


Add button to report an issue

Add a new button to the navigation drawer to allow users to quickly report issues to ForkHub.


about performance against 3d-reconstruction on single image

thans for you work.
I wonder the improvement compared with 3d-reconstruction on single image (3DMM-pytorch-fitting) ?
And if there is any material or paper about the effect difference between multiview and single image ?

There's no improvements on single image fitting. It is just fast for multiview or monocular video fitting.

Compared to a single image, multi-view images provide a lot of additional stereo matching information, so in theory the fitting results will be much more accurate.


Deterministic Fee Computation

In transaction construction, both parties must always agree on the fee of a given transaction.
This requires we define a deterministic function computeFee that takes in an transaction and the feerate at time of the DLC offer message, and returns the fee in satoshis.
I have opened this issue to allow there to be a place for the discussion of what this function should look like to happen.
Bitcoin-S currently uses the following static numbers to do CET and closing fee computations
  /** Experimental approx. vbytes for a CET */
  private val approxCETVBytes = 190

  /** Experimental approx. vbytes for a closing tx spending ToLocalOutput */
  private val approxToLocalClosingVBytes = 122

Note that I haven't checked that they are correct in quite a while (and changes have been made) and also we should have different numbers when outputs are removed due to the dust threshold.

we should have different numbers when outputs are removed due to the dust threshold.

Do you mean we might also discard outputs in CETs? I was personally thinking of only discarding change outputs in the fund transaction.
For CET and Closing, I think it makes sense to use constants, as I cannot really think of what could influence their size.
For the fund transaction input size estimation, we use this function: https://github.com/cryptogarageinc/cfd-core/blob/master/src/cfdcore_transaction.cpp#L72
At the moment we assume that all input are just P2WPKH, but if we update the protocol we could easily support P2WSH as well.

I'm quite confused as to why we wouldn't discard, for example, 0-amount outputs on CETs (in the case that one party wins all the funds). They are a pretty big privacy leak if we keep them. And if we are planning to remove them which I think we should this will affect the size of transactions and hence the fees.

Good point, you are right that we should also discard them. Then the question is, do we take into account that there might be only CETs with single output in which case the fee added to the collaterals in the fund transaction will change, or do we always put the same fee regardless and just give the leftover to the winning party? I guess the former is a bit nicer, but also a bit more complex.

During our meeting we decided not to change fees when outputs are removed due to them being dust. This is easier to implement as well as generally being a good idea when we move to multi-output CETs (when we have multi-party DLCs)

Closed by #81


Make rep ping value timeout configurable

We noticed that PCF Dev repeatedly failed to complete the rep ping step within the allotted time. We'd like it to be configurable.
Signed-off-by: Anthony Emengo<EMAIL_ADDRESS>

Thanks, @aemengo! Rather than have this timeout be independently configurable, I think it would make more sense for it to match the value of either the garden healthcheck timeout or the healthcheck period (https://github.com/cloudfoundry/diego-release/blob/6fcb7d519075efa063f35e37a3dd5915c9f0f8a0/jobs/rep/spec#L148-L153). Do you think you could try that, keeping in mind that those values are string representations of Golang durations instead of an integral number of seconds?
Thanks,
Eric

Yes absolutely, it would work perfectly fine for us.

Hi @aemengo,
Any update on this?
Thanks,
Brandon

@bdshroyer Sorry, I resolved this with @ematpl in slack but not here. I had said that PCF Dev bumped the timeout to 600s and things worked for us and he said: "I would rather bump the timeout, than make it configurable, bruh". Presuming that the change has already been made, I think this PR can be closed.

@bdshroyer we haven't gotten around to trying this out yet, sorry. We will prioritize a story to do so.

@bdshroyer @ematpl As I'm understanding, I should update the PR with a bash representation of the golang time.Duration garden values passed in through the spec. This seems rather unwieldy to me. Is there a more straightforward approach that we can think of here? I worry that a lot of context and explanation would be necessary for a change like that.

Hey, @aemengo, I'm saying that I think the value of diego.executor.garden_healthcheck.timeout is the appropriate value to use for this timeout as well. That BOSH property is currently specified in a way that makes sense for the rep to interpret as a Golang time.Duration, but for that to work in the bash pre-start script it likely has to be converted into seconds. I don't think it needs to handle all cases: hours, minutes, and seconds would be appropriate. Alternately, if there's a reasonable way to introduce a property with a numerical value in seconds to be used in both cases and to deprecate the diego.executor.garden_healthcheck.timeout property, that could work.
Thanks,
Eric

@ematpl @bdshroyer We've updated the PR to use make-rep-ping-value-configurable
@mdelillo && @chhhavi

Merged by diego-release/6e98527.


Measurements

include sample referencing by taking the sample name from measurement file
include instrument reference

@ahm531 : I have now used as sample lab_id the same as the sample name, and for the instruments also their names and removed the individual part of the instrument lab_id to automatically link them.


Fix GotoDiff for single line only

result in Git 2.10.0
like:

--- a/hello.txt
+++ b/hello.txt
@@ -1 +1 @@
-hello world!
\ No newline at end of file
+ new line
\ No newline at end of file

--- a/hello.txt
+++ b/hello.txt
@@ -1 +1,2 @@
-hello world!
\ No newline at end of file
+ hello world!
+ new line
\ No newline at end of file

--- a/hello.txt
+++ b/hello.txt
@@ -1,2 +1 @@
- hello world!
  new line
\ No newline at end of file

How's it broken?

This code is failed for above diffs

hunk = re.match(r"^@@ -(\d+),(\d+) +(\d+),(\d+) @@.*", hunk_line)

I have fixed it and will make pull request later.

#494


ENH add Parallelized benchmark

Trying to have parallel benchmark runner.
This is not perfect yet, in particular because the output is unreadable but if allows to run the benchmark faster on large machine.
For the output, not sure what is the best course of action, we can discuss this here.
A few changes/considerations:

The most complicated part was to implement the Benchmark.get_all_runs and to flatten the loop to have an easy to use parallelization,
I also refactor the terminal_output so it is more consistent and we can extend it with a backend for Parallel reporting?
Added the number of workers as -j (as in make). Feel free to tell me if you have a better letter :)
Changed the -p in -o (see #225 )
Automatically cache the loaded datasets in BaseDataset._get_data  (to make the idea from lasso/libsvm consistent for all datasets).
Move cache in Benchmark,
Move _Callback in  a separate file.

I confirm that it works fine on my machine 👍

The change from -p to -o is breaking stuff, let's do it in another PR.

Codecov Report

Merging #265 (f3f5710) into main (7efe794) will increase coverage by 0.72%.
The diff coverage is 79.69%.

@@            Coverage Diff             @@
##             main     #265      +/-   ##
==========================================
+ Coverage   62.96%   63.69%   +0.72%
==========================================
  Files          41       42       +1
  Lines        2087     2162      +75
  Branches      367      385      +18
==========================================
+ Hits         1314     1377      +63
- Misses        677      683       +6
- Partials       96      102       +6

It works great for me on the clusters as well.

I get an error when running it on benchmark_lasso:
(base) ➜  lasso git:(main) ✗ benchopt run . -s cd -d simulated -j 4
Benchopt is running
Simulated[n_features=5000,n_samples=100,rho=0]
|--Lasso Regression[fit_intercept=True,reg=0.5]
|--Lasso Regression[fit_intercept=True,reg=0.1]
|--Lasso Regression[fit_intercept=True,reg=0.05]
|--Lasso Regression[fit_intercept=False,reg=0.5]
|--Lasso Regression[fit_intercept=False,reg=0.1]
|--Lasso Regression[fit_intercept=False,reg=0.05]
Simulated[n_features=5000,n_samples=100,rho=0.6]
|--Lasso Regression[fit_intercept=True,reg=0.5]
|--Lasso Regression[fit_intercept=True,reg=0.1]
|--Lasso Regression[fit_intercept=True,reg=0.05]
|--Lasso Regression[fit_intercept=False,reg=0.5]
|--Lasso Regression[fit_intercept=False,reg=0.1]
|--Lasso Regression[fit_intercept=False,reg=0.05]
Simulated[n_features=10000,n_samples=100,rho=0]
|--Lasso Regression[fit_intercept=True,reg=0.5]
|--Lasso Regression[fit_intercept=True,reg=0.1]
|--Lasso Regression[fit_intercept=True,reg=0.05]
|--Lasso Regression[fit_intercept=False,reg=0.5]
joblib.externals.loky.process_executor._RemoteTraceback:
"""
Traceback (most recent call last):
  File "/home/mathurin/miniconda3/lib/python3.8/site-packages/joblib/externals/loky/process_executor.py", line 404, in _process_worker
    call_item = call_queue.get(block=True, timeout=timeout)
  File "/home/mathurin/miniconda3/lib/python3.8/multiprocessing/queues.py", line 116, in get
    return _ForkingPickler.loads(res)
  File "/home/mathurin/workspace/benchopt/benchopt/base.py", line 253, in _reconstruct
    Dataset = _reconstruct_class(
  File "/home/mathurin/workspace/benchopt/benchopt/utils/dynamic_modules.py", line 104, in _reconstruct_class
    return _load_class_from_module(module_filename, class_name)
TypeError: _load_class_from_module() missing 1 required positional argument: 'benchmark_dir'
"""

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/mathurin/miniconda3/bin/benchopt", line 33, in <module>
    sys.exit(load_entry_point('benchopt', 'console_scripts', 'benchopt')())
  File "/home/mathurin/miniconda3/lib/python3.8/site-packages/click/core.py", line 1128, in __call__
    return self.main(*args, **kwargs)
  File "/home/mathurin/miniconda3/lib/python3.8/site-packages/click/core.py", line 1053, in main
    rv = self.invoke(ctx)
  File "/home/mathurin/miniconda3/lib/python3.8/site-packages/click/core.py", line 1659, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/home/mathurin/miniconda3/lib/python3.8/site-packages/click/core.py", line 1395, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/home/mathurin/miniconda3/lib/python3.8/site-packages/click/core.py", line 754, in invoke
    return __callback(*args, **kwargs)
  File "/home/mathurin/workspace/benchopt/benchopt/cli/main.py", line 127, in run
    run_benchmark(
  File "/home/mathurin/workspace/benchopt/benchopt/runner.py", line 295, in run_benchmark
    results = Parallel(n_jobs=n_workers)(
  File "/home/mathurin/miniconda3/lib/python3.8/site-packages/joblib/parallel.py", line 1054, in __call__
    self.retrieve()
  File "/home/mathurin/miniconda3/lib/python3.8/site-packages/joblib/parallel.py", line 933, in retrieve
    self._output.extend(job.get(timeout=self.timeout))
  File "/home/mathurin/miniconda3/lib/python3.8/site-packages/joblib/_parallel_backends.py", line 542, in wrap_future_result
    return future.result(timeout=timeout)
  File "/home/mathurin/miniconda3/lib/python3.8/concurrent/futures/_base.py", line 444, in result
    return self.__get_result()
  File "/home/mathurin/miniconda3/lib/python3.8/concurrent/futures/_base.py", line 389, in __get_result
    raise self._exception
joblib.externals.loky.process_executor.BrokenProcessPool: A task has failed to un-serialize. Please ensure that the arguments of the function are all picklable.

I still get an error on the Lasso benchmark:
(base) ➜  lasso git:(main) ✗ benchopt run . -s sklearn -j 4
Benchopt is running
finance
  |--Lasso Regression[fit_intercept=True,reg=0.5]
  |--Lasso Regression[fit_intercept=True,reg=0.1]
  |--Lasso Regression[fit_intercept=True,reg=0.05]
  |--Lasso Regression[fit_intercept=False,reg=0.5]
  |--Lasso Regression[fit_intercept=False,reg=0.1]
  |--Lasso Regression[fit_intercept=False,reg=0.05]
leukemia
  |--Lasso Regression[fit_intercept=True,reg=0.5]
  |--Lasso Regression[fit_intercept=True,reg=0.1]
  |--Lasso Regression[fit_intercept=True,reg=0.05]
  |--Lasso Regression[fit_intercept=False,reg=0.5]
  |--Lasso Regression[fit_intercept=False,reg=0.1]
  |--Lasso Regression[fit_intercept=False,reg=0.05]
libsvm[dataset=bodyfat]
  |--Lasso Regression[fit_intercept=True,reg=0.5]
  |--Lasso Regression[fit_intercept=True,reg=0.1]
  |--Lasso Regression[fit_intercept=True,reg=0.05]
  |--Lasso Regression[fit_intercept=False,reg=0.5]
  |--Lasso Regression[fit_intercept=False,reg=0.1]
  |--Lasso Regression[fit_intercept=False,reg=0.05]
libsvm[dataset=leukemia]
  |--Lasso Regression[fit_intercept=True,reg=0.5]
  |--Lasso Regression[fit_intercept=True,reg=0.1]
  |--Lasso Regression[fit_intercept=True,reg=0.05]
  |--Lasso Regression[fit_intercept=False,reg=0.5]
  |--Lasso Regression[fit_intercept=False,reg=0.1]
  |--Lasso Regression[fit_intercept=False,reg=0.05]
joblib.externals.loky.process_executor._RemoteTraceback:
"""
Traceback (most recent call last):
  File "/home/mathurin/anaconda3/lib/python3.9/site-packages/joblib/externals/loky/process_executor.py", line 407, in _process_worker
    call_item = call_queue.get(block=True, timeout=timeout)
  File "/home/mathurin/anaconda3/lib/python3.9/multiprocessing/queues.py", line 122, in get
    return _ForkingPickler.loads(res)
  File "/home/mathurin/workspace/benchopt/benchopt/base.py", line 253, in _reconstruct
    Dataset = _reconstruct_class(
  File "/home/mathurin/workspace/benchopt/benchopt/utils/dynamic_modules.py", line 104, in _reconstruct_class
    return _load_class_from_module(module_filename, class_name)
TypeError: _load_class_from_module() missing 1 required positional argument: 'benchmark_dir'
"""

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/mathurin/anaconda3/bin/benchopt", line 33, in <module>
    sys.exit(load_entry_point('benchopt', 'console_scripts', 'benchopt')())
  File "/home/mathurin/anaconda3/lib/python3.9/site-packages/click/core.py", line 1128, in __call__
    return self.main(*args, **kwargs)
  File "/home/mathurin/anaconda3/lib/python3.9/site-packages/click/core.py", line 1053, in main
    rv = self.invoke(ctx)
  File "/home/mathurin/anaconda3/lib/python3.9/site-packages/click/core.py", line 1659, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/home/mathurin/anaconda3/lib/python3.9/site-packages/click/core.py", line 1395, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/home/mathurin/anaconda3/lib/python3.9/site-packages/click/core.py", line 754, in invoke
    return __callback(*args, **kwargs)
  File "/home/mathurin/workspace/benchopt/benchopt/cli/main.py", line 127, in run
    run_benchmark(
  File "/home/mathurin/workspace/benchopt/benchopt/runner.py", line 295, in run_benchmark
    results = Parallel(n_jobs=n_workers)(
  File "/home/mathurin/anaconda3/lib/python3.9/site-packages/joblib/parallel.py", line 1056, in __call__
    self.retrieve()
  File "/home/mathurin/anaconda3/lib/python3.9/site-packages/joblib/parallel.py", line 935, in retrieve
    self._output.extend(job.get(timeout=self.timeout))
  File "/home/mathurin/anaconda3/lib/python3.9/site-packages/joblib/_parallel_backends.py", line 542, in wrap_future_result
    return future.result(timeout=timeout)
  File "/home/mathurin/anaconda3/lib/python3.9/concurrent/futures/_base.py", line 445, in result
    return self.__get_result()
  File "/home/mathurin/anaconda3/lib/python3.9/concurrent/futures/_base.py", line 390, in __get_result
    raise self._exception
joblib.externals.loky.process_executor.BrokenProcessPool: A task has failed to un-serialize. Please ensure that the arguments of the function are all picklable.

maybe I should clear something ?

I get the same bug, I am trying to fix it asap.

Ok it should be properly tested and working now.
Can you try again @mathurinm ?

It works like a charm and it is blazing fast

But it seems the results are not totally cached : when I run the same command again but without the -j flag, all solvers are rerun (regardless of -s/-f).

I will merge this one as I think it is as good as it can get. Let me know if there is any issue afterward.
I will try to keep my next PR more self contain, this one got a bit out of hand at some point :sweat_smile:
thanks for the reviews and the tests @mathurinm @agramfort and @QB3


[TIR] VNNI and ARM dot product intrinsic for tensorization

Introduces a new directory python/tvm/tir/tensor_intrin where we put intrinsic descriptions written in TVMScript for various HW targets. They can be used by manual tensorized TIR schedules or auto-tensorized ones. More intrinsics, such as tensorcore ones, DP4A etc will be added later.
@junrushao1994 @vinx13 @shingjan  @Hzfengsy @spectrometerHBH

CC @vinx13 would you like to review? Thanks a lot!


⭐IB24⭐

IB24<EMAIL_ADDRESS>https://ib24.net

⭐IB24⭐App: @.*** https://ib24.netWhatsApp +917066078966ID: 468813Device key: 56SZF2MSM Network | Digital Creative Agency Youtube Creator Services Categories, Content Rights Management, Content Reporting, Premium Music Video Distribution, Organic Artist Channel Creation and Management, Music Publishing Management, Collection Link Management episode, Distribution of sound recordings at Tvmedia.netVào 24 thg 9, 2024 20:24, KLAdmin @.> đã viết:
IB24 @. https://ib24.net
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you are subscribed to this thread.Message ID: @.***>


Nesting go routines in namespace

Hi!
I'm looking for a way to safely separate go routines in net namespaces (see the draw below).

One of my projects requires go routines to run (execute methods, not just call binaries) in different network namespaces without affecting other's routine's namespaces. For example, if one of routine calls SetNS, all routines spawned from it have to be in the same namespace as their master routine.
Since scheduler is not under our control, there is a potential risk to switch routines on same thread to unexpected namespace which moves whole program to faulty state.
Is there a way to make namespace switching safe surrounding and predictable for routines?

That doesn't seem like something Go reasonably offers (at this time). I'd suggest using multiple processes, as a workaround.
Even if you were to runtime.LockOSThread B, that says nothing about B1, B2, B3, etc, and libraries can start goroutines behind your back too -- and worse, a library may use a pool of worker goroutines shared across your colored boxes.

Hi @tv42! Thank you for the response. The project where this trick was required is ended up 6 months ago :)
A few words about runtime.LockOSThread, from some Go version (honestly I don't remember) there was a change in scheduler that assures that no new routines would be attached to the thread if routine called runtime.LockOSThread until UnlockOSThread is called too (https://golang.org/pkg/runtime/#LockOSThread).
From my own experience, I hadn't a situation from what I tried to secure

Just found the thing what I was talking about -> https://github.com/vishvananda/netns/pull/30

@ic2hrmk So, given how Go is unlikely to support the model you asked for (without operating system help via multiple processes, in which case no Go support is needed), and even your need for such a thing is long gone, can this issue be closed?

@tv42 , yes, I think there is nothing left to discuss


fix for OA-197

Issue Description:
Following methods and properties behave as static private:
signQueryParams
_apiCredentials
_apiCredentials.key
_apiCredentials.secret
This means if anyone tries to create multiple instances of sdk with different key/secret pairs, the sdk will use the credentials of latest instance.
Fix:
a. signQueryParams can remain a static private function, but, apiCredentials should be passed to it.
b. _formatQueryParams should not part of prototype, instead.
It should be defined inside constructor and access params (it will be able to access params in constructor as closure will be created).

Incorrect File Commit.


move application to role account

Note (mostly to self): if we are going to continue to use nginx as a proxy, it has to run as a user/group and by default it's www-data. If there is a separate yamz user that runs the yamz uwsgi service nginx can't access the socket it creates. There are many ways to deal with this. One way is the emperor orchestration service designed for this purpose. The other is mounting /run/ as a tmpfs to put sockets and pidfiles into if we still use system.d. The www-group still needs r/w access. The flask app should run in an instance direcectory as well but that's a flask configuration option. Don't want to over-complicate this but for my future self: uwsgi-docs.readthedocs.io

The point was so it no longer ran under someones personal login. @jkunze created a yamz role account and the flask app now runs under that.


Need Python3 support

Python2 will be deprecated very soon, and my manager says I have to upgrade. nocode is the only dependency I have, so I really need Python3 support.

No upgrade is the best upgrade. Downvoted.

I flagged you for targeted harassment

Flagged myself for discrimination based on software versions.

+1 most libraries have been updated for Python3 support already so glad to help how I can in order to support it, glad to help if needed


If user has selected shorter history on chart settings, Bluetooth sync still downloads full 10 days

This makes syncing 10 times slower. Expected behaviour would be to read 1 day history if user is interested in to see only 1 day history.

Current sync algorithm (for GATT and for Network) stores last sync timestamp for each sensor and next time sync will start from stored date. Implementing what you asking might be a problem if user sync with 1 day setting and then change setting to more days and expect to see longer history. We may figure something out but right now I don't see perfect solution.

from 1.5.27

Works really well for me. QA passed.


Cannot find FLAME_masks_face-id.pkl.

hi, thanks for your amazing work for relighting human faces. however, i just tried a lot but still cannot find the model "FLAME_masks_face-id.pkl". could you please share it by gdrive or emails?

Flame_masks pkls.zip
I finally find this model from previous commit @7a5b8695d0bdd0d977430ae939ea74023467e545.

And thank<EMAIL_ADDRESS>we can find 'DECA/data/generic_model.pkl' in "https://download.is.tue.mpg.de/download.php?domain=flame&resume=1&sfile=FLAME2020.zip"


[ISSUE #8647] Fix the issue where lmq cannot update consumer offset

Which Issue(s) This PR Fixes

Fixes #8647
Brief Description

If it is a group of lmq, return true directly during the check.
How Did You Test This Change?

Codecov Report
Attention: Patch coverage is 0% with 6 lines in your changes missing coverage. Please review.

Project coverage is 47.17%. Comparing base (632943e) to head (38b7351).
Report is 2 commits behind head on develop.

Files with missing lines
Patch %
Lines

...oker/subscription/LmqSubscriptionGroupManager.java
0.00%
3 Missing :warning:

...bscription/RocksDBLmqSubscriptionGroupManager.java
0.00%
3 Missing :warning:

Additional details and impacted files
@@              Coverage Diff              @@
##             develop    #8648      +/-   ##
=============================================
- Coverage      47.19%   47.17%   -0.02%
- Complexity     11458    11469      +11
=============================================
  Files           1277     1277
  Lines          89425    89436      +11
  Branches       11502    11502
=============================================
- Hits           42201    42191      -10
- Misses         42014    42032      +18
- Partials        5210     5213       +3

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.