Fix imports

Convert to Python 3 style. Also fix some print statements

Are we keeping the Python 2 backwards compatibility?

Yeah, this style of referencing imports is backwards compatible with Python 2.

How about the change from warnings to logging?

That is also backwards compatible. See here


kdePackages.libquotient: <IP_ADDRESS> -> 0.8.2

Automatic update generated by nixpkgs-update tools. This update was made based on information from https://github.com/quotient-im/libQuotient/releases.
meta.description for kdePackages.libquotient is: A Qt5/Qt6 library to write cross-platform clients for Matrix
meta.homepage for kdePackages.libquotient is: https://quotient-im.github.io/libQuotient/
Updates performed

Version update

To inspect upstream changes

Release on GitHub

Compare changes on GitHub

Impact
Checks done

built on NixOS
The tests defined in passthru.tests, if any, passed
found 0.8.2 in filename of file in /nix/store/qny6c80h0h65d3i0vgjv26yrw86nv9kk-libquotient-0.8.2

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

13 total rebuild path(s)

13 package rebuild(s)

First fifty rebuilds by attrpath
kdePackages.itinerary
kdePackages.libquotient
kdePackages.neochat
libsForQt5.itinerary
libsForQt5.libquotient
libsForQt5.neochat
plasma5Packages.itinerary
plasma5Packages.libquotient
plasma5Packages.neochat
qt6Packages.libquotient
quaternion
quaternion-qt5
quaternion-qt6

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/qny6c80h0h65d3i0vgjv26yrw86nv9kk-libquotient-0.8.2 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

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

Or:
nix build github:r-ryantm/nixpkgs/c5928c26b76c18b5cfec2d36362cff587ee09fa3#kdePackages.libquotient

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/qny6c80h0h65d3i0vgjv26yrw86nv9kk-libquotient-0.8.2
ls -la /nix/store/qny6c80h0h65d3i0vgjv26yrw86nv9kk-libquotient-0.8.2/bin

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

15 packages built:

kdePackages.itinerary
kdePackages.itinerary.debug
kdePackages.itinerary.dev
kdePackages.libquotient
kdePackages.libquotient.dev
kdePackages.neochat
kdePackages.neochat.debug
kdePackages.neochat.dev
libsForQt5.itinerary
libsForQt5.itinerary.dev
libsForQt5.libquotient
libsForQt5.libquotient.dev
libsForQt5.neochat
quaternion
quaternion-qt5

Maintainer pings
cc @colemickens @matthiasbeyer for testing.

Duplicate of https://github.com/NixOS/nixpkgs/pull/304418/ - closing in favor of this other PR.


DocsArchive-<IP_ADDRESS>Auto archive content

Auto archive content from https://github.com/OPS-E2E-PPE/docs-archive-test-source

Docs Build status updates of commit 74c0495:
:x: Validation status: errors
Please follow instructions here which may help to resolve issue.

File
Status
Preview URL
Details

:x:Error

Details

[Error]

Cannot sync git repo to specified commit because branch Release_Archive_master_2020-01-10-09-00-03 has been deleted or has been force pushed: fatal: couldn't find remote ref refs/heads/Release_Archive_master_2020-01-10-09-00-03

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


Create testnet startup script.

Summary
Create a script that will guide a user through setting up and starting a mainnet node.
Problem Definition
As a future node operator, I want it to be amazingly simple to set up and start running a Provenance mainnet node so that I don't have to spend time walking through startup documents.
Currently, to start up a node, a person would probably start at https://docs.provenance.io/ and follow through the documented procedure, which isn't very straight-forward. They might also start with this repo, which isn't much of a guide either.
The process could be made easier though.
Proposal
See https://github.com/provenance-io/mainnet/issues/18 for proposal and requirements.
Differences between this script and the script in the mainnet repo:

The quicksync URL.
The commands to output at the end should include the -t. Either that or include PIO_TESTNET=true in the env vars for the user to set.

For Admin Use

[ ] Not duplicate issue
[ ] Appropriate labels applied
[ ] Appropriate contributors tagged
[ ] Contributor assigned/self-assigned

Possibly use starship for this...


new_thread scheduler thread safety

Thread sanitizer detects a data race in the following code:
rxcpp::composite_subscription lifetime;
auto worker =
    rxcpp::observe_on_new_thread().create_coordinator(lifetime).get_worker();
std::vector<std::thread> threads;
for (int i = 0; i < 20; ++i) {
  threads.emplace_back([&worker] {
    worker.schedule([&worker](const auto &) {
      for (size_t i = 0; i <<PHONE_NUMBER>l / 6; ++i)
        ;
      printf("Work\n");
    });
  });
}
for (auto &t : threads) {
  t.join();
}
lifetime.unsubscribe();

https://gist.github.com/lebdron/883aa78504bc8b9b564e744e2951fb52
Should this bool be made atomic, or there is some other issue with the scheduler?
https://github.com/ReactiveX/RxCpp/blob/ce5dfc2fdd49693cd109a5f5470b73e982c33f35/Rx/v2/src/rxcpp/rx-scheduler.hpp#L97

Yes, I agree with TSAN. The isallowed bool should be accessed atomically.


Look for some societal data to correlate with Google trend data

What are your thoughts on this?
@tangaw @Hayleylhui

@tangaw What are your thoughts?


chore(deps): upgrade actions/cache and create-pull-request to Node v20

Motivation

 Both of these were giving warnings in GH Actions runs during the 3.5.5 release

release.yaml run

Node.js 16 actions are deprecated. Please update the following actions to use Node.js 20: actions/cache@v3. For more information see: https://github.blog/changelog/2023-09-22-github-actions-transitioning-from-node-16-to-node-20/.

Screenshot for posterity:

changelog.yaml run

Node.js 16 actions are deprecated. Please update the following actions to use Node.js 20: peter-evans/create-pull-request@v5. For more information see: https://github.blog/changelog/2023-09-22-github-actions-transitioning-from-node-16-to-node-20/.

Screenshot for posterity:

Modifications

actions/cache v4 updated to Node 20

no other breaking changes
used latest v4.0.1 (v3.3.3 -> v4.0.1)

peter-evans/create-pull-request v6 updated to Node 20

other breaking changes do not affect our usage:

we don't use push-to-fork
the author and committer changes are to the automated bot and just make it more accurate

used latest v6.0.1 (v5.0.2 -> v6.0.1)

Verification

This only runs during releases, so a bit hard to test 😕
Future Work
A few more actions need updating as well, but they have some blockers that need resolving:

actions/upload-artifact and actions/download-artifact blocked by intermittent failures: #12455
Azure/docker-login has no update / seems unmaintained in general: https://github.com/Azure/docker-login/pull/64

should probably switch all these to docker/login-action which we already use in the very same file; they should work on Windows too since actions are all Node-based

Azure/docker-login has no update / seems unmaintained in general: Update to nodejs v20 Azure/docker-login#64

should probably switch all these to docker/login-action which we already use in the very same file; they should work on Windows too since actions are all Node-based

Completed this in #12791

This only runs during releases, so a bit hard to test 😕

Can confirm that the actions/cache update ran fine on main now: https://github.com/argoproj/argo-workflows/actions/runs/8430591394/job/23086692584.
create-pull-request only runs on a versioned release for its changelog though, so have yet to confirm that


Update descriptions of fields to reflect hidden default change

& info provided in
https://github.com/github/choosealicense.com/issues/290#issuecomment-138722623

:+1:. Thanks @mlinksva!


Provide parent pointers in ContinuationObjects, instead of FiberStacks

This PR:

Adds a parent field to ContinuationObject, pointing to the parent ContinuationObject or NULL.
Removes the pointers stored near the top of a FiberStack to the parent FiberStack. As a result, the assembly in the fibre crate for dealing with stack switching is now reverted to be identical to the one from the fiber create.
The "typed continuation store" field in the VMContext is now consistently used to point to the currently running continuation object, or NULL if not running inside a continuation (i.e., at the toplevel).

These changes also lead to some refactoring of the code for Operator::Resume in code_translator.rs.

Please rebase again, then I will take a look :-) thanks!

Okay, I've addressed two of your comments, let's leave the remaining two as future improvements.


Add stack_minor instruction.

Interleaves two or more vectors.
WIP

To over-communicate, the immediate use-case for this is:

taking one input tensor from HBM
running two elementwise operations on it
stacking the two tensors
reshaping so that the two tensors interleave with each other.

Thomas is concerned that the reshape may be expensive, and it is right now.  We should be able to make it a nop, with enough work in layout assignment.  So I want to spend some time figuring out how hard that is.  If it's really annoying, we could have an "interleave" function instead of stack-minor.  But personally I'd prefer stack-minor + reshape because it's more primitive.  Let's see how hard it would be to improve layout assn.

Thomas convinced me to try writing an interleave op instead of relying on stack + reshape, and it is indeed a lot simpler -- I don't have to worry about fixing up the bad layout assignment that would otherwise be created.  So I think let's go with that!  (And, thank you, Thomas.)

Obsoleted by https://github.com/openai/triton/pull/2778.


portuguese accents

Hi, I'm using the app in ubuntu 20 and I have problems writing Portuguese words that have accents like: módulo. This happens only inside of WhatSie, how can I solve this?

Same problem here, Ubuntu 20.04 and accents don't work  for Portuguese chars ( á,à,ó,ò,é,ã,õ)
It only works if we copy-paste.
Can you please fix this issue?

Hi, congratulations on your work. it's the best of all.
But I have a little problem.
Whatsie is not recognizing the accent in my Brazilian Portuguese language (ABNT 2).
Example: type "Idea"
But just write "Idea"
Can you check what's going on?

Guys, Problems with accentuation are not solely app-dependant, remember that it also depends on the OS language pack and not just the web interface wrapping.

Hi @vitormicillo
I understand, but the problems appear only in the app, outside I can write perfectly: você, olá and so on. There is some configuration that I need to do in order to fix this?

in the web browser the spell checker used is available in the browser itself, not the same as the operating system.
Eu falo um pouco de pt tambem amigo.

Hi @vitormicillo
I understand, but the problems appear only in the app, outside I can write perfectly: você, olá and so on. There is some configuration that I need to do in order to fix this?

I have the same problem too. In other WhatsApp 'apps' the portuguese accent it's OK. Works very well. The portuguese pt-BR ABNT2 keyboard configuration works very well in my entire Ubuntu. Could you provide us some solution?
Best Regards,

I have the same problem

Same problem here with Ubuntu 20.04. Accented characters work fine in all other applications except WhatSie. They also work fine in both Chrome and Firefox web browsers. So this seems to be a problem specific to the app. It's a pitty because WhatSie is probably the best whatsapp desktop application I ever tested. Please, provide a fix to this issue. Thanks

Same problem here...

I have the same problem

Hi can any one you try, whatsie from edge channel and let me know if the problem is still there?
snap refresh whatsie --edge

Hi can any one you try, whatsie from edge channel and let me know if the problem is still there?
snap refresh whatsie --edge

Even after trying the solution above presents, the accent problem remains.

hi @tsffra can you try run whatsie with the following commands:
QT_IM_MODULE=xim whatsie

QT_IM_MODULE=ibus whatsie

on both check if accentuation is working correctly.
thanks

Unfortunately, none of the soluctions provided above solved the problem. Dead keys are not working as expected

Can you pass me the outpit of
im-config -a
and
im-config -l

Hi. The output of the first command is in portuguese, I made a translation:
im-config -a
Current setting for input method:

Active configuration: ibus (fails normally)
Normal automatic choice: ibus (usually ibus or fcitx or uim)
Overlay rule:
Current overlay choice: (pt_BR)
Current automatic choice: ibus
Number of valid choices: 13 (usually 1)
The override rule is defined in /etc/default/im-config.
The configuration selected by im-config is activated by restarting X.
Explicit selection is not required to enable autoconfiguration, if active is default/auto/cjkv/missing
Available input methods : ibus fcitx fcitx5 uim hime gcin maliit scim hangul thai xim kinput2 xsunpinyin
Unless you really need them all, please make sure to install only one input method tool.

im-config -l
ibus xim

