Add tests to restart the docker and verify volume refcounts are restored

Newly added tests are passing except for the failing scenario of #1499. Most likely #1499 is happening in each of the newly added tests  that are restarting containers post docker restart.
Test result is shown below and the failure for which #1499 is created. This branch can be used to repro #1499 as needed.
Test result:
2017/06/28 09:25:50 Removing container [restart_test_container_499262] on VM [<IP_ADDRESS>]
2017/06/28 09:25:51 Creating volume [restart_test_volume_602275] on VM [<IP_ADDRESS>]
2017/06/28 09:25:54 Adding access for sharedVmfs-1 to vmgroup _DEFAULT  with max-size 1gb, total-size 100gb
2017/06/28 09:25:55 Restart tests setup complete
2017/06/28 09:25:55 START: RestartTestData.TestDuplicateVolumeName
2017/06/28 09:25:55 Attaching volume [restart_test_volume_602275] on VM[<IP_ADDRESS>]
2017/06/28 09:25:57 Attaching volume [restart_test_volume_602275@sharedVmfs-1] on VM[<IP_ADDRESS>]
2017/06/28 09:26:03 Restarting docker ....
2017/06/28 09:26:37 Attaching volume [restart_test_volume_602275@sharedVmfs-0] on VM[<IP_ADDRESS>]
2017/06/28 09:26:45 Removing container [restart_test_container_499262] on VM [<IP_ADDRESS>]
2017/06/28 09:26:46 Removing container [restart_test_container_901653] on VM [<IP_ADDRESS>]
2017/06/28 09:26:46 Removing container [restart_test_container_578687] on VM [<IP_ADDRESS>]
2017/06/28 09:26:47 Attaching volume [restart_test_volume_602275] on VM [<IP_ADDRESS>]
2017/06/28 09:27:19 Destroying volume [restart_test_volume_602275@sharedVmfs-1]
2017/06/28 09:27:20 END: RestartTestData.TestDuplicateVolumeName
2017/06/28 09:27:20 START: RestartTestData.TestLongVolumeName
2017/06/28 09:27:20 Attaching volume [restart_test_volume_602275] on VM[<IP_ADDRESS>]
2017/06/28 09:27:21 Restarting docker ....
2017/06/28 09:27:37 Attaching volume [restart_test_volume_602275] on VM[<IP_ADDRESS>]
2017/06/28 09:27:45 Attaching volume [restart_test_volume_602275@sharedVmfs-0] on VM[<IP_ADDRESS>]
2017/06/28 09:27:45 Removing container [restart_test_container_499262] on VM [<IP_ADDRESS>]
2017/06/28 09:27:45 Removing container [restart_test_container_901653] on VM [<IP_ADDRESS>]
2017/06/28 09:27:46 Removing container [restart_test_container_578687] on VM [<IP_ADDRESS>]
2017/06/28 09:27:47 Attaching volume [restart_test_volume_602275] on VM [<IP_ADDRESS>]
2017/06/28 09:27:49 END: RestartTestData.TestLongVolumeName
2017/06/28 09:27:49 START: RestartTestData.TestPluginKill
2017/06/28 09:27:49 Attaching volume [restart_test_volume_602275] on VM[<IP_ADDRESS>]
2017/06/28 09:27:50 Confirming attached status for volume [restart_test_volume_602275]
2017/06/28 09:27:53 Killing vDVS plugin on VM [<IP_ADDRESS>]
2017/06/28 09:27:54 Sleep for 2 seconds
2017/06/28 09:27:56 Stopping container [restart_test_container_499262] on VM [<IP_ADDRESS>]
2017/06/28 09:28:07 Starting container [restart_test_container_499262] on VM [<IP_ADDRESS>]
2017/06/28 09:28:08 Stopping container [restart_test_container_499262] on VM [<IP_ADDRESS>]
2017/06/28 09:28:19 Confirming detached status for volume [restart_test_volume_602275]
2017/06/28 09:28:19 Sleep for 2 seconds
2017/06/28 09:28:23 Removing container [restart_test_container_499262] on VM [<IP_ADDRESS>]
2017/06/28 09:28:23 END: RestartTestData.TestPluginKill
2017/06/28 09:28:23 START: RestartTestData.TestRecoverMountsAfterRestart
2017/06/28 09:28:23 Attaching volume [restart_test_volume_602275] on VM[<IP_ADDRESS>]
2017/06/28 09:28:24 Attaching volume [restart_test_volume_602275] on VM[<IP_ADDRESS>]
2017/06/28 09:28:25 Restarting docker ....
2017/06/28 09:28:41 Sleep for 60 seconds

FAIL: restart_test.go:190: RestartTestData.TestRecoverMountsAfterRestart
restart_test.go:210:
c.Assert(s.config.DockerHostNames[0], Equals, status["attached_vm"], Commentf("Volume is not attached to VM %s, attached to %s",
s.config.DockerHostNames[0], status["attached_vm"]))
... obtained string = "worker1-VM1.0"
... expected string = "<no"
... Volume is not attached to VM worker1-VM1.0, attached to <no
2017/06/28 09:29:42 START: RestartTestData.TestVolumeDetached
2017/06/28 09:29:42 Attaching volume [restart_test_volume_602275] on VM [<IP_ADDRESS>]

I'd suggest skipping the failing test and once #1499 is fixed, reenable it.

Have skipped the one test that's addressed by #1499. The remaining tests can be reviewed.

@govint
The description of your PR says TestRecoverMountsAfterRestart fails for which we have #1499.
However that test seems to pass on CI.
But it failed at a different test case :-) .
Could you please confirm if it is a test issue or a bug ?
From the test steps in TestDuplicateVolumeName, it looks like there is a bug.
2017/06/28 20:31:02 Destroying volume [restart_test_volume_666978@vsanDatastore]

----------------------------------------------------------------------
FAIL: restart_test.go:291: RestartTestData.TestDuplicateVolumeName

restart_test.go:337:
    c.Assert(err, IsNil, Commentf(out))
... value *exec.ExitError = &exec.ExitError{ProcessState:(*os.ProcessState)(0xc420196e80), Stderr:[]uint8(nil)} ("exit status 1")
... Error response from daemon: unable to remove volume: remove restart_test_volume_666978@vsanDatastore: VolumeDriver.Remove: Remove failure - volume is still mounted.  volume=restart_test_volume_666978@vsanDatastore, refcount=1

2017/06/28 20:31:03 START: RestartTestData.TestLongVolumeName

Oh I missed the
c.Skip("Skipping verification of attached status after docker restart")

@pshahzeb, yes there is a bug in how volumes are identified during refcount init.
Its like this, suppose we have two volumes of the same name (thats a real good test for duplicate names - 👍 ) on different datastores.
On startup after a restart,

Docker restarts the containers, but the mounts only mark state as dirty and don't increment the respective counters.
Refcnt init runs and gets the containers with mounted volumes and handles each one.
We call GetVolumeInfo() which returns the full name of the volume and refcnt module increments the counters.
The bug here is in GetVolumeInfo() we look at the refmap and compare the volume names alone. In GetNameFromRefmap(). Since we have two volumes with the same name on different datastores we can (in one scenario) end up double counting a single volume.

The fix is to first get the full name of the volume and in GetNameFromRefmap() compare the full names and not the volume name alone.
From the logs in CI,

Two containers are restarted by docker and they mount two volumes of the same name on different datastores.
2017-06-28 20:29:49.626432838 +0000 UTC [INFO] Mounting volume name="restart_test_volume_666978"
2017-06-28 20:29:49.891919721 +0000 UTC [INFO] Mounting volume name="restart_test_volume_666978@vsanDatastore"

Refcount init has run and it has double counted one of the volumes, the result is the double counted volume remains stuck with the VM (not detached because of extra refcount) and the other volume is unmounted even though the volume is used by a container.

2017-06-28 20:30:08.881354165 +0000 UTC [INFO] Getting volume data from unix:///var/run/docker.sock
2017-06-28 20:30:08.892820898 +0000 UTC [INFO] Found 2 running or paused containers
2017-06-28 20:30:08.89565598 +0000 UTC [INFO] Initiating recovery unmount. dev="/dev/disk/by-path/pci-0000:0b:00.0-scsi-0:0:0:0" name="restart_test_volume_666978@datastore1" refcnt=0 mounted=true
2017-06-28 20:30:09.827914074 +0000 UTC [INFO] Discovered 2 volumes in use.
This volume is double counted
2017-06-28 20:30:09.828002239 +0000 UTC [INFO] Volume name=restart_test_volume_666978@vsanDatastore count=2 mounted=true device='/dev/disk/by-path/pci-0000:0b:00.0-scsi-0:0:1:0'
This volume is not counted at all and hence unmounted above.
2017-06-28 20:30:09.828014114 +0000 UTC [INFO] Volume name=restart_test_volume_666978@datastore1 count=0 mounted=true

Killing the docker daemon stops the containers and when docker restarts it restarts the containers. The plugin is also restarted as a result of docker restarting. Which should result in the same scenario as if the docker is restarted.

Killing the docker daemon stops the containers and when docker restarts it restarts the containers.
Correct.
However, killing docker kills containers and the last volume isn't actually unmounted after all containers are killed (reason being we missed unmounts)
In restarting, docker first stops all the containers.. we get respective unmounts and we cleanly unmount volume when the last container is stop.

This makes a difference when to the state after the plugin comes up. This essentially hits a different set of code paths.

Then I'll add a kill docker test after this set is merged.

Make of plugin failed
mkdir -p /tmp/plugin/rootfs
docker export  tempContainer  | tar -x -C /tmp/plugin/rootfs
sh: 0: getcwd() failed: No such file or directory
cp config.json docker-volume-vsphere /tmp/plugin
cp: cannot stat 'config.json': No such file or directory
cp: cannot stat 'docker-volume-vsphere': No such file or directory
make: *** [plugin] Error 1
Makefile:95: recipe for target 'plugin' failed
scp: /tmp/docker-volume-vsphere/build: No such file or directory
sh: 0: Can't open /tmp/docker-volume-vsphere/build/plugin_sanity_test.sh
bash: line 0: cd: /tmp/docker-volume-vsphere/plugin: No such file or directory
make: *** No rule to make target 'push'.  Stop.

testcase TestRecoverMountsAfterRestart is still skipped. Should we allow it?

One test (TestDuplicateVolumeNames) is failing thats passing locally, it passed earlier in CI too. Debugging.

CI is passed and it has 2 LGTM .. merging this PR.


bug(@vtmn/css-progressbar): doesn't work as expected on mobile browsers

Describe the bug

There are some weir behaviors with progressbar CSS component on mobile browsers.
Steps to reproduce
1. Go to https://decathlon.github.io/vitamin-web/@vtmn/showcase-css/?path=/story/components-indicators-progressbar--circular
2. KO: see that the progressbar is complete even if percentage is 50% or 60%
3. KO: see that there is a little blink in the animation of the indeterminate state of the progressbar
Browsers affected
- Chrome iOS
- Safari iOS
Version affected
latest
Screenshots

