Floating point values in the inspector are forcibly rounded to 3 decimal places

Godot version:
3.0.2
OS/device including version:
Arch Linux
Issue description:

Fractional numbers, when entered in the inspector of the editor, e.g. for the Height of a CapsuleShape, are rounded to two decimal places. For example, when entering 2.022 it will be rounded to 2.02 and when entering and 5.555 will be rounded to 5.56.
The issue could be mitigated by assuming different units, e.g. assuming 1 unit = 1 cm instead of 1 meter. 5.555 would become 55.55 and that would be fine (two decimal places now). However, this again does not work for more fractional places, e.g. 1/3. Additionally, the editor seems to be optimized for something like 1 unit = 1 meter or at least 1 ft because the zoom feature (mouse wheel) does not allow zooming out far enough to make it work with cm or inches.
My suggestion is to not round the values at all and leave them at 32 bit IEEE 754 representation. I don't see any benefit from forcing to round the values. Alternatively, allow setting the decimal places via the preferences menu.
Steps to reproduce:

Create a CollisionShape node and set it to CapsuleShape
Enter 5.555 as height value and accept
Observe the value changing to 5.56

TL;DR - We will need to list exactly what properties need additional precision.
Functionality is already in the engine to change this on a property by property basis. The precision is set for each property like:
ADD_PROPERTY(PropertyInfo(Variant::REAL, "bias", PROPERTY_HINT_RANGE, "0,0.9,0.001"), "set_bias", "get_bias");

This particular property is the bias in 2D joints, and if you look at it in the editor, you will see that it has precision in 3 digits after the decimal. Many properties have 2 digits after the decimal for ease of use (you don't need more than 2 digits on things like animation speed.)  In the transform section, you may notice that position and scale allow full 32 bit precision exactly like you mentioned in the issue post.
Height and width could probably use one more digit of precision.  Are there additional properties that need to be adjusted?

I think it would be great to make this configurable in the editor. How about a setting that allows for a global minimum precision? That allows for per-property precision settings as they are now but with the possibility to overwrite them all if desired.
Personally I don't see the benefit (i.e. the ease of use) in having less precise values. If it is just for the looks, it should be possible to just visualize a certain number of digits but keep the 32 bit value internally.
Unfortunately I am just starting to use Godot and the width and height of the CapsuleShape were the first encounter of this issue - I don't know what other properties could need adjusting yet.

There are various things behind what is discussed here:

The step used by SpinBox, Tree and EditorSpinSlider uses the step value to define the increment value for the slider/spinbox, so it needs to be a reasonable amount for the increment to be meaningful. The problem is that this value also limits what kind of values can be typed in manually. #19242 is the issue which tracks this problem.
The default step value for those controls is 0.001, so three decimal places. It's sufficient in most cases, but not always as exemplified here. This should be solved by #30776 which adds a configurable default float step, where you can put e.g. 0.00001 for five decimal places, or 0 to lift the limit (you then hit the internal limits hardcoded in String::num()).
Some properties have hardcoded hint ranges which are more restrictive than the now-configurable default 0.001, e.g.:scene/3d/particles.cpp
385:    ADD_PROPERTY(PropertyInfo(Variant::REAL, "speed_scale", PROPERTY_HINT_RANGE,  "0,64,0.01"), "set_speed_scale", "get_speed_scale");

For such properties, the inspector will indeed forcibly round to two decimal places, even if you configured 5 or unlimited after #30776. That's also part of #19242 where setting a hint range should not forcefully limit the precision of manually typed numbers.

So this issue can likely be closed eventually as partly fixed by #30776 (point 2.) and superseded by #19242 (points 1. and 3.).

Also see #25470 for some more context/discussion on what should be implemented ideally.

I personally don't like seeing tons of decimals, so I disagree with showing everything by default. It would make sense to use the "default float step" setting from #30776 in as many places as possible, it's an ideal solution, as configuring this to be smaller (or zero) should work fine for your use cases.
The question I have is that why are some things hardcoded to a different value already? Why limit some things to multiples of 0.01 when others are limited to multiples of 0.001? If there is no actual reason for this, then replacing all similar hardcoded limits with default float step is a good idea.

Additionally, the editor seems to be optimized for something like 1 unit = 1 meter or at least 1 ft

The recommended practice for 3D is to always keep a real world scale, and meters make everyone's lives easier. Of course, Godot doesn't explicitly say "meters", so you can change the scale as you wish, but most things will assume 1 unit = 1 meter so it's best to use that too.

This is not only an issue in the inspector, it's also an issue for the debugger.
Yesterday, I was working on some calculations that started with a super small value (something something)e-07, and resulted in something..e-05 (i.e. 0.000000)
The debugger showed this as 0.000, both input and output, leading me to think the whole function does not work and only some sleuthing via in-game labels, which happily show four or more significant digits, allowed me to realize that it does in fact work.
For debugging, this is a very significant issue.

Not sure if it's related to this problem, but when setting the step value in shader hints (range) to 0.25 the displayed value in the inspector gets rounded up (1.3 for example instead of 1.25) and upon trying to edit the value the expected 1.25 that should be there is still not shown, which lead to believe that this is a bug that actually just steps the value to 1.3.

@Flavelius Seems like another place that should use the default float step setting.
I'm assigning the junior job label (currently "hacktoberfest") to this issue, fixing this issue in any or all of the various places it exists should be doable for new contributors.

I think we should do the following:

Add a Manual Step property to SpinBox and EditorSpinSlider, which should be set to a value lower than or equal to Step. If set to 0, Manual Step is ignored and Step is used instead (for compatibility)

In SpinBox, Manual Step should default to 0 for compatibility. In EditorSpinSlider, this should default to the lowest non-zero value (such as 0.0000001, possibly more even lower in double-precision builds).

When setting values manually or entering values with the keyboard, values are rounded according to Manual Step instead of Step.
When setting values by dragging the mouse or arrows, values are rounded according to Step.

SpinBox has Custom Arrow Step for arrows, but EditorSpinSlider lacks this (so the same step as mouse dragging is used instead).

Would be great if this were addressed if possible. The number of closed duplicates seem to indicate this is important.
Currently being limited to 1.7778 on an AspectRatioContainer causes my subviewport size to be 1920x1079.987... not sure what effect this would have in the long run :(

In the transform section, you may notice that position and scale allow full 32 bit precision exactly like you mentioned in the issue post.

I just came across this problem, and was at first perplexed by this statement by @Vega-KH, as it seems to be that the position actually completely ignores the (more recently added) editor setting (interface/inspector/default_float_step), and is hardcoded at 3 decimal places, a long ways from having full precision.
After some digging, I found that it did in fact used to have the full precision, but appears to have been inadvertently limited in 2022 by #57144, which was to fix a different (in my opinion, much more minor) issue where one was unable to click and drag to change the position values.
One fix could be to just revert that change, however that would mean re-introducing the issue it was fixing. I'd personally have no problems with this, as it's a minor inconvenience to not be able to drag, while completely blocking to not be able to set the position as precisely as needed. Though, ideally, it would be good to be able to solve both of these problems.
I'm wondering if maybe I should open a separate issue for that, as it's specific to the transform.position of node_2d and node_3d, since this issue is about the precision of floating point values in the inspector in general?


Add database has error

I add a new database has these erros. the cloudbeaver version is 23.1.0 in windows10 ,when i add my database in feature.xml,it has some errors.

error.txt

In the log file you send, it's clear that you're trying to run CloudBeaver. I suggest importing the dbeaver project in Eclipse first: https://github.com/dbeaver/dbeaver/wiki/Develop-in-Eclipse. After that, if you'd like to continue with IntelliJ IDEA, please refer to this article: https://github.com/dbeaver/dbeaver/wiki/Develop-in-IDEA.

According to the logs it looks like you're trying to set promoted driver property to "true" while it accepts only integer values.
java.lang.NumberFormatException: For input string: "true"
        at java.base/jdk.internal.math.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2054)
        at java.base/jdk.internal.math.FloatingDecimal.parseDouble(FloatingDecimal.java:110)
        at java.base/java.lang.Double.parseDouble(Double.java:651)
        at org.jkiss.utils.CommonUtils.toInt(CommonUtils.java:385)
        at org.jkiss.dbeaver.registry.driver.DriverDescriptor.<init>(DriverDescriptor.java:356)


Fix for no-offline storage build

Fixes #834
Changes
Looks like some recent changes, possibly refactor of storage creation into factory, caused the issue for the no-offline storage build.
I'm adding nullptr check to fix this.
Tests
Manually ad-hoc tested with SampleCppMini + win32-mini-dll (x2 times smaller build of SDK with no storage).
Ran the sample and it sends an event and no longer crashes.
Unrelated Changes
Ever since I upgraded my local Visual Studio 2019 to latest, I hit the following issues:

RC compiler does not like Version.hpp without EOL.

Latest compiler does not like no-RTTI option, saying that the parameter is not recognized. It could be that the 2019 IDE is spawning an older 2017 compiler with a new option that it does not recognize it or alike? I am re-enabling RTTI for win32-min-dll since its overhead is small. That eliminates the issue with noRTTI compiler option. I am not exactly sure how else this would work with 2017 compiler and 2019 IDE. Appears like we should assume that RTTI is now always on, even on small-sized build of SDK.. again, the overhead of leaving RTTI on (default) is rather small in my opinion.

C/C++ CI on Windows (vs2017) / Build (pull_request) In progress — This check has started... - something wrong with optional vs2017 loop, it hangs on installing the tools (NOT code issue, but build infra).


release note for v2.0.0-RC10 has wrong changelog

https://github.com/dream11/zio-http/releases/tag/v2.0.0-RC10
Has:
Full Changelog: https://github.com/dream11/zio-http/compare/v<IP_ADDRESS>-RC28...v2.0.0-RC10
Should probably be:
Full Changelog: https://github.com/dream11/zio-http/compare/v2.0.0-RC9...v2.0.0-RC10

@pjfanning Change log is correct. Before this release the main branch was the branch for v1.0.0. All the v2.0.0 RC releases has been done from a branch from where we port the changes done in main branch to ZIO 2.0 RCs. So all the released changes were included in previous release. With ZIO 2.0 release we basically migrated from v1.0.0 to v2.0.0 by migrating main branch code base from ZIO 1.0 to ZIO 2.0. The change log is correct.


Impossible to detect streaming video in my favourite streaming website

Hello, I try the new version of our beloved Hls-downloader in Thorium browser and it is awesome and detect videos from my favourite site ! 💯 🥇 Thank you so much :) 🥇
Please there is a little problem : our beloved  Hls-downloader can't detect video from the first video player (the video player on the left) among the 3 video players offered by this site:
https://french-anime.com/animes-vf/1387-s0olo-lefveling.html
EDIT : Hello Mr @puemos , i tried with open source extension " Live-stream-downloader" made by Mr Chandler Stimson :
https://github.com/chandler-stimson/live-stream-downloader
and i discover "Live-stream-downloader" can detect the video not detected by our beloved Hls-downloader....may be it can help to add support for this video streaming player....