Hi @fvroig,
Install whatsie from edge channel using
snap refresh whatsie --edge
wait for the update to finish if there are any updates.
run whatsie with the following command and check if it helps:
env QT_IM_MODULE=xim QT_XKB_CONFIG_ROOT=/snap/whatsie/current/qt515-core20/usr/share/X11/xkb QTCOMPOSE=/snap/whatsie/current/qt515-core20/usr/share/X11/locale snap run whatsie
with the above command, we are setting IM to use xim backend plus setting some relevant environment.

@keshavbhatt, I did the refresh, but neither directory /snap/whatsie/current/qt515-core20/usr/share/X11/xkb nor directory /snap/whatsie/current/qt515-core20/usr/share/X11/locale exist.
This is what I have:
ls /snap/whatsie/current/ -las
total 4
0 drwxr-xr-x 6 root root   61 fev 19 17:42 .
4 drwxr-xr-x 4 root root 4096 fev 20 11:23 ..
0 drwxr-xr-x 2 root root   37 fev 19 17:42 bin
0 drwxr-xr-x 3 root root   43 fev 19 17:42 meta
0 drwxr-xr-x 3 root root   79 fev 19 17:42 snap
0 drwxr-xr-x 4 root root   39 fev 19 17:41 usr

and
ls /snap/whatsie/current/usr/share/ -las
total 0
0 drwxr-xr-x 3 root root 35 fev 19 17:41 .
0 drwxr-xr-x 4 root root 39 fev 19 17:41 ..
0 drwxr-xr-x 2 root root 38 fev 19 17:41 applications

and when running the command you suggest I got this:
env QT_IM_MODULE=xim QT_XKB_CONFIG_ROOT=/snap/whatsie/current/qt515-core20/usr/share/X11/xkb QTCOMPOSE=/snap/whatsie/current/qt515-core20/usr/share/X11/locale snap run whatsie
Gtk-Message: 16:57:39.425: Failed to load module "appmenu-gtk-module"
Gtk-Message: 16:57:39.484: Failed to load module "canberra-gtk-module"
Gtk-Message: 16:57:39.485: Failed to load module "canberra-gtk-module"
Qt: Session management error: Could not open network socket
Launching with argument ("/snap/whatsie/54/usr/bin/whatsie")
Test 1 Loaded correctly value: "web"

Initially, everything seem ok, but then when I press any dead key the following message appears
qt.xkb.compose: failed to create compose table
and dead keys still do not work

but neither directory /snap/whatsie/current/qt515-core20/usr/share/X11/xkb nor directory /snap/whatsie/current/qt515-core20/usr/share/X11/locale exist.

Don't worry about the non-existing paths :) the content snap is virtually mounted at that location.

and dead keys still do not work

This is strange, I am also getting the qt.xkb.compose: failed to create compose table error but i can type using AltGr+key perfectly fine on both arch Linux and ubuntu 16.04
I just released revision 55 in the edge channel with a few modifications in it can you try again. Sorry in advance cause these things look System dependent, we are dealing with different input methods and their configurations.
try this way:

remove snap data-dir using
rm -rf ~/snap/whatsie
update the content snap manually
snap refresh qt515-core20 --edge
update whatsie
snap refresh whatsie --edge

II tried all the solutions mentioned, none of them worked.

@fvroig one more interesting find is:
when i try to run the app with LANG="en_UK.UTF-8" whatsie or LANG="en_IN.UTF-8" whatsie
then I don't get the qt.xkb.compose: failed to create compose table message in console, but when I run with
LANG="pt_BR.UTF-8" whatsie I get the message. Also, I am able to type in both situations :smile:

@fvroig one more interesting find is: when i try to run the app with LANG="en_UK.UTF-8" whatsie or LANG="en_IN.UTF-8" whatsie then I don't get the qt.xkb.compose: failed to create compose table message in console, but when I run with LANG="pt_BR.UTF-8" whatsie I get the message. Also, I am able to type in both situations smile

This one works for me, LANG="en_IN.UTF-8". Problem Solving.

This one works for me, LANG="en_IN.UTF-8". Problem Solving.
are you able to properly use dead keys in this way? :astonished:

This one works for me, LANG="en_IN.UTF-8". Problem Solving.

are you able to properly use dead keys in this way? astonished

yes, exec in terminal > LANG="en_UK.UTF-8" whatsie, and portuguese accents worked for me.

I will pass this environment variable from snapcraft file so you don't have to open whatsie like this. Thanks for confirming.

The issue is fixed in 0483b030043f13fe048f575882ffb78d4177b479
You can refresh whatsie with snap refresh whatsie --stable to get the changes.
Feel free to reopen for further assitance.

Working fine here too. Thanks!

II tried all the solutions mentioned, none of them work for me.

I have made few more changes to environment, those who are still facing issues with ibus or fcitx input methods should check the latest updates and confirm if now everlasting works. make sure you have revision 64 installed on your system. The command to update is : snap refresh whatsie
Thank you.

I've version 3.0 revision 65, still no Portuguese accents:
$ snap list |grep whats
whatsie                            3.0                         65     latest/stable    keshavnrj         -

in my case, version 3.0 65 latest/stable is working fine, all portuguese dead keys work ok

I'm on WhatSie 4.0 version and using Ubuntu 22.04 and no Portuguese accents 😕

Solved here. Here's what I did.
First make sure you have an .XCompose file in your home. Check this out: https://github.com/marcopaganini/gnome-cedilla-fix
Then quit all whatsie instances.
From your terminal:
snap run --shell whatsie

env|grep -e HOME

It will list something like:
HOME=/home/leodip/snap/whatsie/136
exit
ln -s ~/.XCompose /home/leodip/snap/whatsie/136
Open Whatsie and it should be working fine.
The instructions above will make Whatsie have access to ~/.XCompose.


NTR: Calcium-Dependent Negative Regulation of Dopamine Secretion

This is for CACAO class @sandyl27 @jrr-cpt @jimhu-tamu
Potential GoTerm Name: Calcium-Dependent Negative Regulation of Dopamine Secretion
Definition: Any process that stops, prevents, or reduces the frequency, rate of extent of the regulated release of dopamine in a calcium dependent manner.
Aspect: Biological Process
Relationships: Child term of 'negative regulation of dopamine secretion (G0:0033602)'  OR
Suggested parent term — 'Calcium-Dependent Regulation of Dopamine Secretion';
Suggested Sibling Terms — 'Calcium-Dependent Positive Regulation of Dopamine Secretion'
References — PMID:28370453, See Figure 5
Synonyms — 'Calcium-dependent down-regulation of dopamine secretion'
'Calcium-dependent down regulation of dopamine secretion'
'Calcium-dependent inhibition of dopamine secretion'
'Calcium-dependent down-regulation of dopamine release'

Probably out of date


⚠ Bofrost.fr has degraded performance

