[$250] Cursor disappear if we choose the same currency from the currency selector - reported by @daraksha-dk

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

Action Performed:

Go to any chat > Send Money
Choose the currency which is already selected

Expected Result:
The focus should not disappear
Actual Result:
The focus gets disappear
Workaround:
unknown
Platform:

Where is this issue occurring?

Web
Desktop App

Version Number: 1.2.1-0
Reproducible in staging?: Y
Reproducible in production?: Y
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos: Any additional supporting documentation
https://user-images.githubusercontent.com/43995119/190954428-6067637e-ad68-405b-8880-195716487c87.mp4
Expensify/Expensify Issue URL:
Issue reported by: @daraksha-dk
Slack conversation: https://expensify.slack.com/archives/C01GTK53T8Q/p1661875896119079
View all open jobs on GitHub

PROPOSAL
This issue can be fixed like the TextInput focused in AddSecondaryLoginPage.js
App/src/pages/settings/AddSecondaryLoginPage.js
Lines 95 to 101 in 3e410ef
<ScreenWrapper onTransitionEnd={() => {
if (!this.phoneNumberInputRef) {
return;
}
 this.phoneNumberInputRef.focus();

}}

Proposal
When component updates without change in currency code, it is being returned without focusing text input.
https://github.com/Expensify/App/blob/3335b188ce86ba413f4098f6905926e737870ce3/src/pages/iou/steps/IOUAmountPage.js#L74-L80
    componentDidUpdate(prevProps) {
-        if (this.props.iou.selectedCurrencyCode === prevProps.iou.selectedCurrencyCode) {
-            return;
-        }
-
        this.focusTextInput();
    }

@davidcardoza No one is assigned for this isssue.

The cursor re-appears if you click in the area once more, so this is a really small and unobtrusive bug but looks good for External. Applying the label 👍

Job posting: https://www.upwork.com/jobs/~0188e61c5a9ca99f39

Proposal
This issue is caused on the IOUAmountPage, the componentDidUpdate function returns before the textInput is focused.
My proposal is to move the focusTextInput to the beginning of the componentDidUpdate function, so it focuses the textInput even when the same currencyCode is selected.
https://github.com/Expensify/App/blob/3335b188ce86ba413f4098f6905926e737870ce3/src/pages/iou/steps/IOUAmountPage.js#L74-L80
    componentDidUpdate(prevProps) {
        this.focusTextInput();

        if (this.props.iou.selectedCurrencyCode === prevProps.iou.selectedCurrencyCode) {
            return;
        }
    }

And the result:
Screencast from 19-09-22 16:31:07.webm

Here is my proposal: https://github.com/Expensify/App/issues/11095#issuecomment-1250643247

Proposal
This issue is caused on the IOUAmountPage, the componentDidUpdate function returns before the textInput is focused.
My proposal is to remove the if statement as it seems redundant in this case.
https://github.com/Expensify/App/blob/3335b188ce86ba413f4098f6905926e737870ce3/src/pages/iou/steps/IOUAmountPage.js#L74-L80
Solution:
    componentDidUpdate(prevProps) {
        this.focusTextInput();
    }

And the result:
Screencast from 19-09-22 16:31:07.webm

It's looking like the fix could be related to the bug reported here: https://github.com/Expensify/App/issues/10693

This proposal solves this issue and https://github.com/Expensify/App/issues/10693.
Proposal
When component updates without change in currency code, it is being returned without focusing text input.
https://github.com/Expensify/App/blob/3335b188ce86ba413f4098f6905926e737870ce3/src/pages/iou/steps/IOUAmountPage.js#L74-L80
    componentDidUpdate(prevProps) {
-        if (this.props.iou.selectedCurrencyCode === prevProps.iou.selectedCurrencyCode) {
-            return;
-        }
-
-      this.focusTextInput()
+      this.textInput.focus();
    }

bump @parasharrajat on these proposals ☝

cc @parasharrajat could you please check the proposals above?

Lol. Sorry for the delay, I wasn't working much the last few days. Reviewing it now.

Thanks for waiting everyone. I have done my analysis. |
@sobitneupane's proposal will fire a focus event on each state change which is not a good idea. :x:
@varshamb 's proposal is incomplete :x:
@aimane-chnaif good explanation but missing a few details or cases. Questions:

I think autofocus will open the V-keyboard on the mobile web which we don't want for this page.
How will you access to navigation prop?
Why focus event? can't we listen to transitionEnd?

Thanks. I will respond tomorrow.

Reviewing...

Thanks for waiting. @aimane-chnaif 's proposal looks good to me.
cc: @thienlnam
:ribbon: :eyes: :ribbon:  C+ reviewed

Wow, that proposal looks great! Thanks for also considering the performance impact and cleaning up some existing code

@parasharrajat @aimane-chnaif please accept the offer when you can. Thanks!

@daraksha-dk & @aimane-chnaif - paid, thank you!

@parasharrajat just waiting on you to accept the offer so I can issue payment 😊

@NicMendonca Please put this on weekly or monthly, there will be some time before I can accept the offer, it is probably the second week of Nov.

@parasharrajat don't forget about this offer, please 🙏

Thanks for the bump. @NicMendonca Accepted.

everyone is paid! closing!


feat: Add ComponentTreeRoot.lifecycleEventsProcessed future

Description

Adds a future that will complete once all lifecycle events have been processed.
If there are no lifecycle events to be processed (hasLifecycleEvents is false), then this future returns immediately.
This is useful when you modify the component tree (by adding, moving or removing a component) and you want to make sure you react to the changed state, not the current one.
Remember, methods like Component.add don't act immediately and instead enqueue their action. This action also cannot be awaited with something like await world.add(something) since that future completes before the lifecycle events are processed.
Example usage:
player.inventory.addAll(enemy.inventory.children);
await game.lifecycleEventsProcessed;
updateUi(player.inventory);

Checklist

[x] I have followed the Contributor Guide when preparing my PR.
[x] I have updated/added tests for ALL new/updated/fixed functionality.
[x] I have updated/added relevant documentation in docs and added dartdoc comments with ///.
[ ] I have updated/added relevant examples in examples or docs.

Breaking Change?

[ ] Yes, this PR is a breaking change.
[x] No, this PR is not a breaking change.

Related Issues

Discussed here: https://discord.com/channels/509714518008528896/1285583996842934348

I wonder if could in fact replace the game.ready() method that we have for our tests.

The big difference is that game.ready() actually actively kicks off the lifecycle events processing, while the new addition merely awaits until the next time processLifecycleEvents() is called and finished.
So, you could use the new future in tests, but you'd also have to kick off the process somehow.

So, you could use the new future in tests, but you'd also have to kick off the process somehow.

The game.ready method could maybe use the new future, but creating another method for initializing the tests would most likely end up looking pretty much like ready already does.


showPaymentModal blinks

Do you know any reason why onPressed, the showPaymentModal simply blinks, and then shows that transaction is verified?

Narrowed it down to iOS only. The modal shows properly on Android

Can you provide more details so the error can be reproduced?

I've been on it. Unfortunately, I don't get any errors on the console. And the code is pretty basic. Have you tested the dependency on an iPhone?

This issue has been resolved in v1.0.4

Is there a 1.0.4?

I think you were a little eager to close the issue. But I have updated to 1.0.4, and it's still very much there

v1.0.4 requires that you provide callbackUrl
final response = await PaymentService.showPaymentModal(
    context,
    transaction: initializedTransaction,
    // Callback URL must match the one specified on your paystack dashboard,
    callbackUrl: '...'
).then((_) async {
    return await PaymentService.verifyTransaction(
        paystackSecretKey: '...',
        initializedTransaction.data?.reference ?? request.reference,
    );
});

print(response); // Result of the confirmed payment


iTerm2's Captured output feature doesn't show the right line.

I tried to capture the "failed" word (\bfailed\b). Unfortunately jest output changes and wrong lines are addressed in the captured output.
[docs] https://iterm2.com/documentation-captured-output.html

Thanks for bringing this up. Good to see you, @zalun. Are you willing to work on a PR for this? It's unlikely we'll add support for this from our side.

Hey @cpojer. It's just a note.
I will take a look what's causing this, but for now I wouldn't like to have the issue assigned to me.

Sounds good. Since this is not actionable this way (nobody will work on it in the foreseeable future), I'll close the issue. If you intent to work on it, please send us a PR.


remove &mut PoolConnection from Executor docs

As per the Changelog for the 0.7.0 release:

The Executor impls for Transaction and PoolConnection have been deleted because they cannot exist in the new crate architecture without rewriting the Executor trait entirely.

The failing CI fmt check isn't due to any of my changes, should I fix it anyway?

How do I fix this in my code? I use conn: &mut PoolConnection<MySql> everywhere in my library which has to work with sqlx and rocket_db_pools. I can't seem to use &Pool, MySqlConnection, or AnyConnection.

Dereference the PoolConnection: &mut *conn


can't format when the file includes queries other than 'INSERT'

can't format when the file includes queries other than 'INSERT'.

close because this is test


Add Cyberyen Block Subsidy calculations.

Added function used in Dogecoin solution:
https://github.com/digirayc/cyberyen/blob/15a77cf379103ac9b6542c43893301c31a86096e/src/validation.cpp#L1279
Passed the test on more than 45 cycles, works stable.
Must be implemented in the mainnet

An open question is whether it is possible to implement integration without a hard fork?

Found a simple solution for integration without hardforking.
In the coming days, Cyberyen Core update will be released, everyone must be updated without fail.


Run performance testing for 1.1 release

Child of https://github.com/hyperledger/firefly/issues/563
Need to test the latest code prior to doing a 1.1 release and check for bugs/performance bottlenecks.
Should test with both firefly-ethconnect and with the new firefly-evmconnect.

#563 updated with the results of the latest (~4 day) performance test run. No major issues at this time - will test at least once more once a release candidate is selected.

Link to the detailed Discord thread: https://discord.com/channels/905194001349627914/1004496575059476570/1020402585628319845

The summary observations from the final run for 1.1 were:

We are now spending a lot of time processing receipts, and updating operations, with how chatty EVMConnect is. Large payloads, more often. Optimizing this would be best achieved by switching the webhooks from EVMconnect to just be status changes, and making the large payload be queried through on demand (as we made changes like this on listeners for example).
The batch assembly loop is running hot too. Uploading blobs is the highest user, followed by flushNonceState.
The overhead of the eventLoop is also high. We've discussed this many times, and I'm not going to add more here.
Verbose debug logging is a non-trivial amount of the overall usage at this point.
Think we can close the 1.1 activities here. No outstanding bugs. Room for optimization as the community decides going forwards, based on specific use cases and functions in projects.


Toradja society to language mapping

Harald wrote:
The Toradja described by Adriani-Downs is Pamona [pmf], not Sa'dan [sda]. Drabbe (1940) is about a quite different island/language (Fordata [frd]) but maybe it has remarks on Pamona [pmf] which was a main mission post.

Check!
For Pamona we in the GB team need a dutch speaker. We'll sort that out somehow, no worries :)

(reopening until this change is actually made)

Done as part of #183


New window instances do not gain foreground rights

Windows Terminal version
1.23.3471.0
Windows build number
No response
Other Software
No response
Steps to reproduce