Update : Hello Mr @puemos ,  i tried with open source extension " Live-stream-downloader" made by Mr Chandler Stimson ::
https://github.com/chandler-stimson/live-stream-downloader
and i discover "Live-stream-downloader" can detect the video not detected by our beloved Hls-downloader....may be it can help to add support for this video streaming player.....


[TE] frontend - aaronucsd/added 401 error handling and login session …

…expired catches

Added 401 handling for ember data and non-ember data routes
Added better login message for session expired
Retained force url or deep links (fromUrl) to support things like bookmarks and emails
Added the logic to handle saving intented transition prior to session timed out
Added error substates in all routes. Most children route will bubble the error to its parent and
parents to application route.
manual tests

Updated all fetch() calls to use checkStatus to make sure we catch 401 errors.


Use NerdStorageVault first to find secrets

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

@devfreddy could we get a quick review on this PR?


Add a Spring Boot Starter: elastic-job-lite-starter

I suggest adding a Spring Boot Starter for elastic-job-lite.

guest what
https://github.com/yinjihuan/elastic-job-spring-boot-starter

guest what
https://github.com/yinjihuan/elastic-job-spring-boot-starter

Looks cool, we can take a look at the code and see if there is something good that can be used in the official version.

配置文件版本
https://github.com/xjzrc/elastic-job-lite-spring-boot-starter

The version 2.x is expired, we will create new issue with spring boot starter with new 3.x API


Error: ModuleNotFoundError: No module named 'pyaudio'

Dear Author,
When I am running the codes python object-detection-and-line-cross.py and python audio_playback_bg.py, I am getting the following error.
File "C:\Users\Ishan.Borkar\Documents\October 2021\21-10-2021(object tracking line crossing)\object-tracking-line-crossing-area-intrusion-master\audio_playback_bg.py", line 3, in
import pyaudio
ModuleNotFoundError: No module named 'pyaudio'.
I tried to perform pip install pyaudio, still the error is not getting resolved.
Kindly help me in solving this doubt. Awaiting your response.

Install a suitable version of pyaudio from this link - Click here
How to check suitable version of pyaudio ?
for eg: for PyAudio‑0.2.11‑cp39‑cp39‑win32.whl ,
cp39 means for python 3.9 and win32 means 32 bit python version for windows system
for eg: for PyAudio‑0.2.11‑cp38‑cp38‑win_amd64.whl ,
cp38 means for python 3.8 and win_amd64 means 64 bit python version for windows system and amd processors.
please note by 32 bit/64 bit, i mean by python version and not windows bits
How to install pyuadio ?
Download suitable version of pyaudio from above link.
Place it in project folder.
Go to python terminal and enter this command. (let say u downloaded PyAudio‑0.2.11‑cp38‑cp38‑win_amd64.whl for ur system)
"pip intsall PyAudio‑0.2.11‑cp38‑cp38‑win_amd64.whl"
and press enter.


I get an "SSL certificate verify failed" error while using the nbdev_new

Hello! Probably a very silly issue. But I get the following error while using nbdev_new on a new repository:
File "/Users/admin/mambaforge/lib/python3.10/urllib/request.py", line 1351, in do_open
    raise URLError(err)
urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self-signed certificate in certificate chain

I tracked the error back to the code of the nbdev_new procedure in the nbdev package. Apparently, there's an error when opening a URL.
The exact line that is not working (helper function used in nbdev_new): https://github.com/fastai/nbdev/blob/cf5e6a52b1393466a3b75c5ec69e2db9ebf77e47/nbdev/cli.py#L56
I found pages like this one on the web: https://www.howtouselinux.com/post/ssl-certificate_verify_failed-in-python, but would really appreciate it if someone can help me find the best way to solve this issue. I'm eager to start using nbdev.🚀
PS: We can later add a callout to the docs if this is something that happens to others.

I also encountered the same problem, and I saw the following sentence in the error message:
     File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/nbdev/cli.py", line 90, in nbdev_new
    tag = GhApi(gh_host='https://api.github.com', authenticate=False).repos.get_latest_release('fastai', 'nbdev-template').tag_name

I tried to change 'authenticate=False' to 'authenticate=True', The 'settings.ini' file was generated in the project.
However, the problem remains:
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/ssl.py", line 1309, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLEOFError: EOF occurred in violation of protocol (_ssl.c:1129)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.9/bin/nbdev_new", line 8, in <module>
    sys.exit(nbdev_new())
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/fastcore/script.py", line 119, in _f
    return tfunc(**merge(args, args_from_prog(func, xtra)))
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/nbdev/cli.py", line 90, in nbdev_new
    tag = GhApi(gh_host='https://api.github.com', authenticate=True).repos.get_latest_release('fastai', 'nbdev-template').tag_name
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/ghapi/core.py", line 61, in __call__
    return self.client(self.path, self.verb, headers=headers, route=route_p, query=query_p, data=data_p)
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/ghapi/core.py", line 120, in __call__
    res,self.recv_hdrs = urlsend(path, verb, headers=headers or None, debug=debug, return_headers=True,
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/fastcore/net.py", line 218, in urlsend
    return urlread(req, return_json=return_json, return_headers=return_headers)
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/fastcore/net.py", line 117, in urlread
    with urlopen(url, data=data, headers=headers, timeout=timeout, **kwargs) as u: res,hdrs = u.read(),u.headers
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/fastcore/net.py", line 108, in urlopen
    try: return urlopener().open(urlwrap(url, data=data, headers=headers), timeout=timeout)
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/urllib/request.py", line 517, in open
    response = self._open(req, data)
  ......


Oasis Editor 无法访问

Describe the bug
A clear and concise description of what the bug is.
https://oasis.alipay.com/editor  无法访问
To Reproduce
Steps to reproduce the behavior:

Go to '...'
Click on '....'
Scroll down to '....'
See error

Expected behavior
A clear and concise description of what you expected to happen.
Screenshots
If applicable, add screenshots to help explain your problem.
Desktop (please complete the following information):

OS: [e.g. iOS]
Browser [e.g. chrome, safari]
Version [e.g. 22]

Smartphone (please complete the following information):

Device: [e.g. iPhone6]
OS: [e.g. iOS8.1]
Browser [e.g. stock browser, safari]
Version [e.g. 22]

Additional context
Add any other context about the problem here.

The editor is not yet open to the public


matplotlib deprecation warning in plot()

Getting this warning in tests:
tests/test_plot.py::test_num_plots
  /Users/ben/p/keepsake/python/keepsake/experiment.py:446: MatplotlibDeprecationWarning: Adding an axes using the same arguments as a previous axes currently reuses the earlier instance.  In a future version, a new instance will always be created and returned.  Meanwhile, this warning can be suppressed, and the future behavior ensured, by passing a unique label to each axes instance.
    plotted_label = plt.axes().yaxis.get_label().get_text() or metric

cc @enochkan :)

Sorry busy week at work. Will work on this over the weekend 👍

@bfirsh sorry for the delay. Issue is fixed in PR #570


3D recon

Draft pull request for enabling 3D reconstruction.
See discussion:  Reconstruction for 3D sequences #323

Managed to break 2D...looks like careful handling of 2D vs 3D is required.
Probably best to do non_ui funnctions first, test, the ui functions.
shell> git branch -v
* 3D_recon          674c0f2 Line 123 setup_raw() needs modifications for 3D? modified:   ExportUIFunctions.jl
  ccdev             f0bfc86 Working on HSn....lots of problems. modified:   KomaMRIBase/src/sequences/PulseDesigner.jl
  master            0a8a93d Update README.md
  phantom_info      a86b7bb Merge branch 'JuliaHealth:master' into upsample_phantoms
  upsample_phantoms a86b7bb Merge branch 'JuliaHealth:master' into upsample_phantoms

Progress: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| Time: 0:00:44
  simulated_blocks:  22
  rf_blocks:         1
  acq_samples:       10201
 44.835454 seconds (43.57 M allocations: 2.874 GiB, 2.96% gc time, 86.70% compilation time: <1% of which was recompilation)
