Update minimum Python version

We should have tests run on the minimum version stated in the setup.py
Include minimum version badge i.e

I won't get to this for atleast a week or so, we decided 3.10 is good
enough.
On Tue, Sep 10, 2024 at 3:07 AM henry senyondo @.***>
wrote:

Assigned #771 https://github.com/weecology/DeepForest/issues/771 to
@bw4sz https://github.com/bw4sz.
—
Reply to this email directly, view it on GitHub
https://github.com/weecology/DeepForest/issues/771#event-14196202245,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAJHBLB5O6S77E7SOQO4YJ3ZV3AHBAVCNFSM6AAAAABN6MQNLSVHI2DSMVQWIX3LMV45UABCJFZXG5LFIV3GK3TUJZXXI2LGNFRWC5DJN5XDWMJUGE4TMMRQGIZDINI
.
You are receiving this because you were assigned.Message ID:
@.***>

--
Ben Weinstein, Ph.D.
Research Scientist
University of Florida


add new link

Hi, I've just built a tool using your awesome archive :)

hi @igrigorik,
did you a chance to review this PR ? Let me know if something is not wrong
Thanks

👍


submitDisabled prop for <Modal type="workflow_step">

https://api.slack.com/reference/workflows/configuration-view

AddsubmitDisabled boolean prop to <Modal> with type="workflow_step".
Provide disabled prop for <Input type="submit" /> (It works only in <Modal type="workflow_step">)

A better idea is to use existing submit prop. Currently Slack is not using the submit text, so allowing boolean type like false as submit prop only in type="workflow_step" may be a good interface.


[VS Code] RPC connection closed.

Error:
RPC connection closed.
Steps to Reproduce:

Version Data

extensionName
VSLS

extensionVersion
0.3.735

protocolVersion
2.2

applicationName
VSCode

applicationVersion
1.28.0

platformName
MacOS

platformVersion
18.0.0

Thanks for reporting the issue. Could you please run the command "Live Share: Export Logs" and drag-and-drop the zip here or send it to<EMAIL_ADDRESS>

Duplicate of #1029


Bevy nursery: a path to upstreaming ecosystem crates

RENDERED
Work done within the broader Bevy ecosystem is sometimes a good fit as part of the core engine.
These crates should live in a nursery owned by the Bevy org for a period of time,
where they can be polished and refined by the broader community,
before eventually being merged in completely.
When this occurs, nursery crate maintainers will be granted scoped merge rights to the main engine.

This RFC came about due to a discussion with @cart, @aevyrie and @alercah at RustConf :)
It presents an alternate approach to some of the goals in #52, to enable faster and more experimental iteration on large well-contained projects.

Ah yes 1 comment: I don't think "pick the winner" is necessarily a drawback so long as those crates are integrated under a feature flag. If there's a "second winner" or even 2 strong crates to begin with, they likely each have strengths and weaknesses and are more suited for some use cases, so I don't think it's bad to have say 2 crates for audio that the user can choose from.

Feedback addressed :) The main point worth addressing explicitly at this point is "nursery crate owners get scoped merge rights". No override for controversial PRs any more; if that process needs accelerating we should address that separately.
We could grant:

No merge rights.
Merge rights to directly relevant code.
Merge rights to adjacent areas of the engine (e.g. all of audio).
Full merge rights for non-controversial PRs.

My personal feeling is that 2/3, possibly graduating to 4 is the right way to go :) In my experience, experimenting with authority over small areas has been a great model for both sides of the equation.

The main point worth addressing explicitly at this point is "nursery crate owners get scoped merge rights".

Why should contributors going through the nursery process get merge rights, when PR contributors do not? I think we need a good answer to that question before deciding on what, if any, merge rights to grant.
Does this imply that large enough PRs should be rejected, and told to go through the nursery process? What are the criteria for this threshold?

Why should contributors going through the nursery process get merge rights, when PR contributors do not? I think we need a good answer to that question before deciding on what, if any, merge rights to grant.

I agree with this. The fact that someone wrote code does not qualify them to maintain it within the context of Bevy. That is a separate concern and should have its own process / criteria.
Large PR vs Nursery are two paths that accomplish the same goal. They should be treated the same in this regard.
I'm open to considering opening the doors to scoped merge rights (maybe via codeowners). But my vote is to remove things of this nature from this RFC and then have that conversation on its own time.

After consideration, I agree with you @cart and @aevyrie. I've updated the RFC to match that position now :)


Run helm install test in create release without prow workflow

Description
This PR prepares the new release workflow that uses the GitHub Actions image-build to use helm install. While we are still using the old release workflow with prow, the run-keb-chart-install-tests-reusable.yaml file has been temporarily duplicated to not break the old workflow.
Changes proposed in this pull request:

Add postgres config for tests
Add temporary run-keb-chart-install-tests-reusable.yaml workflow
Run helm install in release without prow

Related issue(s)

See #831

/unhold


Uninstall does not remove all files.

Describe the issue
Arch WSL files are not fully removed.
To Reproduce
scoop install archwsl
arch
exit
scoop uninstall archwsl
Expected behavior
All Arch WSL files are removed
Screenshots
I started out with 6 GB of free space. This is after 3 reinstalls(ArchWSL is uninstalled).

Enviroment:

Windows build number: 10.0.19042.804
Security Software: Windows Defender
WSL version 1/2: WSL2
ArchWSL version: Latest(<IP_ADDRESS>)
ArchWSL Installer type: Scoop

Ok.
Unregistered but not deleted?
Please check registered status with
wslconfig.exe /l command

It does not show up in the list

Hi I have a similar problem, I posted in Discussions ...
Thanks


Youtube and Vimeo do not work if the player is in  iframe.

Expected behavior
Player should play youtube or vimeo if in a frame
Actual behaviour
The player shows up, controls are visible, screenshot is there, but Play does not work
does not work. Event examples on codepen.io
Steps to reproduce
Create  master.html page. Inside this page, use iframe, referencing to player.html. In player.html put plyr control.
Run master.html
Environment

Browser: Chrome
Version: Latest
Operating System: Windows 10
Version:

Console errors (if any)
for youtube, console is clear, for vimeo there is the error below:
player.js:2 Uncaught (in promise) NotAllowedError: play() failed because the user didn't interact with the document first. https://goo.gl/xX8pDD
at https://player.vimeo.com/api/player.js:2:8726
at Array.forEach ()
at b (https://player.vimeo.com/api/player.js:2:8700)
at e (https://player.vimeo.com/api/player.js:2:10447)
(anonymous) @ player.js:2
b @ player.js:2
e @ player.js:2
Link to where the bug is happening
https://codepen.io/pen?template=bKeXNq
https://codepen.io/pen?template=GGqbbJ

The provided codepen links work fine for me with no errors.

The provided codepen links work fine for me with no errors.

here is another similar ticket https://github.com/sampotts/plyr/issues/1413

Had the same issue, you have to add this attribute to iframe element: allow="autoplay; fullscreen
So it has to be something like this:
<iframe frameborder="0"
        allow="autoplay; fullscreen"
        allowFullScreen
        src="..."></iframe>

I will give it a try, thanks

This problem is also there in chrome on Macs.. Works on windows/linux on chrome, but on mac the video's only play when you mute the video. As soon as you unmute the video it pauses the video and shows the following javascript warning:

Unmuting failed and the element was paused instead because the user didn't interact with the document before.

Above comment only happens when you are using it in a iframe like codepen/jsfiddle, so to test it you can use this jsfiddle:
https://jsfiddle.net/b783zmL2/4

This is Chrome issue. It will only work if the video is muted.

Is there already a solution to this problem?

Unfortunately, the problem still persists. :(


support new mathjax inline-linebreaks

It will break some of our assumptions.

The main point is that we'd need to get a wrapping container that contains all relevant elements (e.g., mjx-container). We already move the data-semantic-speech root up to whatever node we get.
However, this might resurface https://github.com/krautzource/aria-tree-walker/issues/29 but that'd be worth solving (e.g., we can try to move whatever level we have in that container to the SVG though the current duplicated markup in MathJax output might make that somewhat difficult).

However, this might resurface https://github.com/krautzource/aria-tree-walker/issues/29 but that'd be worth solving (e.g., we can try to move whatever level we have in that container to the SVG though the current duplicated markup in MathJax output might make that somewhat difficult).

The link doesn't actually describe it and I'm not sure if that issue came from the same test run.
What I had in mind was an old test run where Chrome's feature for providing image descriptions via machine-learning would pick up on having an image without an accessible name while a screenreader passes by using browse mode.
From a quick test, that seems to be no longer a problem (likely because we set role=presentation on everything).

It seems line-breaking works out of the box.
There's a potential problem to keep an eye on though. MathJax linebreaks lead to duplicates of SRE's data in the output (e.g., duplicate data-semantic-id's).
E.g., x-y=0 will have its top level node duplicated. The first copy will contain the x-y (single, grouped) part, the second copy the =0 (two) parts. Thus, both of these copies will have data-semantic-id, -owns,- children.
Right now, we simply use querySelector to rewrite these things, thus picking the first one we find. Alongside this, aria-tree-walker already highlights all descendants (to get around MathaJax's table/label problem) thus we find all descendants and highlight them.
This doesn't seem to cause any trouble in what I've tested so far but it might conceivably (if MathJax output gets weirder still).
Since the linebreaking support isn't final, let's not worry at this point.

Tiny correction. Styling might have to be revised downstream. If the tree is on the mjx-container, then the SVG might paint outside the box. For example,
      [role="tree"]:focus, [role="tree"]:focus-within {
        background-color: black;
        color: #ffff;
      }

would then also need to e.g., [role="tree"]:focus-within svg.


Support force TARGET=VORTEX

I'm not sure what the defines should be. I made a guess.

Thanks. I'll reduce my PR accordingly. (BTW the cache size information is unused except on a few historic targets, so wrong guesses should not hurt)

Thanks. I'll close this PR then. the only worth salvaging is the L2_DATA_SIZE->L2_SIZE change in cpuid_arm64.c

Picked up now, thank you.


fix: repo code files path on default branch

fixes repo code files path on default branch where gitRef is essentially empty on first visit

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


WASM - Investigate Debugging/Profiling scenario on Edge

We won't support debugging right now, but we need to make sure we don't crash when opening the debugger.

Right now we crash when debugging with wasm functions present

Fixed by #2116


drawing mol with a non zero confID results in bad confID error

Describe the bug
Goal is to make a new Chem.Mol of a given conformer in the application of using o3a align to get the best scoring conformer.  I followed the description outlined in the rdkit blog post https://greglandrum.github.io/rdkit-blog/posts/2023-02-04-working-with-conformers.html and encountered a bug (or misunderstanding) in the visualization of the mol for the different conformers that do not have id=0.
To Reproduce
notebook as done in and go to last line to render a new molecule with the conformer of interest:
https://greglandrum.github.io/rdkit-blog/posts/2023-02-04-working-with-conformers.html
cp = Chem.Mol(esomeprazole,confId=5)
cp
results in
ValueError: Bad Conformer Id in Chem.Draw
Expected behavior
The draw mol function does a hard assumption that it must be confId=0, but when plucking conformers out of a set, it would be nice to keep its ID so as to maintain its id origin.  Could the drawing function take the first conformer to draw?
Alternative drawing tools such as py3dmol will render the conformer correctly since the confId does not seem to be referenced,

Confirmed. Thanks for the bug report @kekulai-fredchang
Here's a short reproducible
from rdkit import Chem
from rdkit.Chem import Draw
from rdkit.Chem import rdDistGeom
m = Chem.AddHs(Chem.MolFromSmiles('CCCCCCC'))
rdDistGeom.EmbedMolecule(m)
m.GetConformer().SetId(5)
d2d = Draw.MolDraw2DCairo(200,200)
d2d.DrawMolecule(m)

FWIW: this doesn't happen with the SVG molecule renderer. It seems to be specific to MolDraw2DCairo

@greglandrum
sorry, kind of new here. is there API to create svg instead of image using function same class as MolDraw2DCairo

@greglandrum sorry, kind of new here. is there API to create svg instead of image using function same class as MolDraw2DCairo

Yes. There is a MolDraw2DSVG


Can I silently formatting user paste the content ？

I don't understand your question, sorry.

I copy the content on the web site will have the style, I want to  remove the style。
eg: copy body  123
I want to get  123

I see a method is removeallformat, but I'm going to have to text and then start event, I hope that after the user input format automatically

You can modify the contents of the fragment property on the willPaste event object in any way you want, or replace it with a new document fragment. The result is what will be inserted. How you transform this content however is up to you.

OK thank you


[organization] remove the upload image button at the bottom of stacks, move to regular action

This is higher priority because it leads to broken functionality is the default application setup.

how so? this should only be visible when the appropriate plugins are enabled.

@richburdon the problem is that currently that's not true, it's visible when stacks plugin is enabled even if ipfs plugin is disabled. This functionality should only be available when IPFS plugin is also enabled.

ok then i'll fix that.


Documentation issue

I found that moving the menu initialization to the timeout function worked instead of the documented version. Otherwise it does not show any suggestions.
My suggestion to be changed on the docs:
window.addEventListener('contextmenu', function(e) {
  // Only show the context menu in text editors.
  if (!e.target.closest('textarea, input, [contenteditable="true"]')) return;

  // The 'contextmenu' event is emitted after 'selectionchange' has fired but possibly before the
  // visible selection has changed. Try to wait to show the menu until after that, otherwise the
  // visible selection will update after the menu dismisses and look weird.
  setTimeout(function() {
    var menu = buildEditorContextMenu();
    menu.popup(remote.getCurrentWindow());
  }, 30);
});

Hm can you determine why? That seems like a bug, which I'd rather not mask with a timeout.


How to extend basic functionality of the MBED API?

I need to generate a signal (PWM) with high frequency. The minimum (standard) period for PWM is 1 uS. How to modify the API to obtain a shorter period?
My board (Nucleo-F401/84 MHz) has the ability to generate a PWM with shorter periods.
Of course, I do not want to program the device (STM32 TIMx)) from the beginning.
I think a better solution would be a slight modification behaviour of the existing API.
For this purpose, I have modified HAL for STMF4 (pwmout_api.c) as follows:

I added and exposed additional variable 'short TIMadditionalPrescaler'
I added 3 lines in ''pwmout_period_us' function for conditionally increase the standard (1000000) prescaler for 1 uS period.
In my application before call method 'period_us' I can set suitable value for TIMadditionalPrescaler.
For example if I need 250 ns PWM period I can set my additional prescaler to 4.

In a similar (easy:) way, we can expand behavior AnalogIn class to add the ability to trigger the measurement via an external GPIO pin.
Now it's time for a general question.
How should we design an MBED API that such minor changes will be possible for the implementation for specific targets? Maybe definitions of each (PMW,AnalogIn, ...) class should contain some elements that enable smooth and easy implementation of additional functionality specific for some target boards. How it should be done from a theoretical point of view?

Just for reference , Erik Olieman's FastPWM.
https://developer.mbed.org/users/Sissors/code/FastPWM/
dinau

@dinau:"FastPWM"
Oh, no. Build new class (e.g BetterAnalogIn, BetterPwmOut, ...) for every basic MBED class it is horrible solution. I know much better. For example we can add to every basic class new method:
'void *getHardwareDevice()'. This method should return pointer to C structure mapping device control registers (or NULL for standard, empty implementation). Having access to control registers, we can change behavior of the device at any time. Or maybe it would be better to add to each class new methods (attach/detach) like in Ticker class. There are many possibilities. I'm interested in how it should be done in accordance with C++ object design principles.

I checked several design patterns, and I think that I found the right solution. I think the best is 'Extension Objects Pattern' (http://st.inf.tu-dresden.de/Lehre/WS06-07/dpf/gamma96.pdf). With this pattern, with each object (eg PwmOut) we can statically (or dynamically) tie additional object which provides fields / methods that modify the behavior of the basic object methods. This solution does not interfere with the existing API. We only need to add one method for each basic class: 'int registerExtension (ExtClass object)'.
In my example we can create new class PwmOutExt with one field 'additionalprescaler'. Create object of this class and register this object.

ARM Internal Ref: IOTMORF-129


[UI][Registry] Validation error is not reset when creating new Registry

Steps:

Create a registry and leave out the email address for the credential
Cancel and click on Add registry

Results:
The validation error is still showing up.
Expected:
Validation error should reset.

The Cancel action seems to be happening as well.  So it is doing both, if the OK succeeds, it will just create.  If the OK has some sort of validation error, it will hit the cancel afterwards and close the overlay.

v0.16.0
Verified Fixed


Donation link / email?

Hi!
I'd like to donate money to support this project. I've been trying to code a script for this exact purpose, when I found this project. I'm amazed at the way it was developed. Its code reads like poetry.
Thanks in advance!

Thank you so much,
I am glad this script was able to help you. I am just a student, and I just wanted to help some people and also learn myself along the way. There is no way to donate, but I am glad, that it was able to help you:)


Jenkins triggers on branches

Today i've noticed that our Jenkins is able to start test run upon commit to branch, not a PR. Not quite sure why it happened, but it would be good to stop Jenkins from doing that, since every parallel build consumes resources.

Should be fixed now...

awesome, tyvm!


Not downloading comments from an image post

At the moment, when an image post gets downloaded, you only get the image with the name of the post, but a separate txt with the posts comment is missing.

Hi @etec-masterofsynapse this is not a bug, but actually a feature request. Right now, the script only downloads post comments with text posts (aka self posts). I made this an enhancement, and will try to tackle it soon!


fix(fmt): comments in empty traits and structs

closes #2888
This uses the new method of comment insertion.

merged https://github.com/FuelLabs/sway/pull/3959 which was work based off of this branch - it was just moving the entire test suite from formatter/mod.rs into its own file (contains the tests from this PR)


We couldn't make changes to your system. Please install or uninstall 'ipfs-npm' package manually

We couldn't make changes to your system. Please install or uninstall 'ipfs-npm' package manually

Hello @ProtiJay! It would be quite nice to have a bit more information. Did that message appear out of nowhere or after you ticked the npm on ipfs box?

I've got this issue as well. It appears, when I open in the IPFS-Desktop application the "status".

@Kuurusch did you have ipfs-npm installed before? I'm trying to figure out the reason why we're displaying this message when it shouldn't...

I uninstalled and reinstalled and the issue did not pop up again.

@hacdias No, not that I know... I searched on my machine and didn't found any! I'm using a Mac.

@Kuurusch did it happen just once or every time you open IPFS Desktop?

I see the same message when I open IPFS Desktop settings on a Mac ("Sierra"). It appears as a sort of popup window at the bottom of the screen.
When I scroll down, I see the checkmark for "Enable ipfs-nmp" being disabled. (This is a fresh first install, and I never had it enabled even.)

Poking around the system a bit, I found this error.log located at "Library/Application\ Support/IPFS\ Desktop/".
Already the first line says:
 [npm on ipfs] Error: Command failed: npm install -g ipfs-npm

So this thingie tries to run a command line behind my back without informing me???

Hello @KurtPfeifle! Definitely there is something wrong here as it shouldn't. I will take a look and get this sorted out in a day or two!


Add method to refresh token

Add method to refresh token

Codecov Report

Merging #47 (c73c0e0) into main (87f77ea) will not change coverage.
Report is 12 commits behind head on main.
The diff coverage is 100.00%.

@@            Coverage Diff            @@
##              main       #47   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files            7         7
  Lines          481       485    +4
  Branches        52        53    +1
=========================================
+ Hits           481       485    +4

Files
Coverage Δ

src/aiowithings/withings.py
100.00% <100.00%> (ø)

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


Get error when trying to run self-quantized versions of Hermes-3-Llama-3.1-8B with 8-Bits and group-size 128

System
Mac OS Sequoia Version 15.0.1 (24A348)
2020 M1 MacBook Pro 16GB
uname -a: Darwin  24.0.0 Darwin Kernel Version 24.0.0: Tue Sep 24 23:36:26 PDT 2024; root:xnu-11215.1.12~1/RELEASE_ARM64_T8103 arm64

transformers       4.45.2

Quantization Command
python -m mlx_lm.convert --hf-path "$model" --quantize --q-group-size 128 --q-bits 8 --mlx-path ~/opt/Workspace/MLX/Hermes-3-Llama-3.1-8B-8Bit

After converting and quantizing NousResearch's Hermes-3-Llama-3.1-8B to 8Bits with groupsize 128, I get the following error when attempting to run the quantized model.
However, if I download and run a similar/identical MLX quantized version of the model from MLX Community's HuggingFace repo, it doesn't illicit any error. And, it runs fine. 🤔
Error Message Generated
Error when loading model: Exception: data did not match any variant of untagged enum ModelWrapper at line 1251003 column 3

I ran the following test to make sure that the model I quantized works outside of LM Studio's mlx engine. These are the results:
python -m mlx_lm.generate --model  /Users/jsarnecki/opt/Models/MLX/Joseph717171/Hermes-3-Llama-3.1-8B-8Bit --prompt "hello"

==========
Prompt: <|begin_of_text|><|im_start|>user
hello<|im_end|>
<|im_start|>assistant

Hello! How can I assist you today? If you have any questions or need information on a particular topic, feel free to ask. I'll do my best to provide helpful and accurate responses.
==========
Prompt: 11 tokens, 6.502 tokens-per-sec
Generation: 40 tokens, 7.242 tokens-per-sec
Peak memory: 7.984 GB

The self-quantized model works with mlx_lm.generate, so my question is: why does LM Studio's MLX engine not work with the quantized models?

Hello, thanks for the report. We believe this issue will be fixed in our next release.

@joseph777111 beta with the bug fix available here: https://lmstudio.ai/beta-releases

@yagil  Thanks, my dude!


2 add LSOA col to EPC

Fixes #2
Description
Create basic pipeline and add functions required to generate enhanced EPC dataset with LSOA column joined from ONS postcode directory.

add base_getters.py: base getters to get dataset from ZIP files
add get_datasets.py: specific getters to get ONSPD dataset
add enhance_epc_functions.py: functions to clean and prepare EPC postcode column and join EPC with ONSPD to add LSOA column
add run_script.py: run script to generate enhanced EPC dataset with additional LSOA and MSOA columns
add requirements.txt
add params to config base.yaml
add schemas.py: data schemas for importing datasets

Instructions for Reviewer
In order to test the code in this PR you need to:

clone repo and follow set up instructions in README
cd to repo folder
run: python asf_heat_pump_suitability/pipeline/run_script.py --epc_path s3://asf-daps/lakehouse/processed/epc/deduplicated/processed_dedupl-0.parquet --save_output s3://asf-heat-pump-suitability/outputs/test.parquet
This should generate the test.parquet file in the above S3 location. The dataset in this file should be EPC (selected cols) + 5 cols from ONSPD: pcd, lsoa11, lsoa21, msoa11, msoa21.

You can test the same function in a notebook with this code:
from asf_heat_pump_suitability.pipeline import run_script
epc_path = "s3://asf-daps/lakehouse/processed/epc/deduplicated/processed_dedupl-0.parquet"
output_path = "s3://asf-heat-pump-suitability/outputs/test.parquet"
test = run_script.main(epc_path=epc_path, save_output=output_path)

In your review, please could you:

check the code works for you
general check for errors/bugs/mistakes in the code and in the logic
check the output of the code is as expected and desired

Checklist:

[x] I have refactored my code out from notebooks/
[x] I have checked the code runs
[ ] I have tested the code
[x] I have run pre-commit and addressed any issues not automatically fixed
[ ] I have merged any new changes from dev
[x] I have documented the code

[x] Major functions have docstrings
[ ] Appropriate information has been added to READMEs

[x] I have explained this PR above
[x] I have requested a code review

@lizgzil I have added a README in the pipeline folder in branch 4_subset_epc. I have created a separate issue for the restructuring and will do that in a separate branch after merging these two to avoid messy merge conflicts. Are you happy for me to merge this PR with that in mind?

yep - thanks Roisin!


Zoom-in animation is broken in master

It looks like zoom-in animation is broken for d3-flame-graph from master/dist. In this simple example, when clicking on SubName02, it's right edge jumps immediately to the right, while left edge animates smoothly to the left. This doesn't happen with older flameGraph script.

  <link rel="stylesheet" type="text/css" href="external/d3-flamegraph/d3-flamegraph.css">

@wonder-mice when you say "older", which version are you referring to?

The one that is in examples:
<EMAIL_ADDRESS>Based on your question looks like you can NOT reproduce it, correct?

I noticed the behavior, but it's a very subtle difference, so wondering when did it start. Not many changes since 2.0.0, so my assumption is that it might be related to the d3 upgrades on 2.0.1.

Subtle? :) I noticed it immediately, it's so irritating.

Not sure we are talking about the same thing...

flamenotflaming.mov.zip

I was wrong, it's broken here as well:
<EMAIL_ADDRESS>Here where it works better:
<EMAIL_ADDRESS>

I see the same behavior, just never noticed when it changed. I generally set my animations to be much faster than the demo. It was either a change in d3 like I mentioned before, or the way zoom is hiding the frames. I'll have to test a few things to narrow it down.

I'm using the same d3 version with<EMAIL_ADDRESS>and<EMAIL_ADDRESS>though (just saying).

There are a few commits from Aug 17, last year that touch this functionality. If 1.0.5 doesn't work, one of those is probably the culprit.

Yes, 1.0.5 is broken.

I'll have a look as soon as I finish working on couple other items on my list.

@wonder-mice let me know if that works

Thanks, it's much better now. That said, it's still looks wonky.
flameanim.mov.zip
I'm not sure how much efforts you are willing to contribute to make it perfect though. If you are interested in improving it, I can formalize what I don't like about current behavior.

There are several small adjustments that could be made, like the text outside the frame rectangle when zooming in and out. Some very simple, some that require larger changes. Like all other enhancements, I'll work on them when I get the time and based on project needs and how much I believe users would benefit from it. If you have something specific in mind, feel free to submit and either me or someone else can pick it up.

I'm looking at transitions code, and now I understand why animations look so ugly. Each node is animated individually on CPU by updating DOM directly and anything more decent-looking will be even more slow. Removing foreignObject makes it much faster, but ultimately doesn't solve the problem and foreignObject allows for much nice node rendering...


[shader-ast] Missing matrix types

The matrix types are missing,
especially implementing the rectangular ones could be involved due to the shape checking, but could be useful.
mat2x2
mat2x3
mat2x4
mat3x2
mat3x3
mat3x4
mat4x2
mat4x3
mat4x4

They're still missing since I've got limited bandwidth and not had any need for either of them so far (apart from mat2x3 which I thought would be there...) Happy to accept PRs, if you feel so inclined! 😉


Dividers on the app should only extend until the contact name instead of the contact pic.

   ____________

Pic name

This may require us to edit the actual flutter widget for the listTile. Not sure we want to do that, but I'll let @Bricktheworld decide

No this is incredibly easy to fix

I think we fixed this. Closing.


Dataset.get_nearest_examples does not return all feature values for the k most similar datapoints - side effect of Dataset.set_format

Describe the bug
Hi team!
I observe that there seems to be a side effect of Dataset.set_format: after setting a format and creating a FAISS index, the method get_nearest_examples from the Dataset class, fails to retrieve anything else but the embeddings themselves - not super useful. This is not the case if not using the set_format method: you can also retrieve any other feature value, such as an index/id/etc.
Are you able to reproduce what I observe?
Steps to reproduce the bug

from datasets import Dataset
import numpy as np

foo = {'vectors': np.random.random((100,1024)), 'ids': [str(u) for u in range(100)]}
foo = Dataset.from_dict(foo)
foo.set_format('numpy', ['vectors'])
foo.add_faiss_index('vectors')
new_vector = np.random.random(1024)
scores, res = foo.get_nearest_examples('vectors', new_vector, k=3)

This will return, for the resulting most similar vectors to new_vector - in particular it will not return the ids feature:
{'vectors': array([[random values ...]])}

Expected behavior
The expected behavior happens when the set_format method is not called:

from datasets import Dataset
import numpy as np

foo = {'vectors': np.random.random((100,1024)), 'ids': [str(u) for u in range(100)]}
foo = Dataset.from_dict(foo)
# foo.set_format('numpy', ['vectors'])
foo.add_faiss_index('vectors')
new_vector = np.random.random(1024)
scores, res = foo.get_nearest_examples('vectors', new_vector, k=3)

This will  return the ids of the similar vectors - with unfortunately a list of lists in lieu of the array I think for caching reasons - read it elsewhere
{'vectors': [[random values on multiple lines...]], 'ids': ['x', 'y', 'z']}

Environment info

datasets version: 2.12.0
Platform: Linux-5.4.0-155-generic-x86_64-with-glibc2.31
Python version: 3.10.6
Huggingface_hub version: 0.15.1
PyArrow version: 11.0.0
Pandas version: 1.5.3

Actually, my bad -- specifying
foo.set_format('numpy', ['vectors'], output_all_columns=True)

fixes it.


Closed STDERR

RestClient closed the STDERR and made the whole Rails app on error.
What caused this behavior is an RestClient.post to a dead domain, saying http://test_a_b_c_d_e.io.
I don't understand how the code closed STDERR but I think it should be avoided.
See how I tracked down to RestClient
- "/u/apps/MyAppName/shared/bundle/ruby/2.2.0/gems/rest-client-1.8.0/lib/restclient/payload.rb:211:in
  `ensure in create_file_field'"
- "/u/apps/MyAppName/shared/bundle/ruby/2.2.0/gems/rest-client-1.8.0/lib/restclient/payload.rb:211:in
  `create_file_field'"
- "/u/apps/MyAppName/shared/bundle/ruby/2.2.0/gems/rest-client-1.8.0/lib/restclient/payload.rb:181:in
  `block in build_stream'"
- "/u/apps/MyAppName/shared/bundle/ruby/2.2.0/gems/rest-client-1.8.0/lib/restclient/payload.rb:178:in
  `each'"
- "/u/apps/MyAppName/shared/bundle/ruby/2.2.0/gems/rest-client-1.8.0/lib/restclient/payload.rb:178:in
  `each_with_index'"
- "/u/apps/MyAppName/shared/bundle/ruby/2.2.0/gems/rest-client-1.8.0/lib/restclient/payload.rb:178:in
  `build_stream'"
- "/u/apps/MyAppName/shared/bundle/ruby/2.2.0/gems/rest-client-1.8.0/lib/restclient/payload.rb:53:in
  `initialize'"
- "/u/apps/MyAppName/shared/bundle/ruby/2.2.0/gems/rest-client-1.8.0/lib/restclient/payload.rb:14:in
  `new'"
- "/u/apps/MyAppName/shared/bundle/ruby/2.2.0/gems/rest-client-1.8.0/lib/restclient/payload.rb:14:in
  `generate'"
- "/u/apps/MyAppName/shared/bundle/ruby/2.2.0/gems/rest-client-1.8.0/lib/restclient/request.rb:114:in
  `initialize'"
- "/u/apps/MyAppName/shared/bundle/ruby/2.2.0/gems/rest-client-1.8.0/lib/restclient/request.rb:41:in
  `new'"
- "/u/apps/MyAppName/shared/bundle/ruby/2.2.0/gems/rest-client-1.8.0/lib/restclient/request.rb:41:in
  `execute'"
- "/u/apps/MyAppName/shared/bundle/ruby/2.2.0/gems/rest-client-1.8.0/lib/restclient.rb:69:in
  `post'"
- "/u/apps/MyAppName/releases/20151111060749/config/initializers/rack_attack.rb:17:in

That backtrace suggests that you are passing STDERR somewhere in the payload hash. This tells RestClient that you want to upload STDERR as a file as multipart/form-data, so it is dutifully trying to upload the stream and close it.
Is this correct? If so, I don't think that's a bug in RestClient.

I was passing a Hash. Here is the code in rack_attack.rb line 17.
  RestClient.post("https://somewhere/", {
    subject: name,
    path: request.path,
    remote_ip: request.ip,
    env: request.env,
    browser: UserAgent.parse(request.user_agent).browser,
    platform: UserAgent.parse(request.user_agent).platform
  })

What is the request.env object? How did you want that serialized as a string?

I see. Thanks!


Create schema for List Response

{
"totalResults":100,
"itemsPerPage":10,
"startIndex":1,
"schemas":["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
"Resources":[{
...
}]
}

leave out "Resources". Caller will receive a map containing "totalResults", "itemsPerPage" and "startIndex". Caller (with the knowledge of what resources are being serialized) can provide the resource schemas one by one and compose the array of "Resources" itself, and then put the array in the map returned previously.


Spec updates

Add pattern match metadata specs and implement other updates, in order to make specs easier to use with downstream apps that use persephone specs directly (e.g. Poseidon). Also finally add an instrumentation fixture.

The spec changes here seem to break generators on downstream things by introducing implicit such-that constraints the gen can't satisfy. I'll narrow down exactly which ones, but it might be good to test specs with s/exercise


Ensure the DefaultChannelHandlerContext is unlinked once removed

Motivation:
At the moment the next / prev references are not set to "null" in the DefaultChannelHandlerContext once the ChannelHandler is removed. This is bad as it basically let users still use the ChannelHandlerContext of a ChannelHandler after it is removed and may produce very suprising behaviour.
Modifications:

Fail if someone tries to use the ChannelHandlerContext once the ChannelHandler was removed (for outbound operations fail the promise, for inbound fire the error through the ChannelPipeline)
Fix some handlers to ensure we not use the ChannelHandlerContext after the handler was removed
Adjust DefaultChannelPipeline / DefaultChannelHandlerContext to fixes races with removal / replacement of handlers

Result:
Cleanup behaviour and make it more predictible for pipeline modifications

Any comments @netty/netty-5 ?

@bryce-anderson haha... it is not really a feature and can give quite some surprising behaviours as "links" may get out of sync etc.

It looks like ChannelPipeline.write() still eagerly chooses the handler to write to (via findContextOutbound), before jumping to the event loop. But that handler may be removed by the time the event is processed on the event loop. That can cause correct code to break with this change. I think all of the ChannelPipeline event methods should jump to the event loop before finding the handler would call.

@ejona86 huh ? It will only call findContextOutbound() directly if on the EventLoop. Otherwise it will schedule a task on the EventLoop which will then call findContextOutbound. I am missing anything ?

@normanmaurer, you're right. I think I accidentally looked at the 4.1 branch because it is still the default in github; I always expect master to be the default.
This seems fine to me, mainly because I feel it is mostly used when a removed handler was called in the first place.

@ejona86 so you approve the change ? If so can you press the button ;) ?

@ejona86 @bryce-anderson any more comments ?

I'm going to be OOO for a bit over a week. In no way am I blocking this PR, but I do think I've raised some valid concerns that should be considered.

@ejona86 thanks for the heads-up. Yep I will have a look again tomorrow and see what I should address :)

@netty-bot test this please

Cool will merge asap

And merged...thanks a lot


Refs #29898 -- Changed fields in ProjectState's relation registry to dict.

See comment.
Follow-up to 196a99da5d9c4c33a78259a58d38fb114a4d2ee8.

@manav014 What do you think?

I think using a dict() would be a better option. I would just like to add another test case in test_state.StateRelationsTests.test_add_field for to_field or when there are multiple foreign keys.
        new_field1 = models.ForeignKey('tests.post', models.CASCADE, to_field="comment")
        project_state.add_field(
            'tests', 'comment', 'all_comments', new_field1, preserve_default=True,
        )
        self.assertEqual(
            project_state.relations['tests', 'post']['tests', 'comment'],
            {'post': new_field, 'all_comments': new_field1},
        )

Thanks for checking :+1:

I would just like to add another test case in test_state.StateRelationsTests.test_add_field for to_field or when there are multiple foreign keys.

We added test for multiple foreign keys in the 196a99da5d9c4c33a78259a58d38fb114a4d2ee8, see test_many_relations_to_same_model.

Yeah! I missed that test. Then the patch is good to go.⛵


No matching version found for<EMAIL_ADDRESS>

Got this error when I was installing react-draft-wysiwyg.
I did npm view html-to-draftjs and found that the latest version  is v1.4.0

I am getting the same issue. Did you perhaps find a solution?


performance investigation: window size performance

i noticed that on my MacBook the player view is laggy when the window covers the full width of the screen. However, when the window only covers half of the screen everything is butter smooth.

this was caused by unnecessary image upscaling.

this was caused by unnecessary image upscaling.


Highlight Layer / Mesh dispose multiplying drawCalls

Note: I can't reproduce what I am seeing in my project locally on the playground. However, I am wondering if it could be due to the locked down render loop, or whatever the PG does in the render loop.
Additionally, I am on 3.0.7 preview release version. I tried upgrading to latest, but latest release is fubar atm due to gui package move (not in the current NPM package.), so haven't been able to see if it is actually fixed, however the code I suspect is causing the problem seems to be the same in master.
So the past few nights I've been trying to fix a draw calls leak in my project. Basically what happens is,

Scene loads, I have 97 draw calls.
Call dispose() on a mesh, any mesh in the scene.
Draw calls are now 210+

I eventually ended up going through line by line replicating a dispose call from the console, to see at what point the issue surfaces. The point at which it surfaced was:
https://github.com/BabylonJS/Babylon.js/blob/master/src/Mesh/babylon.mesh.ts#L1479
So I took the highlight layer out of my scene, and problem was solved. dispose() no longer caused the multiplication of draw calls.
I was not able to replicate on a PG, but here is attempt - https://www.babylonjs-playground.com/#1KUJ0A#65
Wondering if PG is preventing it from happening, seeing as how in render loop it always returns 0 draw calls and what not, and since render loop behaves different on PG?
At any rate:
It seems like the code in question is passing in the mesh regardless of whether it is contained by the highlight layer. I would think it should be checking to see if it exists in the highlight layer first? I didn't fully step through the code yet to see what in the removeMesh function is causing the draw call multiplication, but have to call it for tonight, figured I would open issue while it's fresh.

(also worth nothing, in project locally, I hadn't actually added any meshes to the highlight layer, all I did was instantiate a highlight layer on the scene).

I will look at it ASAP. Thanks for reporting the issue.

It looks impossible to repro on the PG and outside the PG: https://www.babylonjs-playground.com/#1KUJ0A#75
Would be really nice if you can provide a repro.

I close the issue from Github for now and we can continue the investigation on the forum to better target the issue.

Bug reproduced here; http://www.html5gamedevs.com/topic/33816-highlight-layer-creating-additional-draw-calls-bug/?do=findComment&comment=196939

Thanks for the repro it is fixed and will be deployed later today.


chore(experiment): Add pod level disk io stress chaos experiment

Signed-off-by: Udit Gaurav<EMAIL_ADDRESS>Issues

fixes: https://github.com/litmuschaos/litmus/issues/1623

Details

This experiment causes disk stress on the application pod. The experiment aims to verify the resiliency of applications that share this disk resource for ephemeral or persistent storage purposes.

It uses stress-ng to perform this along with --io , --hdd ,  --hdd-bytes flags. --hdd start N workers continually writing, reading  and  removing  temporary  files.  The default  mode is to stress test sequential writes and reads. Whereas write  N  bytes for each hdd process, the default is 1 GB. One can specify the size as % of free space on the file system.

Logs:

pod_io_stress.txt

Can we test scenarios where ephemeral storage limits are specified?

Can we test scenarios where ephemeral storage limits are specified?
In such a case the pod does not get evicted

-oyaml of pod
apiVersion: v1
items:
- apiVersion: v1
  kind: Pod
  metadata:
    annotations:
      kubernetes.io/limit-ranger: 'LimitRanger plugin set: cpu request for container
        nginx'
    creationTimestamp: "2020-09-13T06:52:31Z"
    generateName: nginx-5d486d6f66-
    labels:
      pod-template-hash: 5d486d6f66
      run: nginx
    name: nginx-5d486d6f66-wn75q
    namespace: default
    ownerReferences:
    - apiVersion: apps/v1
      blockOwnerDeletion: true
      controller: true
      kind: ReplicaSet
      name: nginx-5d486d6f66
      uid: e75343a6-a9f3-4e4d-a360-be23edb721f0
    resourceVersion: "353550"
    selfLink: /api/v1/namespaces/default/pods/nginx-5d486d6f66-wn75q
    uid: 9de10a9d-7bbb-4100-9052-2c612e70b1c5
  spec:
    containers:
    - image: nginx:1.17.0
      imagePullPolicy: IfNotPresent
      name: nginx
      ports:
      - containerPort: 80
        protocol: TCP
      resources:
        limits:
          ephemeral-storage: 4Gi
        requests:
          cpu: 100m
          ephemeral-storage: 2Gi
...

root@nginx-5d486d6f66-wn75q:/# df -h
Filesystem      Size  Used Avail Use% Mounted on
overlay          97G   20G   78G  20% /
tmpfs            64M     0   64M   0% /dev
tmpfs           995M     0  995M   0% /sys/fs/cgroup
/dev/sda1        97G   20G   78G  20% /etc/hosts
shm              64M     0   64M   0% /dev/shm
tmpfs           995M   12K  995M   1% /run/secrets/kubernetes.io/serviceaccount
tmpfs           995M     0  995M   0% /proc/acpi
tmpfs           995M     0  995M   0% /proc/scsi
tmpfs           995M     0  995M   0% /sys/firmware


latest version is 11.8.0 which was released on Jan 05, 2021

Hi
Is this project being maintained? the latest version is 11.8.0 which was released on Jan 05, 2021 but the latest commit was pushed on June 2022 to master - Please clarify if this project is in active development and maintenance?

release date of Jan 05, 2021 according to https://pypi.org/project/python-lambda/#history

@nficano Just checking in on this.. Appreciate your reply on it.

@nficano  Bumping this up to have any kind of update?


Fix bug in profiling code and create profiling CI

Description
Fixes #345
This corrects the signature in PModel in the profiling code, and creates a new Github Action that just runs the profiling without the benchmarking, to avoid code rot in future.
Type of change

[ ] New feature (non-breaking change which adds functionality)
[ ] Optimization (back-end change that speeds up the code)
[x] Bug fix (non-breaking change which fixes an issue)

Key checklist

[ ] Make sure you've run the pre-commit checks: $ pre-commit run -a
[ ] All tests pass: $ poetry run pytest

Further checks

[ ] Code is commented, particularly in hard-to-understand areas
[ ] Tests added that prove fix is effective or that feature works

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

Project coverage is 95.34%. Comparing base (1f315ba) to head (37e80d1).
Report is 438 commits behind head on develop.

Additional details and impacted files
@@             Coverage Diff             @@
##           develop     #346      +/-   ##
===========================================
+ Coverage    95.29%   95.34%   +0.05%
===========================================
  Files           28       35       +7
  Lines         1720     2751    +1031
===========================================
+ Hits          1639     2623     +984
- Misses          81      128      +47

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


Updates for v0.7 -- Validator type

What was wrong?
Moving slightly ahead of v0.7 of the spec, this PR updates the Validator type.
How was it fixed?
Update the validator record and the tests.
As there are quite a few changes to land and in the interest of keeping this process reviewable, I plan to introduce a series of PRs that will likely branch off of each other.
If there is stuff I know I'll get to in a later PR then I'll add a TODO comment tagged for me and keep moving.
It would be great if relevant contributors could approve these PRs as they land so we can get them merged in -- getting the earlier stuff merged in will make the later stuff towards the v0.7 spec more manageable (compared to say, one massive PR that touches every line of code!)
To-Do
Cute Animal Picture

the linter failures here are temporary to the multi-PR v0.7 update.
and the fixture failures may also not get fixed until all of the spec updates land.
So consider this PR ready for review in lieu of the failing tests... I suppose the way to work around this is to go ahead w/ a multi-PR approach but then once the final PR is together just have one big merge of the final stuff...

@ralexstokes
I made a list of PRs after https://github.com/ethereum/eth2.0-specs/commit/b007d5aa92f183be7eb8001db09d205767b2838b:

[x] [NO LOGIC/NAME UPDATE] https://github.com/ethereum/eth2.0-specs/pull/1213: Clarify comment on phase 0 transfers
[ ] https://github.com/ethereum/eth2.0-specs/pull/1214: Remove duplicate custom type definitions
[x] https://github.com/ethereum/eth2.0-specs/pull/1215: validator_registry -> validators
[x] [SSZ] https://github.com/ethereum/eth2.0-specs/pull/1216: Change uint aliases to just be subclasses
[x] [NO LOGIC/NAME UPDATE] https://github.com/ethereum/eth2.0-specs/pull/1212: phase 0 doc standardization b4 spec freeze
[x] [SSZ] https://github.com/ethereum/eth2.0-specs/pull/1180: pyspec-SSZ: lists-rework (enable static generalized indices) + fully python class based now
[ ] https://github.com/ethereum/eth2.0-specs/pull/1220: Critical fix: introduce back total-value check
[ ] [BLS] https://github.com/ethereum/eth2.0-specs/pull/1222: Small update to typing in BLS spec file
[x] [Fork choice rule] https://github.com/ethereum/eth2.0-specs/pull/1198: fork choice rule updates
[ ] https://github.com/ethereum/eth2.0-specs/pull/1210: Checkpoints in beacon spec
[x] [Phase 1] https://github.com/ethereum/eth2.0-specs/pull/1209: Resolves issue in early_secret_reveal() testing
[ ] https://github.com/ethereum/eth2.0-specs/pull/1217: Slashing penalty calculation change
[x] [V-guide] https://github.com/ethereum/eth2.0-specs/pull/1218: Hardened Eth 1.0 voting strategy
[ ] https://github.com/ethereum/eth2.0-specs/pull/1225: get_attesting_indices set instead of sorted
[ ] https://github.com/ethereum/eth2.0-specs/pull/1224: Add Bitlist and Bitvector
[ ] https://github.com/ethereum/eth2.0-specs/pull/1219: Compact committee roots
[x] [NO LOGIC/NAME UPDATE] https://github.com/ethereum/eth2.0-specs/pull/1230: fix comment
[x] [NO LOGIC/NAME UPDATE] https://github.com/ethereum/eth2.0-specs/pull/1206: more tests
[x] [NO LOGIC/NAME UPDATE] https://github.com/ethereum/eth2.0-specs/pull/1221: Clarify get_randao_mix accessor from generate_seed
[x] [NO LOGIC/NAME UPDATE] https://github.com/ethereum/eth2.0-specs/pull/1228: Some fixes to finality tests
[ ] https://github.com/ethereum/eth2.0-specs/pull/1202: Clean up genesis trigger
[x] [NO LOGIC/NAME UPDATE] https://github.com/ethereum/eth2.0-specs/pull/1234: fix type hint
[x] [NO LOGIC/NAME UPDATE] https://github.com/ethereum/eth2.0-specs/pull/1235: fix comment
[ ] https://github.com/ethereum/eth2.0-specs/pull/1237: Drake clean up
[x] [NO LOGIC/NAME UPDATE] https://github.com/ethereum/eth2.0-specs/pull/1243: markdown linter
[x] [NO LOGIC/NAME UPDATE] https://github.com/ethereum/eth2.0-specs/pull/1238: Update test vector generators
[x] [NO LOGIC/NAME UPDATE] https://github.com/ethereum/eth2.0-specs/pull/1245: Fix ToC
[x] [NO LOGIC/NAME UPDATE] https://github.com/ethereum/eth2.0-specs/pull/1249: Minor python style tweaks
[ ] https://github.com/ethereum/eth2.0-specs/pull/1248: Fix genesis effective balance
[ ] https://github.com/ethereum/eth2.0-specs/pull/1241: Renaming of functions
[ ] https://github.com/ethereum/eth2.0-specs/pull/1247: add back in active_index_roots
[ ] https://github.com/ethereum/eth2.0-specs/pull/1246: Fix bls domain type
[x] [NO LOGIC/NAME UPDATE] https://github.com/ethereum/eth2.0-specs/pull/1250: fork_choice_rule_test
[x] [NO LOGIC/NAME UPDATE] https://github.com/ethereum/eth2.0-specs/pull/1236: exec_v_spec
[x] [V-guide] https://github.com/ethereum/eth2.0-specs/pull/1253: v-guide updates
[ ] https://github.com/ethereum/eth2.0-specs/pull/1251: Drake clean up
[x] [NO LOGIC/NAME UPDATE] https://github.com/ethereum/eth2.0-specs/pull/1252: fork choice rule + ToC
[x] [NO LOGIC/NAME UPDATE] https://github.com/ethereum/eth2.0-specs/pull/1255: remove unnecessary type casting
[x] [NO LOGIC/NAME UPDATE] https://github.com/ethereum/eth2.0-specs/pull/1256: ToC
[ ] https://github.com/ethereum/eth2.0-specs/pull/1257: scale inclusion reward properly
[ ] [SSZ] https://github.com/ethereum/eth2.0-specs/pull/1258: add encoding for bitlist and vector
[x] [NO LOGIC/NAME UPDATE] https://github.com/ethereum/eth2.0-specs/pull/1259: a few config fixes to match spec
[x] [NO LOGIC/NAME UPDATE] https://github.com/ethereum/eth2.0-specs/pull/1260: bump vyper version


parent_data_test.dart spams the console

Presumably we need to override some sort of logging hook to remove the console spam during testing?
00:16 +143: /Users/abarth/git/flutter/flutter/packages/flutter/test/widget/parent_data_test.dart: ParentDataWidget conflicting data
Positioned widgets must be placed directly inside StackRenderObjectWidgetBase widgets.
Positioned(no depth; left: 7.0; top: 6.0; dirty) has a StackRenderObjectWidgetBase ancestor, but there are other widgets between them:
  Positioned(top: 5.0; bottom: 8.0) (this is a different Positioned than the one with the problem)
These widgets cannot come between a Positioned and its StackRenderObjectWidgetBase.
The ownership chain for the parent of the offending Positioned was:
  Positioned ← Stack ← [root]
Positioned widgets must be placed inside StackRenderObjectWidgetBase widgets.
Positioned(no depth; left: 7.0; top: 6.0; dirty) has no StackRenderObjectWidgetBase ancestor at all.
The ownership chain for the parent of the offending Positioned was:
  Flex ← Container ← [root]

/cc @Hixie

Hm, I didn't notice that this was happening for some reason. Yeah, I'll clean that up.

Thanks!


Run ASV only once a day ?

Should we run ASV only once/twice a day on CI ?
Or at least set the concurrency to cancel the previous run if not finished ?
Each run eats about 2h or ci-worker time, and when merging a few PRs we ended up losing more than the time we gained by speeding up the standard test suite.

For example right now our 4 free workers are all busy with ASV, meaning that nothing else runs.

I think that it should only execute once per day.
And on PR should be triggered only on request (if core developers worry about performance)

I'll put some PRs today to fix this and other issues!


Webhooks are not triggered in repositories cloned via ssh

Description
I have a repository with a webhook configured on push events.
The hook is correctly triggered if I click "Test Delivery", and also when the repository is cloned over HTTPS. If I perform code changes from the web view the webhook is also correctly triggered.
However, if I cloned the repo over git@git.example.com:user/repo.git and I push some commits, the hook is not triggered at all. No log traces on the target webapp, no log traces on gitea, no log traces on the nginx proxy.
Am I missing some obvious configuration? Are webhooks actually supported when the events are triggered from an ssh-cloned repo, or do I have to use git hooks for this purpose? If so, is there an easy way to map git hooks to web hooks?
Gitea Version
1.16.8
Can you reproduce the bug on the Gitea demo site?
N/A
Log Gist
No response
Screenshots
No response
Git Version
2.37.0
Operating System
Arch Linux
How are you running Gitea?
Self-hosted on an Arch Linux server, installed via Arch package.
Database
PostgreSQL

What happens when you try to directly open a ssh session?
ssh<EMAIL_ADDRESS>
Do you have access to a shell ? (means that you are not connecting via gitea)
Or do you see the following:

Hi there! You've successfully authenticated with the key named ..., but Gitea does not provide shell access.

(if it is the former, it means that gitea is not handling the ssh connection, which means that the config must be changed)

Thanks for the reply @oliverpool:
> ssh<EMAIL_ADDRESS>Last login: Tue Jul  5 19:31:08 2022 from <IP_ADDRESS>
fatal: Interactive git shell is not enabled.
hint: ~/git-shell-commands should exist and have read and execute access.
Connection to git.platypush.tech closed.

Which should be expected, because I have configured the git user on the system like this:
git:x:105:105::/var/lib/gitea/data/gitea-repositories:/usr/bin/git-shell

I'm using the git-shell, so the user doesn't have a proper shell.
So things should work if I configure bash or another proper shell for the user? Isn't that a security concern though, since it would allow any user with an authorized SSH key to log into the system?

I think this is not correct. The ssh connection should be handled by gitea (which is not the case here).
https://docs.gitea.io/en-us/faq/#ssh-issues

If you do not get the above message but still connect, it means your SSH key is not being managed by Gitea. This means hooks won’t run, among other potential problems.

@oliverpool so what would be the solution? Btw clone/pull/push operations don't seem to be affected. I have also tried to change the git user's shell to /bin/bash. When I do I can login, but hooks still won't run.

@oliverpool yes I've tried it already. This is my server's configuration:
APP_NAME = My Git
RUN_USER = git
RUN_MODE = prod

[server]
PROTOCOL         = http
DOMAIN           = git.example.com
HTTP_ADDR        = <IP_ADDRESS>
HTTP_PORT        = 18888
SSH_ROOT_PATH    = /var/lib/gitea/.ssh
LANDING_PAGE     = explore
LFS_JWT_SECRET   = *********
SSH_DOMAIN       = git.example.com
ROOT_URL         = https://git.example.com/
DISABLE_SSH      = false
SSH_PORT         = 22
LFS_START_SERVER = true
LFS_CONTENT_PATH = /var/lib/gitea/data/lfs
OFFLINE_MODE     = false

[database]
DB_TYPE  = postgres
HOST     = <IP_ADDRESS>:5432
NAME     = gitea
USER     = gitea
PASSWD   = ********
LOG_SQL  = false
SCHEMA   =
SSL_MODE = disable
CHARSET  = utf8
PATH     = /var/lib/gitea/data/gitea.db

[security]
INSTALL_LOCK       = true
SECRET_KEY         =
INTERNAL_TOKEN     = *********
PASSWORD_HASH_ALGO = pbkdf2
DISABLE_GIT_HOOKS = false
DISABLE_WEBHOOKS = false
ONLY_ALLOW_PUSH_IF_GITEA_ENVIRONMENT_SET = false

[oauth2]
ENABLE = true

[U2F]
APP_ID =

[log]
MODE      = console
LEVEL     = info
ROUTER    = console
ROOT_PATH = /var/lib/gitea/log

[git]
PATH =

[service]
REGISTER_EMAIL_CONFIRM            = true
ENABLE_NOTIFY_MAIL                = true
DISABLE_REGISTRATION              = false
ALLOW_ONLY_EXTERNAL_REGISTRATION  = false
ENABLE_CAPTCHA                    = true
CAPTCHA_TYPE                      = image
REQUIRE_SIGNIN_VIEW               = false
DEFAULT_KEEP_EMAIL_PRIVATE        = false
DEFAULT_ALLOW_CREATE_ORGANIZATION = true
DEFAULT_ENABLE_TIMETRACKING       = true
NO_REPLY_ADDRESS                  = noreply.localhost

[repository]
ROOT =
DEFAULT_BRANCH = main
ROOT           = /var/lib/gitea/data/gitea-repositories

[indexer]
ISSUE_INDEXER_TYPE     = elastic
ISSUE_INDEXER_CONN_STR = http://<IP_ADDRESS>:9200
ISSUE_INDEXER_NAME     = gitea_issues

[queue.issue_indexer]
TYPE        = redis
SET_NAME    = issue_indexer
QUEUE_NAME  = gitea_issue_indexer
CONN_STR    = addrs=<IP_ADDRESS>:6379 db=0
WORKERS     = 3
MAX_WORKERS = 5

[webhook]
QUEUE_LENGTH = 10000
DELIVER_TIMEOUT = 10
ALLOWED_HOST_LIST = loopback

[cache]
ENABLED = true
ADAPTER = redis
HOST    = network=tcp,addr=:6379,db=0,pool_size=100,idle_timeout=180

[cache.last_commit]
ENABLED = true

[session]
PROVIDER        = file
PROVIDER_CONFIG = network=tcp,addr=:6379,db=0,pool_size=100,idle_timeout=180

[mirror]
ENABLED = true

[openid]
ENABLE_OPENID_SIGNIN = true
ENABLE_OPENID_SIGNUP = true

sshd_config contains UsePAM yes and no AllowUsers filtering is enabled.

Can you try changing the gitea shell using chsh: https://github.com/go-gitea/gitea/issues/1454#issuecomment-396881115
sudo chsh -s /bin/bash gitea

You can check it beforehand: getent passwd gitea | cut -d: -f7 https://docs.gitea.io/en-us/faq/#ssh-common-errors

If I change the user's shell to /bin/bash (the user is git in my case, not gitea) then I'm able to login to the system over SSH (which is definitely not something I would like):
> ssh<EMAIL_ADDRESS>Last login: Fri Jul  8 09:57:14 2022 from xxx.xxx.xxx.xxx
[git@gitter ~]$

But hooks don't get triggered yet upon push over SSH.

https://github.com/go-gitea/gitea/issues/9481#issuecomment-568683443

Yes that seems to be correct:
[git@gitter gitea]$ cat ~/.ssh/authorized_keys
# gitea public key
command="/usr/bin/gitea --config=/etc/gitea/app.ini serv key-1",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,no-user-rc,restrict ssh-rsa ......

Then something is wrong with the ssh server, since it doesn't seem to execute the command when you login via ssh (otherwise you wouldn't have an unrestricted shell access).

Hmm what could be wrong with it? If UsePAM is enabled then the command should be executed right?

I don't know.
What ssh server are you using ?
Did you restart it after changing the configuration?
If the command is not executed, this is likely not a gitea issue. I am not sure I can help you further.
You have to somehow find out, why your authorized_keys is not interpreted correctly.

I may have found the culprit buried deep in my sshd_config:
Match User git
    PermitEmptyPasswords yes

It seems that in one of my previous attempts to get SSH access to work for git I added that line to the configuration. My guess is that it bypassed the PAM authentication when no password was provided, so the command was never actually called.
After removing that configuration and resetting the git shell to /bin/bash things seem to work as expected:
> ssh<EMAIL_ADDRESS>PTY allocation request failed on channel 0
Hi there, user! You've successfully authenticated with the key named *****, but Gitea does not provide shell access.
If this is unexpected, please log in with password and setup Gitea under another user.
Connection to git.example.com closed.


Handle status 400

Handle status 400  in Branch error
@aaustin @EvangelosG

You confirm that this correction is the same logic as iOS? If so 👍


[Candidate 1v1 Farmlands of the Fallen ZH v3] Ambient sound is missing on most parts of the map

Issue Description
Ambient sound is missing on most parts of the map.
Expected behavior
Ambient sound is audible everywhere.

V3 looks way more "unattractive" than v3 btw.
Wasn't there a rule to use ZH v3 instead?
Anyone knows how I can contact Bamovich?
If I cannot, I could do the changes.

Yes map can be renamed to [RANK] Farmlands of the Fallen ZH v3

https://www.gamereplays.org/community/index.php?showtopic=1051084
Waiting for reply here, otherwise I will upload this version and check last time once again.

Some more sounds have been placed, but most parts of map still have no sound.

I checked audio of new Farmlands version that was supplied somewhere. Birds sound is not well setup. When you scroll slowly from base to farms, there is a very distinct hard cut between no bird and bird sound. This sounds very unpleasant. Bird sound itself also does not fit well, as it is quit intense for farm. It would be better suited to put Ravens on farm, and birds in trees.

Wasn't planning to do this one but in case Relax doesn't get time. I couldn't find any ambient sounds in the map I downloaded today from github so I added some in. Not too many and lowered the wind sounds the way Mixery did.
Farmlands of the Fallen ZH v3.zip

Ambient audio is acceptable. Maybe replace chickens on the windmills with a less dominant sound?

There's chickens there? Lol I didn't even know, (not currently loading the game up) they must come default with the windmill since I didn't place them. I will take a look.

I wasn't sure where the raven sounds were, so I used another bird sound from Forgotten Forest.
And lowered the chicken sounds as well.
Farmlands of the Fallen ZH v3.zip


Download and Upload using IO stream

Description
Added option to download file to BytesIO and upload file from BytesIO.
Additional information
Sometimes it might be handy to be able to download content from server without storing it to a file but only to memory, or upload file from memory.

Side note is that ayon-python-api on pypi seems listed as Python 2 and Python 3 even though this change technically makes it Python 3.2+ compatible.

Side note is that ayon-python-api on pypi seems listed as Python 2 and Python 3 even though this change technically makes it Python 3.2+ compatible.

Good point will do PR changing it.

Code looks good, but I didn't know how to test it.
I wanted to mock downloading dependency package to BytesIO and then saving it:

but it failed:

Maybe its just my messed up test.


[keyvault] style: format to f-string samples/backup_restore_operations.py

Description
Please add an informative description that covers that changes made by the pull request and link all relevant issues.
If an SDK is being regenerated based on a new swagger spec, a link to the pull request containing these swagger spec changes has been included above.
All SDK Contribution checklist:

[x] The pull request does not introduce [breaking changes]
[x] CHANGELOG is updated for new features, bug fixes or other significant changes.
[x] I have read the contribution guidelines.

General Guidelines and Best Practices

[x] Title of the pull request is clear and informative.
[x] There are a small number of commits, each of which have an informative message. This means that previously merged commits do not appear in the history of the PR. For more information on cleaning up the commits in your PR, see this page.

Testing Guidelines

[ ] Pull request includes test coverage for the included changes.

Thank you! Let's discuss how it reflects to original repo later


make config.py read its info from config.mk, and introduce

amuseifier as installed build.py script
amusifier also has an option to output AMUSE_DIR

not sure what the best spelling is for amus(e)ifier


Support for simple arithmetic on fields?

I love this library and the love that's gone into writing and maintaining it!
Has anyone ever suggested adding support for simple arithmetic expressions for numeric fields with field value source, so that we could express rules like Price < 1.05 * YesterdayPrice (where Price and YesterdayPrice are both numeric fields)?
I'm currently interested in linear scaling (a * Field) but no doubt others may be interested in additive (b + Field) and affine (a * Field + b) transforms, for constants a and b that the user specifies in Query Builder (you might decide to limit the complexity of these transforms the library supports).
I can very well imagine writing a custom ValueEditor which renders an input for the constants and a dropdown for the field selector, but how would that be represented in RuleType, and how much work would it be to export that in SQL/CEL?
(Ideally this would also support between/notBetween (per discussion in issue 215), so we could have rules like Price BETWEEN BestBid * 0.99 AND BestAsk * 1.01, though this isn't critical since users can always convert between to a rule group consisting of two rules.)

I have an update, a caveat, and a follow-up question 😄.
Update: I can accomplish this with the library as-is with just a small caveat. Code at https://codesandbox.io/s/lucid-ramanujan-jfqoyh?file=/src/App.tsx and a screenshot:

The code might be the best explanation but I'll try to put how it works into words. For each rule on a numeric field, it stores the scalar(s) for that rule in an object managed by the parent component's state, with

keys as the path (array of numbers) to the rule and
with values as an array of multiplicative scalars (one for most operations, two for between/notBetween).

The caveat is that, as far as I can tell, with the current API for ValueProcessor, there's no way for my custom value processor to know which rule it's running for. That is, because only gets

field: string
operator: string
value: any
valueSource?: ValueSource

it can only use these to find matching rules in the object containing scalars. This will work for a lot of cases but it'll produce the wrong SQL if you write the same rule in two different parts of the ruleset with different scalars. Here's an example of that happening: the price < 1.5 * oldPrice rule is gone, it's now price < 50 * oldPrice which is the scalar for the second rule 😢:

My follow-up: I thiiink a tiny change to the ValueProcessor API would let me work around this problem. If you let ValueProcessors take one more argument—the actual rule it's applying—
export declare type ValueProcessor = (field: string, operator: string, value: any, valueSource?: ValueSource, rule?: RuleType) => string;

and then pass that in at https://github.com/react-querybuilder/react-querybuilder/blob/7aa6097819631a6ff8792dca46ae10678e7d92a6/packages/react-querybuilder/src/utils/formatQuery/formatQuery.ts#L92 then the ValueProcessor would have access to the rule and its path, allowing me to look up exactly which scalar applies to this rule.
What do you think? I'm really surprised and most pleased with how flexible this library is, that I was able to make something so niche with the API as is! Most open to feedback.

You've hit on my biggest regret so far! I wish I had implemented ValueProcessor as (rule: RuleType) => string (or maybe even => any) when I initially created formatQuery. In fact, the default value processors used internally have that signature (see here). But I didn't know how to modify the valueProcessor type definition to accept RuleType instead of the individual properties  without breaking users' existing value processors (the ones implemented in TypeScript, at least).
I may have simply not thought it through yet, but anyway I've got much more to say on this topic...I was in the middle of writing a bigger reply just now. Stay tuned! :)

One more note about the ValueProcessor signature before my longer reply: I've considered adding a ruleProcessor: RuleProcessor option where type RuleProcessor = (rule: RuleType) => any. A ruleProcessor would completely override the default rule processing, including the field and operator handling. (Some export formats, e.g. "mongodb", already use the valueProcessor this way because the structure of the entire result depends on the operator.)
Do you think adding a ruleProcessor option would be better than overloading valueProcessor to accept a RuleType parameter? The only thing about a rule processor is that the user would be responsible for converting the operators, for example "contains" becomes "LIKE" and "doesNotContain" becomes "NOT LIKE". formatQuery handles that automatically now.

Note: when I refer to RQB "handling" or "supporting" something in this comment, I'm including both the <QueryBuilder /> React component (particularly the default ValueEditor) as well as the formatQuery function.
Ok, so...this is actually opening a huge can of worms that I've been pondering for a while now but haven't really had the motivation to think all the way through. I suppose this is that motivation!
One thing I've been considering is adding either a valueSource option or a RuleType property named "function" which would support more complex (and potentially even arbitrary) value structures. The original use case I had in mind was to allow the definiton of functions that took a single argument (like UPPER in SQL) and wrap the value in that function in the output. Something like this:
const query: RuleGroupType = {
  combinator: "or",
  rules: [
    // as RuleType property, with valueSource "value" (implied):
    { field: "f1", operator: "=", value: "lower case text", function: "upper" },
    // as RuleType property, with valueSource "field":
    {
      field: "f2",
      operator: "=",
      value: "f3",
      function: "upper",
      valueSource: "field",
    },
    // as a valueSource option:
    {
      field: "f4",
      operator: "=",
      value: { function: "upper", value: "lower case text" },
      valueSource: "function",
    },
  ],
};
console.log(formatQuery(query, "sql"));
// > "(f1 = upper('lower case text') or f2 = upper(f3) or f4 = upper('lower case text'))"

To make it more configurable, we could add a functions prop to <QueryBuilder /> that defined the allowable functions and how they should be handled in the ValueEditor, with a corresponding formatQuery option that determined the valueProcessor behavior. parseSQL could be updated to handle user-defined functions as well.
The original use case raised in this issue, simple arithmetic, could use a function like "sum" (or "difference", "product", "quotient", etc.) to achieve the "field = value + otherField" requirement.
Your question also has me thinking about an "eval" valueSource option or something similar (it wouldn't actually run eval(), which of course is dangerous). It could instruct formatQuery to dump the contents of the rule's value directly into the output with no preprocessing. That would require some validation/sanitization of the value contents, but that could be done with the existing validator prop/option.
To do it right, configuration should be as flexible as possible, but I really want to avoid making the API surface area of RQB unnecessarily large (and internally complex, for the sake of my own sanity!). With that in mind, I believe both this issue and the issue you asked about in #215 ultimately lead to the same question:
What is the best way to support arbitrary rule value structures in the default ValueEditor component and the defaultValueProcessor function without major breaking changes (and without the code base becoming unwieldy for a solo maintainer such as myself)?

Thanks to your superb suggestion I rewrote the proof of concept to just store the scalars in the value instead of outside and it works well! https://codesandbox.io/s/sparkling-rain-ewnfvq?file=/src/App.tsx

What is the best way to support arbitrary rule value structures in the default ValueEditor component and the defaultValueProcessor function without major breaking changes

So my very tentative thought is—after prototyping the multiplicative scalar builder a couple of ways now, I am confident that I can build quite complex value editors at relatively low cost (a custom React component and potentially a custom valueProcessor). Which is perfect for me because my users won't be constructing arbitrarily-complex functions of values and fields in a given rule: they prefer a UI component that visually spells out what the rule will do and just elicits the minimum inputs from them (in my case, scalars).
I'm afraid I don't have any cogent thoughts on how to enhance the default components without needing custom components/value processors.

Oh good, I'm glad that helped. Once you realize value can by anything (it's typed as any for a reason), the possibilities really open up.
I appreciate you thinking about my suggestions for handling more complex scenarios. I guess what I really want is to be able to say "yeah, RQB can do that with the right configuration" more than "you'll have to use a custom value editor for that." But, if it's fairly trivial to augment the default component to meet some niche requirement, I guess the latter answer isn't usually so bad after all.
That said, I do want to resolve the issue with the valueProcessor not having access to the full rule object eventually.

Do you think adding a ruleProcessor option would be better than overloading valueProcessor to accept a RuleType parameter?

I'm personally tentatively fine with adding ruleProcessor—tentative because my personal use case is to run the rules in JavaScript so I'm curious to see how hard it is to adapt this approach to JsonLogic (#315), and if it's not hard, maybe I personally won't miss the extra convenience of formatQuery.
Also, am I understanding correctly, the hesitation to add an extra argument to valueProcessor comes from the redundancy in it? That is, how ugly it is that the first four arguments are contained in the new fifth argument?

The hesitation to add another argument was just based on the eventuality that we would need another, and then another, etc.
(Side note: I just remembered why I avoided implementing the valueProcessor option for the "jsonlogic" format. The return type of a ValueProcessor-type function is string, but "jsonlogic" produces an object of type RQBJsonLogic.)
Anyway, I just put up a PR (#319) that may address the problem. I took my own suggestion from https://github.com/react-querybuilder/react-querybuilder/issues/317#issuecomment-1146344366 and based the function argument list on the .length property of the valueProcessor.
Would you mind using the CI example that was generated for the PR as a starting point and testing a valueProcessor that takes a RuleType object as its first argument?
These are the draft release notes so far:
Breaking changes

The valueProcessor option for formatQuery will now be invoked with a RuleType object as the first argument and an options object (compatible with FormatQueryOptions) as the second argument under certain conditions:

A valueProcessor function that accepts any fewer than three (3) arguments will be called like this: valueProcessor(rule: RuleType, options: ValueProcessorOptions).
To maintain the current behavior (valueProcessor(field: string, operator: string, value: any, valueSource?: ValueSource)), make sure the function assigned to the valueProcessor option accepts at least the first three arguments with no default values (don't use = in the argument list, e.g. const valueProcessor = (field: string, operator = '=', value = '')).
If you use TypeScript, these conditions will be enforced automatically.

(Side note: I just remembered why I avoided implementing the valueProcessor option for the "jsonlogic" format. The return type of a ValueProcessor-type function is string, but "jsonlogic" produces an object of type RQBJsonLogic.)

Ahh thanks for this note! I was able to use the existing API to first preprocess the RBQ rules to format my linearly-scaled values from objects to strings, and then postprocess the JsonLogic output to convert strings-representing-multiplication back to JsonLogic objects—I know it seems like a lot of code, but it's the silliest most-straightforward thing possible. I was a bit surprised that neither RBQ nor json-logic-js provided a tree walker or any kind of traversal helper function or lens object to deal with their respective data structures, so I just rolled my own recursive functions for these, they can no doubt be improved:
type ScaledValue = { rawValue: string[]; scalars: number[] };

// PRE-process
function preprocessForJsonlogic(q: RuleGroupType): RuleGroupType {
  type InOut = RuleGroupType | RuleGroupType["rules"][0];
  function recur(x: InOut): InOut {
    if ("field" in x) {
      const value: ScaledValue | string = x.value;
      if (
        typeof value === "object" &&
        "rawValue" in value &&
        "scalars" in value
      ) {
        const { rawValue, scalars } = value;
        const newValue = rawValue.map((x, i) => `${scalars[i] ?? 1} * ${x}`);
        return { ...x, value: newValue };
      }
      return x;
    }
    return { ...x, rules: x.rules.map((r) => recur(r)) };
  }
  const out = recur(q);
  if ("rules" in out) {
    return out;
  }
  throw new Error("never");
}

// POST-process
type Leaf = { var: string } | string | number;
type JsonLogic = { [key: string]: (Leaf | JsonLogic)[] };
function isLeaf(x: JsonLogic | Leaf): x is Leaf {
  return (typeof x === "object" && "var" in x) || typeof x !== "object";
}
function fixMultiply(x: string): JsonLogic {
  const [left, right]: Leaf[] = x.split(" * ");
  // TODO add validation here?
  return { "*": [left, { var: right }] };
}
function checkVar(leaf: Leaf): Leaf | JsonLogic {
  return typeof leaf === "object" && "var" in leaf
    ? leaf.var.includes(" * ")
      ? fixMultiply(leaf.var)
      : { var: leaf.var }
    : leaf;
}
function postprocessJsonlogic(x: JsonLogic): JsonLogic {
  return Object.fromEntries(
    Object.entries(x).map(([fn, args]) => [
      fn,
      args.map((arg) =>
        isLeaf(arg) ? checkVar(arg) : postprocessJsonlogic(arg)
      ),
    ])
  );
}

That transforms this query:
{
    "combinator": "and",
    "rules": [
        {
            "field": "price",
            "operator": "<",
            "valueSource": "field",
            "value": {
                "scalars": [
                    3
                ],
                "rawValue": "oldPrice"
            },
            "id": "r-0.5252781298923075"
        },
        {
            "field": "price",
            "operator": "between",
            "valueSource": "field",
            "value": {
                "scalars": [
                    2,
                    3
                ],
                "rawValue": [
                    "oldPrice",
                    "newPrice"
                ]
            },
            "id": "r-0.6177121467371158"
        }
    ],
    "id": "g-0.9278744994128207",
    "not": false
}

to this other query that's acceptable to the JsonLogic formatter (preprocessForJsonlogic(query)):
{
    "combinator": "and",
    "rules": [
        {
            "field": "price",
            "operator": "<",
            "valueSource": "field",
            "value": "3 * oldPrice",
            "id": "r-0.7883527586671519"
        },
        {
            "field": "price",
            "operator": "between",
            "valueSource": "field",
            "value": [
                "2 * oldPrice",
                "3 * newPrice"
            ],
            "id": "r-0.6314019552121368"
        }
    ],
    "id": "g-0.13836984066730973",
    "not": false
}

After this is converted to JsonLogic by RBQ, it can be post-processed to replace the strings representing linear scaling with JsonLogic multiply nodes (postprocessJsonlogic(formatQuery(preprocessForJsonlogic(query), "jsonlogic"))):
{
    "and": [
        {
            "<": [
                {
                    "var": "price"
                },
                {
                    "*": [
                        "3",
                        {
                            "var": "oldPrice"
                        }
                    ]
                }
            ]
        },
        {
            "<=": [
                {
                    "*": [
                        "2",
                        {
                            "var": "oldPrice"
                        }
                    ]
                },
                {
                    "var": "price"
                },
                {
                    "*": [
                        "3",
                        {
                            "var": "newPrice"
                        }
                    ]
                }
            ]
        }
    ]
}

We do similar pre- and post-processing of queries at my day job, so I don't think it's silly at all.

I was a bit surprised that neither RBQ nor json-logic-js provided a tree walker or any kind of traversal helper function or lens object to deal with their respective data structures, so I just rolled my own recursive functions for these, they can no doubt be improved

I've actually considered providing a query-walker recursive function before, but I couldn't think of a way to make it generic but also helpful at the same time. (The defaultValidator has the right basic structure, but it's not really generic.) Maybe something like this would work? (I haven't tested this but it's fairly straightforward.)
import type { RuleGroupTypeAny, RuleType } from 'react-querybuilder';

export const queryWalker = (root: RuleGroupTypeAny, ruleProcessor: (rule: RuleType) => any) => {
  const processGroup = (rg: RuleGroupTypeAny): any => ({
    ...rg,
    rules: rg.rules.map((r: any) => {
      if (typeof r === 'string') {
        // independent combinators
        return r;
      } else if ('rules' in r) {
        // sub-groups
        return processGroup(r);
      }
      // rules
      return ruleProcessor(r);
    }),
  });

  return processGroup(root);
};

That would essentially leave the groups alone, but run the rules through the user-provided ruleProcessor. What do you think? Does it need to take an options parameter for tweaking the ...rg part of the group output?

By the way, I just put up PR #320 to add a parseJsonLogic function that converts JsonLogic objects to RQB's RuleGroupType.

I was a bit surprised that neither RBQ nor json-logic-js provided a tree walker or any kind of traversal helper function or lens object to deal with their respective data structures

Yesterday I released v4.5.0 which includes the function transformQuery (docs here). It will recursively step through a query object and run each rule/group through a provided processor function. Also includes some shortcut configs for mapping properties to new names and mapping operators to new values. Please let me know if you have any comments or questions about it!

Great! I'm glad that worked out. I've even got my own use cases for transformQuery at work so it was good to get that added.
Since you're clearly an advanced user and really seem to "get" the library, I would encourage you to submit any ideas you may have for the Tips & Tricks pages. The tracking issue on the docs repo has some yet-to-be-documented ideas: react-querybuilder/react-querybuilder.github.io#2.


windows uname

as per here: https://github.com/hookdeck/hookdeck-cli/blob/master/pkg/useragent/uname_windows.go#L6
please add :)

@jmnavarro Can you have a look when time allows?


DBeaver - Sections resetting to default after each "Read data in SQL console" on a table.

Hi,
Can we put an option to not have each new console/result screen be resized to default after each new console tab is opened?  For example, I resize the height of the SQL query box to be small and the rest of the space will be for  the console/result.  If there is an option to set to remember the size we last set, let me know.  Thank you.

Good point.
There is no such option - I'll add auto-save of results panel divider position in 4.2.3.


ames: populate gang with fine sender when scrying into arvo

This is what we actually want to do.
@joemfb am I leaking something here?

Right that all makes sense. Just the responses are signed..


Bump nginx version to 1.6.2

Also,
Update cardboard to 2.1.0.
Update tests to new contain_class rspec syntax.
Update rvm version to 2.1.5.

Misfire.