https://user-images.githubusercontent.com/9600228/151011097-b0d1d9eb-a061-423b-a03b-34d4be70a192.MP4

IT seems that in mobile browser, the animation has trouble :

https://stackoverflow.com/questions/32003911/how-to-make-svg-works-on-mobile

It required the adding of an animate tag in html : https://jsfiddle.net/rvbssfmd/3/

The problem appears also in Safari 15.3 (desktop). It seems that it's not a mobile broswers problem.

When I had to do this kind of components, I have always refered to this pen : https://codepen.io/maoberlehner/pen/gRLrpx maybe it can help you to solve your problem.
I will look deeper into your code next week


Slurmctld k8s deployment invalid yaml

When the imagePullSecret name is omitted due to the variable being None / Empty, this creates an invalid resource definition.
We need to either omit this field completely (its not used at the moment) or for example fix this by extracting the whole resource definition to a jinja template and then use a conditional block in jinja.

Was closed by #136 due to removing the imagePullSecret block entirely.


Support for Zero downtime deployment - asking for guidance for PR

First of all, thanks @jwilder for this lovely Docker image. I love to use it and it's great for the most part, however I usually find myself diverging from using it when I need to implement Zero Downtime (ZDT) deployment.
The way that I see this, ZDT might be achieved in the following manner:
[I'm going to check briefly which is true, but depending on these scenarios]:
a) If we fire up two containers with the same VIRTUAL_HOST variable, the two upstream and the two proxy_pass directives are automatically written.
b) or they won't and only one of them [randomly, or perhaps not so much] is put into effect.
c) only one of the containers 'wins' and is always the last one.
If a) happens, then we can just stop the docker-gen, start our new container, make sure that all is right with that new one, fire up docker-gen again, and kill the other container (? not sure if docker-gen and nginx are 'quick enough' and no connection might be lost) - also, the application must also  be able to cope with the two versions running simultaneously for a small period, which might not always be true
If b) happens, maybe we ought to have a convention like the

{{ if (exists (printf "/etc/nginx/vhost.d/%s_location" $host)) }}
                include {{ printf "/etc/nginx/vhost.d/%s_location" $host}};
{{ else if (exists "/etc/nginx/vhost.d/default_location" ) }}

but for the proxy pass, where we control were exactly we should be sending our traffic - together with perhaps another environment variable like ADDED_NAME that would get added to the upstream descriptor, so we would have: somehost.com-v1 and somehost.com-v2 where VIRTUAL_HOST would be somehost.com and ADDED_NAME would be v1 and v2 depending.
if c) happens, then we can just stop docker-gen, fire up the new version, wait for it to be working, and fire up the docker-gen and then all traffic will go to the new version and then safely kill the old version.
WDYT would be the best direction?
I'm happy to provide a PR for whichever you think might be better.
Cheers

PS: c) and a) don't need a code PR, obviously, but I offer to submit a PR for the documentation [either README.md or a link to a wiki or another .md]. I'm gonna experiment to see which scenario actually ends up happening, if in the meanwhile someone  already knows, please let me know

It already does a).  You shouldn't need to stop docker-gen.  Once docker fires the appropriate container events, the config is regenerated and a SIGHUP is sent to nginx.  I think session draining is an nginx plus feature though.
Documentation PRs are gladly accepted as well.

I think session draining is an nginx plus feature though.

Does that mean that some connections might be lost meanwhile or that if I want to kill version 1 right away I might end up with someone still bound to the upstream that I'm going to kill, meaning at most 1 lost connection when he clicks somewhere if he had the connection open, is that it?
Also, there was another feature that I have used outside of this container, but now that I see it I think it can be used with this container AFAIK, which is an error message upon getting a 502, something that I configured as:
	 error_page 502 =200 /error/maintenance.html;
     location /error {
                #index /home/deploy/currentCode/nginxRoot/nweets/maintenance.html;
                alias  /home/deploy/currentCode/nginxRoot/nweets;

  }

can probably be added on the vhost specific configurations. I can also add that documentation


Fix internal documentation links containing "%20"

These links to org headers didn't work for me when they contain %20 instead of space. Should they have?

With them, it breaks the links in org-mode. Without them, it breaks the links on github. Wonderful. I guess org-mode is the priority here. Thanks.

Ah, didn't think about that angle. Was wondering if there's some org patch I was missing that would support these links.


show less is showing ...show less

show less is showing "...show less" it should be "show less" only. please fix it.

Not sure how this packages is so popular with such basic bugs. Any solution?

@govindmaheshwari2 You can set 'delimiter' to ''. (delimiter: '') then set trimCollapsedText to something like '...show more' and trimExpandedText to 'show less'.

@ronytesler shouldn't it be the default behaviour?

@SalahAdDin Of course, just wanted to give a workaround.
You can add a space to your text or the delimiter or trimExpandedText. Again, just a workaround.

@SalahAdDin Of course, just wanted to give a workaround.
You can add a space to your text or the delimiter or trimExpandedText. Again, just a workaround.

Yeah, it works for me.
@jonataslaw what do you think about this?

Needing a workaround is kind of annoying. I love this package and would like to see this feature implemented :D

Oh I saw it's due to that the package on pub was not updated yet. Sorry for that!

Oh I saw it's due to that the package on pub was not updated yet. Sorry for that!

There is no any update relate to this, and it seems the maintainer is not active anymore, you could do a patch/pull request and contribute to this package.


[Feature Request] Missing variables in ADEG and ADEX

Hello again,
While testing safety templates in scda.test, we found that the following variables are missing from the ADEG and ADEX datasets:

[ ] AVALU (missing from both ADEG and ADEX - if difficult, we could add this into our pre-processing steps)
[ ] WORS02FL (missing from ADEG)
[ ] PARCAT2 (missing from ADEX)

If you require any further details please let me/the SME team know.
Thanks!

Could you please provide detailed derivations for ADEG.WORS02FL and ADEX.PARCAT2?

Hi @kaz462,
WORS02FL has label "Worst Post-Baseline Observation" and is equal to "Y" when ABLFL != "Y" and grade/level is worst on a per-patient basis.
PARCAT2 has label "Parameter Category 2" and correlates with the ACTARM variable. It is described as "Name of Actual Treatment. Addtional identification information may be added to uniquely identify a study treatment, if necessary."

AVALU and WORS02FL won't be added to pharmaverseadam per discussion from https://github.com/pharmaverse/admiral/issues/2490

PARCAT2 has label "Parameter Category 2" and correlates with the ACTARM variable. It is described as "Name of Actual Treatment. Addtional identification information may be added to uniquely identify a study treatment, if necessary."

For PARCAT2, @edelarua could you please provide more details on what values need to be populated for each parameter?
e.g., we currently have PARCAT1 with the following values mapped to PARAM
> dplyr::count(adex, PARCAT1, PARAMCD, PARAM)
# A tibble: 19 × 4
   PARCAT1    PARAMCD PARAM                                                          n
   <chr>      <chr>   <chr>                                                      <int>
 1 INDIVIDUAL ADJ     Dose adjusted during constant dosing interval                591
 2 INDIVIDUAL ADJAE   Dose adjusted  due to AE during constant dosing interval     591
 3 INDIVIDUAL DOSE    Dose administered during constant dosing interval (mg)       591
 4 INDIVIDUAL DURD    Study drug duration during constant dosing interval (days)   591
 5 INDIVIDUAL PLDOSE  Planned dose during constant dosing interval (mg)            591
 6 OVERALL    AVDDSE  Average daily dose administered (mg/mg)                      254
 7 OVERALL    TADJ    Dose adjusted during study                                   254
 8 OVERALL    TADJAE  Dose adjusted during study due to AE                         254
 9 OVERALL    TDOSE   Total dose administered (mg)                                 254
10 OVERALL    TDOSINT Overall dose intensity (%)                                   254
11 OVERALL    TDURD   Overall duration (days)                                      254
12 OVERALL    TPDOSE  Total planned dose (mg)                                      254
13 WEEK 2-24  PADJ    Dose adjusted during W2-W24                                  226
14 WEEK 2-24  PADJAE  Dose adjusted  in W2-W24 due to AE                           226
15 WEEK 2-24  PAVDDSE Average daily dose administered in W2-W24 (mg)               226
16 WEEK 2-24  PDOSE   Total dose administered in W2-W2 (mg)4                       226
17 WEEK 2-24  PDOSINT W2-24 dose intensity (%)                                     226
18 WEEK 2-24  PDURD   Overall duration in W2-W24 (days)                            226
19 WEEK 2-24  PPDOSE  Total planned dose in W2-W24 (mg)                            226

Thanks!

Hi @kaz462,
As an example, the PARCAT2 variable in our current dummy data has values "Drug A" and "Drug B". This variable is used for row-wise stratification of our tables, so the names of the levels are not particularly important.

Decision from call: add PARCAT2 on NEST side as there are only a few templates that use it and the pharmaverseadam ADEX only has one treatment


building and installing golem-cli from source fails because of outdated protobuf syntax

Trying to build golem-cli through cargo install as described in the quickstart.
cargo install --features universal golem-cloud-cli

Since I am on ubuntu, I had to do these prerequisites:
0) Update apt repositories
sudo apt update

Install build-essential, OpenSSL, protobuf compiler v3 and pkg-config

sudo apt install build-essential protobuf-compiler libssl-dev pkg-config

Install Rust

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
rustup install stable
rustup default stable

Run cargo install to compile golem-cli

cargo install --features universal golem-cloud-cli

cargo install fails on this step:
error: failed to run custom build command for `golem-wasm-ast v1.0.0`

Caused by:
  process didn't exit successfully: `/tmp/cargo-installyHmf5B/release/build/golem-wasm-ast-9b02091be0cf5add/build-script-build` (exit status: 1)
  --- stderr
  Error: Custom { kind: Other, error: "protoc failed: wasm/ast/type.proto:49:12: Explicit 'optional' labels are disallowed in the Proto3 syntax. To define 'optional' fields in Proto3, simply remove the 'optional' label, as fields are 'optional' by default.\nwasm/ast/type.proto:50:12: Explicit 'optional' labels are disallowed in the Proto3 syntax. To define 'optional' fields in Proto3, simply remove the 'optional' label, as fields are 'optional' by default.\nwasm/ast/type.proto:69:12: Explicit 'optional' labels are disallowed in the Proto3 syntax. To define 'optional' fields in Proto3, simply remove the 'optional' label, as fields are 'optional' by default.\n" }
warning: build failed, waiting for other jobs to finish...
error: failed to compile `golem-cloud-cli v1.0.5`, intermediate artifacts can be found at `/tmp/cargo-installyHmf5B`.
To reuse those artifacts with a future compilation, set the environment variable `CARGO_TARGET_DIR` to that path.