Set "New instance behavior" to "Create a new window"
Launch from the start menu (= first window, first tab)
Explicitly minimize
Launch from the start menu again

Expected Behavior
New window is in the foreground.
Actual Behavior
New window fails to gain foreground rights.

Can we AllowSetForeground? I suppose we don't know the PID of the instance holding the mutex, do we. hmm....

Oh, I didn't see your message! And yeah, I fixed it exactly like that. We can get the PID with GetWindowThreadProcessId.


Debouncing not working - comparing CLOCK_MONOTONIC with CLOCK_REALTIME

I previously submitted this at https://bugs.launchpad.net/ubuntu/+source/lg-gpio/+bug/1972985 because somehow I had forgotten this git repo exists back then (and http://abyz.me.uk/lg/index.html does not point to here at all). Since this is really an upstream bug, I'm going to resubmit it verbatim here.
The problem is that when I set a debounce time on an input pin (with a button attached), that debounce time is not actually applied. If I set a 0.5s timeout, input events are registered immediately (and a lot of them in succession if I press the button a lot of times), instead of only reporting changes when the pin has been stable for 0.5s.
To reproduce, I have used the attached program (monitor.c), which is exactly the "monitor GPIO" example from http://abyz.me.uk/lg/examples.html#C lgpio with the following line added:
        lgGpioSetDebounce(h, g, 500000);

This line sets a bounce time of 500,000 μs (or 0.5 second).
When I compile and run it, and press a button attached to gpio 7 a few times quickly, I get:
$ gcc -Wall -o monitor monitor.c -llgpio
$ ./monitor 7
chip=0 gpio=7
chip=0 gpio=7 level=1 time=116.935984428
chip=0 gpio=7 level=0 time=122.184483056
chip=0 gpio=7 level=1 time=122.311010973
chip=0 gpio=7 level=0 time=122.385752598
chip=0 gpio=7 level=1 time=122.495776931
chip=0 gpio=7 level=0 time=122.536279723
chip=0 gpio=7 level=1 time=122.634267723
^C

Note that the timestamps are a lot less than 500ms apart, which should not be possible if the debouncing was working.
I investigated more closely, using the most recent version (downloaded from http://abyz.me.uk/lg/lg.zip a few days ago, I think it's <IP_ADDRESS>) with some debug output added. I found that:

When an event occurs, the timestamp passed by the gpio event is used: https://salsa.debian.org/python-team/packages/lg-gpio/-/blob/upstream/<IP_ADDRESS>/lgPthAlerts.c#L488. This timestamp is by default based on CLOCK_MONOTONIC (as documented at https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/uapi/linux/gpio.h?h=v5.17#n283).
When no event occurs (for 1ms, I think), the xNowTimestamp is used. This is returned by lguTimestamp() and uses CLOCK_REALTIME (https://salsa.debian.org/python-team/packages/lg-gpio/-/blob/upstream/<IP_ADDRESS>/lgUtil.c#L46)
I noticed that both timestamps are really not comparable. IIRC one had about twice as many digits as the other (so I guess one of them is walltime and the other might be time since boot or something). I checked the code and both should be correctly in nanosecond precisions.
The xDebWatEvt() function compares these two timestamps to decide about bouncing. Since the now timestamp is always bigger than the event timestamps, this effectively disables the debouncing.
If I change lguTimestamp() to use CLOCK_MONOTONIC, debouncing works as expected, so all of the code seems to be correct otherwise.

I'm not sure if changing lguTimestamp() is the right fix here, since it might be used elsewhere that does need CLOCK_REALTIME (I haven't checked closely).
The gpio docs (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/uapi/linux/gpio.h#n273) say:
 * By default the @timestamp_ns is read from %CLOCK_MONOTONIC and is
 * intended to allow the accurate measurement of the time between events.
 * It does not provide the wall-clock time.
 *
 * If the %GPIO_V2_LINE_FLAG_EVENT_CLOCK_REALTIME flag is set then the
 * @timestamp_ns is read from %CLOCK_REALTIME.

So maybe another fix is to always set the GPIO_V2_LINE_FLAG_EVENT_CLOCK_REALTIME. It seems there is some commented out to set this flag (based on, I think, user-supplied flags) already: https://salsa.debian.org/python-team/packages/lg-gpio/-/blob/upstream/<IP_ADDRESS>/lgGpio.c#L244-245
Assuming that debouncing has been tested to work when this code was originally written, I wonder if the default gpio clock was changed at some point, the clock used by lgTimestamp was changed, or maybe this was originally tested on hardware where both clocks are identical? I would dig in a bit deeper, but lacking time, I'm going to just leave this here.
I've been testing this on an Orange Pi PC board, running a Ubuntu Jammy-based Armbian image.

Thanks for looking into this.  I know I assumed I was using the same clock as the kernel.  My assumption appears to be wrong.

This looks like a straightforward error which I should have noticed.
I have added an internal function in lgPthAlerts as follows.
uint64_t xMonotonicTimestamp(void)
{
   struct timespec xts;

   clock_gettime(CLOCK_MONOTONIC, &xts); // get current time

   return ((uint64_t)1E9 * xts.tv_sec) + xts.tv_nsec;
}

I will use this for xNowTimestamp to make the times consistent.
lguTimestamp will be unchanged.  I remember now the assumption I made is that lguTimestamp would return a result with the same base as date +%s

This appears to be a change in the kernel gpiolib.c driver.  Back in Feb 2020 the timestamp was changed from realtime to monotonic.
https://github.com/torvalds/linux/commit/f8850206e160bfe35de9ca2e726ab6d6b8cb77dd
I have no idea when that change was implemented in the Raspberry Pi default kernel which is my baseline.
Given that my documentation and examples all show 1970 epoch timestamps that was what the software was written for and tested against.
I am beginning to really dislike the gpiochip developers.  Yes, monotonic makes more sense.  The change should have been loudly publicised.
I am going to have to think some more about this.  lg daemon users may be expecting a consistent timestamp from multiple machines.

I am beginning to really dislike the gpiochip developers. Yes, monotonic makes more sense. The change should have been loudly publicised.

Yeah, I guess they assumed that users would only be comparing timestamps between different GPIO events, not realizing that one might also want to compare with an external clock...
I had a quick look at your improved implementation, and IIUC you now always use timestamps in the gpiod clock (whatever it is), and then to get the current time in the same clock, you use the monotonic clock and adjust the last gpiod event timestamp with the time passed (on the monotonic clock) since that last gpiod event. This adds a  bit of inaccuracy (since the event will take some time to reach lgpio), but the timestamp of such a debounced event is already delayed anyway, so that should be fine.
It does seem that the debouncing code becomes even more complex from this change, which is a pity, but well...
Looking at the commit tagging, it seems this change is available in version 0.2.2. I do not have an easy way to actually test this right now, unfortunately (Ubuntu still only has 0.2.0).

I'm not sure if this issue is only c related. But for the python version 0.2.2 (lgpio) I can confirm debounce works as described in the documentation. Tested on Raspberry Pi 3 running Debian 12 Bookworm (Raspberry Pi OS) kernel 6.6

I am beginning to really dislike the gpiochip developers. Yes, monotonic makes more sense. The change should have been loudly publicised.

And you don't even talk to us, much less know us.  Perhaps reserve judgement until you do?
The change was discussed on the GPIO mailing list, which the commit you reference itself references.  That is where the kernel GPIO changes are publicised.  You, being a major Linux GPIO user, should keep an eye on that and pipe up if you have objections or suggestions.  You didn't, and that is on you.  OTOH, kernel policy is to never break ABI, but that did, so I agree that change should've been made opt-in.
You've switched over to using uAPI v2 now, right?
The clock returned in edge events was made configurable in uAPI v2 to support various clock sources, as there are some users that still want realtime.  So take your pick.
Oh, and uAPI v2 supports debounce, either in hardware where supported or via software emulation in the kernel.  You might want to switch to using that rather than debouncing in userspace.  That may also solve #18 which may be caused by the kernel event buffer overflowing - if the kernel does the debouncing then only the debounced events hit the buffer.  You can confirm if overflow has occurred by examining the event sequence numbers.  When an overflow occurs the oldest events are discarded, so generally it wouldn't alter the outcome of a debounce in userspace, but if the button is being mashed and userspace is hung up on something you might lose a key event...


mixing CJS and ES6 module syntax

source files use es6 imports but exports are done via CJS: https://github.com/Hacker0x01/react-datepicker/blob/master/src/datepicker.jsx#L382
This is not a good practice since this would break in ES6 module ready browsers if someone tried to load the source file directly.

Any suggestions or PRs are welcome :)


CD pipeline needs to be updated to reflect new clients/default/dist structure

not quite fixed

not quite


Mobile compatibility of Documentation

🐞 Problem
The documentation does not adapt to some mobile width's. Particularly: https://github.com/bitprophet/alabaster/issues/139
We are still waiting to get the PR https://github.com/bitprophet/alabaster/pull/140 . Its milestoned for 0.8, but I am not sure if it will arrive soon.
🎯 Goal
Meanwhile we can fix it in our own documentation by overriding some settings.

💡 Possible solutions

📋  Steps to solve the problem

Comment below about what you've started working on.
Add, commit, push your changes
Submit a pull request and add this in comments - Addresses #<put issue number here>
Ask for a review in comments section of pull request
Celebrate your contribution to this project 🎉

@shreyasbapat I would like to work on this issue.

Sure thing! Go ahead :)

@divya144 Are you still working on it?

Closed in #171


SNAPSHOT versions don't get stripped by the install-apps goal

The install-apps goal strips SNAPSHOT versions fine if the artifact being resolved is in the current reactor.  However, if you're installing an app from your Maven repository (i.e. pre-built) which uses a snapshot dependency, the version doesn't get stripped properly, as the code that tries to find the version in the file path uses artifact.getVersion() which will get the resolved SNAPSHOT version, which doesn't match the version in the file name, and so doesn't get stripped.

See #301 for a fix for this issue

Merged.


Wrong implementation has an impact on other Nuki-connected gateways

Hi there,
seems your implementation is buggy and thereby influences the behaviour of the Nuki Bridge when being connected to another device (here: homee Smart Home Gateway).
Seems the bridge sends a HTTP Request to ioBroker, which will not be answered correctly (no status 200 response). These leads to the effect that the bridge keeps on waiting for an answer, which never arrives. And this results in the behaviour described on the homee community starting here:
https://community.hom.ee/t/nuki-sperr-zustand-wird-oft-falsch-angezeigt/23353/11?u=hblaschka
Technical details can be discussed via PM with Tankred (@tankred) or Pascal (@pascal), two of the homee Devs on the homee Community or on the above mentioned thread.
Cross posted on https://github.com/Zefau/ioBroker.nuki2 - same behaviour there.

Hi,
thanks for pointing this out. I've added the required response in version 1.0.7. Since I have no homee gateway I'd appreciate if you (or someone with the mentioned combination of installments) could do some testing.

Thanks for the fast action, I will ask people on the community to do so, as I currently do not run ioBroker in production....

It's all right now, thank you.


Video Player Double tapping for Video rewind and forward

Description
LEARNER-7698
Rewind and Forward video functionality would also work with a double-tap. Double-tap in between play button right + 20 to end of screen will be used to skip forward and double-tap in between play button left - 20 to start of the screen will used to skip backward.
How to test this PR