In e9ebd94, Bofrost.fr (https://www.bofrost.fr) experienced degraded performance:

HTTP code: 200
Response time: 1050 ms

Resolved: Bofrost.fr performance has improved in ff71441 after 6 minutes.


Examples for methods in partitura.musicanalysis

It would be important to add examples in the documentation to all methods in partitura.musicanalysis module. This would make the usage of these methods clearer to the users without having to dive into the code.
Methods with missing examples:

estimate_spelling (in partitura.musicanalysis.pitch_spelling)
estimate_key (in partitura.musicanalysis.key_identification)
estimate_voices (in partitura.musicanalysis.voice_separation)
estimate_tonaltension(in partitura.musicanalysis.tonaltension)

I merged my local commits into develop, which add an example for estimate_key to docs/usages.rst, in a section music analysis.  This section can be extended with example calls for the other functions.

Commit 7b13650 adds the examples in the documentation, and are now included in pull request #26


Feature: Add Support for AsyncAPI v2/v3 as Source Definition

Adding support for AsyncAPI definitions would extend the types of workflows that can be described with Arazzo, as many organizations are now combining Request/Response APIs (OpenAPI) with Event-Driven architectures (AsyncAPI).
The latest version of AsyncAPI is v3, but since v2 is still the most widely adopted version, the intention is to provide support for both versions as feasible, and prioritize v3 only when supporting both becomes impractical.
Required Changes to Arazzo Specification

Add asyncapi as a source definition type.
Extend the meaning of workflow.step.operationId to include pointing to an AsyncAPI operationId (either v2 or v3):

AsyncAPI v2 operationId
AsyncAPI v3 operationId

Extend the meaning of workflow.step.parameters.in:

header should also include AsyncAPI message headers.
path should include AsyncAPI channel.parameters, as they are similar to OpenAPI path parameters (or consider adding a channel value for disambiguation).

Runtime expressions already include support for $message.body and $message.header this would be used for context in successCriterias

Additional Considerations for Broker-Intermediated APIs
While AsyncAPI and OpenAPI are similar, and it’s tempting to use the operationId in AsyncAPI, there is a key difference: broker-mediated APIs are reciprocal (publishing/sending on one side is subscribing/receiving on the other).

Sometimes, an API might only document one side’s perspective. For example:

A service that publishes events might document its "publish" operations.
However, it might not document the "subscribe" operation that consumers would use to receive these events (consumers just use the "publish" operation documentation and tooling).

Teams and organizations may model this symmetry differently, and sometimes the "inverse" operation may not be defined at all.

To support this, we would need an alternative way to reference the reciprocal operation.
Additional Changes to Arazzo Specification
When the desired operationId is not documented in the existing AsyncAPI, we can support referencing the channel instead of the operation and specify the reciprocal action (send|receive).

Add workflow.step.channel as a fixed field pointing to an AsyncAPI channel:

AsyncAPI v2 channels
AsyncAPI v3 channels

Add workflow.step.action with supported values send|receive.

The combination of channel+action would be mutually exclusive with operationId, with operationId being the preferred option when available.
Meaning of AsyncAPI Steps
Send/Publish
A workflow step pointing to a Send/Publish operation will send a message with the workflow.step.requestBody.
workflow.step.parameters will also be used to populate AsyncAPI message.headers and channel.parameters.
The only meaningful successCriteria is "OK, message accepted," so it may be omitted.
This action is non-blocking and has no outputs; it will immediately continue to the next step, either onSuccess or onFailure.
This is an example of a workflow step sending a message:
  - stepId: "send_order_received"
    operationId: "$sourceDescriptions.OrdersAsyncAPI.onOrderEvent"
    requestBody:
      contentType: "application/json"
      payload: |-
        {
            "id": "{$steps.place_order.outputs.orderId}",
            "orderTime": "{$steps.place_order.outputs.order.orderTime}",
            "status": "RECEIVED",
            "customerDetails": {$steps.fetch_customer_details.outputs.customer},
            "restaurantDetails": {$steps.fetch_restaurant_details.outputs.restaurant},
            "orderItems": [
            {$inputs.menuItem}
            ]
        }
    onSuccess:
    - name: "goto_wait_for_downstream"
      type: "goto"
      stepId: "wait_RestaurantsStatusChannel_accepted"

Receive/Subscribe
This is a blocking action: the workflow will wait until successCriteria is met or it times out.
In the following example, in the wait_KitchenOrdersStatusChannel_accepted step, the workflow would "wait until a message is received where the message’s body contains a customerOrderId that matches the orderId of the previous step’s output."
  - stepId: "wait_KitchenOrdersStatusChannel_accepted"
    channel: "$sourceDescriptions.RestaurantsOpenAPI.KitchenOrdersStatusChannel"
    action: "receive"
    successCriteria:
    - condition: "$message.body.customerOrderId == $steps.place_order.outputs.orderId"

This step can include outputs using the contexts $message.body and $message.header
Support for Parallel Invocation: Forking and Joining
When using non-blocking steps, there may be a need for parallel invocation, involving forking and joining.
Parallel Invocation and Looping can also be applied to OpenAPI Request/Response steps.
Because of the complexity of this, we could address this in a separate issue for further discussion.

@ivangsa thank you for the very thoughtful proposal. Below I'll aim to process the proposal, add comments/remarks, seek clarification, or acknowledge the suggestion.
** General Assumptions:**

The latest version of AsyncAPI is v3, but since v2 is still the most widely adopted version, the intention is to provide support for both versions as feasible, and prioritize v3 only when supporting both becomes impractical.

Acknowledge - we should strive to support both unless we prove that impractical.
High-level changes to the Arazzo Specification:

Add asyncapi as a source definition type.

Acknowledge - this is as expected.

Extend the meaning of workflow.step.operationId to include pointing to an AsyncAPI operationId (either v2 or v3)

Acknowledge - this is as expected.

Extend the meaning of workflow.step.parameters.in:

header should also include AsyncAPI message headers.

Acknowledge - this is as expected.

Extend the meaning of workflow.step.parameters.in:

path should include AsyncAPI channel.parameters, as they are similar to OpenAPI path parameters (or consider adding a channel value for disambiguation).

I have a preference for a new channel value to be explicit but others are welcome to share their preferences too and we'll work towards one of these options.

Runtime expressions already include support for $message.body and $message.header this would be used for context in successCriterias

Acknowledge. These are being removed in 1.0.1 for hygiene purposes, so this would involve adding them back in and reestablishing the text and construct of the Runtime Expressions to support messages.
Dealing with reciprocal pub/sub scenarios when only one side is documented

When the desired operationId is not documented in the existing AsyncAPI, we can support referencing the channel instead of the operation and specify the reciprocal action (send|receive).
Add workflow.step.channel as a fixed field pointing to an AsyncAPI channel

To follow the pattern used for OpenAPI, this might be more applicable as mutually exclusive construct of a channelId (v3) and channelPath (v2)

Add workflow.step.action with supported values send|receive

Do we have any opinions on the choice of send|receive v publish|subscribe in this context? Are there pros/cons to the nomenclature choice?

The combination of channel+action would be mutually exclusive with operationId, with operationId being the preferred option when available.

Acknowledge - if we introduce this (or channelId / channelPath) they would be mutually exclusive with operationId and we'd clarify recommendations.
Remark: Generally in Arazzo we have a goal to be as deterministic as possible and to not make assumptions, we rely on the underlying API descriptions to express what is possible. If we are to go down a path allowing workflows to be described across omitted parts of an AsyncAPI description are we asking ourselves of trouble in the long run. Will this cause challenges for tooling w.r.t. validations/parsing OR is it an undisputed given that the channels always express both the ability to send and receive? I would like some further input from the AsyncAPI community/core team on this. Albeit laborious to enforce authors/providers to document both sides of the coin, perhaps that's the only way we can be sure what's possible. Will we also have to make assumptions on message schemas / parameters etc?
** Step and Messages - Send/Publish **

A workflow step pointing to a Send/Publish operation will send a message with the workflow.step.requestBody.

Acknowledge - this is as expected.

workflow.step.parameters will also be used to populate AsyncAPI message.headers and channel.parameters.

Acknowledge - this is as expected.

The only meaningful successCriteria is "OK, message accepted," so it may be omitted.

It would be good practice to specify the criteria and assuming a HTTP status code will be return, it can be set (especially if you want to handle onSuccess or onFailure flows)

This action is non-blocking and has no outputs; it will immediately continue to the next step, either onSuccess or onFailure.

I assume if no onSuccess is described, then the next sequential step is what we continue with.
** Step and Messages - Receive/Subscribe **
What is described makes sense but I am wondering would we benefit from an ability to set a wait/timeout?

Since most of the replies are just acknowledgments, here are the two main items:

Do we have any opinions on the choice of send|receive v publish|subscribe in this context? Are there pros/cons to the nomenclature choice?

I would prefer send|receive since it is the terminology used in the latest AsyncAPI v3. This keeps it simple and consistent. (For workflows, I would choose wait instead of receive because that better reflects what a workflow does. However, I believe it would be wiser to stick to send|receive.)

Remark: Generally in Arazzo we have a goal to be as deterministic as possible and to not make assumptions, we rely on the underlying API descriptions to express what is possible. If we are to go down a path allowing workflows to be described across omitted parts of an AsyncAPI description are we asking ourselves of trouble in the long run.

I understand your concern. This is a long-standing source of discussion and confusion for broker-based APIs, and there are many differing approaches and opinions: documenting both ends, documenting only from the provider's point of view, or only from the consumer's point of view.
And it varies wildly how different teams and orgs manage this... This is why I propose supporting both approaches.

we rely on the underlying API descriptions to express what is possible

Even if both ends are described in their respective APIs, these APIs don’t necessarily describe "what is possible"; they simply describe what an specific application is doing.
For instance, consider an "Order Updates Channel." The existence of an API documenting the "publish" operation does not necessarily mean any other application should be publishing to, or writing a workflow for, that channel.

The official recomended approach from the core-team for AsyncAPI v3 is for each application to document all the operations the application perform on each channel, so following this recommendation both ends would be documented.

This means that if a new application wants to consume a message that is already documented, it should write a new AsyncAPI definition to document that operation (which is something internal, is not an actual API) and it requires crossing a $ref to the original definition, which may be authenticated.
This approach mixes "public API information" (what others can do with your API) with internal information (what your application does with other apps' APIs). This undermines the use of API definitions for self-service and discovery. And there is no standardized way to differentiate between public APIs and internal ones.
This is problematic, that's why there are different options and approaches

Also with AsyncAPI v3 there is also the "official" possibility to define only channels and messages (operations being optional) so an organization may choose to have only channels described with AsyncAPI

OR is it an undisputed given that the channels always express both the ability to send and receive?

I don't think this is an "undisputed given", I believe in some cases there are teams/orgs that publish messages to a channel that can not be used to subscribe... (ex. publishing to a message broker via an http bridge, or an internal process dispatches messages from one channel to another) Althought I never seen this personaly, I think in these particular cases there would be an API definition for the "reciprocal" action otherwise it would not be discoverable/usable.. (what would be the use for a channel that can only be publishe or subscribed?)

My worry is that if we do only support one way we may be leaving valid options/appraches behind.


[tool_crash] Invalid argument(s): Cannot find executable for C:\Users\HP\AndroidStudioProjects\flutter_apptest\android\gradlew.bat.

Command
flutter --no-color run --machine --track-widget-creation --device-id=emulator-5554 --start-paused --dart-define=flutter.inspector.structuredErrors=true lib\main.dart

Steps to Reproduce

...
...
...

Logs
ArgumentError: Invalid argument(s): Cannot find executable for C:\Users\HP\AndroidStudioProjects\flutter_apptest\android\gradlew.bat.
#0      _getExecutable (package:process/src/interface/local_process_manager.dart:127:5)
#1      LocalProcessManager.start (package:process/src/interface/local_process_manager.dart:43:30)
#2      _DefaultProcessUtils.start (package:flutter_tools/src/base/process.dart:462:28)
#3      _DefaultProcessUtils.stream (package:flutter_tools/src/base/process.dart:480:35)
#4      buildGradleApp (package:flutter_tools/src/android/gradle.dart:384:35)
#5      _AndroidBuilderImpl.buildApk (package:flutter_tools/src/android/android_builder.dart:102:13)
#6      AndroidDevice.startApp (package:flutter_tools/src/android/android_device.dart:513:28)
#7      _rootRunUnary (dart:async/zone.dart:1192:38)
#8      _CustomZone.runUnary (dart:async/zone.dart:1085:19)
#9      _FutureListener.handleValue (dart:async/future_impl.dart:141:18)
#10     Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:682:45)
#11     Future._propagateToListeners (dart:async/future_impl.dart:711:32)
#12     Future._completeWithValue (dart:async/future_impl.dart:526:5)
#13     Future._asyncComplete.<anonymous closure> (dart:async/future_impl.dart:556:7)
#14     _rootRun (dart:async/zone.dart:1184:13)
#15     _CustomZone.run (dart:async/zone.dart:1077:19)
#16     _CustomZone.runGuarded (dart:async/zone.dart:979:7)
#17     _CustomZone.bindCallbackGuarded.<anonymous closure> (dart:async/zone.dart:1019:23)
#18     _microtaskLoop (dart:async/schedule_microtask.dart:43:21)
#19     _startMicrotaskLoop (dart:async/schedule_microtask.dart:52:5)

[✓] Flutter (Channel stable, v1.17.5, on Microsoft Windows [Version 10.0.14393], locale en-US)
    • Flutter version 1.17.5 at C:\flutter\flutter
    • Framework revision 8af6b2f038 (5 weeks ago), 2020-06-30 12:53:55 -0700
    • Engine revision ee76268252
    • Dart version 2.8.4

[!] Android toolchain - develop for Android devices (Android SDK version 30.0.1)
    • Android SDK at C:\Users\HP\AppData\Local\Android\Sdk
    • Platform android-30, build-tools 30.0.1
    • Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b01)
    ✗ Android license status unknown.
      Try re-installing or updating your Android SDK Manager.
      See https://developer.android.com/studio/#downloads or visit visit https://flutter.dev/docs/get-started/install/windows#android-setup for detailed instructions.

[✓] Android Studio (version 4.0)
    • Android Studio at C:\Program Files\Android\Android Studio
    • Flutter plugin version 48.0.2
    • Dart plugin version 193.7361
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b01)

[✓] VS Code (version 1.46.1)
    • VS Code at C:\Users\HP\AppData\Local\Programs\Microsoft VS Code
    • Flutter extension version 3.12.2

[✓] Connected device (1 available)
    • AOSP on IA Emulator • emulator-5554 • android-x86 • Android 9 (API 28) (emulator)

! Doctor found issues in 1 category.

Flutter Application Metadata
Type: app
Version: 1.0.0+1
Material: true
Android X: false
Module: false
Plugin: false
Android package: null
iOS bundle identifier: null
Creation channel: stable
Creation framework version: 8af6b2f038c1172e61d418869363a28dffec3cb4

Hi @JoyfulAlchemist,
There's similar open issue describing your case, 56975.
Please follow-up there for updates.
Closing this as duplicate.

am not able to run flutter apps because the error keeps popping up in the cmd section that Android license unknown. I've even tried updating android studio, but no help. Also an error comes but I crossed checked it that the file it asks to delete is already deleted and android sdk manager is already present. I'm copying the errors:
1)Android license not found error
X Android license status unknown. Try re-installing or updating your Android SDK Manager. See https://developer.android.com/studio/#downloads or visit visit https://flutter.dev/docs/get-started/install/windows#android-setup for detailed instructions.
2)Android sdk manager and gradle-wrapper error
Failed to delete "C:\flutter\bin\cache\downloads\storage.googleapis.com\flutter_infra\gradle-wrapper\fd5c1f2c013565a3bea56ada6df9d2b8e96d56aa\gradle-wrapper.tgz". Please delete manually. FileSystemException: Cannot delete file, path = 'C:\flutter\bin\cache\downloads\storage.googleapis.com\flutter_infra\gradle-wrapper\fd5c1f2c013565a3bea56ada6df9d2b8e96d56aa\gradle-wrapper.tgz' (OS Error: The process cannot access the file because it is being used by another process. , errno = 32) Android sdkmanager tool not found (C:\Users\hp\AppData\Local\Android\Sdk\tools\bin\sdkmanager). Try re-installing or updating your Android SDK, visit https://flutter.dev/docs/get-started/install/windows#android-setup for detailed instructions.


Several jobs fail to build, e. g. ModuleNotFoundError: No module named 'snakeoil'