hello @revosw,
which version of  protobuf-compiler do you have?

I found a discrepancy between Ubuntu 20.04 and Ubuntu 24.04.
For Ubuntu 20.04, the latest version I can install through apt install protobuf-compiler is version 3.6.1
hackathon@User:~$ protoc --version
libprotoc 3.6.1

For Ubuntu 24.04, the latest version I can install through apt install protobuf-compiler is version 3.21.12
hackathon@User:~$ protoc --version
libprotoc 3.21.12

See also https://github.com/golemcloud/docs/issues/34

Closed in favor of #744


As a bridge user I can see intermediate messaging status while a transfer is "In Progress"

Problem
What problem are we solving and why does it matter, ser?
Users do not have any information into what step in the flow a message is.
Proposed Solution
Thoughts on solution design. We should do  to solve this problem.

[ ] create status at hub subgraph and spoke subgraph to update messaging status: MessageSent, OriginRootSent, OriginRootReceived, HubRootSent, HubRootReceived
[ ] update the existing message table at Carto to pull messaging status from the subgraphs

Acceptance Criteria
From an end tester and/or user perspective, the below criteria must be met to consider this done:

[ ] Explorer shows statuses for slow path progress.

Moving this to ToDo, I think this will help a lot with observability for devs and us internally.

Testing against prod mainnet locally. Looking good so far. Missing RootPropagated actions/message status. Will be fixed and ready for review by EoD.

Under review, need help setting up ops side.


Feature Request: option-select event

Hi.
Great component!
It would be nice to have an event, that can report an exact option id that was clicked. input doesn't work, because if you have: parent, child1, child2 (selected). Than click child1, input will report all 3 items & it's unknown if user clicked parent or child1.
Thanks.

Good proposal! I'll work on this feature soon.

I think this is a easy one. Go to optionMixin@47 and then:

I made a PR for this feature ;)


Adding Chatbot and home icon to every Page

PR Description 📜
@ayush-t02 I have added the chatbot and the Home icon to every Page. Kindly review this.
Fixes #512

Mark the task you have completed ✅

[x] I follow CONTRIBUTING GUIDELINE & CODE OF CONDUCT of this project.
[x] I have performed a self-review of my own code or work.
[x] I have commented my code, particularly in hard-to-understand areas.
[x] My changes generates no new warnings.
[x] I have followed proper naming convention showed in CONTRIBUTING GUIDELINE
[ ] I have added screenshot for review.

## Add your screenshots(Optional) 📸

Thank you soo much for contributing to our repository 💗

add a demo video

@ayush-t02 I don't know how to make the video of my changes but I can tell what all changes i have done

just share a screen recording and resolve the conflicts

@ayush-t02 I have resolved the conflicts and also added the screen recording. Kindly review this.
https://github.com/user-attachments/assets/0b5ebd61-4db1-4239-b653-6974fb2a6d78

does the chatbot work?

I'll merge it as of now but if anything breaks due to this PR I'll revert it.

@ayush-t02 Yes the chatbot works perfectly

@ayush-t02 Sir I should get atleast level 3 for one and for another I should get another level because I am have worked on 2 issues one is the making of the chatbot and home icon and second is adding chatbot in home page and setting other pages.


Check issue desc

Your Question
(couldn't open a blank issue because github, so i'm using this)
when building from source, the resources folder should be named Resources, not resources. without the capitalization, the game crashes on trying to use the Geode menu itself
EDIT:
If you manually install it by just copying everything from bin/nightly

btw, please set the repo settings to allow empty commits

this makes no sense, the path that the resources are read from at runtime (geode/resources/geode.loader) is not capitalized.

this makes no sense, the path that the resources are read from at runtime (geode/resources/geode.loader) is not capitalized.