[ ] Open app

[ ] Navigate to some course and play video

[ ] Double tapping on left side of video player should rewind video

[ ] Double tapping on right side of video player should forward video

Perfect!
It's working fine. Can you just exclude the size of playpauseButton from the double tap area?

Please checkout following, I believe it excludes touch from playPauseButton, within double tap action.
https://github.com/edx/edx-app-ios/blob/81629df2027da46578b762b62516a6a63948786c/Source/CutomePlayer/VideoPlayerControls.swift#L326-L328


Add JWT_PUBLIC_KEY env var to resources api

As of https://github.com/OperationCode/resources_api/pull/325 we now accept a JWT token for the resources API, and we validate it with the public key loaded up as an environment variable. This adds that. Will push up the change to the secret once this is merged

Nevermind, I'm going to add them to the secrets first 😅

Secrets have been edited to include jwt_public_key 👍


Integration with VS Live Share

PR Type
This PR is a proposed solution for integrating Visual Studio Live Share extension with Live Server extension that'd help to automate sharing a server in a collaboration session.
[ ] Bugfix
[x] Feature
[x] Refactoring (no functional changes, no api changes)
[ ] Documentation content changes
[ ] Other: <!-- Please describe: -->

What is the current behavior?
This solution is a significant improvement in user experience as of today a user sharing a workspace in VSCode needs to share Live Server manually through the interactive flow every time.
What is the new behavior?
With the new flow, upon the collaboration session start Live Server sends a request to share a live server. In response to the request, VS Live Share notifies the host user and requests their permission to start sharing the server.

When the host user clicks the Allow button all participants in the collaboration session get access to the shared server.

Does this PR introduce a breaking change?
[ ] Yes
[x] No

Other information
Implementation Details
VS Live Share provides extensibility API allowing consumers to subscribe to collaboration session events and invoke methods to share/un-share artifacts in the active collaboration session. To help to manage live server sharing state I've introduced LiveShareHelper class that receives notifications from AppModel and VS Live Share API.
To decouple the helper from the model I've extracted IAppModel interface with two new events GoLiveEvent and GoOfflineEvent.
Misc
As tasks.json version 0.1.0 has been deprecated I upgraded the default build task definition to version 2.0.0 using a recommended task template.

@ritwickdey Hey! What are your thoughts on this PR? We (the VS Live Share team) have seen a ton of usage of Live Server w/Live Share, and so this should hopefully help increase the discoverability/ergonomics of using the two together.

Works like a charm ❤ ❤ ❤ ❤ ❤ ❤ ❤ ❤ ❤ ❤

Thanks you so much for opening PR 💘  & I'm really sorry for the late (I was busy for my exams and other stuff, extremely sorry 😢  ).....

@ritwickdey No worries. Thanks a lot for publishing the new version to the Marketplace!


[Host] Include Config.h to make sure READLINE_HAS_WCHAR_T is honoured.

rdar://problem/48401960

@swift-ci test and merge

@adrian-prantl can you please review this one?


Unable to upload large images >14kb to grav (addmedia)

Main issue: cannot upload big images
We're running v.1.7.30 of grav in a Kubernetes Pod along with nginx.
We have it set up as follows (It's slightly convoluted as we're in the process of migrating components from EC2s into Kubernetes):
graph LR

A(ALB)
B(NGINX)
C(NGINX & grav)

A-->|HTTP|B
B-->|HTTPS|C

Uploading an image <=14kb image works
Uploading a >14kb image fails with a HTTP 500 e.g.
POST https://grav.internal.mysite.com/berries/pages/c/quiz-incorrect/_01-header.json/task:addmedia 500

In the Console it shows:
vendor.min.js?9b9fbdff5d:37182 Uncaught TypeError: Cannot read properties of undefined (reading 'message')
    at PageMedia.onDropzoneError (admin.min.js?9b9fbdff5d:3143:42)
    at Dropzone.emit (vendor.min.js?9b9fbdff5d:36235:22)
    at Dropzone._errorProcessing (vendor.min.js?9b9fbdff5d:38989:16)
    at Dropzone._handleUploadError (vendor.min.js?9b9fbdff5d:38935:12)
    at Dropzone._finishedUploading (vendor.min.js?9b9fbdff5d:38907:14)
    at xhr.onload (vendor.min.js?9b9fbdff5d:38640:17)

In the two nginx servers I've tried setting client_max_body_size: 50m but this doesn't have any effect. PHP for grav is configured with:
post_max_size=100M
upload_max_filesize=100M

Can anyone advise on where to look to solve this?
Additional issue: thumbnails don't display
Mentioning this in case it helps debug what is going on. One other oddity is that immediately after adding an image the thumbnail is visible.

But after clicking Save the thumbnail displays as Error.

This turned out to be a NGINX configuration issue. We set this configuration in the NGINX configuration within the Pod.
client_body_buffer_size: 20m;

Credit: https://alucard001.medium.com/solved-big-file-size-cannot-upload-file-through-nginx-error-500-69039e78042e


Update the room members filtering to match with IOS / web clients

https://github.com/vector-im/vector-android/commit/790fab69b27c407802f674a11814f0d30595ffc8