In a VM with Debian sid/unstable building Replica.one fails:
$ dpkg -l docker.io
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name           Version             Architecture Description
+++-==============-===================-============-=================================
ii  docker.io      20.10.25+dfsg1-1+b1 amd64        Linux container runtime
$ git log --no-decorate --oneline -1
67fdefc config: savedconfig: busybox: use for v1.36.1
$ make -j32 DOCKER_BUILDKIT=1 CTARGET=aarch64-unknown-linux-gnu package_tn48m GENTOO_MIRRORS="http://ftp.spline.inf.fu-berlin.de/mirrors/gentoo/ http://gentoo.wheel.sk/ http://mirrors.evowise.com/gentoo/"
[…]
#26 3312.3 >>> Jobs: 112 of 129 complete, 1 failed             Load avg: 1.10, 1.44, 5.43
#26 3312.3 >>> Installing (113 of 129) virtual/perl-Encode-3.170.0::gentoo to /usr/aarch64-unknown-linux-gnu/
#26 3312.3 >>> Jobs: 112 of 129 complete, 1 failed             Load avg: 1.10, 1.44, 5.43
#26 3315.8 >>> Completed (113 of 129) virtual/perl-Encode-3.170.0::gentoo to /usr/aarch64-unknown-linux-gnu/
#26 3315.8 >>> Jobs: 112 of 129 complete, 1 failed             Load avg: 1.09, 1.43, 5.41
#26 3315.8 >>> Jobs: 113 of 129 complete, 1 failed             Load avg: 1.09, 1.43, 5.41
#26 3315.8 >>> Installing (115 of 129) sys-apps/dbus-1.15.4-r1::gentoo to /usr/aarch64-unknown-linux-gnu/
#26 3315.8 >>> Jobs: 113 of 129 complete, 1 failed             Load avg: 1.09, 1.43, 5.41
#26 3319.9 >>> Completed (115 of 129) sys-apps/dbus-1.15.4-r1::gentoo to /usr/aarch64-unknown-linux-gnu/
#26 3319.9 >>> Jobs: 113 of 129 complete, 1 failed             Load avg: 1.00, 1.41, 5.38
#26 3319.9 >>> Jobs: 114 of 129 complete, 1 failed             Load avg: 1.00, 1.41, 5.38
#26 3319.9
#26 3319.9  * Package:    sys-apps/pkgcore-0.12.21:0
#26 3319.9  * Repository: gentoo
#26 3319.9  * Maintainer<EMAIL_ADDRESS>#26 3319.9  * USE:        arm64 elibc_glibc kernel_linux python_targets_python3_11
#26 3319.9  * FEATURES:   ccache network-sandbox preserve-libs sandbox userpriv usersandbox
#26 3319.9 Unable to unshare: EPERM (for FEATURES="pid-sandbox")
#26 3319.9 Unable to unshare: EPERM (for FEATURES="ipc-sandbox network-sandbox pid-sandbox")
#26 3319.9 >>> Unpacking source...
#26 3319.9 >>> Unpacking pkgcore-0.12.21.tar.gz to /usr/aarch64-unknown-linux-gnu/tmp/portage/sys-apps/pkgcore-0.12.21/work
#26 3319.9 >>> Source unpacked in /usr/aarch64-unknown-linux-gnu/tmp/portage/sys-apps/pkgcore-0.12.21/work
#26 3319.9 Unable to unshare: EPERM (for FEATURES="ipc-sandbox network-sandbox pid-sandbox")
#26 3319.9 >>> Preparing source in /usr/aarch64-unknown-linux-gnu/tmp/portage/sys-apps/pkgcore-0.12.21/work/pkgcore-0.12.21 ...
#26 3319.9  * Build system packages:
#26 3319.9  *   dev-python/gpep517            : 13
#26 3319.9  *   dev-python/installer          : 0.7.0
#26 3319.9 >>> Source prepared.
#26 3319.9 Unable to unshare: EPERM (for FEATURES="ipc-sandbox network-sandbox pid-sandbox")
#26 3319.9 >>> Configuring source in /usr/aarch64-unknown-linux-gnu/tmp/portage/sys-apps/pkgcore-0.12.21/work/pkgcore-0.12.21 ...
#26 3319.9 >>> Source configured.
#26 3319.9 Unable to unshare: EPERM (for FEATURES="ipc-sandbox network-sandbox pid-sandbox")
#26 3319.9 >>> Compiling source in /usr/aarch64-unknown-linux-gnu/tmp/portage/sys-apps/pkgcore-0.12.21/work/pkgcore-0.12.21 ...
#26 3319.9  * python3_11: running distutils-r1_run_phase distutils-r1_python_compile
#26 3319.9  *   Building the wheel for pkgcore-0.12.21 via py_build
#26 3319.9 gpep517 build-wheel --backend py_build --output-fd 3 --wheel-dir /usr/aarch64-unknown-linux-gnu/tmp/portage/sys-apps/pkgcore-0.12.21/work/pkgcore-0.12.21-python3_11/wheel --sysroot /usr/aarch64-unknown-linux-gnu
#26 3319.9 2023-09-09 15:53:03,524 gpep517 INFO Using sysconfig from /usr/aarch64-unknown-linux-gnu/usr/lib/python3.11/_sysconfigdata__linux_aarch64-linux-gnu.py
#26 3319.9 2023-09-09 15:53:03,561 gpep517 INFO Building wheel via backend py_build
#26 3319.9 generating version info: /usr/aarch64-unknown-linux-gnu/tmp/portage/sys-apps/pkgcore-0.12.21/work/pkgcore-0.12.21/src/pkgcore/_verinfo.py
#26 3319.9 Traceback (most recent call last):
#26 3319.9   File "/usr/lib/python-exec/python3.11/gpep517", line 4, in <module>
#26 3319.9     sys.exit(main())
#26 3319.9              ^^^^^^
#26 3319.9   File "/usr/lib/python3.11/site-packages/gpep517/__main__.py", line 406, in main
#26 3319.9     return func(args)
#26 3319.9            ^^^^^^^^^^
#26 3319.9   File "/usr/lib/python3.11/site-packages/gpep517/__main__.py", line 202, in build_wheel
#26 3319.9     print(build_wheel_impl(args, args.wheel_dir), file=out)
#26 3319.9           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#26 3319.9   File "/usr/lib/python3.11/site-packages/gpep517/__main__.py", line 194, in build_wheel_impl
#26 3319.9     wheel_name = backend.build_wheel(str(wheel_dir), args.config_json)
#26 3319.9                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#26 3319.9   File "/usr/aarch64-unknown-linux-gnu/tmp/portage/sys-apps/pkgcore-0.12.21/work/pkgcore-0.12.21/py_build.py", line 94, in build_wheel
#26 3319.9     return prepare_pkgcore(callback, consts=True)
#26 3319.9            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#26 3319.9   File "/usr/aarch64-unknown-linux-gnu/tmp/portage/sys-apps/pkgcore-0.12.21/work/pkgcore-0.12.21/py_build.py", line 62, in prepare_pkgcore
#26 3319.9     write_verinfo(cleanup_files)
#26 3319.9   File "/usr/aarch64-unknown-linux-gnu/tmp/portage/sys-apps/pkgcore-0.12.21/work/pkgcore-0.12.21/py_build.py", line 53, in write_verinfo
#26 3319.9     from snakeoil.version import get_git_version
#26 3319.9 ModuleNotFoundError: No module named 'snakeoil'
[…]
#26 3319.9
#26 3319.9  * After world updates, it is important to remove obsolete packages with
#26 3319.9  * emerge --depclean. Refer to `man emerge` for more information.
------
executor failed running [/bin/bash -l -c set_repository_conf ${SYSROOT} replica 100 &&     set_repository_conf ${SYSROOT} switch 101 &&     set_portage_profile ${SYSROOT} switch replica/tn48m &&     cross-emerge -vt --keep-going=n --deep --with-bdeps=y --newuse --newrepo @world]: exit code: 1
make: *** [Makefile:138: build_tn48m] Error 1
rm targets/tn48m.cache

[Full output] (https://github.com/sartura/replica/files/12566210/20230909--replica.one--make.txt)

Hi Paul,
thanks for reporting, I haven't been able to reproduce this.
The sys-apps/pkgcore does define a runtime dependency on dev-python/snakeoil.

It seems to be pulled in and installed so not sure why Portage/Python cannot find it. Let me investigate this further.

I removed the -j32, and issued
make DOCKER_BUILDKIT=1 CTARGET=aarch64-unknown-linux-gnu package_tn48m GENTOO_MIRRORS=" http://ftp.spline.inf.fu-berlin.de/mirrors/gentoo/ http://gentoo.wheel.sk/ http://mirrors.evowise.com/gentoo/"

again (without cleaning anything up), but it failed at the same spot.


How to link to assets in custom module?

Hi there,
first of all, really nice job are you doing here.
I'm trying to use css and js files in custom module only. Problem is, I can't find it by any location I'm typing. How I should link to these css files, assuming my path to them is module_name/resources/assets/css for example? Using custom namespace seems to not working or I'm doing it wrong way.
Cheers.

run
php  module:publish module_name

css will put in public/modules/module_name/css
and use
{{ Module::asset('module_name:css/app.js') }}

in blade to access to css file

run
php  module:publish module_name

css will put in public/modules/module_name/css
and use
{{ Module::asset('module_name:css/app.js') }}

in blade to access to css file

This is too way, but I didn't want to modify public directory (I'm using custom modules in Invoice Ninja so I want to stay separated).
You can achieve my goal by pasting content from files you want to use, like this:
<style>
   {!! file_get_contents(Module::find('blog')->getPath() . '/Assets/blog.css'); !!}
</style>

@hahyes I think It have a performance problem.
I use laravel mix watch when dev and php  module:publish module_name in product. It better

@hahyes I think It have a performance problem.
I use laravel mix watch when dev and php module:publish module_name in product. It better

As I said, laravel mix is not meeting with my goals. I'm adding module to someone project and I want to keep module only assets in module directory. When I will move module to another instance, I will have no problem with integration of module. I don't need to use Laravel Mix to making assets working. Performance problem will not occure with minified Bootstrap files anyway.

I see


Feat/admin/log

Creates an Error Log Viewer for the Admin

Tests are still missing! Not ready to merge yet :)


Solve issue #282: Update FSSpecFileLister, IoPathFileLister

Fixes #282
Summary
Updated FSSpecFileLister and IoPathFileLister to optionally take a list of strings as root paths. As per the contributors guideline, added tests to the testsuite to cover changes and ran the pre-commit format checker.
Changes

Updated FSSpecFileLister to take either a str or sequence of strings as root path argument (in _init_ arguments)

Updated _init_ of FSSpecFileLister to check if root argument is string or list and make into IterDataPipe

Updated _iter_ of FSSPecFileLister to look through all root paths when yielding files

Added unit test in test_fsspec.py to test for multiple root path input to FSSpecFileLister

Updated IoPathFileLister to take either a str or sequence of strings as root path argument (in _init_ arguments)

Updated _init_ of IoPathFileLister to check if root argument is string or list and make into IterDataPipe

Updated _iter_ of IoPathFileLister to look through all root paths when yielding files

Added unit test in test_local_io.py to test for multiple root path input to IoPathFileLister

@NivekT would you mind taking a look and seeing if this works? just really want to see if there's any extra work left for me to ensure it works fully. thank you!

@NivekT one test failed for macos build but I see that it has failed on previous pull requests as well. Let me know if there is anything I need to do for this.
Thanks.

@NivekT one test failed for macos build but I see that it has failed on previous pull requests as well. Let me know if there is anything I need to do for this.
Thanks.

Don't worry about that one. I will have a look at the rest of your PR soon. Thanks!

@NivekT one test failed for macos build but I see that it has failed on previous pull requests as well. Let me know if there is anything I need to do for this.
Thanks.

Don't worry about that one. I will have a look at the rest of your PR soon. Thanks!

Awesome. Sounds good. Any chance you'd be able to take a look at it by tomorrow?

@NivekT @ejguan
This fixes issue #348 and updates Testing Logic
Summary

Updated FSSpecFileLister to check if protocol for root is a string or list. S3 returns a list, so this handles that return and updates logic.

Updated IO and FSSpec unit tests to sort and compare lists rather than looping and checking

Changes

Updated FSSpecFileLister to check if fs protocol is a list or a string

If it is a string, it puts it into a list and handles the rest of the logic of the FileLister as if it were a list

Uses Python's "any()" functionality to check conditions against the protocol list

Check the beginning of the root against all protocols and returns if it is a match, else returns the absolute path

Updated IO and FSSpec unit tests to sort and compare lists rather than looping and checking

@ejguan @NivekT
This new commit should address the remaining outstanding concerns: added a variable change to make it congruent with the rest of the changes as well as a break in a for loop to stop yielding values when we found the one we wanted.
Thanks.


Supported CPU architectures

Hi,
can the OTBR run on 64bit CPUs, for instance:

https://ark.intel.com/content/www/de/de/ark/products/78475/intel-atom-processor-e3845-2m-cache-1-91-ghz.html
https://ark.intel.com/content/www/de/de/ark/products/93356/intel-xeon-processor-d1567-18m-cache-2-10-ghz.html

or AMD x64 Ryzen CPUs?
Are there any plans to support it on Windows OS?
Thanks

OTBR is generally implemented using standard C/C++, so it should be pretty portable to different CPU architectures. OTBR on Linux on 64-bit CPUs is very common.
I'm not aware of any active efforts to support native Windows.

Closing stale issue.


Ownership Changes: Segmentation fault (core dumped) /opt/bedrock/bedrockifierd

I hit this during testing where I noticed a couple backup occurring. Somehow a segmentation fault happened while waiting for closing things down in the service. Two things pop up in the logs as interesting:

Got an error that the docker process was still running after attempting to terminate it and wait for it to exit.
The segmentation fault is immediately after "Performing Ownership Fixup", but before the next log before we start doing the work. So we can eliminate something in the Platform layer for now.

This does leave a couple areas where this can be occurring. Parsing the ownership strings, or even attempting to string format the octal value. We can probably trace this down further with more logging.
Also may want to upgrade to Swift 5.5.2 to get the latest fixes in case this is an actual runtime issue.
[01:07:22.264][trace   ] Content Read: Changes to the world are resumed.
 (PTYProcess.swift:132)
[01:07:22.265][debug   ] Match Found: Changes to the world are resumed.
 (PTYProcess.swift:134)
[01:07:22.265][debug   ] Terminating Docker Process (WorldBackup.swift:101)
[01:07:22.266][error   ] Docker Process Still Running (WorldBackup.swift:107)
[01:07:22.266][info    ] Performing Ownership Fixup (main.swift:129)
/opt/bedrock/entry.sh: line 22:    16 Segmentation fault      (core dumped) /opt/bedrock/bedrockifierd "${DATA_DIR}/${CONFIG_FILE}" --docker-path "${DOCKER_PATH}" --backup-path "${DATA_DIR}" --trace 1>&2
DEBU[0000] Using /backups to match uid and gid

This appears to be fixed with the changes to make the docker attach termination use async/await. Will let it run for a while just to be sure.

With the rewrite of PTYKit, it’s possible this may recur, test this again with the test tag once it’s ready to make sure things are going well.


docs: fix kubeconfig-context variable name

@ThibaultNocchi please replace all.

Hello, my bad indeed, thanks for the correction!


Bug: The scroll bar suddenly jumps to the bottom during editing

Restore the scene
When a scroll bar appears in the editor and the cursor is at the middle height of the editor, and then press Enter a few times, the scroll automatically jumps to the bottom of the editor's visible area
https://youtu.be/c4gLvtnA3Zg
try to locate the problem
I found that when I commented this line of code, there was no problem.
https://github.com/facebook/lexical/blob/bf29e4c0c5e33f28945faea781f7ca99c1c93823/packages/lexical/src/LexicalUtils.ts#L1161

Thanks for reporting this. Fixed in #2917 :)


allow to customize kafka-source's group.id

Description
quickwit auto generated group-id can't be used with Aliyun's kafka server.
this patch allows to customize kafka-source's group.id via client_params in source config.
How was this PR tested?
deployed to my testing cluster, working well with Aliyun's kafka server

Thanks @dojiong.

@guilload I add a kafka-source to otel-traces-v0_6 manually. My collecter receives opentelemetry/skywalking tracings and puts them into kafka. It works, but there maybe issues with future upgrades of quickwit (maybe otel-traces-v0_7 or otel-traces-v0_8).
The reason why I don't use quickwit's opentelemetry service:

indexer will be temporarily unavailable when restarting, grpc services does not have a good graceful shutdown flow
reduce the impact of burst traffic on indexer

The opentelemetry service executes a bunch of transforms between the OTLP format and Quickwit index format (traces.rs). Do your perform the equivalent transforms with your data before dumping it into your Kafka topic?

We plan for this index and transformations to be more stable in the future. I'll also try to tag you in PRs that may impact you.

We plan for this index and transformations to be more stable in the future. I'll also try to tag you in PRs that may impact you.

That's great!


Use parallel job for changed spec job

To see how we can check for changed specs in case we have parallel test jobs

Done


GROUP BY 查询在路由到多表的时候导致结果集合并

select ownerId as teamId,count(*) as fileCount ,sum(fileSize) as fileSize
from IM_FILE
 where 1=1 and fileType=1 and ownerId in ( ? , ? ) and ownerType = ? and deletedAt is null
group by ownerId

使用ownerId进行分表
使用的是sjdbc 1.3.0 版本
预期结果是

teamId
fileCount
fileSize

0
7
100

1
2
200

现在得到的结果是

teamId
fileCount
fileSize

1
9
300

查看日志，感觉是因为groupByColumns=[] 没有获取到group by 列
log.txt
2016-08-02 11:14:05,838 DEBUG [main] com.dangdang.ddframe.rdb.sharding.router.SQLRouteEngine: final route result:[SQLExecutionUnit(dataSource=IM_YUN_FILE_0, sql=SELECT ownerId AS teamId, COUNT(*) AS fileCount, SUM(fileSize) AS fileSize FROM IM_FILE_2 WHERE 1 = 1 AND fileType = 1 AND ownerId IN (?, ?, ?) AND ownerType = ? AND deletedAt IS NULL GROUP BY ownerId), SQLExecutionUnit(dataSource=IM_YUN_FILE_0, sql=SELECT ownerId AS teamId, COUNT(*) AS fileCount, SUM(fileSize) AS fileSize FROM IM_FILE_0 WHERE 1 = 1 AND fileType = 1 AND ownerId IN (?, ?, ?) AND ownerType = ? AND deletedAt IS NULL GROUP BY ownerId)]
2016-08-02 11:14:05,838 DEBUG [main] com.dangdang.ddframe.rdb.sharding.router.SQLRouteEngine: merge context:MergeContext(orderByColumns=[], groupByColumns=[], aggregationColumns=[AggregationColumn(expression=COUNT(*), aggregationType=COUNT, alias=Optional.of(fileCount), option=Optional.absent(), derivedColumns=[], columnIndex=2), AggregationColumn(expression=SUM(fileSize), aggregationType=SUM, alias=Optional.of(fileSize), option=Optional.absent(), derivedColumns=[], columnIndex=3)], limit=null)

可能是group by 列被设置了别名后就无法识别了

您好 这个问题目前无法复现 请使用最新的代码进行测试。如果问题依然存在，请在调试MySQLSelectVisitor.visit(final MySqlSelectGroupByExpr x)方法，观察是否生成了groupColumns列表中的对象。

如果还有问题给邮件组发邮件吧


Update Custom-ROS2-Interfaces.rst

Changing python codeblock to match previous AddThreeInts implementation (C++ might need a check also, i followed only the Python tutorial)

@EliottFerry can you clarify what you mean by, "match previous AddThreeInts implementation."

@kscottz Of course, on https://docs.ros.org/en/jazzy/Tutorials/Beginner-Client-Libraries/Writing-A-Simple-Py-Service-And-Client.html#write-the-client-node step, you have the implementation of MinimalClientAsync along with a main function. This main implementation does not match with https://docs.ros.org/en/jazzy/Tutorials/Beginner-Client-Libraries/Custom-ROS2-Interfaces.html#testing-addthreeints-srv-with-service-client implementation, where some error handling is being implemented, without the #CHANGE tags showing the line that as been changed.
I got "confused" reaching this step, since I did not understood why the main function had changed that much. Maybe the second implementation should be the one to be kept to give an example of error handling.


New version: Alibaba.aDrive version 2.3.3

ARP entries are correct.
Auto-updated by vedantmgoyal2009/winget-pkgs-automation in workflow run 1089
Microsoft Reviewers: Open in CodeFlow

/azp run


bmaptool doesn't work in fakemachine

The failing stacktrace in bmaptool create starts with os.ftruncate which fails with "No such file or directory".
Here's a python script which reproduces the issue:
"""Save me as repro.py"""
import tempfile
import os
directory=os.getcwd()
tmp_obj = tempfile.TemporaryFile("w+", dir=directory)
os.ftruncate(tmp_obj.fileno(), 1024)
tmp_obj.close()

Put this script somewhere (mine is in my home directory). From there, to reproduce:
docker run -it --rm --device=/dev/kvm -v $PWD:/build debian:bookworm /bin/bash
apt-get update
apt-get install golang git qemu-system-x86 busybox systemd-resolved linux-image-amd64 linux-headers-amd64
git clone https://github.com/go-debos/fakemachine.git
cd fakemachine
go build cmd/fakemachine/main.go
./main -v /build:/build
python repro.py

The output I see in fakemachine:
bash-5.2# python3 repro.py
Traceback (most recent call last):
File "/build/repro.py", line 7, in <module>
os.ftruncate(tmp_obj.fileno(), 1024)
FileNotFoundError: [Errno 2] No such file or directory

In the docker container I get no output:
root@7432ceebb7a7:/fakemachine# python3 repro.py

Nor on the actual bare metal machine:
# python repro.py

Yeah the problem seems to be that the 9pfs doesn't seem to support truncating an unlinked file; from strace:
openat(AT_FDCWD, "/t/tmpty_rb8zv", O_RDWR|O_CREAT|O_EXCL|O_NOFOLLOW|O_CLOEXEC, 0600) = 3
unlink("/t/tmpty_rb8zv")                = 0
ioctl(3, FIOCLEX)                       = 0
newfstatat(3, "", {st_mode=S_IFREG|0600, st_size=0, ...}, AT_EMPTY_PATH) = 0
ioctl(3, TCGETS, 0x7ffd6d4abfd0)        = -1 ENOTTY (Inappropriate ioctl for device)
lseek(3, 0, SEEK_CUR)                   = 0
lseek(3, 0, SEEK_CUR)                   = 0
lseek(3, 0, SEEK_CUR)                   = 0
ftruncate(3, 1024)                      = -1 ENOENT (No such file or directory)

Which is annoying but not much fakemaching can do about it;  Which is why it fails in the mounted directory (9pfs) but works on e.g. /scratch

fwiw doing a ugly hacky test with  virtiofs shows some performance improvements and does fix this issue (see an ugly first hack in  e74e487ab2e7f91cfcb066817c9afc8ed85b9a5c )


need help generating api key using the secret and key

@ericsomdahl I need your help
Iam not much familiar with How hashing works in python,I just want to fetch my bittrex balance of a specific currency,and as I see on https://bittrex.com/home/api the offcial documentation getbalance is the account api which requires secret and key to access the info,through this url
https://bittrex.com/api/v1.1/account/getbalance?apikey=API_KEY&currency=BTC
I think In the url the API_KEY is supposed to be replaced by a hash generated by secret and key so can you please help me generate the API_KEY I woul really appreciate your help.
I saw your code but I was not able to understand how the API was generated and what did the
variable values contained
[]( from urllib.parse import urlencode
import urllib.request
import json
import time
import hmac
import hashlib
values={ }
secret='xxxxxxxxxxxxxxxxxxxxx'
key='yyyyyyyyyyyyyyyyyyyyy'
url = 'https://bittrex.com/api/v1.1/account/'
url += 'getbalance' + '?' + urlencode(values)
url += '&apikey=' + key
url += '&nonce=' + str(int(time.time()))
signature = hmac.new(b'key', url, hashlib.sha512).hexdigest()
headers = {'apisign': signature}
print(signature)  #error:unicode objects must be encoded before hashing
 )

finally my intention is to get the apikey which I can directly put in the url and get the balance in the form of json

The secret and key you get from the bittrex website.

thank you for the reply here's my issue please take a look I have the
secret and the key I just want to know how can I generate the API here's my
issue  https://github.com/ericsomdahl/python-bittrex/issues/146
On Wed, Apr 11, 2018 at 5:35 AM, Skylar Saveland<EMAIL_ADDRESS>wrote:

The secret and key you get from the bittrex website.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/ericsomdahl/python-bittrex/issues/146#issuecomment-380284980,
or mute the thread
https://github.com/notifications/unsubscribe-auth/Ad9Kl2pK_GxHyzuvmkBeSjk63fpde_uLks5tnUisgaJpZM4S3gBL
.