[ Info: Exporting to ISMRMRD file: /tmp/Koma_signal.mrd
[ Info: Running reconstruction ...
 This is similar to what I would have tried. I will try to take a further look asap.

@cncastillo

Thanks @curtcorum for all the effort!! This is similar to what I would have tried. I will try to take a further look asap.

Thanks and my pleasure, Carlos!
I'm very interested in doing 3D simulation, especially of 3D Radial sequences, anything I can do to help.
I certainly greatly appreciate your, @beorostica,  and the other developers and users work on KomaMRI!

Some comments on 3D.
The UI and plots get bogged down with large seq and raw files.
It is potentially desirable for the UI to parameterize the maximum range of sequence blocks (or time range) for the seq slider. Then one could have a second slider, or stop rendering the slider and just show the range displayed in the main seq window. Not sure how to do this but something to think about.
Also there are similar UI or plot slowing down issues when the 2D or 3D phantom has a lot of points.
For the UI it might make sense to have some default and changeable parameters passed to KomaUI() in the manner of sim= and rec=:
ui_params = Dict{String,Any}()

'max_blocks', 500 # these are guesses for now

'max_raw', 2000

'max_points', 25000 # could sub-sample after some threshold

...

The UI and plots get bogged down with large seq and raw files.

You are absolutly right.  I would just add ⬅ ➡ buttons and always render a max of 100 blocks maybe? The same could be done for plot_raw. @pvillacorta has played with something similar in #184 (f19a750).
I was imagining something like this

https://community.home-assistant.io/t/plotly-interactive-graph-card/347746
Not sure if this solution will fix the problem.

3D reconstruction from KomaUI() now working, with gre3d.seq at 32x32x32 gereated with: https://github.com/pulseq/pulseq/blob/master/matlab/demoSeq/writeGradientEcho3D.m
More testing...
2D reconstruction works substantially the same, but testing needed.
Some estimates of recon parameters, such as FOV and Nx, Ny, Nz have different rounding to avoid DIV0 errors. Warnings are now given when some parameters are estimated.
Next step is 3D non-Cartesean!

This looks amazing! I will test it locally and see if everything works for me. The CI is still giving ERROR: LoadError: DivideError: integer division error; maybe it fails for 2D phantoms?

This looks amazing! I will test it locally and see if everything works for me. The CI is still giving ERROR: LoadError: DivideError: integer division error; maybe it fails for 2D phantoms?

I'll see what is going on. Likely there is more work to do for the FOV estimation, etc.

...in progress draft...
Test that is failing.
https://github.com/JuliaHealth/KomaMRI.jl/blob/931fec8f318b247dfbc90fa33f0b598216f6a3c8/KomaMRICore/test/runtests.jl#L154-L158

Local tests* of KomaMRICore went ok...
*Ubuntu 20.04
Linux green 5.15.0-107-generic #117~20.04.1-Ubuntu SMP Tue Apr 30 10:35:57 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
Precompiling project...
  ✗ Metal → BFloat16sExt
  201 dependencies successfully precompiled in 97 seconds. 9 already precompiled.
  2 dependencies had output during precompilation:
┌ AbstractNFFTs
│  WARNING: method definition for #plan_nfft#3 at /home/curt/.julia/packages/AbstractNFFTs/Xd3qS/src/derived.jl:16 declares type variable D but does not use it.
│  WARNING: method definition for #plan_nfft#4 at /home/curt/.julia/packages/AbstractNFFTs/Xd3qS/src/derived.jl:21 declares type variable D but does not use it.
│  WARNING: method definition for #plan_nfct#8 at /home/curt/.julia/packages/AbstractNFFTs/Xd3qS/src/derived.jl:16 declares type variable D but does not use it.
│  WARNING: method definition for #plan_nfct#9 at /home/curt/.julia/packages/AbstractNFFTs/Xd3qS/src/derived.jl:21 declares type variable D but does not use it.
│  WARNING: method definition for #plan_nfst#13 at /home/curt/.julia/packages/AbstractNFFTs/Xd3qS/src/derived.jl:16 declares type variable D but does not use it.
│  WARNING: method definition for #plan_nfst#14 at /home/curt/.julia/packages/AbstractNFFTs/Xd3qS/src/derived.jl:21 declares type variable D but does not use it.
│  WARNING: method definition for #plan_nnfft#17 at /home/curt/.julia/packages/AbstractNFFTs/Xd3qS/src/derived.jl:34 declares type variable D but does not use it.
└
┌ AMDGPU
│  WARNING: Wrapping `Vararg` directly in UnionAll is deprecated (wrap the tuple instead).
│  You may need to write `f(x::Vararg{T})` rather than `f(x::Vararg{<:T})` or `f(x::Vararg{T}) where T` instead of `f(x::Vararg{T} where T)`.
│  WARNING: Wrapping `Vararg` directly in UnionAll is deprecated (wrap the tuple instead).
│  You may need to write `f(x::Vararg{T})` rather than `f(x::Vararg{<:T})` or `f(x::Vararg{T}) where T` instead of `f(x::Vararg{T} where T)`.
└
     Testing Running tests...
┌ Warning: Estimating FOV parameters from seq.DEF Nx, Ny, Nz and traj.
└ @ KomaMRICore ~/src/KomaMRI/KomaMRICore/src/rawdata/ISMRMRD.jl:301
┌ Debug: Nd_seq = 2
└ @ KomaMRICore ~/src/KomaMRI/KomaMRICore/src/rawdata/ISMRMRD.jl:308
┌ Debug: Nx, Ny, Nz, Ns = 101, 101, 1, 1
└ @ KomaMRICore ~/src/KomaMRI/KomaMRICore/src/rawdata/ISMRMRD.jl:309
┌ Debug: FOVx, FOVy, FOVz = 0.23229999999419157, 0.2323000000111597, 1
└ @ KomaMRICore ~/src/KomaMRI/KomaMRICore/src/rawdata/ISMRMRD.jl:310
┌ Debug: Δx, size( ktraj) = [0.002299999999942491, 0.002300000000110492, 1.0e-6], (10201, 3)
└ @ KomaMRICore ~/src/KomaMRI/KomaMRICore/src/rawdata/ISMRMRD.jl:311
[ Info: Creating 2D ISMRMRD file ...
┌ Debug: Nd_seq = 2
└ @ KomaMRICore ~/src/KomaMRI/KomaMRICore/src/rawdata/ISMRMRD.jl:308
┌ Debug: Nx, Ny, Nz, Ns = 101, 101, 0, 1
└ @ KomaMRICore ~/src/KomaMRI/KomaMRICore/src/rawdata/ISMRMRD.jl:309
┌ Debug: FOVx, FOVy, FOVz = 0.23, 0.23, 0.0
└ @ KomaMRICore ~/src/KomaMRI/KomaMRICore/src/rawdata/ISMRMRD.jl:310
┌ Debug: Δx, size( ktraj) = [0.002299999999942491, 0.002300000000110492, 1.0e-6], (10201, 3)
└ @ KomaMRICore ~/src/KomaMRI/KomaMRICore/src/rawdata/ISMRMRD.jl:311
[ Info: Creating 2D ISMRMRD file ...
Test Summary: | Pass  Total     Time
Package       |   81     81  2m17.6s

Probably the checks on the recon parameters should be moved to one place?
https://github.com/JuliaHealth/KomaMRI.jl/issues/409#issuecomment-2179531282

Yeah it should be its own function. Currently we are finishing of #411 and #408, and I can go back to the sequences.


uxn: 1.0-unstable-2024-05-30 -> 1.0-unstable-2024-06-05

Automatic update generated by nixpkgs-update tools. This update was made based on information from passthru.updateScript.
meta.description for uxn is: An assembler and emulator for the Uxn stack machine
meta.homepage for uxn is: https://wiki.xxiivv.com/site/uxn.html
Updates performed

Ran passthru.UpdateScript

To inspect upstream changes
Impact
Checks done

built on NixOS
The tests defined in passthru.tests, if any, passed
found 1.0-unstable-2024-06-05 in filename of file in /nix/store/561dzsd60ac99bfmv7l2abasgqslwbv1-uxn-1.0-unstable-2024-06-05

Rebuild report (if merged into master) (click to expand)

2 total rebuild path(s)

2 package rebuild(s)

First fifty rebuilds by attrpath

uxn

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/561dzsd60ac99bfmv7l2abasgqslwbv1-uxn-1.0-unstable-2024-06-05 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A uxn https://github.com/r-ryantm/nixpkgs/archive/7ef6b412dd043ac5aecfe7f6ab9bc3f446b1cc5b.tar.gz

Or:
nix build github:r-ryantm/nixpkgs/7ef6b412dd043ac5aecfe7f6ab9bc3f446b1cc5b#uxn

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/561dzsd60ac99bfmv7l2abasgqslwbv1-uxn-1.0-unstable-2024-06-05
ls -la /nix/store/561dzsd60ac99bfmv7l2abasgqslwbv1-uxn-1.0-unstable-2024-06-05/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review --extra-nixpkgs-config '{ allowInsecurePredicate = x: true; }' run on x86_64-linux 1

2 packages built:

uxn
uxn.projects

Maintainer pings
cc @AndersonTorres for testing.

@NixOS/nixpkgs-merge-bot merge


Validate Sec-WebSocket-Protocol and Sec-WebSocket-Extensions values

websockets trusts the user to provide suitable values for these headers.
We may want to enforce that values meet the RFC's requirements -- everything must be a token (as defined by the ABNF for HTTP headers).

In https://github.com/aaugustin/websockets/issues/331#issuecomment-361160100 the OP got confused when they passed a string instead of a list of string as extensions.

Also https://github.com/aaugustin/websockets/issues/331#issuecomment-358787179 suggests to disallow passing reserved headers in extra_headers, another possible validation.

This is harder than it seems:

subprotocols can be validated statically when creating the server. However, doing so in the the protocol's init doesn't work well in tests, because the socket is already open and leaks
extensions may be validated statically on the client side, but it isn't very elegant, and they can only be validated for each response on the server side

Here's how far I went before giving up:
diff --git a/websockets/client.py b/websockets/client.py
index f873903..754c64c 100644
--- a/websockets/client.py
+++ b/websockets/client.py
@@ -14,7 +14,7 @@ from .extensions.permessage_deflate import ClientPerMessageDeflateFactory
 from .handshake import build_request, check_response
 from .headers import (
     build_extension_list, build_protocol_list, parse_extension_list,
-    parse_protocol_list
+    parse_protocol_list, validate_extension_list, validate_protocol_list
 )
 from .http import USER_AGENT, basic_auth_header, build_headers, read_response
 from .protocol import WebSocketCommonProtocol
@@ -39,7 +39,17 @@ class WebSocketClientProtocol(WebSocketCommonProtocol):
                  origin=None, extensions=None, subprotocols=None,
                  extra_headers=None, **kwds):
         self.origin = origin
+        if extensions is not None:
+            validate_extension_list([
+                (
+                    extension_factory.name,
+                    extension_factory.get_request_params(),
+                )
+                for extension_factory in extensions
+            ])
         self.available_extensions = extensions
+        if subprotocols is not None:
+            validate_protocol_list(subprotocols)
         self.available_subprotocols = subprotocols
         self.extra_headers = extra_headers
         super().__init__(**kwds)
diff --git a/websockets/headers.py b/websockets/headers.py
index c5b228c..ca6a011 100644
--- a/websockets/headers.py
+++ b/websockets/headers.py
@@ -7,14 +7,15 @@ from :mod:`websockets.headers`.

 """

+import collections.abc
 import re

 from .exceptions import InvalidHeader

 __all__ = [
-    'parse_extension_list', 'build_extension_list',
-    'parse_protocol_list', 'build_protocol_list',
+    'parse_extension_list', 'build_extension_list', 'validate_extension_list',
+    'parse_protocol_list', 'build_protocol_list', 'validate_protocol_list',
 ]

@@ -235,6 +236,25 @@ def build_extension_list(extensions):
     )

+def validate_extension_list(extensions):
+    """
+    Validate that ``extensions`` is suitable for :func:`build_extension_list`.
+
+    """
+    if not isinstance(extensions, collections.abc.Iterable):
+        raise TypeError("Subprotocols must be a list")
+    if isinstance(extensions, str):
+        raise TypeError("extensions must be a list, not a str")
+    for name, parameters in extensions:
+        if not _token_re.fullmatch(name):
+            raise ValueError("Invalid extension name: %r" % name)
+        for name, value in parameters:
+            if not _token_re.fullmatch(name):
+                raise ValueError("Invalid parameter name: %r" % name)
+            if value is not None and not _token_re.fullmatch(value):
+                raise ValueError("Invalid parameter value: %r" % value)
+
+
 def parse_protocol(string, pos):
     """
     Parse a protocol definition from ``string`` at the given position.
@@ -307,3 +327,17 @@ def build_protocol_list(protocols):

     """
     return ', '.join(protocols)
+
+
+def validate_protocol_list(protocols):
+    """
+    Validate that ``protocols`` is suitable for :func:`build_protocol_list`.
+
+    """
+    if not isinstance(protocols, collections.abc.Iterable):
+        raise TypeError("Subprotocols must be a list")
+    if isinstance(protocols, str):
+        raise TypeError("Subprotocols must be a list, not a str")
+    for protocol in protocols:
+        if not _token_re.fullmatch(protocol):
+            raise ValueError("Invalid subprotocol: %r" % protocol)
diff --git a/websockets/server.py b/websockets/server.py
index e58c0ac..ae1630a 100644
--- a/websockets/server.py
+++ b/websockets/server.py
@@ -19,7 +19,8 @@ from .exceptions import (
 from .extensions.permessage_deflate import ServerPerMessageDeflateFactory
 from .handshake import build_response, check_request
 from .headers import (
-    build_extension_list, parse_extension_list, parse_protocol_list
+    build_extension_list, parse_extension_list, parse_protocol_list,
+    validate_extension_list, validate_protocol_list
 )
 from .http import USER_AGENT, build_headers, read_request
 from .protocol import WebSocketCommonProtocol
@@ -50,7 +51,10 @@ class WebSocketServerProtocol(WebSocketCommonProtocol):
         self.ws_handler = ws_handler
         self.ws_server = ws_server
         self.origins = origins
+        # extensions can only be validated after processing a request
         self.available_extensions = extensions
+        if subprotocols is not None:
+            validate_protocol_list(subprotocols)
         self.available_subprotocols = subprotocols
         self.extra_headers = extra_headers
         super().__init__(**kwds)
@@ -341,6 +345,7 @@ class WebSocketServerProtocol(WebSocketCommonProtocol):

         # Serialize extension header.
         if response_header:
+            validate_extension_list(response_header)
             response_header = build_extension_list(response_header)
         else:
             response_header = None
diff --git a/websockets/test_client_server.py b/websockets/test_client_server.py
index 7ee8b78..2d70e3e 100644
--- a/websockets/test_client_server.py
+++ b/websockets/test_client_server.py
@@ -204,6 +204,23 @@ class NoOpExtension:
         return frame

+class ClientBadExtensionFactory:
+    name = 'x-no-op'
+
+    def get_request_params(self):
+        return [('not good', None)]
+
+    def process_response_params(self, params, accepted_extensions):
+        return NoOpExtension()
+
+
+class ServerBadExtensionFactory:
+    name = 'x-no-op'
+
+    def process_request_params(self, params, accepted_extensions):
+        return [('not good', None)], NoOpExtension()
+
+
 class ClientServerTests(unittest.TestCase):

     secure = False
@@ -540,6 +557,16 @@ class ClientServerTests(unittest.TestCase):
     def test_client_create_protocol_over_klass(self):
         self.assertIsInstance(self.client, BarClientProtocol)

+    @with_server()
+    def test_extension_value_error_client(self):
+        with self.assertRaises(ValueError):
+            self.start_client(extensions=[ClientBadExtensionFactory()])
+
+    @with_server(extensions=[ServerBadExtensionFactory()])
+    def test_extension_value_error_server(self):
+        with self.assertRaises(InvalidStatusCode):
+            self.start_client(extensions=[ClientNoOpExtensionFactory()])
+
     @with_server()
     @with_client('/extensions')
     def test_no_extension(self):
@@ -698,6 +725,28 @@ class ClientServerTests(unittest.TestCase):
         with self.assertRaises(ValueError):
             self.loop.run_until_complete(self.start_client(compression='xz'))

+    @with_server()
+    def test_subprotocol_type_error_client(self):
+        with self.assertRaises(TypeError):
+            self.loop.run_until_complete(
+                self.start_client(subprotocols='chat'))
+
+    @with_server()
+    def test_subprotocol_value_error_client(self):
+        with self.assertRaises(ValueError):
+            self.loop.run_until_complete(
+                self.start_client(subprotocols=['spacy chat']))
+
+    def test_subprotocol_type_error_server(self):
+        with self.assertRaises(TypeError):
+            self.loop.run_until_complete(
+                self.start_server(subprotocols='chat'))
+
+    def test_subprotocol_value_error_server(self):
+        with self.assertRaises(ValueError):
+            self.loop.run_until_complete(
+                self.start_server(subprotocols=['spacy chat']))
+
     @with_server()
     @with_client('/subprotocol')
     def test_no_subprotocol(self):
@@ -705,6 +754,7 @@ class ClientServerTests(unittest.TestCase):
         self.assertEqual(server_subprotocol, repr(None))
         self.assertEqual(self.client.subprotocol, None)

+
     @with_server(subprotocols=['superchat', 'chat'])
     @with_client('/subprotocol', subprotocols=['otherchat', 'chat'])
     def test_subprotocol(self):
diff --git a/websockets/test_headers.py b/websockets/test_headers.py
index 230aadf..adfb048 100644
--- a/websockets/test_headers.py
+++ b/websockets/test_headers.py
@@ -69,6 +69,67 @@ class HeadersTests(unittest.TestCase):
                 with self.assertRaises(InvalidHeader):
                     parse_extension_list(header)

+    def test_validate_extension_list(self):
+        for extensions in [
+            [],
+            [('foo', [])],
+            [('foo-bar', [])],
+            [('foo', []), ('bar', [])],
+            [('foo', [('bar', None), ('baz', 'baz')])],
+            [('foo', []), ('bar', [('baz', 'quux')])],
+            [('foo', []), ('bar', [('baz', 'quux'), ('quuux', None)])],
+        ]:
+            with self.subTest(extensions=extensions):
+                # This does not raise an exception.
+                validate_extension_list(extensions)
+
+    def test_validate_extension_list_invalid_type(self):
+        for extensions in [
+            None,
+            'foo',
+        ]:
+            with self.subTest(extensions=extensions):
+                with self.assertRaises(TypeError):
+                    validate_extension_list(extensions)
+
+
+    def test_validate_extension_list_invalid_value(self):
+        for extensions in [
+            [('', [])],
+            [(' ', [])],
+            [('foo ', [])],
+            [('foo bar', [])],
+            [('foo', []), ('', []), ('bar', [])],
+            [('foo', []), (' ', []), ('bar', [])],
+            [('foo', [('', None)])],
+            [('foo', [(' ', None)])],
+            [('foo', [('bar ', None)])],
+            [('foo', [('bar baz', None)])],
+            [('foo', [('bar', '')])],
+            [('foo', [('bar', ' ')])],
+            [('foo', [('bar', 'baz ')])],
+            [('foo', [('bar', 'baz quux')])],
+            [('foo', [('bar', 'baz'), ('', None)])],
+            [('foo', [('bar', 'baz'), (' ', None)])],
+            [('foo', [('bar', 'baz'), ('quux ', None)])],
+            [('foo', [('bar', 'baz'), ('quux quux', None)])],
+            [('foo', [('bar', 'baz'), ('quux', '')])],
+            [('foo', [('bar', 'baz'), ('quux', ' ')])],
+            [('foo', [('bar', 'baz'), ('quux', 'quuux ')])],
+            [('foo', [('bar', 'baz'), ('quux', 'quuux xxx')])],
+            [('foo', []), ('bar', [('', None)])],
+            [('foo', []), ('bar', [(' ', None)])],
+            [('foo', []), ('bar', [('baz ', None)])],
+            [('foo', []), ('bar', [('baz quux', None)])],
+            [('foo', []), ('bar', [('baz', '')])],
+            [('foo', []), ('bar', [('baz', ' ')])],
+            [('foo', []), ('bar', [('baz', 'quux ')])],
+            [('foo', []), ('bar', [('baz', 'quux quux')])],
+         ]:
+            with self.subTest(extensions=extensions):
+                with self.assertRaises(ValueError):
+                    validate_extension_list(extensions)
+
     def test_parse_protocol_list(self):
         for header, parsed in [
             # Synthetic examples
@@ -103,3 +164,40 @@ class HeadersTests(unittest.TestCase):
             with self.subTest(header=header):
                 with self.assertRaises(InvalidHeader):
                     parse_protocol_list(header)
+
+    def test_validate_protocol_list(self):
+        for protocols in [
+            [],
+            ['foo'],
+            ['foo', 'bar'],
+            ['foo-bar'],
+        ]:
+            with self.subTest(protocols=protocols):
+                # This does not raise an exception.
+                validate_protocol_list(protocols)
+
+    def test_validate_protocol_list_invalid_type(self):
+        for protocols in [
+            None,
+            'foo',
+        ]:
+            with self.subTest(protocols=protocols):
+                with self.assertRaises(TypeError):
+                    validate_protocol_list(protocols)
+
+    def test_validate_protocol_list_invalid_value(self):
+        for protocols in [
+            [''],
+            [' '],
+            [','],
+            ['foo '],
+            ['foo,'],
+            ['foo bar'],
+            ['foo,bar'],
+            ['foo', '', 'bar'],
+            ['foo', ' ', 'bar'],
+            ['foo', ',', 'bar'],
+        ]:
+            with self.subTest(protocols=protocols):
+                with self.assertRaises(ValueError):
+                    validate_protocol_list(protocols)

However, doing so in the the protocol's init doesn't work well in tests, because the socket is already open and leaks

Can you elaborate on the problem here? Is there something that makes adding the necessary test isolation hard?

Mostly, it was 11pm, I wrote that comment for future reference and went to bed :-)
I was getting warnings like:
/Users/myk/.pyenv/versions/3.6.5/lib/python3.6/traceback.py:216: ResourceWarning: unclosed <socket.socket fd=12, family=AddressFamily.AF_INET6, type=SocketKind.SOCK_STREAM, proto=6, laddr=('::1', 51640, 0, 0), raddr=('::1', 51639, 0, 0)>

and errors like:
======================================================================
ERROR: test_subprotocol_type_error_client (websockets.test_client_server.ClientServerTests)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/myk/Documents/dev/websockets/websockets/test_client_server.py", line 89, in _decorate
    return func(self, *_args, **_kwds)
  File "/Users/myk/.pyenv/versions/3.6.5/lib/python3.6/contextlib.py", line 88, in __exit__
    next(self.gen)
  File "/Users/myk/Documents/dev/websockets/websockets/test_client_server.py", line 68, in temp_test_server
    test.stop_server()
  File "/Users/myk/Documents/dev/websockets/websockets/test_client_server.py", line 267, in stop_server
    asyncio.wait_for(self.server.wait_closed(), timeout=1))
  File "/Users/myk/.pyenv/versions/3.6.5/lib/python3.6/asyncio/base_events.py", line 468, in run_until_complete
    return future.result()
  File "/Users/myk/.pyenv/versions/3.6.5/lib/python3.6/asyncio/tasks.py", line 358, in wait_for
    return fut.result()
  File "/Users/myk/Documents/dev/websockets/websockets/server.py", line 587, in wait_closed
    loop=self.loop)
  File "/Users/myk/.pyenv/versions/3.6.5/lib/python3.6/asyncio/tasks.py", line 311, in wait
    fs = {ensure_future(f, loop=loop) for f in set(fs)}
  File "/Users/myk/.pyenv/versions/3.6.5/lib/python3.6/asyncio/tasks.py", line 311, in <setcomp>
    fs = {ensure_future(f, loop=loop) for f in set(fs)}
  File "/Users/myk/.pyenv/versions/3.6.5/lib/python3.6/asyncio/tasks.py", line 526, in ensure_future
    raise TypeError('An asyncio.Future, a coroutine or an awaitable is '
TypeError: An asyncio.Future, a coroutine or an awaitable is required

Okay. Those errors look unrelated. For the first one, if it's indeed a test isolation issue, I have suggestions on that which continue a suggestion I made in a PR (I believe the PR is still outstanding). It doesn't seem like there should be anything "hard" getting in the way of test isolation.

Yes, the testing problems should be tractable.
One thing I'm uncomfortable about when we run validations:

subprotocols are simply lists of strings: it's pretty clear that they can and should be validated once when instantiating the protocol
extensions are classes implementing a small API:

on the client side, they always generate the same header, which can be validated when instantiating the protocol
on the server side, there's no way to know all possible responses, so validation needs to be performed at each request, which has a small overhead and adds no value for properly implemented and tested extensions

We can keep the validation of subprotocols (which are directly defined by the user) and fix the tests. As you say, that seems doable.
I'm thinking of simplifying or even removing the validation of extensions. Since they won't be directly written by the user, errors are less likely.

At this point I'm convinced that it isn't useful to perform validation of extensions. I haven't ruled out validation of subprotocols, as the risk of error is slightly higher, but I'm far from convinced it's useful.

Perhaps this is just going to end with:
        if isinstance(subprotocols, str):
            subprotocols = [subprotocols]

which would solve 90% of the problem...

Final call — I'm going to validate the subprotocols argument passed to connect() and serve() because, if you're just adding an argument to connect() or serve(), you could get it wrong; I'm not going to validate extensions because, if you're writing three classes, probably you'll manage to get the parameters right.
Also, there's dozen of registered subprotocols vs. only two extensions, one of which is natively supported by websockets, so there's a much higher chance that users will attempt to use the subprotocols argument than extensions argument.


Update CI infrastructure

This is mostly formulaic, but the UB sanitizer turned up some issues in 64-bit tests.

There is also an issue with tests that don't have any "real" google tests, but only rapidcheck tests. They don't play well with gtest_discover_tests (I assume reporting no tests) - the result is that they will rebuild every build... adding at least one (possibly degenerate) "plain test" would fix this.

This is mostly formulaic, but the UB sanitizer turned up some issues in 64-bit tests.

Can you share which tests had this issue? Was it an issue in the test itself using 64-but primitives, or in safe arithmetic?
If a test hit 64-bit overflow for negation, that should fail the test because the big_integer should have the correct value while the 64-bit primitive will overflow or have other UB. Right?

It is a problem with the tests, not the library. And the test doesn't fail; it triggers UBSan. For example https://github.com/intel/safe-arithmetic/blob/main/test/safe/big_integer/detail/plus.cpp#L37 when the generated values are such that a + b (in regular C++ artihmetic) overflows. This is true for the plus, minus, and multiply tests, and the negate test. And it makes sense that rapidcheck should generate boundary conditions...

Looks like I need to update the branch protection rules on the repo. 😅

Should be building now... clang-format reordering headers produced a failure I guess.

Tests are "passing" (see ASan/TSan tests), but failing because of CTest interaction with rapidcheck & the compile-fail tests. And of course the UBSan tests have a couple of issues. I'm assuming this isn't holding up the actual merge though and we can fix this all up in future PRs?


Darwin: Deprecate MTRAsyncCallbackQueue and clone into MTRAsyncWorkQueue

MTRAsyncCallbackQueue was accidentally made part of the public API, which is now constraining our ability to refactor its API. This change "renames" the class to MTRAsyncWorkQueue (and similar renames for related types), but leaves the existing MTRAsyncCallbackQueue class in place. (More precisely, only the parts of it that were public are retained.)
Also disable TAPI for Debug builds so we can easily unit-test internal parts of the framework.

Note: I mostly reviewed by diffing the new files against the pre-rename versions. I wish git had better support for explicit copy-and-modify....

Yeah I was hoping git would recognize this as a rename since I made effectively no changes to the copied versions, but doesn't look like it does.

Fast-tracking Darwin-only change.

I was hoping git would recognize this as a rename since I made effectively no changes to the copied versions

The problem was the old file was still there...


verbs: fix ListRecords with resumptionToken

Adds missing field metadataPrefix in ListRecords schema with
resumption token.  (closes #88)

Signed-off-by: Jiri Kuncar<EMAIL_ADDRESS>

Thanks a lot for the bug fixes 👍


⚠ ClamAV has degraded performance

In a6b0070, ClamAV (https://spamassassin.apache.org/) experienced degraded performance:

HTTP code: 200
Response time: 192 ms

Resolved: ClamAV performance has improved in f350376 after 14 minutes.


refactor: remove unnecessary scripts

Remove unnecessary scripts
What does this PR do?

resolves 496

Steps to test

The site build is still working

CheckList

[ ] The content is available in both English and Spanish

Good Catch!
LGTM did you test using yarn start and yarn build locally?

Yes, I did.


Add Pinecone integration

Fixes # 4061
These changes introduce a new Langchain integration for the Pinecone vector database, which will ultimately replace the soon to be deprecated Pinecone community implementation.

Thank you! Excited to get this in peoples' hands!


Input Dialog Request

Hi sir. Can you also implement an input dialog like this?

An input dialog that accepts input when confirmed.
I've tried ACR.userdialog's prompt but it's kinda hard to customize.

Hi, I am planning to implement this feature but maybe in version 1.3. I am still fixing some minor bugs and will release version 1.1.2. For now, I will re-open this issue as a feature request.


Support for LXC builder

commit eba3fd18044d4cc9facec7df07930a96fbef6c3e
Author: Blazej Kwasniak<EMAIL_ADDRESS>Date:   Tue Oct 10 20:20:32 2017 +0200
Adding some unit test for LXC builder

commit 478f95ef6f527746d4a6bf285e31db2ab48e8933
Author: Blazej Kwasniak<EMAIL_ADDRESS>Date:   Tue Oct 10 20:20:07 2017 +0200
Adding support for LXC builder

Fixing #23

Coverage increased (+0.06%) to 81.511% when pulling 135325737ab0216837d9b790ea92b0769469bb1d on blazejkw:issue_23 into c8cce9a266194e4dd1b40b4d59aa0ef67be13730 on mayn:master.

closing + reopen to build against python3 checks

Coverage increased (+0.2%) to 81.637% when pulling 135325737ab0216837d9b790ea92b0769469bb1d on blazejkw:issue_23 into c8cce9a266194e4dd1b40b4d59aa0ef67be13730 on mayn:master.

Coverage increased (+0.2%) to 81.637% when pulling 135325737ab0216837d9b790ea92b0769469bb1d on blazejkw:issue_23 into c8cce9a266194e4dd1b40b4d59aa0ef67be13730 on mayn:master.


Bundle tries to load its JS resources using invalid URL

When I enter any form within this bundle (either block form or page form) bundle tries to load its JS resources using invalid URL:

Page at:
http://localhost:8080/app_dev.php/admin/pages/new
Requested resources (with 404 error):
http://localhost:8080/bundles/_themes/[theme_name]/default/bitbagsyliuscmsplugin/js/bitbag-page-slug.js
http://localhost:8080/bundles/_themes/[theme_name]/default/bitbagsyliuscmsplugin/js/bitbag-page-slug.js

Page at:
http://localhost:8080/app_dev.php/admin/blocks/new/image
Requested resources (with 404 error):
http://localhost:8080/bundles/_themes/[theme_name]/default/bitbagsyliuscmsplugin/js/bitbag-block-image-preview.js
http://localhost:8080/bundles/_themes/[theme_name]/default/bitbagsyliuscmsplugin/js/bitbag-block-image-preview.js
Yep, both are requested twice lol. The base path for the resources should be: /bundles. This is my directory structure:

I'm using:
        "php": "^7.1",
        "bitbag/cms-plugin": "^1.3",
        "sylius/sylius": "1.2.*",
        "symfony/symfony": "^3.4|^4.1"

This is how: Sylius\Bundle\ThemeBundle\Asset\Package\PathPackage works. If requested asset is not an absolute path, it merges the path with the theme context if one is set:
        if ($this->isAbsoluteUrl($path)) {
            return $path;
        }

        $theme = $this->themeContext->getTheme();
        if (null !== $theme) {
            $path = $this->pathResolver->resolve($path, $theme);
        }

My bad :D :dagger:

Anyway, thanks for the information. There were many people in the community that had problems with theming in this plugin. CC @patrick477.

Well the sylius:theme:assets:install has to be called.

We will mention it in the README. Thanks!


Evaluate how IITB might operationalize the collection of DORA's 4 key metrics

Need to evaluate how, realistically, we will be able to collect data to measure the 4 key metrics defined in DORA and highlighted in our Logic Model:

Lead time for changes
Deployment frequency
Time to restore service
Change failure rate

This is to be used:

As part of the Logic Model
Cross referenced with the TB Sub for the technical deb  (issue #956)
As part of the Alternate IT Solution Delivery Model

#981


Fixes to group management

Check that groups added with addToGroups are prefixed with sailfish- or
account- prefix.
Change removeGroup to take gid instead of group name and move group
removal on failure inside LibUserHelper::addUser() as it knows better
how to deal with it.
Check in SailfishUserManager::addUser() that the group name is not
reserved. Also treat already existing home directory the same way
(increment the number at the end of username).

LGTM.

Fixed a mistake with the first check I added. Also added that check to removeFromGroups for symmetry. Now this should be tested that it's actually working for all changes.


Implement gorelease and add brew support

It would be great to see goreleaser added and in the process add brew support.
https://github.com/goreleaser/goreleaser
https://goreleaser.com/#homebrew

i can help with that :)

I started #380 with what's already present.

Now, #405, #406.

@caarlos0 @estahn see #585 and then I think we can come back to this, maybe?


feat: add new icons unlock stroked

Proposed Changes
Add new 3 icons unlock stroked
Potential Breaking Changes
no
Acceptance Criteria

I just realized that the icon unlock-stroked-small is not ready to be used and needs to be fixed by UX since this svg file mixes fill and stroke. You can see in the screenshot, the shape is not correct. @toofff @guscoveo


Modifiications to make outer UI match Scrimba colors

Hi! Thanks for developing this theme. I installed it a few days ago but felt the editor didn't really match scrimba's colors. It felt like I was using normal VScode but with scrimba syntax highlighting.
I made these edits in settings.json to make it match the website a bit more:
"workbench.colorCustomizations": {
    "[Scrimba Dark Theme Editing]": {
        "statusBar.background": "#4a5667",
        "tab.activeBackground": "#1f1e1c",
        "tab.inactiveBackground": "#272723",
        "titleBar.activeBackground": "#4a5667",
        "editorGroupHeader.tabsBackground": "#272723",
        "activityBar.background": "#4a5667",
        "activityBar.activeBackground": "#4a5667",
        "activityBar.activeBorder": "#334155",
        "sideBar.background": "#272723",
        "sideBarSectionHeader.background": "#272723",
    }
}

I don't know how to create a VScode theme myself, so I'm adding these modifications here in lieu of a pull request if you would like to incorporate them into your theme.

Hey. Thank you for your contribution. I will apply your modifications to it.


Shader code gen: currently unable to pass texture as function parameter

On some platforms a texture is actually a texture object plus a sampler object, this makes it basically impossible to pass a texture as a function parameter...
On D3D11, this is not as much of a problem, since texture+sampler uniform are accessible as globals, so that functions can access them directly. But also there it would make sense to pass textures  as function params.
Possible solution (should work also for D3D11):
Create a struct with both texture and sampler object, and setup local texAndSampler object as local variable in vertex- or fragment-shader main function. Pass this object around as a single parameter.
struct _texAndSampler {
    texture2d<float,access:sample> t;
    sampler s;
};
fragment float4 fsMain(
texture2d<float,access::sample> _param_tex [[texture(0)]],
sampler _param_tex_sampler [[sampler(0)]])
{
    // start generated
    _texAndSampler tex;
    tex.t = _param_tex;
    tex.s = _param_tex_sampler;
    // end generated
    func(tex);

This is fixed for Metal now, not yet for D3D11.

Now fixed for D3D11 as well.


Support segmented scans

Is your feature request related to a problem?
It is pretty common to want to run cumsum  and have the sum reset when a boolean flag array is 1.  This is so common it has its own Wikipedia page and is discussed in Blelloch (1993) (Section 1.5)
Here's a real example of someone trying to implement it in a fairly roundabout way.
time_cumsum = cube.cumsum(dim = 'time')
cumsum = time_cumsum - time_cumsum.where(cube== 0).ffill(dim = 'time').fillna(0)

We have a few options to implement it:

We could introduce a new method DataArray.segmented_scan(flags, op="sum") or a new class DataArray.segment.cumsum()? A dask/cubed friendly version that does all of this in a single scan should be fairly straightforward to write (and similar to our ffill, bfill wrappers).

In a way this generalizes resample and it just struck me that the example above could be written as the following,  which should be OK once flox adds scans
group_idx = (cube == 0).cumsum('time')
cubed.groupby(group_idx).cumsum()

We could use our new Grouper functionality to expose a "flag" grouper that hides the group_idx = (cube == 0).cumsum('time') line.

My concern with (2) and (2.i) is that they are not at all obvious for most of our userbase.

@dcherian I feel like you're practically the only person who would have realized that this is expressible as (2) 😅
I like the idea of adding some kind of cumsum syntactic sugar, especially if the underlying implementation can be in terms of groupby so it doesn't add much maintenance burden.

Brief reminder that we have .cumulative, so we could use that to add in some complications if needed!


[INLONG-6194][Agent] Support parsing metrics for different components

Prepare a Pull Request
Support different components to parse their related metric.

Fixes #6194

Motivation
Because the metrics uploaded by different agent components may be different, I split the metric item id_counter of prometheus and use KEY_PLUGIN_ID or KEY_COMPONENT_NAME as the primary key.
It is convenient for the different metric operation behind, and then there will be no common empty  data dimension in different component.

 different agent components means different collect types?

 different agent components means different collect types?

KEY_PLUGIN_ID or KEY_COMPONENT_NAME can identify a plugin/component.


add Logo to the website

add gssoc-ext,hactoberfest accepted,level label to the issue

I would like to work on this issue.Could you please assign me this task under the GSSOC-ext and Hacktoberfest-accepted tags? I’m excited to contribute and believe this improvement will make a noticeable difference.
Thanks so much!

I would also like to contribute to this

I would like to contribute Please assign the task.


Add persistence to postgresql deployment on helm

Add persistence to postgresql database, as by now, all the data is lost in machine reboot.
The implementation adds a permanent volume and permanent volume claim, together with some small changes in the values usage.
Unfortunately, I have not found the way to use the globals mountPath in the postgresql values (the value is duplicated) as the bitnami chart doesn't run template rendering

This is already enabled by default by the bitnami helm chart, it actually works on my machine :D

This is already enabled by default by the bitnami helm chart, it actually works on my machine :D

We already commented in other thread, but I think this pvc don't create permanent mounts, so when the machine hosting k3s is rebooted, the data is lost.
Here some links on what bitnami says to enable persistence layer:
https://github.com/bitnami/charts/tree/master/bitnami/postgresql/#persistence

Closing. The issue looks something else when custom db image is used


Feature: built-in image diffs

It'd be great to have a built in image diff-ing tool so you can get the overlaid diff of an image in addition to the (existing) clever mouse-over reveal UI.
An easy place to start would be using the GHUnit CoreGraphics image diff-ing code I wrote a few years ago. It'd just need to be changed to use NSImage APIs instead of UIGraphics* APIs, but that should be super easy.
The fourth frame of this screenshot (from GHUnit) shows what this style diffs look like:

The way I imagine this to work is that the 'diff' button would become a toggle button that toggles between the original mouse-over reveal UI and the image diff. Maybe we add an additional button "Open in Kaleidoscope" so Kaleidoscope fans can still get there easily.

Hopefully I can get some time in the next few weeks to take a stab at this.

Oh ha! Looks like FBSnapshotTestCase already generates the diff image, using that same code linked above from GHUnit.
https://github.com/facebook/ios-snapshot-test-case/blob/master/FBSnapshotTestCase/Categories/UIImage%2BDiff.m
So this is just a matter of swapping out the mouse-over reveal ui with the diff'd image.

:+1:

I gave this a try in https://github.com/orta/Snapshots/pull/39

Neat! I'll give it a go


access: restrict access per object

NEW Adds the ability to restrict access per object independently from
the parent.

Reviewed-by: Jiri Kuncar<EMAIL_ADDRESS>Reviewed-by: Esteban J. G. Gabancho<EMAIL_ADDRESS>Signed-off-by: Harris Tzovanakis<EMAIL_ADDRESS>

ping @jirikuncar


export legendre helper functions

Please fix the conflicts and tell me if it's ready to be merged!

sorry about that I forgot how forks work, should be good now?


Add drystreak forestry

Add forestry to the drystreak command, have it compare fox whistle, golden pheasant egg, petal garland and sturdy beehive parts against forestry events completed.

hey @ellipsis-dev can you implement this?

@ellipsis-dev can you make the pr for this? However step 1 isn't required.

@ellipsis-dev can you make the pr for the above?

@ellipsis-dev


Preparation for Zero Downtime Deployment

This PR sets the stage for enabling zero-downtime deployment (ZDD) for ReportStream. This work is heavily adapted from @benwarfield-usds ZDD setup for SimpleReport.
Since I am unable to use my personal Azure development resource group due to the Palo Alto test, I have been unable to verify the actual deployment steps. There will be a second PR to follow in the near future once I verify the GitHub Action is deploying to the staging environment correctly.
In short, the overall deployment flow will look like this in the near future:

Build app
Deploy app to a candidate slot

Done via an Azure GitHub Action

Wait for the app to startup, verify app is running

Existing health checks will be run
Opportunity to add an automatic smoke test here

Swap candidate slot into production (instant, ZDD)

Azure restarts the candidate slot with the production configuration
After the candidate slot is confirmed running with the production slot, all traffic is routed to the new slot
The candidate slot becomes the production slot; the production slot becomes the candidate slot

Previous production slot is now candidate slot, ready to fast rollback if needed or to be deployed to for a new version

Changes

Creates a candidate deployment slot in Terraform
Grants the slot the appropriate access to Key Vaults
Refactors the Terraform module a bit to allow config sharing with the candidate slot
Adds a new candidate slot storage account

This ensures the candidate slot processes jobs separately and does not consume production jobs, since the queue is backed by a storage account

Updates our GitHub Action to tag the Docker image with the action run id

This enables versioned deployments in the future

Uses Azure's GitHub Action to deploy to the candidate slot

The GitHub action waits for the deployment to complete before exiting

DOES NOT swap the slot; keep existing deployment logic the same for now
Creates a Makefile with a command to complete the swap

We found on SimpleReport Terraform is awkward for swapping candidate slots, so using the CLI is clearer, as no resources change in the Terraform state

Checklist
Testing

N/A Tested locally?
N/A Ran quickTest all?
N/A Ran ./prime test against local Docker ReportStream container?
N/A Downloaded a file from http://localhost:7071/api/download?
N/A Added tests?

Security

[x] Did you check for sensitive data, and remove any?
[ ] Does logging contain sensitive data?
[ ] Are additional approvals needed for this change?
[x] Are there potential vulnerabilities or licensing issues with any new dependencies introduced? No, Azure open source module.

Process

[x] Includes a summary of what a code reviewer should verify?
N/A Updated the release notes?
N/A Database changes are submitted as a separate PR?
N/A DevOps team has been notified if PR requires ops support

To Be Done

Verify the candidate slot in parallel to our existing deployment flow
Create a PR after verified to perform the swap

The database needs to be paired with the candidate slot as well. Moving back to draft until that work is done.

Closing this PR in favor of #1318, which has been updated to use our new Terraform stages.


Cannot initiate cluster

Describe the bug
I put in my AWS credentials, then ran the command to create a cluster, but nothing happened. Returned nothing (no error and no output).
To Reproduce
Steps to reproduce the behavior:

aws.cmd configure
python emr_process.py -a create_cluster -c wittline

Desktop (please complete the following information):

Windows 10
Git Bash
AWS CLI 2

Hi @vp223,
I am covering your request, let me try to reproduce the error, I will back with you.  (beer)

Thank you!

Hi @vp223 I already tred and everything is working fine,
Could you please make sure you are in the correct location of the folder?
ramse@DESKTOP-K6K6E5A MINGW64 /c/pyspark-on-aws-emr/code python emr_process.py -a create_cluster -c wittline

I removed the "CreateBucketConfiguration" argument from the "create_cluster" function in s3.py and it worked for me. I will have to see why this location constraint always impedes creation of a bucket for me, not in this tutorial, but all tutorials.

I just read that the default location is us-east-1, so listing this argument will obstruct progress for anyone whose location is such. I should have properly searched comments about the issue before raising it. I apologise. Won't happen again.

Pending:
Try updating your configuration file cluster-ec2-spot-fleet.json with your region zones and subnets. remember always delete your resources created

I will close this issue, the problem was related to the misunderstanding of the steps


Remove conda as run dependency

Closes https://github.com/conda-forge/cudatoolkit-dev-feedstock/issues/12
Checklist

[x] Used a fork of the feedstock to propose changes
[x] Bumped the build number (if the version is unchanged)
[x] Reset the build number to 0 (if the version changed)
[ ] Re-rendered with the latest conda-smithy (Use the phrase @conda-forge-admin, please rerender in a comment in this PR for automated rerendering)

Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.

@conda-forge-admin, please rerender

@conda-forge-admin, please rerender

Hi! This is the friendly automated conda-forge-webservice.
I tried to re-render for you but ran into some issues, please ping conda-forge/core for further assistance.

@h-vetinari, I am okay with merging this with #11.

@andersy005: @h-vetinari, I am okay with merging this with #11.

Actually, I tend to think it's cleaner to do it in this PR. #11 was only about https://github.com/conda-forge/cudatoolkit-dev-feedstock/pull/11/commits/519aabc6ccca6fb3359de99a4fcc2887c721bdcb, the rest is me trying to get the builds passing again.

So once this PR passes, I can rebase #11 to only have that single commit.

Sounds good.

@conda-forge-admin, please rerender

Hi! This is the friendly automated conda-forge-webservice.
I tried to re-render for you but ran into some issues, please ping conda-forge/core for further assistance.

Fixed in #11

Thanks for fixing it in the other PR!


[FLOC-3529] Mark the flaky test as flaky

Fixes https://clusterhq.atlassian.net/browse/FLOC-3529
http://build.clusterhq.com/boxes-flocker?branch=test_deploy-is-flaky-FLOC-3529

Thanks @exarkun
This looks fine.
I checked  on the buildmaster for examples of this failure and found:
root@7e67bd4e4266:/srv/buildmaster/data# for d in `ls -d flocker-acceptance-* | egrep '(aws|rackspace)$'`; do echo "$d"; bzcat $d/*-log-trial-stdio.bz2 | egrep -o 'test_deploy \.\.\. Traceback' | sort | uniq -c; done
flocker-acceptance-aws-centos-7-aws
    124 test_deploy ... Traceback
flocker-acceptance-aws-ubuntu-14.04-aws
    116 test_deploy ... Traceback
flocker-acceptance-rackspace-centos-7-rackspace
     95 test_deploy ... Traceback
flocker-acceptance-rackspace-ubuntu-14.04-rackspace
     71 test_deploy ... Traceback

Most of these seem to be timeout errors...so would there be any sense in increasing the timeout for this test too?
Up to you.
Please merge when you're happy.

Thanks!

Most of these seem to be timeout errors...so would there be any sense in increasing the timeout for this test too?

We might do that.  But, next.  First step is just to mark it flaky so there's a greater chance it passes while other fixes are being implemented.


Running server-side: ReferenceError: XMLHttpRequest is not defined

Is Midiconvert client-side only?   Any work arounds to this?  Thank you!

Problem line: https://github.com/Tonejs/MidiConvert/blob/445102d7cf5c0fbc355ee906b7b43ffadf9d0178/src/Midi.js#L32

Might fork and make a server-side check here and use fs instead of XMLHttpRequest.

There's an example in the README of using MidiConvert with Node.js. Just use the parse method instead of the load method.

Great, thank you!  Sorry I missed that example!
On Wed, Jan 4, 2017 at 9:54 AM, Yotam Mann<EMAIL_ADDRESS>wrote:

Closed #12 https://github.com/Tonejs/MidiConvert/issues/12.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/Tonejs/MidiConvert/issues/12#event-911548962, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AAJF016lufcN6ktIWzZSyouBX0y-DhlCks5rO9zfgaJpZM4LYzMl
.


Fix opsgenie_default_receipients to docs

The current document is opsgenie_default_recipients It has become.
Correctly opsgenie_default_receipients is.

I noticed after making a pull request, I wonder if the documentation is there and the implementation is wrong?

@Qmando can you review?


Reuse existing server if server is already running

Fixed by https://github.com/costrouc/jupyterhub_client/commit/fb53978092cfe0a6779d7b1c8e95588fbe59d4a8


generate a histogram error

when i generate a histogram can not find png in images folder. I got "Once we have that, we can use a tool like Excel or Google Sheets to create the histogram. Would you like me to walk you through the steps?" as openai response.

Is your openai api key for GPT4? Otherwise, imaging is available in the GPT4 version. If yes, then I believe that the openai api does not have access to the computer's folders, so it cannot save.

Get it, I am use gpt-3.5-turbo right now
pandasai running with gpt 4 is very powerful tools!
Thank your feedback, I am try to running pandasai without gpt access data information any idea on it?
從我的iPhone傳送
Fabrício do Canto @.***> 於 2023年5月28日 00:55 寫道：

Is your openai api key for GPT4? Otherwise, imaging is available in the GPT4 version. If yes, then I believe that the openai api does not have access to the computer's folders, so it cannot save.
—
Reply to this email directly, view it on GitHubhttps://github.com/ysbrianlee/pandasai/issues/1#issuecomment-1565594239, or unsubscribehttps://github.com/notifications/unsubscribe-auth/A6VF47EO33U3FDFAGNJLO53XIIWYVANCNFSM6AAAAAAYJIKJCM.
You are receiving this because you authored the thread.Message ID: @.***>


[YUNIKORN-2011] Incorrect link in Kubernetes Shim Design

What is this PR for?
in https://yunikorn.apache.org/docs/next/archived_design/k8shim#the-admission-controller
the link in mutation webhook is
https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#validatingadmissionwebhook
while it should be
https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#mutatingadmissionwebhook
What type of PR is it?

[x] - Bug Fix

Todos
N/A
What is the Jira issue?
https://issues.apache.org/jira/browse/YUNIKORN-2011
How should this be tested?
N/A
Screenshots (if appropriate)
N/A
Questions:
N/A

We record different versions of document, so files placed in the version folder should not be modified.

Thanks for the comment

We record different versions of document, so files placed in the version folder should not be modified.

If I understand correctly, does that mean we won't fix document in older versions (this fix here includes typos, incorrect web links) ?

Sorry for some misunderstanding, I saw a PR about modifying the previous version, and I thought it was possible to modify to the previous version if it was typo.

Sorry for some misunderstanding, I saw a https://github.com/apache/yunikorn-site/pull/142 about modifying the previous version, and I thought it was possible to modify to the previous version if it was typo.

Thanks for the comment !


GPUCI Failures

We are currently seeing gpuCI failures limited to CuPy.  It seems like most of the errors are around Jitify:
https://gpuci.gpuopenanalytics.com/job/dask/job/dask/job/prb/job/dask-prb/2901/CUDA_VER=11.5,LINUX_VER=ubuntu18.04,PYTHON_VER=3.9,RAPIDS_VER=22.12/testReport/junit/dask.array.tests/test_cupy_sparse/test_sparse_concatenate_0_/

E           cupy.cuda.compiler.JitifyException: Runtime compilation failed

This has been reported https://github.com/dask/dask/pull/9635#pullrequestreview-1171197377 and also observed in https://github.com/dask/dask/pull/9634: https://gpuci.gpuopenanalytics.com/job/dask/job/dask/job/prb/job/dask-prb/2901/
I tested this locally with CuPy 11.2.0 and thus far have not been able to reproduce
cc @charlesbluca @pentschev

Same here, tested with the same docker image even and still no failures. Also repeating those tests didn't help, even cleaning CuPy's cache (rm -rf ~/.cupy) before each repetition.

Looking more carefully at the log, the error shows:

20:43:06 /opt/conda/envs/dask/lib/python3.9/site-packages/cupy/cuda/compiler.py:264: JitifyException
20:43:06 ----------------------------- Captured stdout call -----------------------------
20:43:06 ../../block/block_raking_layout.cuh(40): warning: ../util_namespace.cuh: [jitify] File not found
20:43:06 ../../block/block_raking_layout.cuh(40): warning: ../util_namespace.cuh: [jitify] File not found
20:43:06 ../../block/block_raking_layout.cuh(40): warning: ../util_namespace.cuh: [jitify] File not found
20:43:06 specializations/block_reduce_raking.cuh(37): warning: ../../warp/warp_reduce.cuh: [jitify] File not found
20:43:06 specializations/block_reduce_raking.cuh(37): warning: ../../warp/warp_reduce.cuh: [jitify] File not found
20:43:06 specializations/block_reduce_raking.cuh(37): warning: ../../warp/warp_reduce.cuh: [jitify] File not found
20:43:06 specializations/block_reduce_raking.cuh(38): warning: ../../thread/thread_reduce.cuh: [jitify] File not found
20:43:06 specializations/block_reduce_raking.cuh(38): warning: ../../thread/thread_reduce.cuh: [jitify] File not found
20:43:06 specializations/block_reduce_raking.cuh(38): warning: ../../thread/thread_reduce.cuh: [jitify] File not found
20:43:06 specializations/block_reduce_raking.cuh(39): warning: ../../util_ptx.cuh: [jitify] File not found
20:43:06 specializations/block_reduce_raking.cuh(39): warning: ../../util_ptx.cuh: [jitify] File not found
20:43:06 specializations/block_reduce_raking.cuh(39): warning: ../../util_ptx.cuh: [jitify] File not found
20:43:06 specializations/block_reduce_raking.cuh(40): warning: ../../util_namespace.cuh: [jitify] File not found
20:43:06 specializations/block_reduce_raking.cuh(40): warning: ../../util_namespace.cuh: [jitify] File not found
20:43:06 specializations/block_reduce_raking.cuh(40): warning: ../../util_namespace.cuh: [jitify] File not found
20:43:06 cupy/cub/cub/block/block_reduce.cuh(37): warning: specializations/block_reduce_raking_commutative_only.cuh: [jitify] File not found
20:43:06 cupy/cub/cub/block/block_reduce.cuh(37): warning: specializations/block_reduce_raking_commutative_only.cuh: [jitify] File not found
20:43:06 cupy/cub/cub/block/block_reduce.cuh(37): warning: specializations/block_reduce_raking_commutative_only.cuh: [jitify] File not found
20:43:06 cupy/cub/cub/block/block_reduce.cuh(38): warning: specializations/block_reduce_warp_reductions.cuh: [jitify] File not found
20:43:06 cupy/cub/cub/block/block_reduce.cuh(38): warning: specializations/block_reduce_warp_reductions.cuh: [jitify] File not found
20:43:06 cupy/cub/cub/block/block_reduce.cuh(38): warning: specializations/block_reduce_warp_reductions.cuh: [jitify] File not found
20:43:06 cupy/cub/cub/block/block_reduce.cuh(39): warning: ../util_ptx.cuh: [jitify] File not found
20:43:06 cupy/cub/cub/block/block_reduce.cuh(39): warning: ../util_ptx.cuh: [jitify] File not found
20:43:06 cupy/cub/cub/block/block_reduce.cuh(39): warning: ../util_ptx.cuh: [jitify] File not found
20:43:06 cupy/cub/cub/block/block_reduce.cuh(41): warning: ../thread/thread_operators.cuh: [jitify] File not found
20:43:06 cupy/cub/cub/block/block_reduce.cuh(41): warning: ../thread/thread_operators.cuh: [jitify] File not found
20:43:06 cupy/cub/cub/block/block_reduce.cuh(41): warning: ../thread/thread_operators.cuh: [jitify] File not found
20:43:06 ../util_ptx.cuh(40): warning: util_debug.cuh: [jitify] File not found
20:43:06 ../util_ptx.cuh(40): warning: util_debug.cuh: [jitify] File not found
20:43:06 ../util_ptx.cuh(40): warning: util_debug.cuh: [jitify] File not found
20:43:06 util_debug.cuh(41): warning: util_arch.cuh: [jitify] File not found
20:43:06 util_debug.cuh(41): warning: util_arch.cuh: [jitify] File not found
20:43:06 util_debug.cuh(41): warning: util_arch.cuh: [jitify] File not found
20:43:06 ---------------------------------------------------
20:43:06 --- JIT compile log for /tmp/tmpctm0jpbz/460a5a684a5891f4155954e8acb26d61feb372ee.cubin.cu ---
20:43:06 ---------------------------------------------------
20:43:06 specializations/block_reduce_raking.cuh(81): error: WarpReduce is not a template
20:43:06

20:43:06 specializations/block_reduce_raking.cuh(107): error: name followed by "::" must be a class or namespace name
20:43:06

20:43:06 cupy/cub/cub/block/block_reduce.cuh(236): error: BlockReduceWarpReductions is not a template
20:43:06

20:43:06 cupy/cub/cub/block/block_reduce.cuh(237): error: BlockReduceRakingCommutativeOnly is not a template
20:43:06

20:43:06 cupy/cub/cub/block/block_reduce.cuh(248): error: name followed by "::" must be a class or namespace name
20:43:06 detected during instantiation of class "cub::BlockReduce<T, BLOCK_DIM_X, ALGORITHM, BLOCK_DIM_Y, BLOCK_DIM_Z, PTX_ARCH> [with T=_type_reduce, BLOCK_DIM_X=32, ALGORITHM=cub::BLOCK_REDUCE_WARP_REDUCTIONS, BLOCK_DIM_Y=1, BLOCK_DIM_Z=1, PTX_ARCH=700]"
20:43:06 /tmp/tmpctm0jpbz/460a5a684a5891f4155954e8acb26d61feb372ee.cubin.cu(64): here
20:43:06

20:43:06 cupy/cub/cub/block/block_reduce.cuh(302): error: identifier "RowMajorTid" is undefined
20:43:06

20:43:06 cupy/cub/cub/block/block_reduce.cuh(400): error: name followed by "::" must be a class or namespace name
20:43:06

20:43:06 7 errors detected in the compilation of "/tmp/tmpctm0jpbz/460a5a684a5891f4155954e8acb26d61feb372ee.cubin.cu".

At first, I would assume this is a bug with CUB, but it doesn't make sense that it would fail intermittently though. Still looking.

Seems related to https://github.com/cupy/cupy/issues/6793.

I think this has since been cleaned up.


Add convenience method withSecuritySchemas to OpenAPI

Thanks @marconilanna for the PR!
While I understand the benefits of this method, I would rather not have it. In the OpenAPI specification, the property securitySchemes belongs to the components object, so I think it’s simpler to have it only in our Components class, to mirror that. There is a security property in the OpenAPI object that we might want to add eventually, it which should not be confused with the security schemes.
What do others think?

@julienrf What's the recommended way then to add a SecurityScheme to OpenAPI?
As it is now, this is how we had to do it:
  val api: OpenApi = {
    val t = openApi(
      Info(...)
    )(
      // endpoints ...
    )

    t.withComponents(
      t.components
        .withSecuritySchemas(
          //...
        )
    )
  }

With the proposed method, it would be simplified to:
  val api: OpenApi = openApi(
    Info(...)
  )(
    // endpoints ...
  ).withSecuritySchemas(
    //...
  )

The way you wrote it is the recommended way. I know it’s more steps that with your shortcut but I don’t think this is something we need to do very often. You can use .pipe instead of creating a val, as an slight alternative:
import scala.util.chaining._
val api: OpenApi =
  openApi(
    Info(...)
  )(
    // endpoints ...
  ).pipe { api =>
    api.withComponents(
      api.components.withSecuritySchemas(...)
    )
  }

I wonder if we could have lenses/optics to simplify this, though.

I’m closing the PR but feel free to re-open it if you want to continue discussing this point.


Add FC093 for generated README text

Should fix #658

Way cool. Thanks

One more thing actually. Can you open a PR to https://github.com/Foodcritic/foodcritic-site so we can document the new rule.

Thanks @gordonbondon 👍

@tas50 done - Foodcritic/foodcritic-site#43


libcrypt.so.1: cannot open shared object file: No such file or directory

On Arch, libxcrypt-compat needs to be installed separately.

Seems to be fixed now.


Fix bug that cleared bps instead of services

fixes #320

I think the same kind of issue is present on lines 642-643 also that should fix the checkboxes

@TimHess turns out the "SelectedBuildpacksStringListConverter" was working fine, just named in a misleading way :)
In addition to tracking down the actual reason services were getting applied to the list of selected buildpacks, I also changed the name of that converter to be more accurate to what it actually does now