i mean whenever you install it manually (probably should've clarified that) after building from source. when it finishes building, the resource folder in bin/nightly is named resources withot capitalization, so it isn't just a matter of cp ./* C:\Program Files (x86)\Steam\steamapps\common\Geometry Dash\

no it's not, as i said in my previous comment, everything from bin/nightly/resources is supposed to go into geode/resources/geode.loader subfolder in your game folder.


Asking for Magikarp crashes the website

Trying to load http://pokeapi.co/api/v2/pokemon/129/ failes and crashes the website for a few seconds

Already a known issue, closing as this is a duplicate: https://github.com/phalt/pokeapi/issues/178


No Matching Options not shown while typing

Describe the bug
To Reproduce
Steps to reproduce the behavior:

Go to the demo page and any example
Type some garbage characters into the input
See that the bib doesn't show the no matching option string
Click away from the combobox
Click back into the combobox
See that the bib shows the no matching option string

Expected behavior
No match string should display while typing as appropriate

Recent updates to input and combobox have resolved this issue. No longer reproduceable.


fix diagram handling for multicasting containers

add escape to the quotes to make sure the generated dot file contains valid string

Thanks! Much appreciated

We're moving TimeloopFE functionality to the https://github.com/Accelergy-Project/timeloop-python repository, and I'd like to have the change there too. Would you prefer to make a PR there (so you're credited with the change)? Otherwise, I can make the change.

Thanks for the quick review. PR created for the timeloop-python repo below:
https://github.com/Accelergy-Project/timeloop-python/pull/32


How can I run the code on multi-GPUs

Thank you for your wonderful work. When I run the code, I try to allocate the model and data into 2 GPUs but it only runs on the first GPU.
I think the possible reason is that set_device function in Base_model moves data to one GPU.
Could you please tell me how to change it to run on multi-GPUs?
Thanks a lot!!

Hi, I met the same problem. Let me know if you know how to fix it. Thanks a lot.


Omit loses type information when used with index signature

Bug Report
🔎 Search Terms
Omit, index signature
🕗 Version & Regression Information
This bug is present in all versions currently available in the Playground that support Omit, from 3.5.1 to 4.4.0-beta.
⏯ Playground Link
Playground link with relevant code
💻 Code
type NamedPlayer = {
  name: string;
  extraLives: number;
  [key: string]: unknown;
}

type Player = Omit<NamedPlayer, 'name'>;

function giveLifeToPlayer(p: Player) {
  p.extraLives = p.extraLives + 1; // Error, TypeScript thinks extraLives is of type unknown.
}

🙁 Actual behavior
TypeScript raises the error Object is of type 'unknown' when adding + 1 to p.extraLives because it sees that field as having type unknown.
🙂 Expected behavior
The type generated by Omit<NamedPlayer, 'name'> should have the same type information as NamedPlayer for all fields other than name.
In other words, Omit<NamedPlayer, 'name'> should yield the same type as Omit<NamedPlayer, 'name'> & Pick<NamedPlayer, 'extraLives'>:
type PlayerAlt = Omit<NamedPlayer, 'name'> & Pick<NamedPlayer, 'extraLives'>;

function giveLifeToPlayer2(p: PlayerAlt) {
  p.extraLives = p.extraLives + 1; // No error, TypeScript recognizes that extraLives is a number.
}

See the existing issues: #43139, #40999, etc. Omit<T> is using keyof T, and keyof T for types with indexers always results in string | number, so your individual properties are unavailable. This is working as intended, see #42436.

Thanks for the quick response and the discussion links! That helps me understand the problem more deeply: Omit is implemented as
type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>

and keyof NamedPlayer resolves to string | number. So any specific key names are lost at the keyof step.
Though, keyof isn't really the problem—I'd get the same result as I get with Omit even if I directly specified the keys I want the in Pick:
Pick<NamedPlayer, "extraLives" | string | number>

The compiler treats "extraLives" | string | number as equivalent to string | number, so the type information for the extraLives field is still lost.
So we're left with a situation where I need to do two separate Picks to get the type I want:
Pick<NamedPlayer, string | number> & Pick<NamedPlayer, "extraLives">

I can see why this is a hard problem! I'm not so sure that it needs to be considered WAD, though. Is it crazy to suggest that Pick<T, string | number> should yield the same result as Pick<T, string | number> & Pick<T, "foo" | "bar"> when type T declares fields foo and bar in addition to an indexer? I see that a change to Pick that would do exactly that is under discussion: https://github.com/microsoft/TypeScript/issues/41383
Note that the change to Pick proposed there would simply make Omit<T, "foo"> a no-op for types with indexers… which isn't quite the behavior I'd want to see (namely, dropping the type information for "foo"), but is an improvement over the current behavior IMO, and could allow for further Omit improvements. Playground

This is not a bug, this is working as intended. A change to omit has been proposed and rejected already. There are implementations out there (even in the issues linked) that work as you want by first excluding the Index signature.

Sorry, I realize I'm bringing up something that's been brought up before, but I'm looking through the linked issues and struggling to find what you're describing. Where was a change to Omit proposed, and why was it rejected?

The problem is that a mapped type doesn't "know" what's it's doing from a higher level; all it sees is a collection of keys and some transformation to do to those keys. Since we (humans) made a type alias and named it Omit, we know that it's a function for removing properties, and since we (humans) made a type alias and named it Pick, we know that it's a function for picking individual properties. But all the mapped type is doing is operating over the set of keys of the object, and this object includes the unbounded keyset string, so the resultant type has to have the key string, with its associated type. This is consistent with its most straightforward interpretation, albeit maybe not exactly what you expected to happen given the higher-level operation you think is being implied by these human-named Omit and Pick aliases.

But all the mapped type is doing is operating over the set of keys of the object, and this object includes the unbounded keyset string, so the resultant type has to have the key string, with its associated type.

That's true, but I'm not sure how that explains why Omit necessarily needs to lead to the behavior on this ticket. Returning to an example:
type NamedPlayer = {
  name: string;
  extraLives: number;
  [key: string | number]: unknown;
}

// Current behavior of Omit<NamedPlayer, 'name'>
type OmitResult1 = {
  [key: string | number]: unknown;
}

// Suggested behavior of Omit<NamedPlayer, 'name'>
type OmitResult2 = {
  extraLives: number;
  [key: string | number]: unknown;
}

As far as I can tell, an Omit utility that fits your description could return either OmitResult1 or OmitResult2. The only difference is that the current Omit implementation removes types associated with individual keys when an unbounded keyset exists. I understand why that's the case, but I don't understand why it's necessarily the case.
In terms of implementation: Since keyof T loses information when T has an indexer, is it conceivable for Omit to be based on some abstraction other than keyof? Since types are allowed to contain both an indexer and individual keys, I'd imagine that an operator that preserves all of that information would be very useful. A hand-wavy hypothetical:
keyof NamedPlayer; // string | number
propertyof NamedPlayer; // 'name' | 'extraLives' | Indexer<string | number>


Error while populating database: HuggingFaceDatasetConnector - HuggingFace API breaking change and duplicate platform_id's

Hi,
When we try to populate datasets in a local instance of AIoD REST API (we followed the README), it crashed when we wanted to fetch HuggingFace datasets.
We investigated the issue and we found solution for one of two issues (therefore, we're only creating an issue and not a PR).
Issue 1 - HuggingFace API breaking change
3 weeks ago, HuggingFace changed the behavior of one of the functions in the datasets library - list_datasets. Now, it sometimes returns a list and sometimes an Iterable, depending on the parameters. Before that, it always returned a list. In our code, we try to use slicing on what this function returns, which doesn't work on Iterable. We therefore propose following change in the HuggingFaceDatasetConnector:
# Replace this
for dataset in datasets.list_datasets(with_details=True)[:limit]:

# with this
import itertools
...
for dataset in itertools.islice(datasets.list_datasets(with_details=True), limit):

References:

HuggingFace datasets.list_datasets (see sources and return type - sometimes list, sometimes Iterable through HfApi.list_datasets)
HuggingFace HfApi.list_datasets (see sources and return type)

Issue 2 - sqlalchemy.exc.IntegrityError: (MySQLdb.IntegrityError) (1062, "Duplicate entry 'task_categories:token-classification' for key 'keyword.name'")
After we fixed previous error, we tried to populate database with 5 HuggingFace datasets. We got following error caused by a duplicate combination of fields:
2023-06-05 14:21:50,224 INFO sqlalchemy.engine.Engine [no key 0.00013s] ()
2023-06-05 14:21:50,249 INFO sqlalchemy.engine.Engine COMMIT
2023-06-05 14:21:50,250 INFO sqlalchemy.engine.Engine BEGIN (implicit)
2023-06-05 14:21:50,280 INFO sqlalchemy.engine.Engine SELECT publication.platform, publication.platform_identifier, publication.title, publication.doi, publication.creators, publication.access_right, publication.date_created, publication.date_published, publication.url, publication.identifier, publication.license_identifier, publication.resource_type_identifier
FROM publication
2023-06-05 14:21:50,280 INFO sqlalchemy.engine.Engine [generated in 0.00019s] ()
2023-06-05 14:21:50,284 INFO sqlalchemy.engine.Engine SELECT dataset.platform, dataset.platform_identifier, dataset.description, dataset.name, dataset.same_as, dataset.contact, dataset.creator, dataset.publisher, dataset.date_modified, dataset.date_published, dataset.funder, dataset.is_accessible_for_free, dataset.issn, dataset.size, dataset.spatial_coverage, dataset.temporal_coverage_from, dataset.temporal_coverage_to, dataset.version, dataset.identifier, dataset.license_identifier
FROM dataset
2023-06-05 14:21:50,284 INFO sqlalchemy.engine.Engine [generated in 0.00015s] ()
2023-06-05 14:21:59,398 INFO sqlalchemy.engine.Engine SELECT publication.platform, publication.platform_identifier, publication.title, publication.doi, publication.creators, publication.access_right, publication.date_created, publication.date_published, publication.url, publication.identifier, publication.license_identifier, publication.resource_type_identifier
FROM publication
WHERE publication.platform = %s AND publication.platform_identifier = %s
2023-06-05 14:21:59,398 INFO sqlalchemy.engine.Engine [generated in 0.00020s] ('huggingface', 'veyseh-et-al-2020-what')
2023-06-05 14:21:59,399 INFO sqlalchemy.engine.Engine INSERT INTO ai_asset (type) VALUES (%s)
2023-06-05 14:21:59,399 INFO sqlalchemy.engine.Engine [generated in 0.00012s] ('publication',)
2023-06-05 14:21:59,402 INFO sqlalchemy.engine.Engine INSERT INTO publication (platform, platform_identifier, title, doi, creators, access_right, date_created, date_published, url, identifier, license_identifier, resource_type_identifier) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)
2023-06-05 14:21:59,402 INFO sqlalchemy.engine.Engine [generated in 0.00019s] ('huggingface', 'veyseh-et-al-2020-what', '{What Does This Acronym Mean? Introducing a New Dataset for Acronym Identification and Disambiguation}', None, None, None, None, None, 'https://arxiv.org/pdf/2010.14678v1.pdf', 1, None, None)
2023-06-05 14:21:59,404 INFO sqlalchemy.engine.Engine SELECT dataset.platform, dataset.platform_identifier, dataset.description, dataset.name, dataset.same_as, dataset.contact, dataset.creator, dataset.publisher, dataset.date_modified, dataset.date_published, dataset.funder, dataset.is_accessible_for_free, dataset.issn, dataset.size, dataset.spatial_coverage, dataset.temporal_coverage_from, dataset.temporal_coverage_to, dataset.version, dataset.identifier, dataset.license_identifier
FROM dataset
WHERE dataset.platform = %s AND dataset.platform_identifier = %s
2023-06-05 14:21:59,404 INFO sqlalchemy.engine.Engine [generated in 0.00015s] ('huggingface', 'acronym_identification')
2023-06-05 14:21:59,405 INFO sqlalchemy.engine.Engine INSERT INTO ai_asset (type) VALUES (%s)
2023-06-05 14:21:59,405 INFO sqlalchemy.engine.Engine [cached since 0.005521s ago] ('dataset',)
2023-06-05 14:21:59,407 INFO sqlalchemy.engine.Engine INSERT INTO license (name) VALUES (%s)
2023-06-05 14:21:59,407 INFO sqlalchemy.engine.Engine [generated in 0.00015s] ('mit',)
2023-06-05 14:21:59,410 INFO sqlalchemy.engine.Engine INSERT INTO keyword (name) VALUES (%s)
2023-06-05 14:21:59,410 INFO sqlalchemy.engine.Engine [generated in 0.00015s] ('task_categories:token-classification',)
2023-06-05 14:21:59,411 INFO sqlalchemy.engine.Engine INSERT INTO keyword (name) VALUES (%s)
2023-06-05 14:21:59,411 INFO sqlalchemy.engine.Engine [cached since 0.001265s ago] ('annotations_creators:expert-generated',)
2023-06-05 14:21:59,411 INFO sqlalchemy.engine.Engine INSERT INTO keyword (name) VALUES (%s)
2023-06-05 14:21:59,412 INFO sqlalchemy.engine.Engine [cached since 0.00168s ago] ('language_creators:found',)
2023-06-05 14:21:59,412 INFO sqlalchemy.engine.Engine INSERT INTO keyword (name) VALUES (%s)
2023-06-05 14:21:59,412 INFO sqlalchemy.engine.Engine [cached since 0.002021s ago] ('multilinguality:monolingual',)
2023-06-05 14:21:59,412 INFO sqlalchemy.engine.Engine INSERT INTO keyword (name) VALUES (%s)
2023-06-05 14:21:59,412 INFO sqlalchemy.engine.Engine [cached since 0.00242s ago] ('size_categories:10K<n<100K',)
2023-06-05 14:21:59,413 INFO sqlalchemy.engine.Engine INSERT INTO keyword (name) VALUES (%s)
2023-06-05 14:21:59,413 INFO sqlalchemy.engine.Engine [cached since 0.00285s ago] ('source_datasets:original',)
2023-06-05 14:21:59,413 INFO sqlalchemy.engine.Engine INSERT INTO keyword (name) VALUES (%s)
2023-06-05 14:21:59,413 INFO sqlalchemy.engine.Engine [cached since 0.003237s ago] ('language:en',)
2023-06-05 14:21:59,413 INFO sqlalchemy.engine.Engine INSERT INTO keyword (name) VALUES (%s)
2023-06-05 14:21:59,414 INFO sqlalchemy.engine.Engine [cached since 0.003655s ago] ('license:mit',)
2023-06-05 14:21:59,414 INFO sqlalchemy.engine.Engine INSERT INTO keyword (name) VALUES (%s)
2023-06-05 14:21:59,414 INFO sqlalchemy.engine.Engine [cached since 0.004077s ago] ('acronym-identification',)
2023-06-05 14:21:59,414 INFO sqlalchemy.engine.Engine INSERT INTO keyword (name) VALUES (%s)
2023-06-05 14:21:59,414 INFO sqlalchemy.engine.Engine [cached since 0.004426s ago] ('arxiv:2010.14678',)
2023-06-05 14:21:59,415 INFO sqlalchemy.engine.Engine INSERT INTO dataset (platform, platform_identifier, description, name, same_as, contact, creator, publisher, date_modified, date_published, funder, is_accessible_for_free, issn, size, spatial_coverage, temporal_coverage_from, temporal_coverage_to, version, identifier, license_identifier) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)
2023-06-05 14:21:59,415 INFO sqlalchemy.engine.Engine [generated in 0.00020s] ('huggingface', 'acronym_identification', 'Acronym identification training and development sets for the acronym identification task at<EMAIL_ADDRESS>'acronym_identification', 'https://huggingface.co/datasets/acronym_identification', None, None, None, datetime.datetime(2023, 1, 25, 14, 18, 28, tzinfo=tzlocal()), None, None, 1, None, None, None, None, None, None, 2, 1)
2023-06-05 14:21:59,416 INFO sqlalchemy.engine.Engine INSERT INTO dataset_publication_link (dataset_identifier, publication_identifier) VALUES (%s, %s)
2023-06-05 14:21:59,416 INFO sqlalchemy.engine.Engine [generated in 0.00011s] (2, 1)
2023-06-05 14:21:59,418 INFO sqlalchemy.engine.Engine INSERT INTO dataset_keyword_link (dataset_identifier, keyword_identifier) VALUES (%s, %s)
2023-06-05 14:21:59,418 INFO sqlalchemy.engine.Engine [generated in 0.00016s] ((2, 1), (2, 2), (2, 3), (2, 4), (2, 5), (2, 6), (2, 7), (2, 8), (2, 9), (2, 10))
2023-06-05 14:21:59,420 INFO sqlalchemy.engine.Engine INSERT INTO data_download (content_url, content_size_kb, description, encoding_format, name, dataset_identifier) VALUES (%s, %s, %s, %s, %s, %s)
2023-06-05 14:21:59,420 INFO sqlalchemy.engine.Engine [generated in 0.00016s] ('https://huggingface.co/datasets/acronym_identification/resolve/refs%2Fconvert%2Fparquet/default/acronym_identification-test.parquet', 206100, 'acronym_identification. Config: default. Split: test', None, 'acronym_identification-test.parquet', 2)
2023-06-05 14:21:59,421 INFO sqlalchemy.engine.Engine INSERT INTO data_download (content_url, content_size_kb, description, encoding_format, name, dataset_identifier) VALUES (%s, %s, %s, %s, %s, %s)
2023-06-05 14:21:59,421 INFO sqlalchemy.engine.Engine [cached since 0.001368s ago] ('https://huggingface.co/datasets/acronym_identification/resolve/refs%2Fconvert%2Fparquet/default/acronym_identification-train.parquet', 1657991, 'acronym_identification. Config: default. Split: train', None, 'acronym_identification-train.parquet', 2)
2023-06-05 14:21:59,421 INFO sqlalchemy.engine.Engine INSERT INTO data_download (content_url, content_size_kb, description, encoding_format, name, dataset_identifier) VALUES (%s, %s, %s, %s, %s, %s)
2023-06-05 14:21:59,421 INFO sqlalchemy.engine.Engine [cached since 0.001828s ago] ('https://huggingface.co/datasets/acronym_identification/resolve/refs%2Fconvert%2Fparquet/default/acronym_identification-validation.parquet', 206916, 'acronym_identification. Config: default. Split: validation', None, 'acronym_identification-validation.parquet', 2)
2023-06-05 14:21:59,912 INFO sqlalchemy.engine.Engine SELECT publication.platform, publication.platform_identifier, publication.title, publication.doi, publication.creators, publication.access_right, publication.date_created, publication.date_published, publication.url, publication.identifier, publication.license_identifier, publication.resource_type_identifier
FROM publication
WHERE publication.platform = %s AND publication.platform_identifier = %s
2023-06-05 14:21:59,912 INFO sqlalchemy.engine.Engine [cached since 0.5146s ago] ('huggingface', 'GURULINGAPPA2012885')
2023-06-05 14:21:59,913 INFO sqlalchemy.engine.Engine INSERT INTO ai_asset (type) VALUES (%s)
2023-06-05 14:21:59,913 INFO sqlalchemy.engine.Engine [cached since 0.5139s ago] ('publication',)
2023-06-05 14:21:59,914 INFO sqlalchemy.engine.Engine INSERT INTO publication (platform, platform_identifier, title, doi, creators, access_right, date_created, date_published, url, identifier, license_identifier, resource_type_identifier) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)
2023-06-05 14:21:59,914 INFO sqlalchemy.engine.Engine [cached since 0.5123s ago] ('huggingface', 'GURULINGAPPA2012885', 'Development of a benchmark corpus to support the automatic extraction of drug-related adverse effects from medical case reports', None, None, None, None, None, None, 3, None, None)
2023-06-05 14:21:59,915 INFO sqlalchemy.engine.Engine SELECT dataset.platform, dataset.platform_identifier, dataset.description, dataset.name, dataset.same_as, dataset.contact, dataset.creator, dataset.publisher, dataset.date_modified, dataset.date_published, dataset.funder, dataset.is_accessible_for_free, dataset.issn, dataset.size, dataset.spatial_coverage, dataset.temporal_coverage_from, dataset.temporal_coverage_to, dataset.version, dataset.identifier, dataset.license_identifier
FROM dataset
WHERE dataset.platform = %s AND dataset.platform_identifier = %s
2023-06-05 14:21:59,915 INFO sqlalchemy.engine.Engine [cached since 0.5114s ago] ('huggingface', 'ade_corpus_v2')
2023-06-05 14:21:59,916 INFO sqlalchemy.engine.Engine INSERT INTO ai_asset (type) VALUES (%s)
2023-06-05 14:21:59,916 INFO sqlalchemy.engine.Engine [cached since 0.5166s ago] ('dataset',)
2023-06-05 14:21:59,918 INFO sqlalchemy.engine.Engine INSERT INTO license (name) VALUES (%s)
2023-06-05 14:21:59,918 INFO sqlalchemy.engine.Engine [cached since 0.5106s ago] ('unknown',)
2023-06-05 14:21:59,918 INFO sqlalchemy.engine.Engine INSERT INTO keyword (name) VALUES (%s)
2023-06-05 14:21:59,919 INFO sqlalchemy.engine.Engine [cached since 0.5086s ago] ('task_categories:text-classification',)
2023-06-05 14:21:59,919 INFO sqlalchemy.engine.Engine INSERT INTO keyword (name) VALUES (%s)
2023-06-05 14:21:59,919 INFO sqlalchemy.engine.Engine [cached since 0.5092s ago] ('task_categories:token-classification',)
2023-06-05 14:21:59,920 INFO sqlalchemy.engine.Engine ROLLBACK
Traceback (most recent call last):
  File "/home/apprunner/.local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1900, in _execute_context
    self.dialect.do_execute(
  File "/home/apprunner/.local/lib/python3.11/site-packages/sqlalchemy/engine/default.py", line 736, in do_execute
    cursor.execute(statement, parameters)
  File "/home/apprunner/.local/lib/python3.11/site-packages/MySQLdb/cursors.py", line 206, in execute
    res = self._query(query)
          ^^^^^^^^^^^^^^^^^^
  File "/home/apprunner/.local/lib/python3.11/site-packages/MySQLdb/cursors.py", line 319, in _query
    db.query(q)
  File "/home/apprunner/.local/lib/python3.11/site-packages/MySQLdb/connections.py", line 254, in query
    _mysql.connection.query(self, query)
MySQLdb.IntegrityError: (1062, "Duplicate entry 'task_categories:token-classification' for key 'keyword.name'")

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

Traceback (most recent call last):
  File "/app/main.py", line 185, in <module>
    main()
  File "/app/main.py", line 181, in main
    uvicorn.run("main:create_app", host="<IP_ADDRESS>", reload=args.reload, factory=True)
  File "/home/apprunner/.local/lib/python3.11/site-packages/uvicorn/main.py", line 578, in run
    server.run()
  File "/home/apprunner/.local/lib/python3.11/site-packages/uvicorn/server.py", line 61, in run
    return asyncio.run(self.serve(sockets=sockets))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/asyncio/runners.py", line 190, in run
    return runner.run(main)
           ^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/asyncio/runners.py", line 118, in run
    return self._loop.run_until_complete(task)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/asyncio/base_events.py", line 653, in run_until_complete
    return future.result()
           ^^^^^^^^^^^^^^^
  File "/home/apprunner/.local/lib/python3.11/site-packages/uvicorn/server.py", line 68, in serve
    config.load()
  File "/home/apprunner/.local/lib/python3.11/site-packages/uvicorn/config.py", line 479, in load
    self.loaded_app = self.loaded_app()
                      ^^^^^^^^^^^^^^^^^
  File "/app/main.py", line 166, in create_app
    populate_database(
  File "/app/database/setup.py", line 90, in populate_database
    session.flush()
  File "/home/apprunner/.local/lib/python3.11/site-packages/sqlalchemy/orm/session.py", line 3386, in flush
    self._flush(objects)
  File "/home/apprunner/.local/lib/python3.11/site-packages/sqlalchemy/orm/session.py", line 3525, in _flush
    with util.safe_reraise():
  File "/home/apprunner/.local/lib/python3.11/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__
    compat.raise_(
  File "/home/apprunner/.local/lib/python3.11/site-packages/sqlalchemy/util/compat.py", line 208, in raise_
    raise exception
  File "/home/apprunner/.local/lib/python3.11/site-packages/sqlalchemy/orm/session.py", line 3486, in _flush
    flush_context.execute()
  File "/home/apprunner/.local/lib/python3.11/site-packages/sqlalchemy/orm/unitofwork.py", line 456, in execute
    rec.execute(self)
  File "/home/apprunner/.local/lib/python3.11/site-packages/sqlalchemy/orm/unitofwork.py", line 630, in execute
    util.preloaded.orm_persistence.save_obj(
  File "/home/apprunner/.local/lib/python3.11/site-packages/sqlalchemy/orm/persistence.py", line 245, in save_obj
    _emit_insert_statements(
  File "/home/apprunner/.local/lib/python3.11/site-packages/sqlalchemy/orm/persistence.py", line 1238, in _emit_insert_statements
    result = connection._execute_20(
             ^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/apprunner/.local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1705, in _execute_20
    return meth(self, args_10style, kwargs_10style, execution_options)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/apprunner/.local/lib/python3.11/site-packages/sqlalchemy/sql/elements.py", line 333, in _execute_on_connection
    return connection._execute_clauseelement(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/apprunner/.local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1572, in _execute_clauseelement
    ret = self._execute_context(
          ^^^^^^^^^^^^^^^^^^^^^^
  File "/home/apprunner/.local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1943, in _execute_context
    self._handle_dbapi_exception(
  File "/home/apprunner/.local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 2124, in _handle_dbapi_exception
    util.raise_(
  File "/home/apprunner/.local/lib/python3.11/site-packages/sqlalchemy/util/compat.py", line 208, in raise_
    raise exception
  File "/home/apprunner/.local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1900, in _execute_context
    self.dialect.do_execute(
  File "/home/apprunner/.local/lib/python3.11/site-packages/sqlalchemy/engine/default.py", line 736, in do_execute
    cursor.execute(statement, parameters)
  File "/home/apprunner/.local/lib/python3.11/site-packages/MySQLdb/cursors.py", line 206, in execute
    res = self._query(query)
          ^^^^^^^^^^^^^^^^^^
  File "/home/apprunner/.local/lib/python3.11/site-packages/MySQLdb/cursors.py", line 319, in _query
    db.query(q)
  File "/home/apprunner/.local/lib/python3.11/site-packages/MySQLdb/connections.py", line 254, in query
    _mysql.connection.query(self, query)
sqlalchemy.exc.IntegrityError: (MySQLdb.IntegrityError) (1062, "Duplicate entry 'task_categories:token-classification' for key 'keyword.name'")
[SQL: INSERT INTO keyword (name) VALUES (%s)]
[parameters: ('task_categories:token-classification',)]
(Background on this error at: https://sqlalche.me/e/14/gkpj)

Steps to reproduce (all issues):
git checkout develop
docker build --tag ai4eu_server_demo:latest -f Dockerfile .
docker run --network sql-network -it --rm -p 8001:8000 --name apiserver ai4eu_server_demo --rebuild-db always --populate-datasets huggingface --limit 5

Further recommendations

Would it be possible to define concrete versions of dependencies in pyproject.toml config file? This error was likely caused by the breaking change in one of the libraries.

Thanks for this issue and these suggestions!
We just merged https://github.com/aiondemand/AIOD-rest-api/pull/66, it should be fixed now!

We changed the HuggingFace connector towards using itertools.islice(, as you suggested
We fixed the integrity errors for the connectors

The versions of the dependencies are not fixed yet. We'll do that in another PR.
I'm closing this issue for now. Please reopen it if something is incorrect!


fix: don’t build anew if a PR was simply edited

See also issue #330: there’s no need to run the build.yaml workflow if a PR was merely edited (i.e. no code was changed).

Ok, run<PHONE_NUMBER> (6m 36s) was the initial run when we opened this PR which built the artifacts. Then we changed the PR title, thus triggering run<PHONE_NUMBER> (20s). Next, let’s change the title back.

Hm. I wonder if this is a good idea thinking
Suppose we create a PR and the pull-request.yaml workflow fails because build.yaml fails; next, we make a comment on that same PR and now the workflow succeeds because it wouldn’t build again…

How about creating two separate workflows for checking PR title and PR code changes to avoid the issue?

How about creating two separate workflows for checking PR title and PR code changes to avoid the issue?

Commit https://github.com/jenstroeger/python-package-template/pull/336/commits/78edf05e524d8b0ddb4b2728555d1d68f6f175d3.


Help getting Sublime Text 4 perl includePaths working

Hi, on a Mac I have Sublime Text 4 set up and working with perlnavigator and a homebrew perl 5.36.
I am struggling to get the perlnavigator.includePaths setting to apply.
Could you advise?
I had a look through the git area but couldn't see an example.
I have this in LSP.sublime-settings where I have tried to set it in a couple of places
// Settings in here override those in "LSP/LSP.sublime-settings"
{
    "clients": {
        "perlnavigator": {
            "enabled": true,
            "command": ["node", "/Users/peter/localrepos/PerlNavigator/server/out/server.js","--stdio"],
            "selector": "source.perl",
            "includePaths": [
                "/Users/peter/mnt/develop/tal_pe/cgi",
            ],
            "settings": {
                "LSP-perl.enableWarnings": true,
                "LSP-perl.perlcriticEnabled": true,
                "LSP-perl.perlcriticProfile": "~/.perlcriticrc",
                "perlnavigator.includePaths": [
                    "/Users/peter/mnt/develop/tal_pe/cgi",
                ],
        }
    }
}

but when I check the warning in the editor that extra path is not included

I think the problem is that you have two language servers running simultaneously (or some other extension providing syntax checking). The Perl Navigator prefixes errors with Syntax:, while something else must be reporting them with a prefix of perl:. My guess is that Perl Navigator is already registering the paths and then not throwing any errors. For completeness, here are example settings for Sublime:
// Settings in here override those in "LSP/LSP.sublime-settings"
{
    "clients": {
        "perlnavigator": {
            "enabled": true,
            "command": ["D:\\Applications\\perlnavigator.exe","--stdio"],
            "selector": "source.perl",
            "settings": {
                 "perlnavigator.includePaths": ["d:\\temp\\foo"]
            }
        },
    }
}

I've got ModernPerl, PerlSub and PerlTidy, SublimeLinter-contrib-perl packages installed.
I will try experimenting with disabling/removing some of those since I think perlnavigator will provide that functionality anyway.

I got it working.
Removing these ST packages made perlnavigator work:
SublimeLinter
SublimeLinter-contrib-perl
SublimeLinter-contrib-perlcritic
I also removed PerlTidy since I can do that via perlnavigator using select text, right click, LSP / Format Selection.
I kept these, which don't affect perlnavigator:
ModernPerl - better syntax highlighting
PerlSubs - name of current sub
Now I get proper syntax errors and perlcritic warnings:

and the @INC is being set with my extra library paths

Thanks for your help @bscan.


Make available in Eclipse Marketplace

I recently gave a talk at the EclipseCon in Bangalore and mentioned this plugin. One suggestion I received was that it will be easy to use this plugin if it were part of the Eclipse marketplace. Is this easy to do?

I've added the latest version of the plugin to the Eclipse Market Place. I'll update the installation instructions next.


[BUG]: Live Preview - Camera Module 3

Describe the bug
With Raspberry Camera Module 3, the live preview is not working.
Also with motion and the settings described in the Faq's.
Is there OS adjustments required?
Steps to reproduce the behavior
Use Camera Module 3
Expected behavior
Working Live preview
Photobooth Version
4.3.1
Browser and browser version
Chromium/latest Raspberry OS
Operating System
Raspberry OS
Did it work before?
No
Latest working version
No response
Additional context
No response

Hey and thanks for the report. It's an issue/limitation of the Rapsberry pi Kernel and not an Photobooth issue. Therefore closing the issue here.
To solve your problem you should install https://github.com/PhotoboothProject/photobooth-app too and follow the Photobooth config mentioned inside the README.
Best regards
Andi

Hi Andi! Thx for the fast help and info.
I tried to solve the problem with the description from the link, but running in problems during the installation..
" run cmd: 'pip install -r requirements.txt', sudo=False
╚══════════════════════════
ERROR: Could not open requirements file: [Errno 2] Datei oder Verzeichnis nicht gefunden: 'requirements.txt'
command exited with returncode= 1
pip installation failed! check output for errors
"
Could you help me eith this?
Br,
Michael

Great, thank you very much! It's working now 👍


🐛 [cloud_firestore] No podspec found for cloud_firestore in .symlinks/plugins/cloud_firestore/ios

Bug report
I start with a fresh flutter default project.  The only thing I'm doing is adding
cloud_firestore: ^1.0.1
to dependencies in pubspec.yaml.  pub get runs fine, but when I try to run the app I get the error message
Describe the bug
A clear and concise description of what the bug is.
Steps to reproduce

Open Android studio
Create new flutter project
add cloud_firestore: ^1.01 to pubspec.yaml
do pub.get
run app on ios12 simulator

Expected behavior
I expect the default application to run in the simulator.
A clear and concise description of what you expected to happen.

Additional context
Add any other context about the problem here.

Flutter doctor
Run flutter doctor and paste the output below:
[✓] Flutter (Channel dev, 2.1.0-12.1.pre, on macOS 11.2.3 20D91 darwin-x64,
locale en-GB)
[✓] Android toolchain - develop for Android devices (Android SDK version 29.0.2)
[✓] Xcode - develop for iOS and macOS
[✓] Chrome - develop for the web
[✓] Android Studio
[✓] Android Studio (version 4.1)
[✓] VS Code (version 1.54.3)
[✓] Connected device (3 available)
! Error: Vw is not connected. Xcode will continue when Vw is connected. (code -13)
Launching lib/main.dart on iPhone 12 Pro Max in debug mode...
Running pod install...
CocoaPods' output:
↳
      Preparing

    Analyzing dependencies

    Inspecting targets to integrate
      Using `ARCHS` setting to build architectures of target `Pods-Runner`: (``)

    Fetching external sources
    -> Fetching podspec for `Flutter` from `Flutter`
    -> Fetching podspec for `cloud_firestore` from `.symlinks/plugins/cloud_firestore/ios`
    [!] No podspec found for `cloud_firestore` in `.symlinks/plugins/cloud_firestore/ios`

    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.1/lib/cocoapods/external_sources/path_source.rb:14:in `block in fetch'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.1/lib/cocoapods/user_interface.rb:64:in `section'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.1/lib/cocoapods/external_sources/path_source.rb:11:in `fetch'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.1/lib/cocoapods/installer/analyzer.rb:989:in `fetch_external_source'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.1/lib/cocoapods/installer/analyzer.rb:968:in `block (2 levels) in fetch_external_sources'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.1/lib/cocoapods/installer/analyzer.rb:967:in `each'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.1/lib/cocoapods/installer/analyzer.rb:967:in `block in fetch_external_sources'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.1/lib/cocoapods/user_interface.rb:64:in `section'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.1/lib/cocoapods/installer/analyzer.rb:966:in `fetch_external_sources'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.1/lib/cocoapods/installer/analyzer.rb:117:in `analyze'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.1/lib/cocoapods/installer.rb:414:in `analyze'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.1/lib/cocoapods/installer.rb:239:in `block in resolve_dependencies'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.1/lib/cocoapods/user_interface.rb:64:in `section'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.1/lib/cocoapods/installer.rb:238:in `resolve_dependencies'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.1/lib/cocoapods/installer.rb:160:in `install!'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.1/lib/cocoapods/command/install.rb:52:in `run'
    /Library/Ruby/Gems/2.6.0/gems/claide-1.0.3/lib/claide/command.rb:334:in `run'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.1/lib/cocoapods/command.rb:52:in `run'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.1/bin/pod:55:in `<top (required)>'
    /usr/local/bin/pod:23:in `load'
    /usr/local/bin/pod:23:in `<main>'

Error output from CocoaPods:
↳

    [!] Automatically assigning platform `iOS` with version `9.0` on target `Runner` because no platform was specified. Please specify a platform for this target in your Podfile. See `https://guides.cocoapods.org/syntax/podfile.html#platform`.

Error running pod install
Error launching application on iPhone 12 Pro Max.

Flutter dependencies
Run flutter pub deps -- --style=compact and paste the output below:
Click To Expand
PASTE OUTPUT INSIDE HERE

Just a further note.  I'm Using Android Studio 4.2 Beta 6.  OSX.

Hi @vwdewaal
Did you run flutter clean first?
Have you updated your iOS deployment target to at least 10.0?
Thank you

Hi Markus,
Yes I did.  I did a short screen recording off my whole process
https://youtu.be/5bkem9pXEgg.
It shows my whole process for creating the application, running it first time, adding cloud_firestore to pubspec.yaml, and then the error.

Please try these exact steps and let me know if it still fails
From terminal:

flutter create bug
cd bug
flutter pub add cloud_firestore
open ios/Runner.xcodeproj
Make sure there are no issues with signing and the default package identifier

In your video you did not uncomment the platform :ios, '10.0' line at the top of the Podfile so it changed nothing. The step you added to post_install is not necessary.

You should just change the version in the second line and uncomment it.

Your Podfile should look like this:

Podfile
# Uncomment this line to define a global platform for your project
platform :ios, '10.0'

# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV['COCOAPODS_DISABLE_STATS'] = 'true'

project 'Runner', {
  'Debug' => :debug,
  'Profile' => :release,
  'Release' => :release,
}

def flutter_root
  generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__)
  unless File.exist?(generated_xcode_build_settings_path)
    raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first"
  end

  File.foreach(generated_xcode_build_settings_path) do |line|
    matches = line.match(/FLUTTER_ROOT\=(.*)/)
    return matches[1].strip if matches
  end
  raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get"
end

require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root)

flutter_ios_podfile_setup

target 'Runner' do
  use_frameworks!
  use_modular_headers!
# You should add this here to improve build times
# pod 'FirebaseFirestore', :git => 'https://github.com/invertase/firestore-ios-sdk-frameworks.git', :tag => '7.3.0'

  flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
end

post_install do |installer|
  installer.pods_project.targets.each do |target|
    flutter_additional_ios_build_settings(target)
  end
end

Run from terminal with flutter run or from Android Studio

This is of course neglecting the firebase setup (adding the plist) but it should not throw any errors during pod install when building.

That seems to have sorted it. I notice we're in 1.0.2 now. Maybe that was it?

Possibly ¯_(ツ)_/¯
I didn't see this with either version in the first place and it's weird it cropped up but since this is the only report of this I think we can close the issue.


New version: Cockos.REAPER version 7.08

Pull request has been created with komac v2.0.0 :rocket:
Microsoft Reviewers: Open in CodeFlow

Manual Validation ended with:

Hi @Exorcism0666,
Are installer switches needed?

For moderators
This account is automated by Github Actions and the source code was created by CoolPlayLin. If you have any questions about any pull request, don't hesitate to ping @Exorcism0666, I'll get a notification.

[!important]
Please carefully review these Pull Request before merging. If it is a Pull Request for removing incorrect content and the URLs are issue, free upon manual checking, please close this Pull Request directly. (It is best to inform Exorcism0666 of the closure.)

良い一日をお過ごしください！

Hi @Exorcism0666,
This manifest removes Apps and Features entries that are present in previous PR versions. Should these entries also be added to this version?
(Automated response - build 538.)

Yes! idk why komac remove them

Yes! idk why komac remove them

Maybe @russelbanks knows?


added workaround code for node.js-only users

per request, changed incoming branch to release/2.1

@muratg Can you take this to shiproom? It's just a change to the README.md in our NPM package to include more detailed information about how to use the package from Node. This will update the information on our main NPM package page: https://www.npmjs.com/package/@aspnet/signalr
This is only needed for 2.1 because we have added native NodeJS support in 2.2+. There is no functional change to the code, it's purely a documentation change (it's just that the documentation lives inside our package in this case 😦 )

This does not meet the 2.1 LTS servicing bar. We can consider this again whenever SignalR has a patch in the future.

We can consider this again whenever SignalR has a patch in the future.

Gonna close this in the mean time. We will revisit in the next patch. We have the poly-fills now so users on the latest bits won't run into this.


Add a tool to have bugs where the reporter has a needinfo

please update the run_autonag script too.

i will fix the flake8 issues


fix: Converts target param of postWindowMessage into a dropdown in action selector

Description

Converts target param of postWindowMessage into a dropdown in action selector
Links to Notion, Figma or any other documents that might be relevant to the PR

PR fixes following issue(s)
Fixes #28165

Type of change

Bug fix (non-breaking change which fixes an issue)

Testing

How Has This Been Tested?

[x] Manual
[x] Cypress

Test Plan

Add Testsmith test cases links that relate to this PR

Issues raised during DP testing

Link issues raised during DP testing for better visiblity and tracking (copy link from comments dropped on this PR)

Checklist:
Dev activity

[x] My code follows the style guidelines of this project
[x] I have performed a self-review of my own code
[ ] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[x] My changes generate no new warnings
[x] I have added tests that prove my fix is effective or that my feature works
[x] New and existing unit tests pass locally with my changes
[ ] PR is being merged under a feature flag

QA activity:

[ ] Speedbreak features have been covered
[ ] Test plan covers all impacted features and areas of interest
[ ] Test plan has been peer reviewed by project stakeholders and other QA members
[ ] Manually tested functionality on DP
[ ] We had an implementation alignment call with stakeholders post QA Round 2
[ ] Cypress test cases have been added and approved by SDET/manual QA
[ ] Added Test Plan Approved label after Cypress tests were reviewed
[ ] Added Test Plan Approved label after JUnit tests were reviewed

/build-deploy-preview

/ok-to-test

/ok-to-test

/ok-to-test sha=cec5741

/ok-to-test sha=9eb127b

/ok-to-test

/ok-to-test

/build-deploy-preview

/build-deploy-preview

/ok-to-test

/build-deploy-preview


Update nf-shlobj_core-shgetfolderpathw.md

The parameter type for pszPath is incorrectly listed as LPTSTR, while ShlObj_core.h declares it as LPWSTR

@1simonfish : Thanks for your contribution! The author(s) have been notified to review your proposed change.


Code snippet to list containers contains code that deletes containers

The demo script contains code to delete any container that starts with "test-". I would say that would be a horrible thing to occur when you try and list your containers.
https://docs.microsoft.com/en-us/python/api/azure-storage-blob/azure.storage.blob.blobserviceclient?view=azure-python#list-containers-name-starts-with-none--include-metadata-false----kwargs-
# List all containers
   all_containers = blob_service_client.list_containers(include_metadata=True)
   for container in all_containers:
       print(container['name'], container['metadata'])

   # Filter results with name prefix
   test_containers = blob_service_client.list_containers(name_starts_with='test-')
   for container in test_containers:
       blob_service_client.delete_container(container)

it appears the offending example is here: https://github.com/MicrosoftDocs/azure-docs-sdk-python/blob/a1b067bc9e85449eee1aea29f3605da25eea6a54/docs-ref-autogen/azure-storage-blob/azure.storage.blob.BlobServiceClient.yml#L594

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 8c573ca4-d03c-8651-5bc0-69debe989f9a
Version Independent ID: 05961166-7e4d-6232-74b4-2607cd3318a1
Content: azure.storage.blob.BlobServiceClient class
Content Source: docs-ref-autogen/azure-storage-blob/azure.storage.blob.BlobServiceClient.yml
GitHub Login: @lmazuel
Microsoft Alias: lmazuel

Thanks for reporting this! We'll take a look asap

Hi @ntindle we can adjust this code snippet to print instead

Hi @ntindle I have put out the change here https://github.com/Azure/azure-sdk-for-python/pull/18560


Add a callback?

It would be interesting to add a callback in order to execute another function after the play function is executed. I think about loading name/artwork song after loading music in player. Today, I use setTimeout.

I'm guessing setTimeout doesn't work when the app is backgrounded?

it's 200ms after playing stream so I guess user has not the time to put app in background. Anyway, I'm looking for a better solution because setTimeout is a temporary fix.

Any prediction when will add the callback feature?
Cuz the setTimeout can work fine to local files, but for network stream this is not precise, even when device is offline, the status return PLAYING... 😢


ADD SOME NEW FEATURE(MUST).

Can you add Some New Feature For Patients  Like :- Name . If You Do like P144:- Name:- XYZ, Tht Type  Of Feature Much Better Than As Compared To Other Website. If You Do Add That feature Than Other Person Allate For Precaution, He Was Contact With That Person Or Not. Before He Going To Test For COVID_19.Our Country Have Different Type Of Festival And We Join It Very Well There Festival Like Marriage,Receptions,Birthday etc. If We Know There are Name Then We Can Avoid To Go There & Keep The Safe Distance Or We Can Know About Person.
💯 %
#Kalibaba-Pro
#2
@sibeshkar

Cannot include personal data in our graph.


413 remove leading0x addr display

This belongs with the AURC PR aurc/413-removeLeading0xAddrDisplay

Coverage increased (+0.008%) to 67.939% when pulling b408bb02f9dd9ca881e2d170cc0c7fe53245d205 on 413-removeLeading0xAddrDisplay into 381c89ad008f2f0dd180b33a1cf4f0e24e5dfe00 on master.


Fixed #19 by updating the path of the elm-oracle command

The reason that tooltips aren't showing is that the plugin is using the wrong path to elm-oracle.

Which OS did you try this on?

This is on OSX Yosemite 10.10.5 with VSCode 0.10.6.

Thanks, I'll try your changes on Windows when I get the time.

:thumbsup: Works for me in Windows, after applying the change I suggested.


1.3.5 Is Not Available

This is not a significant issue. Nonetheless, we can not get version 1.3.5 using Cocoapods. The podspec is updated, but the version might not have been published.
Perhaps a GitHub Action for when a new tag is pushed would be helpful to avoid doing this repetitive job every time.

As a general rule I sometimes (but not always) push changes up so they're visible for a few days before finalizing the release.
Regardless. it's there now.

Got it, thanks for the update 👌


chore(maintenance): bump dependencies & drop nodejs14x

Description of your changes

As discussed in the linked issue, this PR removes support of Node.js 14 in the v2 branch and bumps all the dependencies to their latest version. Up until now we had to skip some updates given that they already had dropped support for the runtime.
Two of the dependencies that can now be updated are prettier and eslint, which caused additional files to be added to the diff due to new linting issues that have come up with the new version.
Related issues, RFCs

Issue number: #1686
Checklist

[x] My changes meet the tenets criteria
[x] I have performed a self-review of my own code
[x] I have commented my code where necessary, particularly in areas that should be flagged with a TODO, or hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[x] My changes generate no new warnings
[ ] I have added tests that prove my change is effective and works
[x] The PR title follows the conventional commit semantics

Breaking change checklist
Is it a breaking change?: NO

[ ] I have documented the migration process
[ ] I have added, implemented necessary warnings (if it can live side by side)

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.
Disclaimer: We value your time and bandwidth. As such, any pull requests created on non-triaged issues might not be successful.

Successful integration tests run: https://github.com/aws-powertools/powertools-lambda-typescript/actions/runs/6202820867


36 Change Documentation

:warning: Please install the  to ensure uploads and comments are reliably processed by Codecov.
Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 48.99%. Comparing base (4198671) to head (1bfe63d).

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@           Coverage Diff           @@
##             main      #43   +/-   ##
=======================================
  Coverage   48.99%   48.99%
=======================================
  Files          20       20
  Lines        2045     2045
=======================================
  Hits         1002     1002
  Misses       1043     1043

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


Refactor plan types

Overview
As we're pushing for shared type use between different parts of productcatalog it makes life easier to separate the types to be used.

We most likely wont be doing this.


Add from_name & to_name to UserFollow struct

Closes #19

Pull Request Test Coverage Report for Build 109

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 91.228%

Totals

Change from base Build 104:
0.0%

Covered Lines:
572

Relevant Lines:
627

💛  - Coveralls

Pull Request Test Coverage Report for Build 109

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 91.228%

Totals

Change from base Build 104:
0.0%

Covered Lines:
572

Relevant Lines:
627

💛  - Coveralls

Pull Request Test Coverage Report for Build 109

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 91.228%

Totals

Change from base Build 104:
0.0%

Covered Lines:
572

Relevant Lines:
627

💛  - Coveralls

Pull Request Test Coverage Report for Build 109

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 91.228%

Totals

Change from base Build 104:
0.0%

Covered Lines:
572

Relevant Lines:
627

💛  - Coveralls


feat: add narwhals.lit

What type of PR is this? (check all applicable)

[ ] 💾 Refactor
[x] ✨ Feature
[ ] 🐛 Bug Fix
[ ] 🔧 Optimization
[ ] 📝 Documentation
[ ] ✅ Test
[ ] 🐳 Other

Related issues

Closes #309

Checklist

[x] Code follows style guide (ruff)
[x] Tests added
[x] Documented the changes

If you have comments or can explain your changes, please do so below.

I've not implemented yet the allow_object param that polars.lit have. I'm not 100% sure on what it does and how to translate it in the pandas world. In which cases does polars use 'object'? 🤔
What do you think about implementing something like PandasSeries.from_iterable? I saw that there are multple PandasSeries(series_from_iterable(...), ...) calls
Do you think we should also test for more "complex" types like list? Polars supports it but I haven't seen a list dytpe in narwhals

Additional note: when creating a new column without using lit, narwhals already handles numpy vs other well.
import narwhals as nw
import numpy as np
import polars as pl

(
  pl.DataFrame({"a": [0, 1]})
  .pipe(nw.from_native)
  .with_columns(
      b = ["x", "y"],
      c = np.array([1, 2]),
  )
  .pipe(nw.to_native)
)

shape: (2, 3)
┌─────┬────────────┬─────┐
│ a   ┆ b          ┆ c   │
│ --- ┆ ---        ┆ --- │
│ i64 ┆ list[str]  ┆ i64 │
╞═════╪════════════╪═════╡
│ 0   ┆ ["x", "y"] ┆ 1   │
│ 1   ┆ ["x", "y"] ┆ 2   │
└─────┴────────────┴─────┘

@MarcoGorelli  I remember we discussed this since it was needed in lego, but I can't find the conversation right now

Thank you both for the comments! :)
a. Passing a list into lit seems to work.
import polars as pl
import pandas as pd
import narwhals as nw

df = pd.DataFrame({"a": [0, 1]})
df_pl = pl.DataFrame(df)

@nw.narwhalify
def func(df):
    return df.with_columns(c=nw.lit([1, 2]))

>>> func(df_pl)
shape: (2, 2)
┌─────┬───────────┐
│ a   ┆ c         │
│ --- ┆ ---       │
│ i64 ┆ list[i64] │
╞═════╪═══════════╡
│ 0   ┆ [1, 2]    │
│ 1   ┆ [1, 2]    │
└─────┴───────────┘

>>> func(df)
   a       c
0  0  [1, 2]
1  1  [1, 2]

The only "issue" is that we cannot specify the correct DType (i.e. nw.lit([1, 2], dtype=...) just yet, because we don't have a list dtype. Or am I missing something?
b. Passing a np.array makes pandas and polars behave differently at the moment. 🤔

@nw.narwhalify
def func(df):
    import numpy as np

    return df.with_columns(c=nw.lit(np.array([1, 2])))

>>> func(df_pl)
shape: (2, 2)
┌─────┬─────┐
│ a   ┆ c   │
│ --- ┆ --- │
│ i64 ┆ i64 │
╞═════╪═════╡
│ 0   ┆ 1   │
│ 1   ┆ 2   │
└─────┴─────┘

>>> func(df)
   a       c
0  0  [1, 2]
1  1  [1, 2]

thanks for checking that carefully - I think we should disallow passing numpy arrays to lit? at least for now - if we just raise an error for now, we can always loosen the behaviour later if we want to, whilst preserving backwards compatibility 😇

just yet, because we don't have a list dtype. Or am I missing something?

you're right, we don't :) largely because potential consumers of Narwhals probably wouldn't be using it, given that in pandas pre-pyarrow it would just be object dtype ... but we should implement it properly in Narwhals eventually, it's definitely worthwhile

how did you go about figuring this all out? did you read the "how it works" page? did you use a debugger / read the code very carefully?

Kind of both. I read the "how it work works" page out of curiosity, when I found out about the project. To contribute to this I read the code, searching for similar implementations and used the debugger.
I found the code easy to follow, also thanks to the typing. So 👏 👏  to you and the rest of the team
The contributing guide and process (with the template issues and PRs) is also nice!
Maybe we can add some documentation about the structure of the unit tests. I am used to find the same module/submodule structure as in the library. Here it seems the tests cases in the same submodule are in more scripts. I was a bit unsure where to add mine 😅
Regarding variable names, the only thing I noticed is the one I mentioned above. I was unsure why we needed to use PandasSeries, before realising that series_from_iterables was returning a ‘native series’.

Maybe we can add some documentation about the structure of the unit tests. I am used to find the same module/submodule structure as in the library. Here it seems the tests cases in the same submodule are in more scripts. I was a bit unsure where to add mine 😅

most of the structure of the unit tests is quite odd. probably because I did it in a hurry as a weekend project. if you fancy improving the tests structure, that's very welcome - i've added you to the team so feel free to submit anything you think is an improvement and merge anything you think is ready

Thank you for the feedback and for adding me to the team! This is "lit" 🔥 (sorry had to make the joke)


🐛 [firebase_messaging] onBackgroundMessage throws NoSuchMethodError on Android.

Bug report
Describe the bug
Simply, use firebase_messaging package and set onBackgroundMessage callback, then the app throws some exception below:
NoSuchMethodError: No top-level getter '_registerPlugins' declared.
Receiver: top-level
Tried calling: _registerPlugins

In my environment, the stack trace was missing so that no further information could be obtained.

Steps to reproduce
Check my example project that reproduces this issue for details.
( A google-services.json is not committed, so please use your own Firebase project when try to run this. )

Use Flutter version 2.0.4 (currently latest version of stable channel).
Import firebase_messaging: ^9.1.1
Set callback function for background message.
Turn on Break on exceptions feature in Android Studio, and run app.

Expected behavior
Just run app with no errors.

Flutter doctor
Run flutter doctor and paste the output below:
Click To Expand
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 2.0.4, on macOS 11.1 20C69 darwin-x64, locale ja-JP)
[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
[✓] Xcode - develop for iOS and macOS
[✓] Chrome - develop for the web
[✓] Android Studio (version 4.1)
[✓] IntelliJ IDEA Ultimate Edition (version 2020.3.2)
[✓] IntelliJ IDEA Community Edition (version 2020.3.2)
[✓] VS Code (version 1.55.0)
[✓] Connected device (3 available)

• No issues found!

Flutter dependencies
Run flutter pub deps -- --style=compact and paste the output below:
Click To Expand
Dart SDK 2.12.2
Flutter SDK 2.0.4
firebase_playground 1.0.0+1

dependencies:
- firebase_core 1.0.3 [firebase_core_platform_interface firebase_core_web flutter meta]
- firebase_messaging 9.1.1 [firebase_core firebase_core_platform_interface firebase_messaging_platform_interface firebase_messaging_web flutter meta]
- flutter 0.0.0 [characters collection meta typed_data vector_math sky_engine]

dev dependencies:
- flutter_test 0.0.0 [flutter test_api path fake_async clock stack_trace vector_math async boolean_selector characters charcode collection matcher meta source_span stream_channel string_scanner term_glyph typed_data]

transitive dependencies:
- async 2.5.0 [collection]
- boolean_selector 2.1.0 [source_span string_scanner]
- characters 1.1.0
- charcode 1.2.0
- clock 1.1.0
- collection 1.15.0
- fake_async 1.2.0 [clock collection]
- firebase_core_platform_interface 4.0.0 [flutter meta plugin_platform_interface]
- firebase_core_web 1.0.2 [firebase_core_platform_interface flutter flutter_web_plugins js meta]
- firebase_messaging_platform_interface 2.1.1 [firebase_core flutter meta plugin_platform_interface]
- firebase_messaging_web 1.0.4 [firebase_core firebase_core_web firebase_messaging_platform_interface flutter flutter_web_plugins js meta]
- flutter_web_plugins 0.0.0 [flutter js characters collection meta typed_data vector_math]
- js 0.6.3
- matcher 0.12.10 [stack_trace]
- meta 1.3.0
- path 1.8.0
- plugin_platform_interface 2.0.0 [meta]
- sky_engine 0.0.99
- source_span 1.8.0 [charcode collection path term_glyph]
- stack_trace 1.10.0 [path]
- stream_channel 2.1.0 [async]
- string_scanner 1.1.0 [charcode source_span]
- term_glyph 1.2.0
- test_api 0.2.19 [async boolean_selector collection meta path source_span stack_trace stream_channel string_scanner term_glyph matcher]
- typed_data 1.3.0 [collection]
- vector_math 2.1.0

@Kurogoma4D
The error:
NoSuchMethodError: No top-level getter '_registerPlugins' declared. Receiver: top-level Tried calling: _registerPlugins
indicates that it cannot find the value _registerPlugins in global scope because it may not have been imported or could be due to a parse error before the import.
Can you try running flutter analyze and see if it reports anything related to _registerPlugins ?
Also, can you also try the official flutter_messaging plugin example and see if you get similar error with it too or not ?

@darshankawar
flutter analyze result is here:
$ flutter analyze
Analyzing firebase_playground...
No issues found! (ran in 2.5s)

And I tried running firebase_messaging v9.1.1 example project, I got same error:

Thanks for checking. I think this is coming from after calling
// Set the background messaging handler early on, as a named top-level function   FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler);
Which in turn calls:
     await channel.invokeMapMethod('Messaging#startBackgroundIsolate', {         'pluginCallbackHandle': bgHandle.toRawHandle(),         'userCallbackHandle': userHandle.toRawHandle(),       });
And finally here:
Future<T?> _invokeMethod<T>(String method, { required bool missingOk, dynamic arguments }) async {
    assert(method != null);
    final ByteData? result = await binaryMessenger.send(
      name,
      codec.encodeMethodCall(MethodCall(method, arguments)),
    );
    if (result == null) {
      if (missingOk) {
        return null;
      }
      throw MissingPluginException('No implementation found for method $method on channel $name');
    }
    return codec.decodeEnvelope(result) as T?;
  }

Hey @Kurogoma4D,
I followed your instructions and I ran your code sample from both android studio and vscode. In both instances, I didn't receive an error. I did receive this log:
I/FLTFireMsgService( 4705): FlutterFirebaseMessagingBackgroundService started!

Perhaps there is an environment difference?

Hi @russellwheatley ,
I tried reproduce this in my another environment, and confirmed it on Android Studio (VSCode couldn't catch that exception).
In Android Studio, make sure set to break on all exceptions.

Looks the same to me:

Hi. I have same issue in firebase_messaging 9.1.2. Do you know how to fix it?

Update:
As we continued to investigate this issue, I was able to confirm that only reproduces in Android Emulator with API Level 30.

Hey @Kurogoma4D, did you manage to resolve this issue?

Thanks for the feedback, @Kurogoma4D.


 showed inline when used inside material-ui modal

Describe the bug
<Datepicker/> showed inline when used inside material-ui modal
Reproduced Version on CodeSandbox
Here it is on CodeSandBox: https://codesandbox.io/s/calendar-problem-1qe24?fontsize=14
Expected behavior
to not open inline

Seems duplicate of #16

Hi @nimaa77,
Actually, it gets opened, but because of the absolute positioning of the calendar. Modal wouldn't detect its boundaries and gets scrolled. There are two solutions to this:
1- Use <Calendar /> instead of <DatePicker /> in your modal.
2- Wrap the picker in a div element and give that div a min-height
If solutions are somehow vague to you, I can produce a working example on CodeSandbox

@Kiarash-Z hi bro,
I fixed this issue with one line of CSS:
.overflowVisible {
  overflow: visible;
}

and on <Dialog> just add that CSS class to paper styles:
<Dialog classes={{ paper: "overflowVisible" }} >

and if Dialog content wrapped inside <DialogContent>:
<DialogContent className="overflowVisible">

maybe it's better to add documentation for this.

@nimaa77 It's not an issue with the date picker, so it's just a wrapper style affecting this