When scrolling away the header, the page body should not jump around

Right now, when loading a page such as http://localhost:7331/web/tools/setup/workspace/setup-buildtools, the page does a jump when you scroll down and it's very irritating. Let's solve this without jumpy jump jump.

This is material, no?
On Mon, 28 Sep 2015 16:00 Paul Bakaus<EMAIL_ADDRESS>wrote:

Right now, when loading a page such as
http://localhost:7331/web/tools/setup/workspace/setup-buildtools, the
page does a jump when you scroll down and it's very irritating. Let's solve
this without jumpy jump jump.
—
Reply to this email directly or view it on GitHub
https://github.com/google/WebFundamentals/issues/1894.

Nope - other awkward jump.

This is MDL issue - opened here: https://github.com/google/material-design-lite/issues/1658


Ensure that proper default visibility is set for compatibility archives

This is set to hidden in stdlib/CMakeLists.txt, but in some Apple internal configurations we build the compatibility archives by directly importing stdlib/toolchain, thus skipping these directives and
causing some symbols to become unexpected visible.
Addresses rdar://73709695

@swift-ci please test

@swift-ci please build toolchain

@swift-ci Please test stdlib with toolchain


Upstream issue: Azure Data Studio on "new" installation of Debian OS appears unresponsive

Azure Data Studio Version: 1.47-RC1, Insiders
OS Version: Debian 12

Steps to Reproduce:

Create a new Hyper-V VM with Debian 12 (also applies to Ubuntu)
Install Azure Data Studio using '.deb' file.
Start ADS using command line.

Actual:
ADS goes unresponsive, it appears stuck for more than 30 seconds.
Expected:
ADS starts normally.
Root Cause
This is related with recent changes in VS Code that came with VS Code merge, known issues:

https://github.com/microsoft/vscode/issues/190360
https://github.com/microsoft/vscode/issues/188397#issuecomment-1713104495

Mitigation:
Start Azure Data Studio with azuredatastudio --password-store="basic"
@lewis-sanchez @kisantia @dlevy-msft
Something to be aware of as a known issue with 1.47 release.

Im having the same problem

Fixed it by restarting the machine :shrug:


Code of the Scene-graph based method

Thanks for your great work! I wonder whether the code about scene-graph based method will  be release?

Thanks for your great work! I wonder whether the code about scene-graph based method will be release?

Hey, thanks for your interest! There are two SG-based methods in our paper: one is ConceptGraph (please find their code here), the other one is SVM (see this PR in the HomeRobot repo). We use the original implementation of both.


Condense/move up sidebar

@jacksoncvm Please sign the Contributor License Agreement!
Click here to manually synchronize the status of this Pull Request.
See the FAQ for frequently asked questions.

@jacksoncvm Thank you for signing the Contributor License Agreement!

Pushed to gh-pages, thanks!


Results are capped at 50

Describe the bug
All results are capped at 50. It seems it's set the MaxResult variable to 50. It would be nice if it is configurable.
Steampipe version (steampipe -v)
Example: v0.3.0
Plugin version (steampipe plugin list)
Example: v0.5.0

Thanks for raising this @camgas - sorry you hit this bug.
It looks like we've done most of the work to setup for paging, but haven't done the actual page looping 😬

https://github.com/turbot/steampipe-plugin-twilio/blob/main/twilio/table_twilio_account_message.go#L156-L218

PS: If you are on Steampipe v0.3.0 then I'd definitely recommend you upgrade to a later version! :-)

Correction, I am running steampipe version 0.16.4. Sorry about the wrong information above.
Thank you @e-gineer will watch for the pagination when it's done :) Love this plugin already!

Hey @camgas , sorry about that!
I just fixed this bug and released it in v0.3.1, can you please give it a try and let us know if you run into any issues?
I've also increased the page size to 1000 in most tables (except the serverless tables, as they're capped at 100), so hopefully performance is still quick when fetching hundreds or thousands of records.

For future reference, the way that the Twilio SDK handles paging internally is interesting, as they support SetPageSize and SetLimit functions, and then a page size is calculated based on these 2 values in https://github.com/twilio/twilio-go/blob/300974316779b187a25f13153bf3672a42cf4cc0/client/page_util.go#L9-L26.


[release-1.10] Remove redundant secret cache

Pull Request Motivation
Implements @irbekrm 's  #5691 as a backport for release-1.10
Related to #5689
Kind
/kind bug
Release Note
Fixes a bug where the cert-manager controller was caching all Secrets twice

flakes
/test pull-cert-manager-release-1.10-make-test

Thank you @SgtCoDFish !
/lgtm


Bug fixes

merge command's section parsing
Compilation when cloggen is in the same folder as the TeX file

Fixed in v1.2.0.


Add supported CPython/PyPy versions to cargo package metadata

https://doc.rust-lang.org/cargo/reference/manifest.html#the-metadata-table
Currently maturin hardcodes minimal supported interpreter versions based on pyo3 versions, it'd be nice if this information is encoded in cargo package metadata of pyo3 and pyo3-ffi so we can make it future-proof in maturin.
For example:
[package.metadata.cpython]
version = ">=3.7,<3.14"

[package.metadata.pypy]
version = ">=3.9,<3.11"

Seems like a good idea, I guess these are then available to maturin via cargo metadata?

Yes, that's the hope.


Add link to the published blog for TensorFlow Serving

@jayfurmanek , please review and merge.
This is how it looks: https://github.com/wdirons/powerai/tree/add_link_to_tf_serving_blog/examples/tensorflow_serving


Add A Quick way to Fetch Single PR

I add a simple way to quickly get a single PR without add any remote or config.
More detail please see: https://gist.github.com/asika32764/5824bc66a6756dc3031e

Thanks for the pull request @asika32764
I have tried to only incorporate features that are built into Git/GitHub. Whilst your PR is useful it goes against what I want GHCS to be so I won't be merging this, but thanks anyway! :+1:

KISS:
git config --global alias.pr '!f() { git fetch $1 refs/pull/$2/head:pr-$2; }; f'


Guy fix breadcrumbs

Proposed solution
This branch fixes the breadcrumbs in the camps module. Closes #68.
Currently the breadcrumbs container is displayed only if the breadcrumbs are defined.
Tradeoffs
Please note - the breadcrumbs are initialized and implemented only within the Camps module.
(can be easily implemented across the board).
Testing Done
Tests passed.
Tested all breadcrumb links and translations.

@OriHoch - Added new issue for all breadcrumbs #127

:ok:


Add Dockerfile

Hi,
As discussed in https://github.com/arzzen/git-quick-stats/issues/85, here is the PR for the Dockerfile.
I modified the version I made so it build using the sources from your repository, so you can make tags for each version of your tool on Docker Hub.
I guess we'll need to adapt the name of the Docker Hub repo, I assumed you would use arzzen/git-quick-stats, but it's up to you ;)
Tell me if you need help with Docker Hub, and let me know for any changes you want me to do on this PR please.
Best regards,
Jeremy.

@golflima Thanks for your contribution.
I created a docker hub repository https://hub.docker.com/repository/docker/arzzen/git-quick-stats


SteamBot not starting

root@sd-35551:/usr/local/lib# mono SteamBot.exe

Assertion at domain.c:724, condition `mono_defaults.runtimetype_class != 0' not met

Native stacktrace:
    mono() [0x49d357]
    /lib/x86_64-linux-gnu/libpthread.so.0(+0xfcb0) [0x7f20db146cb0]
    /lib/x86_64-linux-gnu/libc.so.6(gsignal+0x35) [0x7f20dadaf0d5]
    /lib/x86_64-linux-gnu/libc.so.6(abort+0x17b) [0x7f20dadb283b]
    mono() [0x62c22f]
    mono() [0x62c019]
    mono() [0x62c17d]
    mono() [0x59f5fd]
    mono() [0x424d5e]
    mono(mono_main+0x2e4) [0x4707b4]
    /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xed) [0x7f20dad9a76d]
    mono() [0x41f7dd]

Debug info from gdb:
Mono support loaded.
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[New Thread 0x7f20da3ff700 (LWP 22913)]
0x00007f20db14688d in waitpid () from /lib/x86_64-linux-gnu/libpthread.so.0
Id   Target Id         Frame
2    Thread 0x7f20da3ff700 (LWP 22913) "mono" 0x00007f20db142d84 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/x86_64-linux-gnu/libpthread.so.0

1    Thread 0x7f20dbc5f780 (LWP 22912) "mono" 0x00007f20db14688d in waitpid () from /lib/x86_64-linux-gnu/libpthread.so.0

Thread 2 (Thread 0x7f20da3ff700 (LWP 22913)):
#0  0x00007f20db142d84 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/x86_64-linux-gnu/libpthread.so.0
#1  0x00000000005fa03c in thread_func (thread_data=0x0) at sgen-thread-pool.c:118
#2  0x00007f20db13ee9a in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0
#3  0x00007f20dae6c38d in clone () from /lib/x86_64-linux-gnu/libc.so.6
#4  0x0000000000000000 in ?? ()
Thread 1 (Thread 0x7f20dbc5f780 (LWP 22912)):
#0  0x00007f20db14688d in waitpid () from /lib/x86_64-linux-gnu/libpthread.so.0
#1  0x000000000049d401 in mono_handle_native_sigsegv (signal=, ctx=, info=) at mini-exceptions.c:2233
#2
#3  0x00007f20dadaf0d5 in raise () from /lib/x86_64-linux-gnu/libc.so.6
#4  0x00007f20dadb283b in abort () from /lib/x86_64-linux-gnu/libc.so.6
#5  0x000000000062c22f in monoeg_log_default_handler (log_domain=0x0, log_level=G_LOG_LEVEL_ERROR, message=0x1edc450 "* Assertion at domain.c:724, condition mono_defaults.runtimetype_class != 0' not met\n", unused_data=0x0) at goutput.c:233 #6  0x000000000062c019 in monoeg_g_logv (log_domain=0x0, log_level=G_LOG_LEVEL_ERROR, format=0x638f30 "* Assertion at %s:%d, condition %s' not met\n", args=0x7ffe827678a8) at goutput.c:113
#7  0x000000000062c17d in monoeg_assertion_message (format=0x638f30 "* Assertion at %s:%d, condition `%s' not met\n") at goutput.c:133
#8  0x000000000059f5fd in mono_init_internal (filename=0x7ffe827688ce "SteamBot.exe", exe_filename=, runtime_version=) at domain.c:724
#9  0x0000000000424d5e in mini_init (filename=0x7ffe827688ce "SteamBot.exe", runtime_version=0x0) at mini-runtime.c:3158
#10 0x00000000004707b4 in mono_main (argc=2, argv=0x7ffe82767cc8) at driver.c:1951
#11 0x00007f20dad9a76d in __libc_start_main () from /lib/x86_64-linux-gnu/libc.so.6
#12 0x000000000041f7dd in _start ()
=================================================================
Got a SIGABRT while executing native code. This usually indicates
a fatal error in the mono runtime or one of the native libraries
used by your application.
I get this and i dont know what to do can you help?

Most likely an issue with your mono installation.

How can i redo it? Just by removing all files?

Check out #427 and post there.

I'm using the one you run on your own PC and it works there.


Rounded corners

Could be possible to add property which will round the progress bar corners? Simillar like MAUI border do.

Thanks
Maroš

If you just need rounded corners on the outside, you could wrap the control with a Border with rounded corners, e.g.:
<Border
    StrokeShape="RoundedRectangle 8"
    Stroke="Transparent"
    StrokeWidth="0">
    <epj:ProgressBar />
</Border>

I'm already considering adding this as a feature for the progress indicator bar.

Thanks, that workaround works well, solve my problem.

I added an option to have rounded caps, you can enable it by setting RoundCaps="True". It's currently available as a prerelease (https://www.nuget.org/packages/epj.ProgressBar.Maui/1.0.2-pre), so be sure to tick the "include prerelease" checkbox in the package manager.

Thanks, I will test it.


Don't duplicate log handlers for instance of BaseInterface of the same name