Fix support of Internet Explorer 10 (#17)

Thanks @subzey for IE-workaround

Sorry for ignoring this for so long!
What do you think: Should we keep an eye on IE or better focus on ES6?

ES6


Allow CL_HALF_FLOAT denorm flushing for write tests (#452)

On mismatch, add relaxation when denormal half result is expected
Refactor to use common validation function
Clean up some diagnostics

Could you resolve the conflicts please? I presume its because of your other PR #456 given that they're very similar changes.

Could you resolve the conflicts please? I presume its because of your other PR #456 given that they're very similar changes.

Will do. I wasn't sure which set would go in first so left them unresolved.

@jlewis-austin Where are we with this one? Do you need anything from others to progress?

No, I just got pulled off on other work. Will try to get to it next week.

Cool, thanks! (I was also checking that I wasn't the blocker :)).

@kpet @EwanC sorry for the delay. All comments should be addressed or covered under other issues.


nidaqmx playao from a NumpyDeviceBuffer stream

The ultimate goal here is to make a function/waveform generator. The example in ni_daqmx_with_oscilloscope using a QTimer seems a little inelegant given everything else happening with streams. Also, what would one do if the numpy array is bigger than the nidaq buffer? (using a USB-6001 device holds 2047 samples)
I guess, ideally the nidaq would request the next chunk from the NumpyDeviceBuffer whenever it's ready? Or the NumpyDeviceBuffer polls until the nidaq is ready for the next chunk (something to do with _on_ao_done). Happy to generate a PR down the line but could use some advice on moving this forward.
Unrelated note, I'm also working on making Harvesters work with pyacq.

This works for my purposes at the moment. Any thoughts before a PR? Tests?

Dear Zoey.
Thanks for having interest in pyacq.
The Nidaq implementation in pyacq is totally weak for the output.
I did it quikly some time ago with a simple usecase :

stream input to file and oscilloscpe
play on output a simple (and short) waveform when the end user click on a button.

A stremable output could be done in this class. If you need it I can help you to make the change.

Hi Samuel,
Sorry for the delay! Help would be great!
Did you have a chance to look at the implementation I made already? I also changed npbufferdevice some as well to generate the signal. It seems to work pretty well (surprisingly).
I'll add the Harvesters camera node soon too.
Thanks!

Hi Zoe.
Oups. I miss that already implement it.
I will have a look.
Very cool if it works for you.
pyacq have very few users : welcome.

@zoeith
Can you share an example like ni_daqmx_with_oscilloscope.py using your updated ni_daqmx.py

Uh... It's been a while and this evolved some. Here are a few gists that might be helpful, but I haven't looked at this for some time now.
This example has a bunch of extra junk and might not have been the final way I ended up using it, but with some fiddling you should be able to move everything in streams instead of using some weird callback.
Curious how this works out for you, no promises I can help much more. Good luck!

@zoeith,
Thanks for the help.  I have been able to get working, mostly.
I am getting a buffer warning related to the sampling rate that I need to figure out but at least there is an output.


project: fix onNext scheduling in ConcurrentAccessRegulator

Description
This PR fixes a potential issue where the onNext function could be called in non deterministic order.
Checklist

[x] this PR is based on the main branch and is up-to-date, if not please rebase your branch on the top of main
[x] the commits inside this PR have explicit commit messages
[x] unit tests cover the new feature or the bug fix
[x] the feature is documented in the README.md if it makes sense
[x] the CHANGELOG is up-to-date

Codecov Report

Merging #11 (9c0fe0f) into main (aae817b) will decrease coverage by 0.00%.
The diff coverage is 100.00%.

:exclamation: Current head 9c0fe0f differs from pull request most recent head 6081b19. Consider uploading reports for the commit 6081b19 to get more accurate results

@@            Coverage Diff             @@
##             main      #11      +/-   ##
==========================================
- Coverage   97.32%   97.32%   -0.01%
==========================================
  Files          44       44
  Lines        2243     2240       -3
==========================================
- Hits         2183     2180       -3
  Misses         60       60

Impacted Files
Coverage Δ

Sources/Internal/ConcurrentAccessRegulator.swift
100.00% <100.00%> (ø)

...sts/AsyncSequences/AsyncSequences+MergeTests.swift
97.36% <100.00%> (-0.06%)
:arrow_down:

Continue to review full report at Codecov.

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


Days are not ordered correctly

Cron Expression
0 45 12 22,17,6,30,26 * *
Expected Output
"At 12:45 PM, on day 6, 17, 22, 26, and 30 of the month"
Actual Output
"At 12:45 PM, on day 22, 17, 6, 30, and 26 of the month"
Prerequisites

[V] The cron expression being passed in is a valid expression.  cRonstrue does not validate expressions and assumes the one you pass is already valid.  See the FAQ for more details.

I'd welcome a PR to order these sequentially.

I'd welcome a PR to order these sequentially.

I managed to fix it. I can't submit a PR with no option to create a branch.
Could you please guide me on how to submit it for you? (couldn't find it on the CONTRIBUTING.md file)


ActionBar icons size changed

At previous version of AAS the size of all ActionBar icons was bigger than now (e.g. mdpi was 32x32px, now is 24x24px).
What is the right dimension?

Either should work, since they're centered. 24x24 is the natural dimension of the icons, so I decided to use that instead. If they render weird in any situations let me know.


Out of memory problem

Hi, i try to read a xls file which have 12 sheet composed of 50 column by 7000 row (I can't share this file). Actually i have a out of memory error so there is a way for read only one sheet at the time?(like that everytime i read a new sheet i delete the previous one)
My application is client-side, did the node js version could avoid that problem?
thanks for help

Without sharing the file, it's unclear where the problem lies.  Most XLS files nowadays are wrapped in a CFB container, so the parser has to first understand how the container is represented.  Thanks to some technically-valid-but-not-that-great file writers (see https://github.com/PHPOffice/PHPExcel/issues/260#issuecomment-61432748 for an example) we have to load the entire file first.  Once you do that, then you have to read the Workbook stream and collect relevant metadata before touching a cell.  Especially in a constrained browser environment like IE6, it's easy to quickly overrun limits on modest files.
We have merged this library into the XLSX library -- we recommend upgrading.  If you have a file that you can share, please re-raise the issue in that issue tracker with a file.


Polish off retry

We've had a problem since we merged #920 that the retry behaviour doesn't quite work in integration.
This PR is my attempt to resolve that, so we can remove the @wip tags and close #982 and #981.
There's a puzzle here with the output on the second scenario, with two
retries. I've detailed what I think the summary should be, but there
seems to be a passing scenario missing from the results totals, so the second scenario (Retry twice, so Shakey starts to pass too) is currently failing.
Did I make a mistake, or is the code still wrong?
TO DO

[x] merge in cucumber/cucumber-ruby-core#111
[x] resolve issue with unexpected scenario counts in Retry twice, so Shakey starts to pass too scenario

ping @brasmusson. I wasn't able to reproduce the crash you mentioned, but the totals in the second scenario do look funny, don't they? Any thoughts why?

Note that also the pretty formatter output is messy (missing steps etc) but I don't care about that right now.

@mattwynne The crash I'm talking about is this one (Travis build), however it does not occur after the Event bus have been moved the the core (that is only on the v2.x-bugfix branch).

OK I believe this is ready to merge. Anyone else want to take a look @cucumber/cucumber-ruby ?

I have been giving this a try locally and I noticed that if you put --retry (+ any int) in a profile under cucumber.yml, it is seemingly ignored. Only when I added --retry  to the command line were my tests actually retried.
Moreover, I have noticed that when using the pretty or summary formatter, the failure output at the end of the test run is duplicated for each individual failure of the same test.
This seems dangerous for re-run logic and reporting. In my view, Cucumber should simply report the test as passed or failed.
Failing Scenarios:
cucumber -p retry -p base_options -p cli_pretty -p allure -p json_pretty -p test_tags features/tests/repo/login.feature:32
cucumber -p retry -p base_options -p cli_pretty -p allure -p json_pretty -p test_tags features/tests/repo/login.feature:32
cucumber -p retry -p base_options -p cli_pretty -p allure -p json_pretty -p test_tags features/tests/repo/login.feature:32
cucumber -p retry -p base_options -p cli_pretty -p allure -p json_pretty -p test_tags features/tests/repo/login.feature:32`

@tk8817 - thanks for reporting! @mattwynne and @brasmusson - do you think we should move this to a separate issue or fix it as part of this one?

Cucumber should simply report the test as passed or failed.

No, a test that passes after retry is not the same as passed, it should rather be reported as flaky in a summary. Thinking ahead on a feature like running all test cases x times, to asses their flakiness, then there are three interesting categories:

the test cases that passed all x times -> passed,
the test cases that failed all x times -> failed, and
the test cases that passes some times and failed some times -> flaky.

@danascheider The summary reporting and exit code handling when using --retry is not ideal with this PR, but I can live with merging this PR and open another issue to polish the summary reporting and exit code handling.

@brasmusson - I agree with you 100%, apologies if my comment did not disaply that. As you can see in my example, the test failed 3 times, it never passed. My concern is that the formatter is showing it as 3 failures and if I were to re-run or export my junit/json results, it would attempt to re-run the same test case 3 times.
My larger concern is the fact that retry does not work when invoked from cucumber.yml
Best,
Justin

@danascheider I'd rather deal with these as separate issues I think. The profiles thing seems like a bug, but the formatting / reporting thing needs more thinking about, and will probably be more work to implement.
@tk8817 try using the new summary formatter as we do in the scenarios for retry. You might find the output is a bit clearer about what's going on.

@mattwynne Apologies, I still think my point is being missed - its not about the visual output in realtime. As noted in my first post that the matter occurs with both the summary & pretty formatters.
Cucumber is reporting the same test case as failed X times for X retries when X retries fail.
Failing Scenarios:
cucumber -p retry -p base_options -p cli_pretty -p allure -p json_pretty -p test_tags features/tests/repo/login.feature:32
cucumber -p retry -p base_options -p cli_pretty -p allure -p json_pretty -p test_tags features/tests/repo/login.feature:32
cucumber -p retry -p base_options -p cli_pretty -p allure -p json_pretty -p test_tags features/tests/repo/login.feature:32
cucumber -p retry -p base_options -p cli_pretty -p allure -p json_pretty -p test_tags features/tests/repo/login.feature:32`

My concerns with this are

When re-running failed scenarios this single scenario is being re-run 4 times as it believes there are 4 unique failures, but its just the same scenario which failed 4 retries.

The json & junit formatter output also shows the failures as unique and as such I am seeing what some may deem incorrect statistics and output (same test multiple times).

Until there is a strategy to coin tests as flaky or differentiate an original test from a retry, it seems that there will be downsides to using retry with existing formatters / infrastructure.
One alternate option would be to only report the final run of the scenario. As Matt said, a test will only be run for exactly as many times as it needs to. The upside is much cleaner reporting / re-running support. The downside is  NO indication that a test was retried in that reporting.
Rock, meet hard place :)

With respect to the summary and the pretty formatters I think the current behaviour is correct:
      Fails-twice feature
        Fails-twice ✗
        Fails-twice ✗
        Fails-twice ✓

This is what happened, and it should therefore be reported that way by the summary formatter (and similarly by the pretty formatter).
With respect to the summary printout (side not - Cucumber-JVM prints the summary statistics, snippets etc. separately so if the pretty formatter output is sent to a file, then the summary statistics etc. is not included in the file), there is no need to list the same test case several times under "Failing Scenarios:", it should rather be listed once under "Flaky Scenarios:" - and the same in the Scenario statistics ("1 scenario (1 flaky)"). The Step statistics, I do not think should be changed from the current behaviour - we cannot assume that the same step will fail when a flaky test case has failed several times, so a flaky test case with three steps will add more then three steps to the Step statistics.
The Json formatter should absolutely include every individual execution of a flaky test case, we can neither assume that the same step fails each time a flaky test case fails, and if the same step actually happen to fail, we cannot assume that the error is the same. Everything need to be included in the Json formatter output. Using the Json formatter output it should be possible to find out exactly what happened, so each time any step definition or hook has executed the information about this needs to be in the Json formatter output.
With respect to the JUnit formatter, reporting a flaky test case once could be an option. As the Cucumber statuses are mapped down to the three statuses, passed, skipped and failed in the JUnit formatter output, a flaky test case should in that case be mapped to passed in non-strict mode and failed in strict mode.

OK merging this one, let's discuss enhancements in new tickets.

Somehow I merged this into the wrong branch instead of master. Have fixed that in 810384e41a6b8a476f3d27a82497c192a1cfee65


Don't attempt to operate on null objects.

Hi @hughsk
I was running into an error when passing in a complex object created by a third party library, turns out that some keys were null, so passed the typeof object !== 'object' test but caused an error to be thrown when they were operated on e.g. with delete.

Currently I'm using this library in an environment which has access to npm but not GitHub. If you could review this pull request and let me know if it needs any changes and publish it to npm I'd be very grateful as I'd be able to significantly simplify my workflow. Thanks in advance.


Can we turn timezone support off?

To avoid the annoying naive datetime warning

We could. Though I wonder if there might be fix rather than a dodge.


VectorStore.as_retriever() missing.

I tried to run the code as described in the given link (https://pypi.org/project/eurelis-langchain-solr-vectorstore/), but I am not able to run it and get the results.
Can we have some clarity on the  parameter in the retriever, which is defined as solr.as_retriever(search_kwargs: {'language': 'en', year: 2000})?"

@Vipuld2t we will update the documentation,
it should have been written
retriever = vector_store.as_retriever() # basic retriever
or
retriever = vector_store.as_retriever(search_kwargs= {'filter': {'language': 'en', 'year': 2000}}) # retriever filtering results to have only documents with language = en and year = 2000
does it helps you?


Specifying custom library component.

In my project I have a Library.pretty directory with custom components, but when I try to place them using circuitpainter I get an error:
% python3 painter-v2
Traceback (most recent call last):
  File "painter-v2", line 20, in <module>
    painter.footprint(0,0, "Library", "LED_APHB1608SYKSURKC", nets=[
  File "/home/hudson/.local/lib/python3.8/site-packages/circuitpainter/circuitpainter.py", line 429, in footprint
    raise IOError(
OSError: Footprint LED_APHB1608SYKSURKC in library:/usr/share/kicad/footprints/Library.pretty not found

Is there a way to specify the search path to include the local directories?

I see that library_path was added as an optional argument to the constructor in https://github.com/Blinkinlabs/circuitpainter/commit/215aa0eb093c5c1c1187a3ce3f373a822ac6bf41


Is pwhash_verify constant-time comparison?

Glancing at the code, I'm not exactly sure how e.g. argon2id13::pwhash_verify is doing its comparison and if that comparison is constant-time.

This API just forwards to libsodium's verification function documented here: https://doc.libsodium.org/password_hashing/default_phf#password-storage
Sadly, this is not documented there either, but looking up libsodium's implementation shows that sodium_memcmp is used to check the final hash and this is a constant-time implementation:

crypto_pwhash_argon2id_str_verify calls argon2id_verify
argon2id_verify calls argon2_verify
argon2_verify calls sodium_memcmp
That is a constant-time implementation of memcmp: https://doc.libsodium.org/helpers#constant-time-test-for-equality

Thank you for the detailed answer! Most appreciated. 🙂


Too large task metadata causes sample_init to crash on launch

The sample metadata is passed in the CLI to the call to docker compose , as in https://github.com/UKGovernmentBEIS/inspect_ai/blob/62ce52c663d7c353edd2a916241ace8eca45dc0b/src/inspect_ai/util/_sandbox/docker/docker.py#L89-L97
This means you can't have too large of a metadata, as you run into the limits on the size of arguments you can pass through the CLI. This happens naturally in the case of swebench (for #268 ), where if we pass all of the swe-bench dataset metadata into the sample (which includes the golden agent patch, and the list of tests to run), its too large.

Resolved with https://github.com/UKGovernmentBEIS/inspect_ai/commit/f687864a54b00b46251a794aef8e0ef4f4120746


Runecrafting statistics plugin

Adds a panel with info about runes crafted and profit made.

Would be helpful if you provided a preview image

@psikoi
https://imgur.com/a/AcUmlmD

@delps1001 you gotta sell your plugin to the reviewers, you don't even have a preview screenshot.

Using my own version of runelite to use this, good little plugin for runecrafting. Only thing I'd add is the ammount of runs to the altar you've done, you can check this by seeing when all essence in the inventory and pouches has been used up. If you added a timer to time the laps too you could make it time from when you last used the altar to when you next used it. Overall nice plugin, hope it gets added.


Representation of an invalid ambiguous timestamp

As the ambiguous timestamp value is overflowing, none of its values can be reserved for special purposes; hence, the following is a mistake:
https://github.com/UAVCAN/dsdl/blob/dee68f6a1ef42efb82c56e2811c3c094ce9ea2dd/uavcan/time/SynchronizedAmbiguousTimestamp.1.0.uavcan#L11-L12
We may need to sacrifice one bit to make the value optional, like:
uint27 OVERFLOW_PERIOD_us = 83886080
truncated uint23[<=1] decamicrosecond

...which would make it variable-length, breaking alignment wherever it's used. We could do this instead:

Option A: Make it variable-length as described but move all usages towards the end, so that the alignment of other fields is unaffected. This is not a great option because it restricts usage of this type (what if it can't be moved toward the end?).

Option B: Add a bit flag alongside indicating whether the value is valid. This is not type safe, not great. We could alternatively use a union, which would be bitwise identical but type safe:

@union
Void23.1.0 empty
truncated uint23 decamicrosecond

Where Void23.1.0 is defined as void23 (can't use voids as union members directly, at least not yet).

Option C: Resurrect the old timestamp-related debates (1, 2) and see if we can either go back to 56-bit timestamps or find some cleverer solution. I never liked the short timestamp (as explained in the linked topics) but there didn't seem to be any other solution.

will comment on this tomorrow (May 15th)

Option B seems the most reasonable since some uses of this type will not require special values, therefore; B seems to optimize for the simplest use case.
I don't get the union idea though. How does that solve anything?

Suppose you have a flag like this:
bool valid
truncated uint23 decamicrosecond

When you receive a message, you can go about handling it like this:
if (message.timestamp.valid)  // Danger! Easy to forget.
{
    handle(message.timestamp.decamicrosecond * 10, message.value);
}

This is an unsafe typing fallacy: the protocol of handling this value could have been expressed through the type system, which would have allowed the compiler (assuming a strongly statically typed language here) to prevent the developer from using the value without checking whether it's valid first.
With the union, you would do something like this (the exact implementation may differ, this is only to demonstrate the idea):
if (auto decamicrosecond = message.timestamp.as<uavcan::time::SynchronizedAmbiguousTimestamp::Fields::decamicrosecond>())
{
    handle(*decamicrosecond * 10, message.value);
}

The language prevents you from using the value without checking first whether it exists. A DSDL union is a way to express the optionality of the value through the DSDL type system.

Option C: Resurrect the old timestamp-related debates (1, 2) and see if we can either go back to 56-bit timestamps or find some cleverer solution. I never liked the short timestamp (as explained in the linked topics) but there didn't seem to be any other solution.

I found myself leaning towards this option. My assessment is that CAN 2.0 will mostly fall out of use in the coming years in the domain of "software-defined vehicles" (relevant discussion https://github.com/UAVCAN/public_regulated_data_types/issues/35#issuecomment-403289032). Given that, and considering that the use of narrow timestamps essentially amounts to the optimization of the protocol for CAN 2.0, I would suggest considering switching back to the large timestamp. Some of the data points discussed in the linked above threads (1, 2) may have become partially obsolete since.

If we chose to go the way of option C, we could somewhat weaken the adverse effects on CAN 2.0 by defining a non-timestamped alternative for every scalar and vector type in the SI namespace, allowing adopters to sacrifice timestamp for bandwidth and latency. An interesting side effect of that change would be that we will be able to encode unit of measurement in the type. For example, currently, we have a SI type uavcan.si.electric_current.Scalar, which is defined as:
uavcan.time.SynchronizedAmbiguousTimestamp.1.0 timestamp
float32 ampere
@assert _offset_ / 8 == {7}

The above definition would be renamed into uavcan.si.electric_current.ScalarTS; the new definition under the old name would simply omit the timestamp:
float32 ampere

Now, suppose that you are defining a new application-specific data type; let it contain a current setpoint for the sake of example. Normally it might look as:
uint8 index_offset
void19
float32[<=30] current_setpoint
@assert _offset_ % 8 == {0}

Having the suitable non-timestamped SI type, one could express the unit in the type:
uint8 index_offset
void19
uavcan.si.electric_current.Scalar[<=30] current_setpoint  # <-- here
@assert _offset_ % 8 == {0}

Implementations could then optionally special-case the types under uavcan.si.* as mappings to the appropriate definitions of a typesafe physical units library, like Boost Units.

My assessment is that CAN 2.0 will mostly fall out of use in the coming years

Let me just challenge that statement first. I'm not convinced. What data do you have to support CAN-FD even overtaking CAN 2.0 in the "next few years"? Specifically, my assumption is that we'll see a lot of FD capable peripherals and transceivers deployed but that they may be used in CAN 2.0 mode until all the nodes on a vehicle have been converted and have overcome the challenges associated with the faster data rate (e.g. bus capacitance) and larger data payloads (e.g. downstream data busses might not be ready to handle the additional load).

During today's dev call we have reached a tentative consensus to implement Option C. The resulting suboptimality of the SI protocol for CAN 2.0 is considered tolerable because SI is a relatively minor and insignificant subset of the protocol, lack of good support for which should not significantly affect the adequacy of UAVCAN for CAN 2.0 deployments. The upside of this option is the removal of inherently problematic roll-over timestamp types.

Fixed in #67


Fail to automatically activate the venv

Hi,
After running uv run hello.py, it seems that uv failed to automatically activate the venv in the current project. But uv did find this venv. Only after manually activating it using source .venv/bin/activate can the venv be correctly recognized.
arc in WordCloud via v3.9.6
➜ uv python find                                                   [ 04:53:17 ]
/Users/arc/Research/WordCloud/.venv/bin/python3

arc in WordCloud via v3.9.6
➜ uv run hello.py                                                  [ 04:53:21 ]
Hello from wordcloud!

arc in WordCloud via v3.9.6
➜ which python3                                                    [ 04:56:13 ]
/usr/bin/python3

arc in WordCloud via v3.9.6
➜ source .venv/bin/activate                                        [ 04:56:20 ]

arc in WordCloud via v3.12.7 (WordCloud)
➜ which python3                                                    [ 04:59:13 ]
/Users/arc/Research/WordCloud/.venv/bin/python3

This is by design -- uv run can't activate the environment persisntely, since it can't modify your shell. So the command you run within uv run has access to the environment (i.e., in uv run hello.py, hello.py has access to the environment), but subsequent commands won't.

Thanks, I get it.


Add Dutch translation (nl_NL)

Added a translation for the Dutch language.
I've also enabled it in the module's build.gradle.

This is my first time using GitHub's "change request" thing so I'm not sure if you're getting notifications or not. Leaving this comment here to make sure you got the notification.

Let me know if there's a heuristic that might work as an approximation for that rule, or if we should just ignore it for now

It's not important, might be good for a first issue.
As you said, figuring out what's a surname or not is a difficult task, especially if the artist name has nothing to do with the person (ex. "AC/DC" or "The Eagles")

I have too much free time on my hands currently so I'd be happy to translate the Play listing or any other apps that you wish.


Implement frequency-domain bootstrapping

Is your feature request related to a problem? Please describe.
All extant methods are in the original time series domain. The package could benefit by adding complementary frequency-domain methods.
Describe the solution you'd like
Some helpful papers (evolving list):
1
2

To me, this (at least the non-paywalled paper 2) reads like a pipeline or composite. That is transform -> bootstrap -> inverse_transform, where transform is fft, or transform (fft) -> transform (smoothe) -> bootstrap -> inverse_transform(fft)
Should we read this as a case for pipelines?
At least in sktime, where fft is already present, this pipeline could be easily built.


Wrong PyPi Link in Docs

Expected Behaviour
The PyPi Url should redirect to the correct Project Page.
Observed Behaviour
The Url is wrong.
Steps to reproduce

Go to: https://docs.n3v.xyz/ntfpy/
Click on: https://pypi.org/projects/ntfpy
Get a 404

Context (Environment)
https://docs.n3v.xyz/ntfpy/
Possible Solution
Change the Url from https://pypi.org/projects/ntfpy to https://pypi.org/project/ntfpy. (Notice the removed s)

Thanks for noticing, should be fixed now:)
Actually, that documentation is slightly outdated, it'd be better to use https://ntfpy.nevdocs.xyz, which might still be worked on but is up to date 😅


can't compile - "access-broker.c:545:34: error: 'MAX_LOADED_OBJECTS1' undeclared"

make failed. It gave err:
access-broker.c: In function 'access_broker_get_trans_object_count':
src/access-broker.c:545:34: error: 'MAX_LOADED_OBJECTS1' undeclared (first use in this function)
TRANSIENT_LAST - TRANSIENT_FIRST,
^
Please advice. Thanks!

this was fixed upstream in 92a0830306c2eb3081b5ac3329f7504cd58d670b in the master branch, 0acc8e37cd4f3738d21ccc1ec43ac7d9aebf6277 in the 1.x release branch. You need to update your TSS to the latest release: https://github.com/01org/TPM2.0-TSS/releases/tag/1.1.0
If this doesn't fix your issue feel free to re-open it with new details.


请问你后面解决了嘛？

Hi @svishwa , when I train my own datasets(about grape counting), the et_cnt value always 0.0. I think it might be caused by the number of groups. I've changed the number of groups in both the CrowdCounter and loss function, which are failed. Could you give me some guidance?
By the way，my preprocessed dataset can be trained successfully on MCNN.

Since I am facing the same issue when I try to train my own dataset.
Could there be any potential clues on what exactly is happening? producing zero estimating count in my point of view indicates that the model isn't able to identify the count in the image and while stuck there forever may indicate that the model isn't able to learn the pattern in the new data.
At least if any raw assumptions or directions on what changes should we look into would may prove very beneficial..


⚠ Bofrost.de has degraded performance

In d536f97, Bofrost.de (https://www.bofrost.de) experienced degraded performance:

HTTP code: 200
Response time: 1580 ms

Resolved: Bofrost.de performance has improved in c449a39.


installer fails on CentOS8, unmet dep slirp4netns

Sorry, I am not sure if this is the correct place to put this, but the installer is failing with dependency issues.  docker-ce-rootless-extras seems to require slirp4netns.
FWIW I had installed docker on a server on Friday, that server doesn't have docker-ce-rootless-extras installed, which is what  seems to depend on slirp4netns.
# curl -fsSL https://get.docker.com | sudo bash

# Executing docker install script, commit: 3d8fe77c2c46c5b7571f94b42793905e5b3e42e4
+ sh -c 'yum install -y -q yum-utils'
+ sh -c 'yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo'
Adding repo from: https://download.docker.com/linux/centos/docker-ce.repo
+ '[' stable '!=' stable ']'
+ sh -c 'yum makecache'
CentOS-8 - AppStream                                                                  8.5 kB/s | 4.3 kB     00:00
CentOS-8 - Base                                                                        19 kB/s | 3.9 kB     00:00
CentOS-8 - Extras                                                                     7.0 kB/s | 1.5 kB     00:00
Docker CE Stable - x86_64                                                              12 kB/s | 3.5 kB     00:00
Extra Packages for Enterprise Linux Modular 8 - x86_64                                 48 kB/s |  18 kB     00:00
Extra Packages for Enterprise Linux 8 - x86_64                                        151 kB/s |  18 kB     00:00
Metadata cache created.
+ '[' -n '' ']'
+ sh -c 'yum install -y -q docker-ce'
Error:
 Problem: package docker-ce-3:20.10.1-3.el8.x86_64 requires docker-ce-rootless-extras, but none of the providers can be installed
  - package docker-ce-rootless-extras-20.10.0-3.el8.x86_64 requires slirp4netns >= 0.4, but none of the providers can be installed
  - package docker-ce-rootless-extras-20.10.1-3.el8.x86_64 requires slirp4netns >= 0.4, but none of the providers can be installed
  - cannot install the best candidate for the job
  - package slirp4netns-0.4.2-3.git21fdece.module_el8.3.0+479+69e2ae26.x86_64 is filtered out by modular filtering
  - package slirp4netns-1.1.4-2.module_el8.3.0+475+c50ce30b.x86_64 is filtered out by modular filtering
  - package slirp4netns-0.4.2-3.git21fdece.module_el8.2.0+304+65a3c2ac.x86_64 is filtered out by modular filtering
  - package slirp4netns-0.4.2-3.git21fdece.module_el8.2.0+305+5e198a41.x86_64 is filtered out by modular filtering

thanks folks

package slirp4netns-0.4.2-3.git21fdece.module_el8.2.0+305+5e198a41.x86_64 is filtered out by modular filtering

Please try dnf uninstall slirp4netns then dnf install slirp4netns

Thanks for your response,
As it turns out slirp4netns was never installed since it can not be found ( note the repos used  below ).  However, there are 3 versions found in the app-stream which seem to be incompatible with this installation http://mirror.centos.org/centos/8/AppStream/x86_64/os/Package.
fwiw, by using --nobest to the cli it will install not requiring slirp4netns
# dnf remove slirp4netns
No match for argument: slirp4netns
No packages marked for removal.
Dependencies resolved.
Nothing to do.
Complete!
# dnf search slirp4netns
Last metadata expiration check: 0:00:55 ago on Wed 16 Dec 2020 09:25:57 AM EST.
CentOS-8 - AppStream                                                                  8.5 kB/s | 4.3 kB     00:00
CentOS-8 - Base                                                                        19 kB/s | 3.9 kB     00:00
CentOS-8 - Extras                                                                     7.0 kB/s | 1.5 kB     00:00
Docker CE Stable - x86_64                                                              12 kB/s | 3.5 kB     00:00
Extra Packages for Enterprise Linux Modular 8 - x86_64                                 48 kB/s |  18 kB     00:00
Extra Packages for Enterprise Linux 8 - x86_64                                        151 kB/s |  18 kB     00:00
No matches found.

thank you :)

Hello everyone! Could somebody fix it?

I get the same error.

I get the same error.

Seems working fine on clean install of CentOS 8.3 (docker-ce-cli-20.10.2-3.el8.x86_64, slirp4netns-1.1.4-2.module_el8.3.0+475+c50ce30b.x86_64).

```bash
$ cat Vagrantfile
Vagrant.configure("2") do |config|
  config.vm.box = "centos/8"
  config.vm.provider :virtualbox do |v|
    v.memory = 2048
    v.cpus = 2
  end
  config.vm.provision "shell", inline: <<-SHELL
  set -eux -o pipefail
  curl -fsSL https://get.docker.com | sh
  SHELL
end
$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'centos/8'...
==> default: Matching MAC address for NAT networking...
==> default: Checking if box 'centos/8' version '2011.0' is up to date...
==> default: Setting the name of the VM: centos8_default_1611411531678_32930
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
default: Adapter 1: nat
==> default: Forwarding ports...
default: 22 (guest) => 2222 (host) (adapter 1)
==> default: Running 'pre-boot' VM customizations...
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
default: SSH address: <IP_ADDRESS>:2222
default: SSH username: vagrant
default: SSH auth method: private key
default:
default: Vagrant insecure key detected. Vagrant will automatically replace
default: this with a newly generated keypair for better security.
default:
default: Inserting generated public key within guest...
default: Removing insecure key from the guest if it's present...
default: Key inserted! Disconnecting and reconnecting using new SSH key...
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
default: No guest additions were detected on the base box for this VM! Guest
default: additions are required for forwarded ports, shared folders, host only
default: networking, and more. If SSH fails on this machine, please install
default: the guest additions and repackage the box to continue.
default:
default: This is not an error message; everything may continue to work properly,
default: in which case you may ignore this message.
==> default: Rsyncing folder: /Users/suda/vagrant/centos8/ => /vagrant
==> default: Running provisioner: shell...
default: Running: inline script
default: ++ curl -fsSL https://get.docker.com
default: ++ sh
default: # Executing docker install script, commit: 3d8fe77c2c46c5b7571f94b42793905e5b3e42e4
default: + sh -c 'yum install -y -q yum-utils'
default: + sh -c 'yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo'
default: Adding repo from: https://download.docker.com/linux/centos/docker-ce.repo
default: + '[' stable '!=' stable ']'
default: + sh -c 'yum makecache'
default: CentOS Linux 8 - AppStream                      7.7 kB/s | 4.3 kB     00:00
default: CentOS Linux 8 - BaseOS                         7.5 kB/s | 3.9 kB     00:00
default: CentOS Linux 8 - Extras                         2.2 kB/s | 1.5 kB     00:00
default: Docker CE Stable - x86_64                        50 kB/s | 7.8 kB     00:00
default: Metadata cache created.
default: + '[' -n '' ']'
default: + sh -c 'yum install -y -q docker-ce'
default: warning: /var/cache/dnf/appstream-fd636d66ef3d60cc/packages/container-selinux-2.144.0-1.module_el8.3.0+475+c50ce30b.noarch.rpm: Header V3 RSA/SHA256 Signature, key ID 8483c65d: NOKEY
default: Importing GPG key 0x8483C65D:
default:  Userid     : "CentOS (CentOS Official Signing Key<EMAIL_ADDRESS>default:  Fingerprint: 99DB 70FA E1D7 CE22 7FB6 4882 05B5 55B3 8483 C65D
default:  From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
default: warning: /var/cache/dnf/docker-ce-stable-fa9dc42ab4cec2f4/packages/containerd.io-1.4.3-3.1.el8.x86_64.rpm: Header V4 RSA/SHA512 Signature, key ID 621e9f35: NOKEY
default: Importing GPG key 0x621E9F35:
default:  Userid     : "Docker Release (CE rpm<EMAIL_ADDRESS>default:  Fingerprint: 060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35
default:  From       : https://download.docker.com/linux/centos/gpg
default: If you would like to use Docker as a non-root user, you should now consider
default: adding your user to the "docker" group with something like:
default:
default:   sudo usermod -aG docker your-user
default:
default: Remember that you will have to log out and back in for this to take effect!
default:
default: WARNING: Adding a user to the "docker" group will grant the ability to run
default:          containers which can be used to obtain root privileges on the
default:          docker host.
default:          Refer to https://docs.docker.com/engine/security/security/#docker-daemon-attack-surface
default:          for more information.
$ vagrant ssh -- rpm -qa centos* docker* slirp* | sort
centos-gpg-keys-8-2.el8.noarch
centos-linux-release-8.3-1.2011.el8.noarch
centos-linux-repos-8-2.el8.noarch
docker-ce-20.10.2-3.el8.x86_64
docker-ce-cli-20.10.2-3.el8.x86_64
docker-ce-rootless-extras-20.10.2-3.el8.x86_64
slirp4netns-1.1.4-2.module_el8.3.0+475+c50ce30b.x86_64
</p>
</details>

Seems working fine on clean install of CentOS 8.3 (docker-ce-cli-20.10.2-3.el8.x86_64, slirp4netns-1.1.4-2.module_el8.3.0+475+c50ce30b.x86_64).

```bash
$ cat Vagrantfile
Vagrant.configure("2") do |config|
  config.vm.box = "centos/8"
  config.vm.provider :virtualbox do |v|
    v.memory = 2048
    v.cpus = 2
  end
  config.vm.provision "shell", inline: <<-SHELL
  set -eux -o pipefail
  curl -fsSL https://get.docker.com | sh
  SHELL
end
$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'centos/8'...
==> default: Matching MAC address for NAT networking...
==> default: Checking if box 'centos/8' version '2011.0' is up to date...
==> default: Setting the name of the VM: centos8_default_1611411531678_32930
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
default: Adapter 1: nat
==> default: Forwarding ports...
default: 22 (guest) => 2222 (host) (adapter 1)
==> default: Running 'pre-boot' VM customizations...
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
default: SSH address: <IP_ADDRESS>:2222
default: SSH username: vagrant
default: SSH auth method: private key
default:
default: Vagrant insecure key detected. Vagrant will automatically replace
default: this with a newly generated keypair for better security.
default:
default: Inserting generated public key within guest...
default: Removing insecure key from the guest if it's present...
default: Key inserted! Disconnecting and reconnecting using new SSH key...
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
default: No guest additions were detected on the base box for this VM! Guest
default: additions are required for forwarded ports, shared folders, host only
default: networking, and more. If SSH fails on this machine, please install
default: the guest additions and repackage the box to continue.
default:
default: This is not an error message; everything may continue to work properly,
default: in which case you may ignore this message.
==> default: Rsyncing folder: /Users/suda/vagrant/centos8/ => /vagrant
==> default: Running provisioner: shell...
default: Running: inline script
default: ++ curl -fsSL https://get.docker.com
default: ++ sh
default: # Executing docker install script, commit: 3d8fe77c2c46c5b7571f94b42793905e5b3e42e4
default: + sh -c 'yum install -y -q yum-utils'
default: + sh -c 'yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo'
default: Adding repo from: https://download.docker.com/linux/centos/docker-ce.repo
default: + '[' stable '!=' stable ']'
default: + sh -c 'yum makecache'
default: CentOS Linux 8 - AppStream                      7.7 kB/s | 4.3 kB     00:00
default: CentOS Linux 8 - BaseOS                         7.5 kB/s | 3.9 kB     00:00
default: CentOS Linux 8 - Extras                         2.2 kB/s | 1.5 kB     00:00
default: Docker CE Stable - x86_64                        50 kB/s | 7.8 kB     00:00
default: Metadata cache created.
default: + '[' -n '' ']'
default: + sh -c 'yum install -y -q docker-ce'
default: warning: /var/cache/dnf/appstream-fd636d66ef3d60cc/packages/container-selinux-2.144.0-1.module_el8.3.0+475+c50ce30b.noarch.rpm: Header V3 RSA/SHA256 Signature, key ID 8483c65d: NOKEY
default: Importing GPG key 0x8483C65D:
default:  Userid     : "CentOS (CentOS Official Signing Key<EMAIL_ADDRESS>default:  Fingerprint: 99DB 70FA E1D7 CE22 7FB6 4882 05B5 55B3 8483 C65D
default:  From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
default: warning: /var/cache/dnf/docker-ce-stable-fa9dc42ab4cec2f4/packages/containerd.io-1.4.3-3.1.el8.x86_64.rpm: Header V4 RSA/SHA512 Signature, key ID 621e9f35: NOKEY
default: Importing GPG key 0x621E9F35:
default:  Userid     : "Docker Release (CE rpm<EMAIL_ADDRESS>default:  Fingerprint: 060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35
default:  From       : https://download.docker.com/linux/centos/gpg
default: If you would like to use Docker as a non-root user, you should now consider
default: adding your user to the "docker" group with something like:
default:
default:   sudo usermod -aG docker your-user
default:
default: Remember that you will have to log out and back in for this to take effect!
default:
default: WARNING: Adding a user to the "docker" group will grant the ability to run
default:          containers which can be used to obtain root privileges on the
default:          docker host.
default:          Refer to https://docs.docker.com/engine/security/security/#docker-daemon-attack-surface
default:          for more information.
$ vagrant ssh -- rpm -qa centos* docker* slirp* | sort
centos-gpg-keys-8-2.el8.noarch
centos-linux-release-8.3-1.2011.el8.noarch
centos-linux-repos-8-2.el8.noarch
docker-ce-20.10.2-3.el8.x86_64
docker-ce-cli-20.10.2-3.el8.x86_64
docker-ce-rootless-extras-20.10.2-3.el8.x86_64
slirp4netns-1.1.4-2.module_el8.3.0+475+c50ce30b.x86_64
</p>
</details>

I had the same probem and was able to reproduce and solve it.
You need to enable the container-tools.
dnf -y module enable container-tools
Problem explained:
When i set up the instance i installed docker with an ansible role form geerlingguy (ansible-role-docker). Before version 3.0.0 this role disabled the containter-tools module to make an install of docker 19.x possible. With docker 20.x you need this module activated to be able to install docker. The ansible role itself is just "not disabling" the module anymore for a good reason.
I hope i can help someone with this. :)

Similar problem on RHEL 7.4, cannot install package docker-ce-rootless-extras due to missing dependency; searched for it on its own:
# yum install slirp4netns
Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager
No package slirp4netns available.
Error: Nothing to do

I am having a similar issue, I am using OL7 on ARM-based server.
[opc@instance-20211009-1259 ~]$ sudo yum install docker-ce docker-ce-cli containerd.io -y
Loaded plugins: langpacks, ulninfo
Resolving Dependencies
--> Running transaction check
---> Package containerd.io.aarch64 0:1.4.11-3.1.el7 will be installed
---> Package docker-ce.aarch64 3:20.10.9-3.el7 will be installed
--> Processing Dependency: docker-ce-rootless-extras for package: 3:docker-ce-20.10.9-3.el7.aarch64
---> Package docker-ce-cli.aarch64 1:20.10.9-3.el7 will be installed
--> Running transaction check
---> Package docker-ce-rootless-extras.aarch64 0:20.10.9-3.el7 will be installed
--> Processing Dependency: fuse-overlayfs >= 0.7 for package: docker-ce-rootless-extras-20.10.9-3.el7.aarch64
--> Processing Dependency: slirp4netns >= 0.4 for package: docker-ce-rootless-extras-20.10.9-3.el7.aarch64
--> Finished Dependency Resolution
Error: Package: docker-ce-rootless-extras-20.10.9-3.el7.aarch64 (docker-ce-stable)
           Requires: slirp4netns >= 0.4
Error: Package: docker-ce-rootless-extras-20.10.9-3.el7.aarch64 (docker-ce-stable)
           Requires: fuse-overlayfs >= 0.7
 You could try using --skip-broken to work around the problem
 You could try running: rpm -Va --nofiles --nodigest

Any idea how I can fix this issue?

Still broken.

On Oracle Linux Server 7.9 I had a similar issue when installing docker-ce
Error: Package: docker-ce-rootless-extras-20.10.12-3.el7.aarch64 (docker-ce-stable)
Requires: fuse-overlayfs >= 0.7
Error: Package: docker-ce-rootless-extras-20.10.12-3.el7.aarch64 (docker-ce-stable)
Requires: slirp4netns >= 0.4
sudo yum-config-manager --enable ol7_developer
fixed the issue for me

On the RHEL 7 dependencies can be resolved by enabling extras repo:
yum-config-manager --enable rhel-7-server-rhui-extras-rpms

on RHEL 7.6 the below helped me
$vi /etc/yum.repos.d/docker-ce.repo
at the starting add below
[centos-extras]
name=Centos extras - $basearch
baseurl=http://mirror.centos.org/centos/7/extras/x86_64
enabled=1
gpgcheck=1
gpgkey=http://centos.org/keys/RPM-GPG-KEY-CentOS-7
Then run the installation command to install dependent packages
sudo yum -y install slirp4netns fuse-overlayfs container-selinux
now install docker
sudo yum install docker-ce docker-ce-cli containerd.io

@14by12 cool, thanks for the update. :)
I am going to close this since CentOS has added the package docker's script assumed was there.
I find it embarrassing for docker.com, every time someone says just type https://get.docker.com;  Someone should have looked at this a little deeper than to just wait in silence for a a Linux distro, but I guess that is open source for you :)


vm file based query

Hi i am trying to modify the "entity-detail.component.html.e.vm"  file
but the below condition for one to one and one to many relationship always fails
#if($entity.inverseOneToOne.flatUp.size > 0 || $entity.oneToMany.flatUp.size > 0 || $entity.manyToMany.flatUp.size > 0)

What do you mean by fails ? return false or throw an exception ?
I assume 'false'... don't forget that inverse associations (inverse one-to-one or one-to-many) must be declared in the celerio configuration file
Check the doc for configuring such associations:
one to many
inverse one to one


Title Missing from the web Page

The title is missing from the index.html page
I would like to work on the issue

Sure. Go ahead but if I won't like it, I will close your PR.
All the best!

Sure. Go ahead but if I won't like it, I will close your PR.

All the best!

Should I give something of my own or will you suggest ?

Should I give something of my own or will you suggest ?

Try something by your own but webpage should look good to me after completion


Remove temporary variable.

FYI
This is sample code.
Reference: https://stackoverflow.com/questions/2510115/jquery-can-i-call-delay-between-addclass-and-such
If you don't need this code, please close this PR.

おおー。ありがとうございます！


Allowing to raise validation errors with a custom location

Initial Checks

[X] I have searched Google & GitHub for similar requests and couldn't find anything
[X] I have read and followed the docs and still think this feature is missing

Description
I would like to raise exceptions with a custom location.
An example use case:
from pydantic import BaseModel, Field, model_validator, ValidationError
from typing import Literal

class MyModel(BaseModel):
    uppercase_value: Literal["A", "B"]

class AnotherModel(BaseModel):
    lowercase_value: Literal["a", "b"]
    another_field: MyModel

    @model_validator(mode="after")
    def validate_value_1_of_mymodel(cls, model):
        if model.lowercase_value == "a":
            if model.another_field.uppercase_value != "A":
                raise ValueError("uppercase_value must be A if lowercase_value is a")
        elif model.lowercase_value == "b":
            if model.another_field.uppercase_value != "B":
                raise ValueError("uppercase_value must be B if lowercase_value is b")

        return model

my_data = {"lowercase_value": "a", "another_field": {"uppercase_value": "B"}}
try:
    AnotherModel(**my_data)
except ValidationError as e:
    error_dict = e.errors()[0]
    location = error_dict["loc"]
    print(f"Error in {location}") # Error in ()

In the example above, I raise an exception for the data in the position another_field.uppercase_value. However, Pydantic doesn't know about this position since I do this check in the model validator of AnotherModel. I have to do that check there because I need lowecase_value to check another_field.uppercase_value. So, to Pydantic, the location of this error message is the root. However, it's not for this specific case.
I parse error messages of Pydantic to point the users to the problematic location directly. I cannot do this in these kinds of validations without specifying the location manually in the error message. Something like this would be very nice:
raise PydanticCustomError("error message", loc="another_field.uppercase_value")

Which can overwrite the default loc that Pydantic computes.
Affected Components

[ ] Compatibility between releases
[X] Data validation/parsing
[ ] Data serialization - .model_dump() and .model_dump_json()
[ ] JSON Schema
[ ] Dataclasses
[ ] Model Config
[ ] Field Types - adding or changing a particular data type
[ ] Function validation decorator
[ ] Generic Models
[ ] Other Model behaviour - model_construct(), pickling, private attributes, ORM mode
[ ] Plugins and integration with other tools - mypy, FastAPI, python-devtools, Hypothesis, VS Code, PyCharm, etc.

Hi @sinaatalay,
Great question. We provide support for customizing error messages. If you check out our docs on customzing error messages here, you'll find an example on how to customize the loc presentation. Though this isn't exactly your use case, I think it provides some good context as to how you could implement this request!
Perhaps you could attach a flag value to your ValueError that you check for when modifying the errors() output...
Let me know if you have any other questions 😄.

Hi @sinaatalay,
Great question. We provide support for customizing error messages. If you check out our docs on customzing error messages here, you'll find an example on how to customize the loc presentation. Though this isn't exactly your use case, I think it provides some good context as to how you could implement this request!
Perhaps you could attach a flag value to your ValueError that you check for when modifying the errors() output...
Let me know if you have any other questions 😄.

Hi @sydney-runkle

Hi @sinaatalay,
Great question. We provide support for customizing error messages. If you check out our docs on customzing error messages here, you'll find an example on how to customize the loc presentation. Though this isn't exactly your use case, I think it provides some good context as to how you could implement this request!
Perhaps you could attach a flag value to your ValueError that you check for when modifying the errors() output...
Let me know if you have any other questions 😄.

Hi @sydney-runkle,
I have checked the docs, seems there isn't a way to modify the loc value, such as use field title as loc value. examples:
`python
from pydantic import BaseModel, Field, ValidationError
class User(BaseModel):
username: str = Field(..., min_length=3, max_length=50, title="用户名", description="用户名")
try:
User(username="12")
except ValidationError as e:
print(e.errors())
"""
[{'type': 'string_too_short', 'loc': ('username',), 'msg': 'String should have at least 3 characters', 'input': '12', 'ctx': {'min_length': 3}, 'url': 'https://errors.pydantic.dev/2.7/v/string_too_short'}]
"""
`
How can I change the 'loc': ('username', )  to 'loc': ('用户名')
Thanks a lot!

This is pretty hacky, and I don't think I would recommend this as a best practice, but the general idea would be that you want to pull information out of the User.model_fields data in order to transform the errors:
from typing import Any, Dict, List, Tuple, Union

from pydantic import BaseModel, Field, ValidationError

class User(BaseModel):
    username: str = Field(..., min_length=3, max_length=50, title="用户名", description="用户名")

def loc_to_dot_sep(loc: Tuple[Union[str, int], ...]) -> str:
    path = ''
    for i, x in enumerate(loc):
        if isinstance(x, str):
            path += User.model_fields[x].title
        elif isinstance(x, int):
            path += f'[{x}]'
        else:
            raise TypeError('Unexpected type')
    return path

def convert_errors(e: ValidationError) -> List[Dict[str, Any]]:
    new_errors: List[Dict[str, Any]] = e.errors()
    for error in new_errors:
        error['loc'] = loc_to_dot_sep(error['loc'])
    return new_errors

try:
    User(username="12")
except ValidationError as e:
    print(convert_errors(e))

"""
[{'type': 'string_too_short', 'loc': '用户名', 'msg': 'String should have at least 3 characters', 'input': '12', 'ctx': {'min_length': 3}, 'url': 'https://errors.pydantic.dev/2.8/v/string_too_short'}]"""

Probably a better approach would be to use custom errors: https://docs.pydantic.dev/dev/errors/errors/#custom-errors.

This is pretty hacky, and I don't think I would recommend this as a best practice, but the general idea would be that you want to pull information out of the User.model_fields data in order to transform the errors:
from typing import Any, Dict, List, Tuple, Union

from pydantic import BaseModel, Field, ValidationError

class User(BaseModel):
    username: str = Field(..., min_length=3, max_length=50, title="用户名", description="用户名")

def transform_loc(loc: Tuple[Union[str, int], ...]) -> str:
    path = ''
    for i, x in enumerate(loc):
        if isinstance(x, str):
            path += User.model_fields[x].title
        elif isinstance(x, int):
            path += f'[{x}]'
        else:
            raise TypeError('Unexpected type')
    return path

def convert_errors(e: ValidationError) -> List[Dict[str, Any]]:
    new_errors: List[Dict[str, Any]] = e.errors()
    for error in new_errors:
        error['loc'] = transform_loc(error['loc'])
    return new_errors

try:
    User(username="12")
except ValidationError as e:
    print(convert_errors(e))

"""
[{'type': 'string_too_short', 'loc': '用户名', 'msg': 'String should have at least 3 characters', 'input': '12', 'ctx': {'min_length': 3}, 'url': 'https://errors.pydantic.dev/2.8/v/string_too_short'}]"""

Probably a better approach would be to use custom errors: https://docs.pydantic.dev/dev/errors/errors/#custom-errors.

Thanks for the reply, but what I want is a global change, not for a single field. This means I have to raise a custom error for every field, and that's a lot of work.

@hail-pas,
Thanks for your feedback - I don't know of a way at the moment. I'll chat with the team tomorrow, and see what they think. It's possible that this merits a new feature request issue, but I'll keep you updated.

@hail-pas,
Thanks for your feedback - I don't know of a way at the moment. I'll chat with the team tomorrow, and see what they think. It's possible that this merits a new feature request issue, but I'll keep you updated.

Thank you for the hard work you all have done.  I'll keep following

Alright, I opened https://github.com/pydantic/pydantic/issues/9686 which should cover this case.


Added clearListOnPick and keepListOpen options

GO-842
Objective
When clicked outside of the geocoding  box, in some use cases I would like the results to keep on being displayed. Currently they disappear until we focus the gecocoding control  again
Description
Added options:
/**
   * If `true`, then after picking a result from the list or map the list will be cleared and not re-displayed on input box focus.
   *
   * Default value is `false`.
   */
  clearListOnPick?: boolean;

  /**
   * Keep the list open even if the control is not focused.
   *
   * Default value is `false`.
   */
  keepListOpen?: boolean;

Acceptance
Tested in the included React example.

@petr-hajek i've updated the style


Implement on-the-fly model merging/weighting

Is your feature request related to a problem? Please describe.
Model merging is possible and relatively fast, however it takes up a lot of disk space especially when experimenting.
Describe the solution you'd like
As far as I know, model merging can be done completely on-the-fly (in RAM). This would be a much nicer solution and saves disk space.
Additional context
Reference implementation of model merging:
https://gist.github.com/n00mkrad/c471012904f2936d0ec7c2bdfde01652

Looks very straightforward. Are there any public model repositories on which I could test the code?

Closing as this has been addressed in 3.0 via the Model Manager


p2wsh addresses

I'm looking for to double check some of my python code outputs and find that your outputs for p2wsh doesnt match this sample which I was guided:
https://bc-2.jp/tools/bech32demo/index.html
Could You check your metod for this and explain how there is difference.
Thanks in advance.

Could you provide an actual practical example with private keys?
Thanks.

Sure,
For sample private key:
6b88c087247aa2f07ee1c5956b8e1a9f4c7f892a70e324f1bb3d161e05ca107b
your code get me:
Private Key HEX: 6b88c087247aa2f07ee1c5956b8e1a9f4c7f892a70e324f1bb3d161e05ca107b
Private Key WIF: 5JdeQ39z8NUkNVvB37tt74Cu2WSNVj7qb9PdY651UoQnqyCm937
Private Key WIF compressed: Kzpk4gWf9XoURtdhJMRzZj9WdevysnuBTi2tGDNh7hr1LpJcgvXd
Public Key: 04218ad6cdc632e7ae7d04472374311cebbbbf0ab540d2d08c3400bb844c654231b385c9781def7eabb9900860621d6f1ba5ac3858265459ef5c217feb9568c37c
Public Key compressed: 02218ad6cdc632e7ae7d04472374311cebbbbf0ab540d2d08c3400bb844c654231
Public Address 1: 1E984zyYbNmeuumzEdqT8VSL8QGJi3byAD
Public Address 1 compressed: 18VkRiDhFu2Z17AvtpU3vL2LbTXDzCvDVo
Public Address 3: 33Hfmw1a28beXWp3EYibo7MaDfdUPoqTCn
Public Address bc1 P2WPKH: bc1q2guvw9zcu3jdnlus9xdtef9p67uuka4tze5k6y
Public Address bc1 P2WSH: bc1qaft3757t82vxt57uw3e4urqkvs7nr8r2mq0pnxuussyvaj7wc7asvlwrp0
From my point all is correct but p2wsh part
In bech32 demo output (which I linked above) for p2wsh is:
bc1q42z3npmypmj57k9yv9spskzszg0m4dmh2yyu3tq6xddjcp8pyx0q80uswh
I look into your code and find in address.py line 132:
redeem_script_P2WSH = hashlib.sha256(p).digest()
In method which I have redeem_script_P2WSH looks like hashlib.sha256(p_red).digest()
where is p_red = 0x21 + p + 0xac
I try to correct this for myself but because rest of code is too complex for my level of py knowledge and I only get errors.
Thanks for your time anyway.
If someone know more py or js code for double check this p2wsh part it will be welcome.

I finally succeed to get method which I have with no errors.
I put this part in that section:
pr1 = bytes.fromhex('21')
po1 = bytes.fromhex('ac')
p_red = pr1 + p + po1
redeem_script_P2WSH = hashlib.sha256(p_red).digest()
thanks

Would you do a pull request? Thank you for your help!

I'm not sure what's accurate anymore... I think this needs further investigation. In the example private key 6b88c087247aa2f07ee1c5956b8e1a9f4c7f892a70e324f1bb3d161e05ca107b, we have 3 different results:
bc1qaft3757t82vxt57uw3e4urqkvs7nr8r2mq0pnxuussyvaj7wc7asvlwrp0 original bitcoinadress output
bc1q3muwly6pm3u4tgf9xqr44t6d490d6e4j7syrsf2xj2tx0rnzaw9s49kpk0 website output https://bc-2.jp/tools/bech32demo/index.html
bc1q42z3npmypmj57k9yv9spskzszg0m4dmh2yyu3tq6xddjcp8pyx0q80uswh bitcoinadress after the proposed patch

I tested this somewhere else and i got your result. That why i was confident about your solution.
I need check it again.

Any update on this?

It seems your implementation of P2WSH is not correct. If you look up this page https://iancoleman.io/bip39/ , select BIP141 in the Derivation Path and choose P2WSH (1-of-1 multisig), the addresses generated for the corresponding private keys does not match your implementation.
The website uses open source JS code but my JS knowledge is limited to figure out how they are generating the P2WSH.


matching: high throughput task list

Cadence tasks lists are light weight task queues that are used to dispatch activity and decision task to cadence workers. Task lists are specific to a cadence domain but can be shared by multiple workflows within a domain. The throughput of a task list is directly proportional to the number of events generated per sec by the workflows that use that task list. Internally, task lists are owned and managed by cadence-matching service. Within matching service, task list ownership is determined by consistent hashing and the host responsible for a task list acquires a lease on the task list using CAS primitives at the persistence layer.  Given this architecture, it’s clear that a single task list throughput cannot scale beyond a point.
While this limitation can be documented and also easily worked around by using multiple task lists within a domain, there is no automatic way to prevent customers from accidentally relying on this limitation. The goal here is to provide a single task list offering for cadence customers that can provide high throughput / low latency without needing any code changes from customers.

Proposal
High Level Overview
On a high level, each task list will have N partitions behind the scenes where N is configurable. When history needs to add a task to a task list, a partition is picked by task_id % N at the routing / hashing layer. When workers poll for a task list, frontend will randomly pick a partition and forward the poll request to that partition. Rate limits at task list level will be split equally among all the partitions. Sync match will continue to work as is on each of the individual task list partitions. Except for the hashing / routing layer used to talk to matching service, the rest of the system will work as is unaware of the partitioning mechanism.
Optimization for Low Throughput Scenarios
One problem with the approach described above is that it adds additional latency for task dispatch when throughput is low and there are multiple partitions. For example, let’s say there are two partitions on a task list; partition-0 has a backlog of 5 tasks and partition-1 has none. Now, when a poller arrives at frontend, it picks a random partition, say partition-1 and forwards the poller to the host owning that task list. Since partition-1 has no tasks, we can either block until poll timeout or immediately return and have frontend try another partition. Neither of these approaches are ideal. To solve this problem, we organize the task lists into a k-ary tree where k is configurable. Basic idea is that when addTask or pollTask arrives at a non-root partition and  the partition is idle, then forward the request to the parent with some rate limiting. Specifically, the approach requires  the following rules:
AddTask (partition int, task Task)

Try local sync match first
If local sync match fails and if partition has a parent, try doing a remote sync match for this task on parent next. Limit this type of remote sync match to at most N outstanding per task list. In addition, also rate limit at max x reqs/sec. The remote sync match returns immediately when sync match is not possible.
If remote sync match fails, try writing the task to the database

Poll (partition int)

Try local sync match and/or drain local backlog first
When that fails and if partition has a parent, try stealing a task from the parent next by forwarding the poll to the parent. Limit this type of remote forwarding to at most 1 outstanding per task list

TaskReader (partition int)

Consume backlog from DB and try local sync match first
If local sync match fails and if there is no outstanding remote sync match:

Loop:
 Try remote_sync_match with short timeout (2s)
 If success, we are done
 Try local_sync_match
 If success, we are done

Failure and Other Scenarios FAQ Style
Q: What happens when workers are down and new tasks arrive at full speed ?
Non-root partitions will attempt remote sync match at full speed. However, as mentioned before, remote sync match calls to parent will be throttled heavily. So, this scenario does not result in root partition getting overloaded. All of the partitions will concurrently accept new tasks at their configured rate and write them to persistence.
Q: What happens when new tasks arrive at full speed and everything is sync matched ?
This is the best case where new tasks arriving in all partitions will get sync matched to their local pollers almost all of the time.
Q: What happens when there is a backlog in all partitions and there are not enough pollers ?
Backlog will drain slowly. Ack levels of non-leaf task list partitions might move a bit slower than ideal because ack manager may be blocked by a remote sync match attempt initiated by the task reader. However, “slow” here refers to lagging behind by a second or two in the worst case.
Q: What happens when new task arrives on a non-root partition and its poller is blocked on the parent ?
For a poller to be blocked on the parent, this partition shouldn’t have had any tasks at all when that poller arrived. So, this new task that arrived will be the first task for this task list. In this case, the addTask call will attempt remote sync match to parent, which in turn will be matched to the poller which got forwarded from this partition earlier.
Q: What happens when pollers consume tasks at roughly half the task arrival rate ?
Backlog builds on all partitions
Q: What happens when root partition is down ?
If there are enough pollers overall, there will be no impact to the remaining partitions since there will be at least one poller attached to each partition. However, when there are too few pollers and the task list throughput is very low, there will be additional task dispatch latency. This is because poller might be blocked on partition X while task arrives no partition Y.