Resolves #82
This also moves the log level and format to configurable settings.

@amitschang we can always readdress the logging design later, i.e., single global vs individual per device. Either way, this PR will at least patch the bug and stop duplicate log messages.

Typically a library just gets loggers and does logging,

Yep, solid point.


Rewrite and operator with #index

Description
#index uses less allocations and has better performance than #find
Performance Benchmark
Test Suit
require 'benchmark/ips'
require "bundler/gem_tasks"
require 'json_logic'

logic = {
  "and" => [true, 1, 'a']
}

compiled = JSONLogic.compile(logic)

Benchmark.ips do |x|
  x.report("and_operator") { compiled.evaluate(nil) }

  x.compare!
end

Before PR
Warming up --------------------------------------
        and_operator   131.476k i/100ms
Calculating -------------------------------------
        and_operator      1.319M (± 0.5%) i/s -      6.705M in   5.085356s

After PR
Warming up --------------------------------------
        and_operator   145.108k i/100ms
Calculating -------------------------------------
        and_operator      1.471M (± 0.7%) i/s -      7.401M in   5.031494s

About 11% improvement

#index uses less allocations and has better performance than #find

should put the source of this insight into this PR.

About 11% improvement.

this result was from your local computer? can check this on staging also if you have time.


[ERROR] can't access xxx before initialization

Jodit Version:  4.2.10
Browser: firefox or libwebkit2gtk-4.0-dev in tauri 1.6
OS: debian12
Is React App: True
Code
import React, { useEffect, useRef } from "react";
import { Jodit } from "jodit";
import "jodit/es2021/jodit.fat.min.css";

interface Props {
  id: string;
}

export const RtEditor: React.FC<Props> = ({ id }) => {
  const parentRef = useRef<HTMLDivElement>(null);
  const editorRef = useRef<HTMLTextAreaElement>(null);
  const editor = useRef<Jodit | null>(null);

  useEffect(() => {
    if (editorRef.current) {
      editor.current = Jodit.make(editorRef.current, {});
    }
  }, []);

  return (
    <>
      <div ref={parentRef}>
        <textarea id={id} ref={editorRef} />
      </div>
    </>
  );
};

I made a reo using vite: https://github.com/newproplus/test_jodit , you can test it in browser or tauri.
There are 2 version:

src/editor.tsx : my simple code
src/editor_jr.tsx : a ts version  of jodit-react

Both of them have the same issue.
git clone https://github.com/newproplus/test_jodit
pnpm i

# It will works well.
pnpm dev

# There might be an error like:
#  1. Uncaught ReferenceError: can't access lexical declaration 'Mb' before initialization.
#  2. Unhandled Promise Rejection: ReferenceError: Cannot access uninitialized variable.
# Neither in browser nor in tauri.
pnpm build && pnpm start

Actual behavior:
The code works well in dev mode, but there will be an error in  prod mode: Unhandled Promise Rejection: ReferenceError: Cannot access uninitialized variable.

I tried using parcel instead of vite, there are different errors:

It works well with rspack, using the rsbuild's default conf:
 "scripts": {
    "dev": "NODE_ENV=development rspack serve",
    "build": "NODE_ENV=production rspack build",
  },

It works well using ts + rspack + react , I created a demo jodit_rspack_demo

Can we close it?

@xdan But the problem has not been solved. It is best that all apps compiled by various packaging tools can be used normally, rather than only apps compiled by rspack not reporting errors.

@xdan But the problem has not been solved. It is best that all apps compiled by various packaging tools can be used normally, rather than only apps compiled by rspack not reporting errors.

No, have you tried the latest version? Should this be resolved?

I had the same (or similar) issue with v4.2.10 and vite where the bundles threw this error (albeit not on the same line, but one of its neighbors). After upgrading to 4.2.19 the issue went away.

I'm writing a new WYSIWYG editor, it's called Exsied: Extremely simple editor.
It's quite simple, easy to develop and debug. It might be published in a few weeks, the repo is https://github.com/exsied/exsied.
Features:

No complex concepts, exsied is written entirely in native JavaScript events binding.

No dependencies.

Easy to configure / custom / develop.

All functions are based on plugins.

Only use ts and scss, and all icons are svg files.

The file size after build is very small, just 34kb after gzip.


remove backup from example-etcd-cluster

This doesn't work on minikube because the backup requires a PV.
kubectl create -f https://coreos.com/operators/etcd/latest/example-etcd-cluster.yaml

We need to fix https://coreos.com/operators/etcd/latest/example-etcd-cluster.yaml as well cc @spoonben

error:
time="2016-11-07T02:36:20Z" level=error msg="cluster (etcd-cluster) is dead due to failure to create backup: fail to wait PVC (etcd-cluster-pvc) 'Bound': timed out waiting for the condition"

@hongchaodeng Yes. Probably we should disable backup in the example by default, since most people will try this on local env. We need to update README section: if you want to try backup example, do xxx.

In the future we might consider "local" persistent volume:
https://github.com/kubernetes/kubernetes/issues/7562

@hongchaodeng Yes. Seems promising.

Yes, that is nice for the future, but right now it is confusing as things don't work.


Provide solutions in a format that is human- and machine-readable

This will make it easier to check work programmatically.

Hi, thanks for making a pull request.
What is the use case you have in mind for this? This would require maintaining two versions of the same data, and the JSON can be easily derived from Solutions.md anyway.

Hello. You're right on both points!
To address the first one: I was thinking you might replace Solutions.md with the JSON file, and also publish the repo using GitHub pages for the following two reasons:

This one addresses your second point: By maintaining a JSON file you will eliminate the need for that conversion step. Also, a markdown file can easily be created from JSON—and isn't a structured data format like JSON better suited for the contents?

Enabling GitHub pages will allow programmatic access to the most up-to-date answers by network requests. GitHub is very kind to set its Access-Control-Allow-Origin headers to * for GItHub Pages, which allows very open access. Doing this will make it even easier for people to download the dataset and check answers in an automated way.

Just trying to make things more accessible. I hope you like the idea!

I don't think there's enough demand for programmatic access to the answers to justify doing this. If they really need the most up-to-date answers, it's simple enough to parse Solutions.md. Closing.


build-marist-rhel77-s390x-1 & 2 low on disk space

build-marist-rhel77-s390x-1 & 2 low on disk space
Failing builds: https://ci.adoptopenjdk.net/view/Failing Builds/job/build-scripts/job/jobs/job/jdk11u/job/jdk11u-linux-s390x-openj9/714/consoleFull

Both machines have 16GB free now, after deleting the jdk15 folders (as we're building jdk15u now). Both machines are re-enabled. Closing now


Feat: add Fleek support

[x] chore: added export command to package.json

Is this still a draft? Can I review it?

Is this still a draft? Can I review it?

It's still a draft, I didn't find a way to make it work 100% when served from IPFS.

Closing for now as it is not a priority anymore.


Permanent Shocks

Hi everyone.
I'm attempting to apply a permanent shock in a Neoclassical Model with heterogeneous labor supply and variation across discount factors and permanent abilities.
The model functions perfectly for a transitory fiscal shock. However, when it comes to the permanent fiscal shock, I encounter an issue. After calculating the new steady state following the shock, which I've termed "ss_terminal," I use the following code:
# transition
unknowns = ['K', 'L']
targets = ['asset_mkt', 'labor_mkt']
dG = 0.01 * ss_initial['Y'] * rho ** (np.arange(T)) # 1%
td_nonlin = neoclassic.solve_impulse_nonlinear(ss_terminal, unknowns, targets, {"G": dG},
                                               ss_initial = ss_initial)

I consistently receive the following error: ValueError: max() arg is an empty sequence. It seems that the code fails to recognize any inputs when applying the ss_initial option in the CombinedBlock.impulse_nonlinear function:
     72     if input_args or ss_initial is not None:
     73         # If this block is actually perturbed, or we start from different initial ss
     74         # TODO: be more selective about ss_initial here - did any inputs change that matter for this one block?
---> 75         impulses.update(block.impulse_nonlinear(ss, input_args, outputs & block.outputs, internals, Js, options, ss_initial))

To investigate whether this issue is related to changes in ss_terminal, I attempted to use the same code but with the same steady state:
td_nonlin = neoclassic.solve_impulse_nonlinear(ss_terminal, unknowns, targets, {"G": dG},
                                               ss_initial = ss_terminal)

However, the error persists.
I verified this code with the option 'ss_initial' in a model lacking heterogeneity across discount factors and permanent abilities, and it worked flawlessly. To incorporate these factors, I created nb (number of betas) * na (number of abilities) het_blocks, then aggregated them all with respect to their weights (that I know).
What puzzles me is that everything has functioned smoothly thus far for transitory shocks. When I apply the code without the option 'ss_initial', it works fine. The problem only arises when I use this option, which is necessary for the permanent shock.
Do you have an idea where the problem might be?
Thank you
Valter Nóbrega

Dear Valter,
Thank you for raising your issue. Could you send a minimal code snippet that I can run that gets you the error? Say two blocks that you aggregate and compute a nonlinear transition for? And then maybe also show the full error message?
Hopefully we can figure it out then!
Ludwig

Dear Ludwig
Thank you for your reply.
The model that I am trying to do is a neoclassical model with heterogeneous labor supply and permanent heterogeneity across discount factors and permanent ability.
To do so, I imported the household block with labor choice:
hh = hetblocks.hh_labor.hh
and then added the corresponding hetoutputs and hetinputs:
def utility(c, eis, vphi, n, frisch):
    u =  (c ** (1 - 1/eis) / (1 - 1/eis) ) - vphi * ((n ** (1 + frisch)) / (1 + frisch))
    return u

def make_grids(rho_s, sigma_s, nS, amax, amin, nA):
    e_grid, Pi, pi_e = utils.tauchen_hans(sigma_s, rho_s, nS)
    a_grid = utils.a_grid_fortran(nx=nA, convex_param=4.0, ubound=amax, lbound=amin) # Function that mimics the grids from the Fortran Code
    return e_grid, pi_e, Pi, a_grid

def wages(w, e_grid, tau_l, gamma0, ability):
    we = (1 - tau_l) * w * np.exp(gamma0 + ability + e_grid)
    return we

def labor_supply(n, e_grid, gamma0, w, ability):
    ne = (np.exp(gamma0 + ability + e_grid))[:, np.newaxis] * n
    av_e = (w * np.exp(gamma0 + ability + e_grid))[:, np.newaxis] * n
    return ne, av_e

def transfers(Tax, e_grid):
    T = -Tax / np.ones(len(e_grid))
    return T

household = hh.add_hetinputs([transfers, wages, make_grids])
household = household.add_hetoutputs([labor_supply, utility])

Then, I add firms and government, and the corresponding market clearing conditions:
@simple
def firm(K, L, alpha, delta):
    r = alpha * (K(-1) / L) ** (alpha-1) - delta
    w = (1 - alpha) * (K(-1) / L) ** alpha
    Y = K(-1) ** alpha * L ** (1 - alpha)
    return r, w, Y

@simple
def mkt_clearing(A, NE, G, C, L, Y, B, delta, K):
    asset_mkt = A - B - K
    labor_mkt = NE - L
    I = K - (1 - delta) * K(-1)
    goods_mkt = Y - C - G - I
    return asset_mkt, labor_mkt, goods_mkt

@simple
def fiscal(r, B, G, tau_l, w, L):
    Tax = (1 + r) * B(-1) + G - B - tau_l * w * L
    return Tax

Since TFP is normalized to 1, and we need to calibrate after K/Y, I created a new block for those ratios:
@simple
def macro_ratios(Y, G, B, Tax, K):
    G_Y = G / Y
    B_Y = B / Y
    T_Y = Tax / Y
    K_Y = K / Y
    return G_Y, B_Y, T_Y, K_Y

After all this, I added the ingredients for the heterogeneity. Since I am trying to replicate a model with 3 betas and 2 different permanenent abilities, what I did was to aggregate them in the same way as in the KS example.
ability_grid = utils.tauchen_hans(0.712, 0, 2)[0]
hh_list = []
to_map = ['beta', 'ability', *household.outputs]
for i in range(1, 4):  # Loop for beta variations
    for j in range(1, len(ability_grid) + 1):  # Loop for ability variations
        beta_suffix = f'_beta{i}'
        ability_suffix = f'_ability{j}'
        remapped_keys = {k: k + beta_suffix + ability_suffix for k in to_map}
        renamed_key = f'hh_beta{i}_ability{j}'
        new_hh = household.remap(remapped_keys).rename(renamed_key)
        hh_list.append(new_hh)

@simple
def aggregate(A_beta1_ability1, A_beta1_ability2,
                        A_beta2_ability1, A_beta2_ability2,
                        A_beta3_ability1, A_beta3_ability2,

                        C_beta1_ability1, C_beta1_ability2,
                        C_beta2_ability1, C_beta2_ability2,
                        C_beta3_ability1, C_beta3_ability2,

                        NE_beta1_ability1, NE_beta1_ability2,
                        NE_beta2_ability1, NE_beta2_ability2,
                        NE_beta3_ability1, NE_beta3_ability2,

                        N_beta1_ability1, N_beta1_ability2,
                        N_beta2_ability1, N_beta2_ability2,
                        N_beta3_ability1, N_beta3_ability2,

                        sigma_a, nAB):

    # This has to be done by hand
    mass_ability = utils.tauchen_hans(sigma_a, 0, nAB)[2]

    # For A
    A_beta1 = A_beta1_ability1 * mass_ability[0] + \
              A_beta1_ability2 * mass_ability[1]

    A_beta2 = A_beta2_ability1 * mass_ability[0] + \
              A_beta2_ability2 * mass_ability[1]

    A_beta3 = A_beta3_ability1 * mass_ability[0] + \
              A_beta3_ability2 * mass_ability[1]

    # For C
    C_beta1 = C_beta1_ability1 * mass_ability[0] + \
              C_beta1_ability2 * mass_ability[1]

    C_beta2 = C_beta2_ability1 * mass_ability[0] + \
              C_beta2_ability2 * mass_ability[1]

    C_beta3 = C_beta3_ability1 * mass_ability[0] + \
              C_beta3_ability2 * mass_ability[1]

    # For NE
    NE_beta1 = NE_beta1_ability1 * mass_ability[0] + \
              NE_beta1_ability2 * mass_ability[1]

    NE_beta2 = NE_beta2_ability1 * mass_ability[0] + \
              NE_beta2_ability2 * mass_ability[1]

    NE_beta3 = NE_beta3_ability1 * mass_ability[0] + \
              NE_beta3_ability2 * mass_ability[1]

    # For N
    N_beta1 = N_beta1_ability1 * mass_ability[0] + \
              N_beta1_ability2 * mass_ability[1]

    N_beta2 = N_beta2_ability1 * mass_ability[0] + \
              N_beta2_ability2 * mass_ability[1]

    N_beta3 = N_beta3_ability1 * mass_ability[0] + \
              N_beta3_ability2 * mass_ability[1]

    A = (A_beta1 + A_beta2 + A_beta3) / 3
    C = (C_beta1 + C_beta2 + C_beta3) / 3
    NE = (NE_beta1 + NE_beta2 + NE_beta3) / 3
    N = (N_beta1 + N_beta2 + N_beta3) / 3

    return C, A, NE, N

Then, since the betas parameters that I use for calibration, in order to avoid having to write "beta_beta1_ability_1", etc..., I added a simple block that maps the values from the calibration dictionary to the household block:
@simple
def betas(beta1, beta2, beta3):
    # Beta 1
    beta_beta1_ability1 = beta1
    beta_beta1_ability2 = beta1

    # Beta 2
    beta_beta2_ability1 = beta2
    beta_beta2_ability2 = beta2

    # Beta 3
    beta_beta3_ability1 = beta3
    beta_beta3_ability2 = beta3

    return beta_beta1_ability1, beta_beta1_ability2, beta_beta2_ability1, beta_beta2_ability2, beta_beta3_ability1, beta_beta3_ability2

and to help to build the calibration dictionary, I created a function to add each of the new values abilities and betas (flexible to the number of points in the ability grid):
def parameters(beta_values, sigma_a, nAb):
    ability_grid = utils.tauchen_hans(sigma_a, 0, nAb)[0]
    parameter_values = {}

    # Loop over beta indices
    for i, beta in enumerate(beta_values, start=1):
        # Loop over ability indices
        for j in range(1, nAb + 1):
            # Construct variable names
            beta_variable_name = f'beta_beta{i}_ability{j}'
            ability_variable_name = f'ability_beta{i}_ability{j}'

            # Assign value to variables
            parameter_values[beta_variable_name] = beta
            parameter_values[ability_variable_name] = ability_grid[j - 1]

    # Return variable names and values as a dictionary
    return parameter_values

# Steady state
calibration.update(parameters([calibration['beta1'], calibration['beta2'], calibration['beta3']],calibration['sigma_a'], calibration['nAB']))

So the model is created as:
neoclassic = create_model([*hh_list, firm, fiscal, aggregate, betas, mkt_clearing, macro_ratios], name="Neoclassical")
For this calibration, we get a steady state:
# Steady state
calibration = {'eis': 1.2**(-1),
               'frisch': 1.0,
               'delta': 0.015,
               'alpha': 0.33,
               'rho_s': 0.761,
               'sigma_s': 0.211,
               'nS': 5,
               'nA': 200,
               'amax': 400,
               'amin': -1.7,
               'gamma0': 0.,
               'phi_tau': 0.1,
               'beta1': 0.9858655,
               'beta2': 0.9872655,
               'beta3': 0.9882,
               'sigma_a': 0.712,
               'nAB': 2}

calibration.update(parameters([calibration['beta1'], calibration['beta2'], calibration['beta3']],calibration['sigma_a'], calibration['nAB']))

unknowns_ss = {'K': 18.34,
               'L': 0.4337,
               'vphi': 10,
               'G': 0.22,
               'B': 2.56,
               'tau_l': 0.35,
               'beta3': 0.9882}

targets_ss = {'asset_mkt': 0.,
              'labor_mkt': 0.,
              'N': 0.248,
              'T_Y': -0.07,
              'B_Y': 1.714,
              'G_Y': 0.15,
              'K_Y': 12.292}

ss_cal = neoclassic.solve_steady_state(calibration, unknowns_ss, targets_ss, solver='broyden_custom',
                                      ttol=1e-5, solver_kwargs={'maxcount': 10000})

Then, if I apply a nonlinear MIT shock on G, the model also converges:
# setup
T = 300
exogenous = ['G']
unknowns = ['K', 'L']
targets = ['asset_mkt', 'labor_mkt']

rho = 0.975
dG = 0.01 * ss_cal['Y'] * rho ** (np.arange(T))

td_nonlin = neoclassic.solve_impulse_nonlinear(ss_cal, unknowns, targets, {"G": dG})

However, if I try to add the line "ss_initial", it does not run.
If I give the model the same steady state:
td_nonlin = neoclassic.solve_impulse_nonlinear(ss_cal, unknowns, targets, {"G": dG}, ss_initial=ss_cal)
I get the error message: ValueError: max() arg is an empty sequence
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
Cell In[20], line 11
      8 dG = 0.01 * ss_cal['Y'] * rho ** (np.arange(T))
     10 # general equilibrium jacobians
---> 11 td_nonlin = neoclassic.solve_impulse_nonlinear(ss_cal, unknowns, targets, {"G": dG}, ss_initial=ss_cal)

File D:\Projects\venv\lib\site-packages\sequence_jacobian\blocks\block.py:197, in Block.solve_impulse_nonlinear(self, ss, unknowns, targets, inputs, outputs, internals, Js, options, H_U_factored, ss_initial, **kwargs)
    195     print(f'Solving {self.name} for {unknowns} to hit {targets}')
    196 for it in range(opts['maxit']):
--> 197     results = self.impulse_nonlinear(ss, inputs | U, actual_outputs | targets, internals, Js, options, ss_initial, **kwargs)
    198     errors = {k: np.max(np.abs(results[k])) for k in targets}
    199     if opts['verbose']:

File D:\Projects\venv\lib\site-packages\sequence_jacobian\blocks\block.py:66, in Block.impulse_nonlinear(self, ss, inputs, outputs, internals, Js, options, ss_initial, **kwargs)
     61 actual_outputs, inputs_as_outputs = self.process_outputs(ss,
     62     self.make_ordered_set(inputs), self.make_ordered_set(outputs))
     64 if isinstance(self, Parent):
     65     # SolvedBlocks may use Js and may be nested in a CombinedBlock, so we need to pass them down to any parent
---> 66     out = self.M @ self._impulse_nonlinear(self.M.inv @ ss, self.M.inv @ inputs, self.M.inv @ actual_outputs, internals, Js, options, self.M.inv @ ss_initial, **own_options)
     67 elif hasattr(self, 'internals'):
     68     out = self.M @ self._impulse_nonlinear(self.M.inv @ ss, self.M.inv @ inputs, self.M.inv @ actual_outputs, self.internals_to_report(internals), self.M.inv @ ss_initial, **own_options)

File D:\Projects\venv\lib\site-packages\sequence_jacobian\blocks\combined_block.py:75, in CombinedBlock._impulse_nonlinear(self, ss, inputs, outputs, internals, Js, options, ss_initial)
     70     input_args = {k: v for k, v in impulses.items() if k in block.inputs}
     72     if input_args or ss_initial is not None:
     73         # If this block is actually perturbed, or we start from different initial ss
     74         # TODO: be more selective about ss_initial here - did any inputs change that matter for this one block?
---> 75         impulses.update(block.impulse_nonlinear(ss, input_args, outputs & block.outputs, internals, Js, options, ss_initial))
     77 return ImpulseDict({k: impulses.toplevel[k] for k in original_outputs if k in impulses.toplevel}, impulses.internals, impulses.T)

File D:\Projects\venv\lib\site-packages\sequence_jacobian\blocks\block.py:60, in Block.impulse_nonlinear(self, ss, inputs, outputs, internals, Js, options, ss_initial, **kwargs)
     57 """Calculate a partial equilibrium, non-linear impulse response of `outputs` to a set of shocks in `inputs`
     58 around a steady state `ss`."""
     59 own_options = self.get_options(options, kwargs, 'impulse_nonlinear')
---> 60 inputs = ImpulseDict(inputs)
     61 actual_outputs, inputs_as_outputs = self.process_outputs(ss,
     62     self.make_ordered_set(inputs), self.make_ordered_set(outputs))
     64 if isinstance(self, Parent):
     65     # SolvedBlocks may use Js and may be nested in a CombinedBlock, so we need to pass them down to any parent

File D:\Projects\venv\lib\site-packages\sequence_jacobian\classes\impulse_dict.py:22, in ImpulseDict.__init__(self, data, internals, T)
     20     raise ValueError('ImpulseDicts are initialized with a `dict` of top-level impulse responses.')
     21 super().__init__(data, internals)
---> 22 self.T = (T if T is not None else self.infer_length())

File D:\Projects\venv\lib\site-packages\sequence_jacobian\classes\impulse_dict.py:100, in ImpulseDict.infer_length(self)
     98 def infer_length(self):
     99     lengths = [len(v) for v in self.toplevel.values()]
--> 100     length = max(lengths)
    101     if length != min(lengths):
    102         raise ValueError(f'Building ImpulseDict with inconsistent lengths {max(lengths)} and {min(lengths)}')

ValueError: max() arg is an empty sequence

I believe the problem is


Showcase button prompt switches back to PC version for a frame when selecting different car

It's a known issue.
https://github.com/xan1242/NFS-XtendedInput/blob/2e8f20b096db02e7d042ed07d43bc8b68f5e4617/dllmain.cpp#L11

I've asked him if he could add an option to disable the switching entirely. I think it would be an acceptable workaround for the time being. And I'm sure there are some people (like myself) who don't want it to switch at all. We'll see what he does...

It could be an option to entirely disable dynamic switching and just make it quack like the console version. Just swap the flags it hides with the PC ones and it's basically the console version then.
I'll take a look. Hopefully after Carbon is fully finished.

fixed in 51de979
Feature to disable switching was also added.
Closing.