OKD cluster failed to deploy - "container already in use" error is seen in bootstrap

Describe the bug
Trying to deploy OKD cluster with 1 master and 2 worker nodes.
While running the ansible playbook, I see that controller nodes doesn't come to Ready state even after 60tries.
When i logged into the bootstrap node, i see the error "Container already in use". If I remove the container, it comes up fine.
It doesn't throw this error every time. Atleast seen this issue 2 times out of 5.
To Reproduce
Steps to reproduce the behavior:

Clone kubeinit

Run the command
ansible-playbook
-v --user root
-e kubeinit_spec=okd-libvirt-1-2-1
-i ./kubeinit/inventory
./kubeinit/playbook.yml

See error
BootStrap logs:
===============
Apr 06 10:59:08 bootstrap podman[8121]: 2022-04-06 10:59:08.285934624 +0000 UTC m=+1.377781571 container cleanup 6581fb6d4ff11c4d91635217c4a27d80453>
Apr 06 10:59:18 bootstrap podman[8219]: 2022-04-06 10:59:07.13491223 +0000 UTC m=+0.082398628 image pull  quay.io/openshift/okd-content@sha256:be5eb>
Apr 06 10:59:19 bootstrap podman[8219]: 2022-04-06 10:59:19.016405592 +0000 UTC m=+11.963891960 container create 92aa4efe11dc0d1e4e99c182b209b9dc6b4>
Apr 06 10:59:19 bootstrap podman[8219]: 2022-04-06 10:59:19.641219899 +0000 UTC m=+12.588706277 container init 92aa4efe11dc0d1e4e99c182b209b9dc6b468>
Apr 06 10:59:19 bootstrap podman[8219]: 2022-04-06 10:59:19.674477098 +0000 UTC m=+12.621963466 container start 92aa4efe11dc0d1e4e99c182b209b9dc6b46>
Apr 06 10:59:19 bootstrap podman[8219]: 2022-04-06 10:59:19.674690723 +0000 UTC m=+12.622177121 container attach 92aa4efe11dc0d1e4e99c182b209b9dc6b4>
Apr 06 10:59:20 bootstrap systemd[1]: Stopping Bootstrap a Kubernetes cluster...
Apr 06 10:59:20 bootstrap bootkube.sh[9514]: open pidfd: No such process
Apr 06 10:59:20 bootstrap bootkube.sh[8219]: time="2022-04-06T10:59:20Z" level=error msg="Error forwarding signal 15 to container 92aa4efe11dc0d1e4e>
Apr 06 10:59:20 bootstrap bootkube.sh[2056]: Terminated
Apr 06 10:59:20 bootstrap podman[9521]: 2022-04-06 10:59:20.28349949 +0000 UTC m=+0.040186130 container died 92aa4efe11dc0d1e4e99c182b209b9dc6b46848>
Apr 06 10:59:20 bootstrap systemd[1]: bootkube.service: Deactivated successfully.
Apr 06 10:59:20 bootstrap systemd[1]: Stopped Bootstrap a Kubernetes cluster.
Apr 06 10:59:20 bootstrap systemd[1]: bootkube.service: Consumed 33.650s CPU time.
Apr 06 10:59:20 bootstrap systemd[1]: release-image.service: Deactivated successfully.
Apr 06 10:59:20 bootstrap systemd[1]: Stopped Download the OpenShift Release Image.
Apr 06 10:59:20 bootstrap systemd[1]: release-image.service: Consumed 12.351s CPU time.
-- Boot c93e0d5bc8b44038b0d5d265ed467c93 --
Apr 06 10:59:31 bootstrap systemd[1]: Starting Download the OpenShift Release Image...
Apr 06 10:59:31 bootstrap release-image-download.sh[966]: Pulling service.okdcluster.kubeinit.local:5000/okd@sha256:7d8356245fc3a75fe11d1832ce9fef17>
Apr 06 10:59:32 bootstrap podman[1015]: 2022-04-06 10:59:32.079196063 +0000 UTC m=+0.961207467 system refresh
Apr 06 10:59:32 bootstrap release-image-download.sh[1015]: 5c93a0adf473e01f1bd88d3e539dbbe6de5bcfb74eace85038a63490f9603143
Apr 06 10:59:32 bootstrap podman[1015]: 2022-04-06 10:59:32.080829538 +0000 UTC m=+0.962840932 image pull  service.okdcluster.kubeinit.local:5000/ok>
Apr 06 10:59:33 bootstrap systemd[1]: Finished Download the OpenShift Release Image.

Apr 06 11:35:46 bootstrap podman[308085]: 2022-04-06 11:35:46.277425197 +0000 UTC m=+0.499459314 container remove d5440565f1b94e5a176c11750c60d4d45861976990b4f5f1aa56bdace09eb412 (image=service.okdcluster.kubeinit.local:5000/okd@sha256:7d8356245fc3a75fe11d1832ce9fef17f3dd0f2ea6f38271319c95918416b9d9, name=quizzical_ellis, io.openshift.release=4.9.0-0.okd-2021-11-28-035710, io.openshift.release.base-image-digest=sha256:24a6759ce7d34123ae68ee14ee2a7c52ec3b2c7a5ae65cf87651176661e55e58)
Apr 06 11:35:46 bootstrap bootkube.sh[306030]: Rendering Kubernetes API server core manifests...
Apr 06 11:35:46 bootstrap bootkube.sh[308213]: Error: error creating container storage: the container name "kube-apiserver-render" is already in use by "92aa4efe11dc0d1e4e99c182b209b9dc6b468483438865d8a2bcef825b22c65b". You have to remove that container to be able to reuse that name.: that name is already in use
Apr 06 11:35:46 bootstrap systemd[1]: bootkube.service: Main process exited, code=exited, status=125/n/a
Apr 06 11:35:46 bootstrap systemd[1]: bootkube.service: Failed with result 'exit-code'.
Apr 06 11:35:46 bootstrap systemd[1]: bootkube.service: Consumed 4.452s CPU time.

[core@bootstrap ~]$ sudo podman ps -a
CONTAINER ID  IMAGE                                                                                COMMAND               CREATED         STATUS                     PORTS       NAMES
ed027262a5fa  service.okdcluster.kubeinit.local:5000/okd@sha256:7d8356245fc3a75fe11d1832ce9fef17f3dd0f2ea6f38271319c95918416b9d9  render --output-d...  38 minutes ago  Exited (0) 38 minutes ago              cvo-render
95b964e69d58  quay.io/openshift/okd-content@sha256:8c24b5ca67f5cd7763dbcb1586cfcfcff2083eae137acfea6f9b0468fcd2e8e6               /usr/bin/cluster-...  37 minutes ago  Exited (0) 37 minutes ago              etcd-render
6581fb6d4ff1  quay.io/openshift/okd-content@sha256:5a262a1ca5b05a174286494220a1f583ed1fcb2fb60114aae25f6d2670699746               /usr/bin/cluster-...  37 minutes ago  Exited (0) 37 minutes ago              config-render
92aa4efe11dc  quay.io/openshift/okd-content@sha256:be5eb9ef4a8c26ce7e5827285a4e65620aa7b31c9fb203e046c900a45b095764               /usr/bin/cluster-...  36 minutes ago  Created                                kube-apiserver-render
[core@bootstrap ~]$
Expected behavior
Running OKD Cluster with 1 master and 2 worker nodes.
Infrastructure
Hypervisors OS: CentOS-Stream 8
CPUs : 32 Cores
Memory: 128 GB
HDD: 1TB
Deployment command
ansible-playbook
-v --user root
-e kubeinit_spec=okd-libvirt-1-2-1
-i ./kubeinit/inventory
./kubeinit/playbook.yml
Inventory file diff
diff --git a/kubeinit/inventory b/kubeinit/inventory
index bbb380d..d862b0e 100644
--- a/kubeinit/inventory
+++ b/kubeinit/inventory
@@ -72,8 +72,8 @@ kubeinit_inventory_network_name=kimgtnet0
[hypervisor_hosts]
hypervisor-01 ansible_host=nyctea
-hypervisor-02 ansible_host=tyto
-# hypervisor-01 ansible_host=nyctea ssh_hostname=server1.example.com
+#hypervisor-02 ansible_host=tyto
+# hypervisor-01 ansible_host=nyctea
.
.
.
[controller_nodes:vars]
os={'cdk': 'ubuntu', 'eks': 'centos', 'k8s': 'centos', 'kid': 'debian', 'okd': 'coreos', 'rke': 'ubuntu'}
-disk=25G
+disk=150G
ram=25165824
vcpus=8
maxvcpus=16
@@ -152,8 +152,8 @@ target_order=hypervisor-01
[compute_nodes:vars]
os={'cdk': 'ubuntu', 'eks': 'centos', 'k8s': 'centos', 'kid': 'debian', 'okd': 'coreos', 'rke': 'ubuntu'}
-disk=30G
-ram=8388608
+disk=100G
+ram=16777216
vcpus=8
maxvcpus=16
type=virtual

Hi @logeshwaris from what I was able to see, the error looks like something specific to OKD, instead of the automation to get it deployed. Currently, we are deploying 4.9 but there are newer versions available, let me see if by updating the version the problem goes away.

Let's see how it goes here https://github.com/Kubeinit/kubeinit/pull/643

Hi @ccamacho, I tried using the latest and i am seeing the below error. Am I missing something?
Command:
ansible-playbook
-v --user root
-e kubeinit_spec=okd-libvirt-1-2-1
-i ./kubeinit/inventory
./kubeinit/playbook.yml
Logs:
TASK [kubeinit.kubeinit.kubeinit_prepare : Create ssh config file from template] **********************
task path: /home/slogeshw/.ansible/collections/ansible_collections/kubeinit/kubeinit/roles/kubeinit_prepare/tasks/create_host_ssh_config.yml:53
Monday 11 April 2022  11:23:31 +0530 (0:00:00.209)       0:00:16.327 **********
<<IP_ADDRESS>> ESTABLISH LOCAL CONNECTION FOR USER: slogeshw
<<IP_ADDRESS>> EXEC /bin/sh -c 'echo ~slogeshw && sleep 0'
<<IP_ADDRESS>> EXEC /bin/sh -c '( umask 77 && mkdir -p "echo /home/slogeshw/.ansible/tmp"&& mkdir "echo /home/slogeshw/.ansible/tmp/ansible-tmp-1649656411.4216487-1386120-60959960057760" && echo ansible-tmp-1649656411.4216487-1386120-60959960057760="echo /home/slogeshw/.ansible/tmp/ansible-tmp-1649656411.4216487-1386120-60959960057760" ) && sleep 0'
<<IP_ADDRESS>> EXEC /bin/sh -c 'rm -f -r /home/slogeshw/.ansible/tmp/ansible-tmp-1649656411.4216487-1386120-60959960057760/ > /dev/null 2>&1 && sleep 0'
**The full traceback is:
**Traceback (most recent call last):
File "/usr/local/lib/python3.6/site-packages/ansible/template/init.py", line 1100, in do_template
res = j2_concat(rf)
File "
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/lib/python3.6/site-packages/ansible/plugins/action/template.py", line 146, in run
resultant = templar.do_template(template_data, preserve_trailing_newlines=True, escape_backslashes=False)
File "/usr/local/lib/python3.6/site-packages/ansible/template/init.py", line 1137, in do_template
raise AnsibleUndefinedVariable(e)
ansible.errors.AnsibleUndefinedVariable: 'ansible.vars.hostvars.HostVarsVars object' has no attribute 'ansible_host'
fatal: [localhost]: FAILED! => {
"changed": false,
"msg": "AnsibleUndefinedVariable: 'ansible.vars.hostvars.HostVarsVars object' has no attribute 'ansible_host'"**
}**
PLAY RECAP ********************************************************************************************
localhost                  : ok=50   changed=7    unreachable=0    failed=1    skipped=23   rescued=0    ignored=0
Inventory.yml:
=============

###
# The cluster's guest machines can be distributed across mutiple hosts. By default they
# will be deployed in the first Hypervisor. These hypervisors are activated and used
# depending on how they are referenced in the kubeinit spec string.
#
# When we are running the setup-playbook, if a hypervisor host has an ssh_hostname attribute
# then a .ssh/config file will be created and an entry mapping the ansible_host to that
# ssh hostname will be created. In the first example we would associate
# the ansible_host of the first hypervisor host "nyctea" with the hostname provided, it
# can be a short or fully qualified name, but it needs to be resolvable on the host we
# are running the kubeinit setup from. The second example uses a host ip address, which
# can be useful in those cases where the host you are using doesn't have a dns name.
#
# .. code-block:: yaml
#
#    hypervisor_hosts:
#        hypervisor-01:
#            ansible_host: nyctea
#            ssh_hostname: server1.example.com
#        hypervisor-02:
#            ansible_host: tyto
#            ssh_hostname: <IP_ADDRESS>
hypervisor_hosts:
  hypervisor-01:
    ansible_host: nyctea

###
# The inventory will have one host identified as the bastion host. By default, this role will
# be assumed by the first hyperviso. The example would set the second hypervisor to be the bastion host.
# The final example would set the bastion host to be a different host that is not
# being used as a hypervisor for the guests VMs for the clusters using this inventory.
#
# .. code-block:: yaml
#
#    bastion_host:
#        bastion:
#            ansible_host: hypervisor-02
#
# .. code-block:: yaml
#
#    bastion_host:
#        bastion:
#            ansible_host: bastion
bastion_host:
  bastion:
    target: hypervisor-01

###
# The inventory will have one host identified as the ovn-central host. By default, this role
# will be assumed by the first hypervisor. The first example would set the second hypervisor
# to be the ovn-central host.
#
# .. code-block:: yaml
#
#    ovn_central_host:
#        target: hypervisor-02
ovn_central_host:
  ovn-central:
    target: hypervisor-01

###
#
# Setup host definition (used only with the setup-playbook.yml)
#
#
# This inventory will have one host identified as the setup host. By default, this will be
# localhost. The first example would set the first hypervisor host to be the setup host.
# The last example would set the setup host to be a different host that is not being used
# as a hypervisor in this inventory.
#
# .. code-block:: yaml
#
#    setup_host:
#        ansible_host: nyctea
#
# or
#
# .. code-block:: yaml
#
#    setup_host:
#        ansible_host: <IP_ADDRESS>
setup_host:
  kubeinit-setup:
    ansible_host: nyctea
~
~

Lot of things got broken because of podman not being consistent across the  components we deploy, this should be fixed by #666 now


az aks upgrade --kubernetes-version leaves cluster in bad state

Related command
az aks upgrade --kubernetes-version --yes -g myrg -n myaks
Describe the bug
After upgrading from v1.22.x to v1.23.5, all subsequent operations on cluster fail.
az aks nodepool update --name nodepool1 --cluster-name myaks --resource-group myrg --enable-cluster-autoscaler --min-count 1 --max-count 3
Results in:
ERROR: (AgentPoolUpgradeVersionNotAllowed) Upgrade agent pool version from 1.23.5 to 1.22.6 is not allowed, you can only upgrade one minor version at a time. Please use [az aks get-upgrades] command to get the supported upgrade paths
az aks update -g myrg -n myaks --load-balancer-outbound-ips /resource/id
Results in:
ERROR: (NotAllAgentPoolOrchestratorVersionSpecifiedAndUnchanged) Using managed cluster api, all Agent pools' OrchestratorVersion must be all specified or all unspecified. If all specified, they must be stay unchanged or the same with control plane.
Indeed, az aks show -n myaks -g myrg -n myaks results in:
      "currentOrchestratorVersion": "1.23.5",
      "mode": "User",
      "name": "win1",
      "nodeImageVersion": "AKSWindows-2019-containerd-17763.3046.220615",
      "orchestratorVersion": "1.22.6",

However, if I use Azure Portal to rescale the nodepool in this state, this fixes the problem.
To Reproduce

Create cluster w/ k8s v1.22.6 with Windows nodepool.
Upgrade k8s version.
Try using ak aks update to configure outbound IP addresses.

Expected behavior
Everything works, like it would earlier. This is a new issue.
Environment summary
Running commands in Azure Cloud Shell.
{
"azure-cli": "2.37.0",
"azure-cli-core": "2.37.0",
"azure-cli-telemetry": "1.0.6",
"extensions": {
"ai-examples": "0.2.5",
"aks-preview": "0.5.82",
"front-door": "1.0.16",
"resource-graph": "2.1.0",
"ssh": "1.1.1"
}
}

route to CXP team

@wasker Apologies for the late reply. Thanks for reaching out to us and sharing this feedback. We are looking into this issue and we will provide an update.

@wasker I had reached out to the Product Owners in the background and they have confirmed that this is a bug. The fix will be done at the Resource Provider layer and will be released next Monday. Hope this helps.
Tagging the similar issue here https://github.com/Azure/azure-cli/issues/22807

@wasker  I wanted to share a quick update on this. The fix rollout just started yesterday and will take a couple days to reach all regions. Until the fix is deployed to all regions, Maybe you can avoid using version 2022-04-01 for now as a workaround. Hope this helps.

@wasker  I am yet to get confirmation about the fix being deployed to all regions. In the meantime, Could you please try running the same above command again and check if you are facing the issue ?

@wasker The action is currently pending on you to test the command again. If the issue persists, please feel free to reopen this thread. We would be happy to help.


Improve overall weapon system

As a player, I want to have more weapon to choose and better weapon switch system
Included but not limited to

[ ] #18
[x] #17
[ ] Better effects of overall system
[ ] Small damage projectile weapon but reload faster

For UI

[ ] Better UI to recognize current weapon status while not distract player
[ ] Research and implement better user system

Also change overall projectile from raycast + area2D to pure Area2D again.
As it seem with godot 3.3.4, the Physics for Area2D are much more accurate alone.
This allows better performance for browser based export.


Missing jvm.dll

I was working on a project about a week ago where I was killing w10wheel, replacing the files, and restarting it (automating updates), and after doing this several times, it suddenly wouldn't launch anymore, giving me an error that jvm.dll was missing. I had to download and install the JRE to get it working again. What's really strange about this is that it's not even included with w10wheel. I have no idea what exactly happened to break it, and it's certainly a unique situation, but I wonder if this file should be included since it's required, to prevent the need to download and install JRE just for it if there's ever an issue.

Are you using the "legacy" W10Wheel which is based on Java, or this version W10Wheel.net which is based on .NET?
For the latest version (where you opened this issue), you just need .NET (see main page) and not JVM

The exewrap is still out of date, so updating it may fix it.
https://translate.google.com/translate?sl=ja&tl=en&u=https://exewrap.osdn.jp/history.html
The Java version is not as functionally different as legacy, but the .NET version has a higher priority.
Recently, I've been busy changing jobs, so I haven't been able to maintain this.

Good call. I was setting up an auto-check for and download and update new version and accidentally grabbed the legacy version. Closing this issue, and thanks!


Allow to setup 'skip-js-error' option only for specified pages.

Use case:
The tested site contains parts (ad blocks, external service pages and etc.) that have js errors and cannot be controlled by test writer.
We need a conditional behavior for this case:

for uncontrolled pages need to skip js errors.
for other pages need to handle js errors.

So, we need a  way to setup 'skip-js-error' option only for specified pages.
Based on https://stackoverflow.com/questions/52031129/skip-js-errors-on-specific-test-cases

Perhaps instead of at the page level it could be done using the test controller:
t.ignoreJSErrors(true / false)

Yes it seems to me this comes up somewhat regularly (#2033, #3747). In our case there is some ad-script on a 3rd party page that throws an error. And this means we have to set --skip-js-error for all tests. This is really sad, since:

we have to hope that errors get caught still by also breaking functionality
we have one less incentive for developers to handle errors properly

Hello @bxt,
Thank you for sharing your scenario with us. We will take it into account when we are ready to implement this feature.

Exactly the same problem as @bxt
Other than that having many small wholes in TC (new tab opening, visibility checking...) because of that not able to write stable and efficient tests.

We would also appreciate to get this new feature.

Need this too. Hammerhead is super flakey already with our application's ajax calls. Now we have a thirdparty JS window that does a window.setTimeout which causes to hammerhead to blow up. We have no way to trap the error without disabling it for all of our tests.

@alienintheheights Could you describe your case in greater detail? Does your test lead to any exceptions in Hammerhead scripts?

This would also help us. A few of my test cases involve validating I can visit another site which often has a ton of JS errors. Being able to skip JS errors for a single test would be convenient.

Took like two years to decide that this is a very interesting feature ? we can tell from @bxt that much people would need it

Hi @gothraven
We confirm that this a good extension of the skip-j-error feature. But it's not what we plan to implement in the near future. At present, we are working on two large features: Capability to perform testing in multiple browser windows and Selector Debug Panel. After these features are implemented, we will concentrate our resources on other features.

@miherlosev is there any way I can help with this small feature ?

You can submit your PR with this feature implementation.

Guys,
There is an example that demonstrates how to extends the built-in error tracking functionality and skip JavaScript errors by a predicate. function.

This would be great to be able to overwrite the default config value within a particular test - we have issues loading certain external js files related to analytics within some of our test environments.

Hi @rushby
Thank you for sharing this use case. You can use a workaround until this feature is implemented.

Hello,
We are also running into this with third party sites. It would be nice to set skipjserrors = true via the controller in a step in a test. Right now, it's just a global setting.

Same here, we have a specific test that throws an error which we have no control to (external script), now we need skip all js errors for all our tests. Would be really great if we could enable this option only on one test!

Would really appreciate this as well. My hesitancy in skipping javascript errors globally is that my tests would miss something I need to see. Being able to set this by page or even by individual test would be incredibly helpful. Thank you!!

Hi @jmosley5,
Thank you for your opinion. This feature has a high priority for us, and it is in our roadmap. You can use a workaround until this feature is implemented.


Scan Image to Text

this is a beautiful Programme that you must love it .
Scan Image to Text is a powerful tool that allows users to easily convert images containing text into editable digital content. With a simple and intuitive interface, users can upload an image, extract the text within seconds, and copy or save it for further use. Perfect for digitizing documents, extracting information from screenshots, or converting printed text into editable format, all in just a few steps
You can scan document such as All image type ,pdf

Scan Image to Text is a powerful tool that allows users to effortlessly convert images containing text into editable digital content. With a simple and intuitive interface, users can upload an image, extract the text within seconds, and copy or save it for further use. Perfect for digitizing documents, extracting information from screenshots, or converting printed text into editable format, all in just a few clicks


Fix foundation.app.handle otel span

Hi @ardan-bkennedy!
I noticed a small issue regarding the OpenTelemetry span management in the web framework:
Currently, the span is being created before there's a tracer in the context. As a result, the AddSpan only creates a new span, without actually starting it and attaching the received attributes. So, the solution is to construct the span and ctx before calling the AddSpan (similar to what happened before).
I also added an endpoint attribute, just thought it could be helpful.

I will accept this and then review and correct anything I think needs to.

@levikobi this was a good change! Thanks!

@levikobi this was a good change! Thanks!

I'm glad I could help :)


Simples examples folder

Monkberry is very nice indeed! Would be really cool to see some "simple" examples of how to use events - e.g.
I have an object 'Fruit' that has a name property and 1 method 'handleClick' which, say, logs to console every time it's invoked.
I pass  a Fruit instance new Fruit() to view.update(..)
<h1>{{name}}</h1>
<button onClick="{{handleClick}}">ClickMe</button>
The name of my fruit shows up perfectly. But, I'm not getting anything happening when I try and call its handleClick method...a simple example would probably illustrate how to do this in 5 secs.
Cheers for any pointers...

@minimok try event handling examples from docs.

Thanks. I forgot to mention I've read the docs. None of them illustrate passing an object into the DOM and then using DOM events to execute methods belonging to the specific object that was passed in (aka OOP). I've written a brutal hack to solve the issue - basically removing all event-handling from monkberry's role in the app and using it purely to render data...which it's very good at.

There a few solution: dom delegating/event directives/direct event listeners. Read more at docs: http://monkberry.js.org/docs/event-handling


Better Changelog handling

The current way with the one-line summary into the changelog + copy&paste to the wiki requires a lot of manual work, and there might be better solutions.
Here https://github.com/KiloKilo/changelog is one project that might be useful for us.

I don't necessarily see a reason for using an external tool, git combined with explicit merge messages already produces a pretty neat result (which can also be formatted further):
$ git log --oneline --first-parent 8a673946..HEAD
c25b89c2 (HEAD -> master, origin/master, origin/HEAD) Bugfix: allow new-style method animation to be used in animation groups (#906)
2ed00b6b removed deprecated command line arguments from documentation (#908)
0dccec95 Tiny grammar improvements (#903)
1655da47 Added blank line between imports and class example (#904)
daf50697 Convenience method for creating a graph from a networkx graph (#893)
ae0122dc ci: fix publish workflow (#898)

I don't necessarily see a reason for using an external tool, git combined with explicit merge messages already produces a pretty neat result (which can also be formatted further):
$ git log --oneline --first-parent 8a673946..HEAD
c25b89c2 (HEAD -> master, origin/master, origin/HEAD) Bugfix: allow new-style method animation to be used in animation groups (#906)
2ed00b6b removed deprecated command line arguments from documentation (#908)
0dccec95 Tiny grammar improvements (#903)
1655da47 Added blank line between imports and class example (#904)
daf50697 Convenience method for creating a graph from a networkx graph (#893)
ae0122dc ci: fix publish workflow (#898)

@behackl are you suggesting that the output of the command you posted replace the current changelog?

@behackl are you suggesting that the output of the command you posted replace the current changelog?

Not as-is, but a formatted version of it. It would not be too hard to reformat the output above (automatically) as a list that reads something like
- :pr:`906`: Bugfix: allow new-style method animation to be used in animation groups
- :pr:`908`: removed deprecated command line arguments from documentation
- :pr:`903`: Tiny grammar improvements
- :pr:`904`: Added blank line between imports and class example
- :pr:`893`: Convenience method for creating a graph from a networkx graph
- :pr:`898`: ci: fix publish workflow

And in addition to this, breaking changes should still get a special section in the changelog. But otherwise: yes. While this approach does not really support categorization any longer (except if someone wants to take this automatically generated list and split it into categories like bugfix / enhancement / documentation / other changes -- which I don't really want to volunteer for), it is much more consistent and easier to maintain than the automatically updated list in the wiki.

Not as-is, but a formatted version of it. It would not be too hard to reformat the output above (automatically) as a list that reads something like
- :pr:`906`: Bugfix: allow new-style method animation to be used in animation groups
- :pr:`908`: removed deprecated command line arguments from documentation
- :pr:`903`: Tiny grammar improvements
- :pr:`904`: Added blank line between imports and class example
- :pr:`893`: Convenience method for creating a graph from a networkx graph
- :pr:`898`: ci: fix publish workflow

And in addition to this, breaking changes should still get a special section in the changelog. But otherwise: yes. While this approach does not really support categorization any longer (except if someone wants to take this automatically generated list and split it into categories like bugfix / enhancement / documentation / other changes -- which I don't really want to volunteer for), it is much more consistent and easier to maintain than the automatically updated list in the wiki.

Agreed!
For the categorization problem, we can try to actually start enforcing these tags, or some version of it. In this way, we can simply grep the log and automate everything. On the other hand, this spreads out the burden across people and time.

Agreed!
For the categorization problem, we can try to actually start enforcing these tags, or some version of it. In this way, we can simply grep the log and automate everything. On the other hand, this spreads out the burden across people and time.

But someone has to have this sorting burden: A) one person in the end, or B) all people together during the process.
I tend to go for B.

But someone has to have this sorting burden: A) one person in the end, or B) all people together during the process.
I tend to go for B.

While I agree that it should be a group effort to get things right, I also think that classifying by commit message will be terribly unforgiving, especially if we want to automate it.
Here is a suggestion: we can introduce a set of labels on GitHub that we can tag PRs with. A script could then:

generate the unformatted changelog as above, and in particular find the PR number for every line,
query the API to get the labels,
and based on those, generate a categorized and formatted changelog.

While I agree that it should be a group effort to get things right, I also think that classifying by commit message will be terribly unforgiving, especially if we want to automate it.
Here is a suggestion: we can introduce a set of labels on GitHub that we can tag PRs with. A script could then:

generate the unformatted changelog as above, and in particular find the PR number for every line,
query the API to get the labels,
and based on those, generate a categorized and formatted changelog.

That sounds like a good compromise. Also, in this way anyone can tag a PR with the appropriate label, while only the author can set the commit message (without some major git-ing).
OTOH, what happens if a PR's labels are changed after the fact? In this case there could be cases where the changelog changes in unexpected/undesired ways.

That sounds like a good compromise. Also, in this way anyone can tag a PR with the appropriate label, while only the author can set the commit message (without some major git-ing).
OTOH, what happens if a PR's labels are changed after the fact? In this case there could be cases where the changelog changes in unexpected/undesired ways.

OTOH, what happens if a PR's labels are changed after the changelog has been published? In this case there could be cases where the changelog changes in unexpected/undesired ways.

For each release, there could be an own changelog file that is created in a way so that they can not be changed anymore afterward.  The final changelog can then be constructed from all these subfiles.

OTOH, what happens if a PR's labels are changed after the changelog has been published? In this case there could be cases where the changelog changes in unexpected/undesired ways.

For each release, there could be an own changelog file that is created in a way so that they can not be changed anymore afterward.  The final changelog can then be constructed from all these subfiles.

That's a good idea actually.

That's a good idea actually.

Nice!
What do you think about this, @behackl ?
Do we maybe want to start with this maybe already for this release?
In case we want to do it like this, I think we can already by now start to redesign the pr message:
Motivation
Overview / Explanation for Changes
Oneline Summary of Changes
- Added new feature ... / Fixed bug ... / ... (:pr:`PR NUMBER HERE`)
Testing Status
Further Comments
Acknowledgements
 I have read the Contributing Guidelines
Reviewer Checklist
 Newly added functions/classes are either private or have a docstring
 Newly added functions/classes have tests added and (optional) examples in the docs
 Newly added documentation builds, looks correctly formatted, and adds no additional build warnings
 The oneline summary has been included in the wiki

Nice!
What do you think about this, @behackl ?
Do we maybe want to start with this maybe already for this release?
In case we want to do it like this, I think we can already by now start to redesign the pr message:
Motivation
Overview / Explanation for Changes
Oneline Summary of Changes
- Added new feature ... / Fixed bug ... / ... (:pr:`PR NUMBER HERE`)
Testing Status
Further Comments
Acknowledgements
 I have read the Contributing Guidelines
Reviewer Checklist
 Newly added functions/classes are either private or have a docstring
 Newly added functions/classes have tests added and (optional) examples in the docs
 Newly added documentation builds, looks correctly formatted, and adds no additional build warnings
 The oneline summary has been included in the wiki


No slash commands on aoi.js

How to get slash commands on aoi.js v6?

v6 is in development phase so most of the things are not completed

Regarding above, it's still in development, it has not been finished and won't be till summer time.


Editing plugin details removes the 'replaces' key from plugin.yaml

If I have the following plugin.yaml file:
# plugin.yaml

plugin:
    name: 'acme.blog::lang.plugin.name'
    description: 'Plugin Description'
    author: 'Author Name'
    icon: wn-icon-chain
    homepage: 'https://example.com'
    replaces:
        Acme.Blog: '<3.0.0'

And I edit the plugin details by clicking on the plugin gear icon and save the changes, the replaces definition is removed from the yaml and results in the following:
# plugin.yaml

plugin:
    name: 'acme.blog::lang.plugin.name'
    description: 'Plugin Description'
    author: 'Author Name'
    icon: wn-icon-chain
    homepage: 'https://example.com'

I think this is because Builder plugin allows you to only edit name,  description,  author,  icon and homepage fields when you open plugin configuration pop-up (click on gear icon). And only these fields are then saved back to YAML configuration file after save.
I personally don't see this as a big issue because you probably added replaces section externally.
One possible solution may be to add replaces repeater or datatable field into configuration pop-up and logics so it gets properly loaded and saved.

@ericp-mrel May I also ask where did you find out that you can use replaces in plugin.yaml configuration? As far as I quickly searched then you can use it under pluginDetails() function - https://wintercms.com/docs/plugin/registration#plugin-replace - but I am not sure about plugin.yaml. Does it even work when used from YAML file?

@arvislacis If you look at the PluginBase.php class, you can see the base pluginDetails() method will parse the data from the plugin.yaml file if it exists and returns the data under the plugin: key as an array. See https://github.com/wintercms/winter/blob/develop/modules/system/classes/PluginBase.php#L57-L73
Otherwise, if you don't have/use the plugin.yaml file you would override the pluginDetails() method in your Plugin's Plugin.php file and define the array there.
And yes, the replaces key does work in the YAML file, I now have two plugins defining the replaces in the plugin.yaml file and is working just fine. After all, the yaml file just gets parsed into a PHP array anyways.
Hope this makes sense!

@arvislacis give #10 a test please

@ericp-mrel Give a try to https://github.com/wintercms/wn-builder-plugin/issues/10

@LukeTowers @arvislacis don't you guys mean #11? 😛

Whoops!

@LukeTowers It's working for me, even tested it with multiple replaces items
Example of what I've tested.
replaces:
  Acme.Plugin: '<1.0.0'
  Winter.Plugin: <5.5.5


Always update cluster appsubreport

Signed-off-by: Mike Ng<EMAIL_ADDRESS>for https://github.com/stolostron/backlog/issues/22499

/lgtm


WIP: stats.gstd: add array API support

Reference issue
Towards gh-18867
What does this implement/fix?
Adds array API support to gstd.
Additional information
Can we deprecate masked array support for this function to simplify things?
I think this would pass tests, but:
import torch
from scipy._lib._array_api import array_namespace
x = torch.asarray([1, 2, 3., 3, 4.5])
xp = array_namespace(x)
xp.std(x, correction=1)

results in:
Traceback (most recent call last):
  File "/Users/matthaberland/miniforge3/envs/scipy-dev/lib/python3.11/site-packages/IPython/core/interactiveshell.py", line 3526, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-17-a926c1507628>", line 1, in <module>
    xp.std(x, correction=1)
  File "/Users/matthaberland/Desktop/scipy/scipy/_lib/array_api_compat/array_api_compat/torch/_aliases.py", line 396, in std
    res = torch.std(x, tuple(range(x.ndim)), correction=_correction, **kwargs)
                                                        ^^^^^^^^^^^
UnboundLocalError: cannot access local variable '_correction' where it is not associated with a value

Maybe it's a real bug, or maybe I have an old version of something?

I get a different error:
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
Cell In[1], line 5
      3 x = torch.asarray([1, 2, 3., 3, 4.5])
      4 xp = array_namespace(x)
----> 5 xp.std(x, correction=1)

File ~/programming/scipy/build-install/lib/python3.10/site-packages/scipy/_lib/array_api_compat/_internal.py:27, in get_xp.<locals>.inner.<locals>.wrapped_f(*args, **kwargs)
     25 @wraps(f)
     26 def wrapped_f(*args, **kwargs):
---> 27     return f(*args, xp=xp, **kwargs)

File ~/programming/scipy/build-install/lib/python3.10/site-packages/scipy/_lib/array_api_compat/common/_aliases.py:249, in std(x, xp, axis, correction, keepdims, **kwargs)
    239 def std(
    240     x: ndarray,
    241     /,
   (...)
    247     **kwargs,
    248 ) -> ndarray:
--> 249     return xp.std(x, axis=axis, ddof=correction, keepdims=keepdims, **kwargs)

File ~/mambaforge/envs/scipy-dev/lib/python3.10/site-packages/numpy/core/fromnumeric.py:3643, in std(a, axis, dtype, out, ddof, keepdims, where)
   3641         pass
   3642     else:
-> 3643         return std(axis=axis, dtype=dtype, out=out, ddof=ddof, **kwargs)
   3645 return _methods._std(a, axis=axis, dtype=dtype, out=out, ddof=ddof,
   3646                      **kwargs)

TypeError: std() received an invalid combination of arguments - got (ddof=int, out=NoneType, dtype=NoneType, keepdims=bool, axis=NoneType, ), but expected one of:
 * (tuple of ints dim, bool unbiased, bool keepdim)
 * (tuple of ints dim, *, Number correction, bool keepdim)
 * (bool unbiased)
 * (tuple of names dim, bool unbiased, bool keepdim)
 * (tuple of names dim, *, Number correction, bool keepdim)

Thanks @lucascolley. Do you know if there's a canonical way to get the finfo/iinfo attributes of non-NumPy dtypes? I'm thinking for array x e.g.
np.finfo(getattr(xp, x.dtype))

Thanks @lucascolley I thought I knew that those weren't present, so I didn't look!

@lucascolley looks like the upstream issue was fixed. Can we just point the submodule to the latest commit?

UnboundLocalError: cannot access local variable '_correction'

If you pull in a new commit of array_api_compat@main this should be fixed (maybe want to wait for the next release which is planned for about ~1 week away by the sounds of it)

I'll go ahead and do that to get CI working, then we can pull in the released version before merging.

Looks like pulling that in alone doesn't work, probably because of https://github.com/scipy/scipy/pull/19900#issuecomment-1896267203. Maybe it will be easier when NumPy 2.0 is released.

Hmm, I'm pretty sure it should work. No harm in waiting though 🤷♂

I get an error:
/Users/matthaberland/miniforge3/envs/scipy-dev/bin/python /Applications/PyCharm.app/Contents/plugins/python/helpers/pycharm/_jb_pytest_runner.py --target tests/test_stats.py::TestGeometricStandardDeviation
Testing started at 8:34 AM ...
Launching pytest with arguments tests/test_stats.py::TestGeometricStandardDeviation --no-header --no-summary -q in /Users/matthaberland/Desktop/scipy/scipy/stats

ImportError while loading conftest '/Users/matthaberland/Desktop/scipy/scipy/conftest.py'.
../conftest.py:15: in <module>
    from scipy._lib._array_api import SCIPY_ARRAY_API, SCIPY_DEVICE
../_lib/_array_api.py:17: in <module>
    from scipy._lib.array_api_compat import (
../_lib/array_api_compat/array_api_compat/numpy/__init__.py:18: in <module>
    __import__(__package__ + '.fft')
E   ModuleNotFoundError: No module named 'scipy._lib.array_api_compat.numpy.fft'

I manually bisected this and found that 02059d0d8f025724c08ff757baa6b48a579651ea doesn't give this error and 0b6ddcd26cac700e6ff9d5fb42d2476f6cc8aac6 does (commit history).

aha, this is meson.build stuff - see my recent changes in gh-20085

I might put this on hold or close and reopen.


Automatically calculate point swings from protests

The reader should automatically count how many points could be gained by a protest being resolved. If resolving protests in a teams favor isn't enough to make them win, we should also tell the reader so they don't have to resolve it.

There are two scenarios:

For tossups, look at what the value would be at that point of the tossup. Subtract the other team's buzzes after it, and subtract all of their bonus points for that cycle
For bonuses, add the value of that bonus part

Part of the challenge will be to show swings for when both teams have protests. We may also want to add a reminder popup before export warning the reader that protests need to be resolved if they could affect the outcome of the game.


docs: document enable()

Explain usage for undocumented enable method.
It would help to avoid pitfall as in https://github.com/visionmedia/debug/issues/425
Don't hesitate to reword if need be.

Coverage increased (+1.2%) to 75.0% when pulling d844a6eef793985de46b9821dd803b935c4354e2 on abenhamdine:patch-1 into 71169065b5262f9858ac78cc0b688c84a438f290 on visionmedia:master.

Coverage increased (+1.2%) to 75.0% when pulling d844a6eef793985de46b9821dd803b935c4354e2 on abenhamdine:patch-1 into 71169065b5262f9858ac78cc0b688c84a438f290 on visionmedia:master.

Coverage increased (+1.2%) to 75.0% when pulling d844a6eef793985de46b9821dd803b935c4354e2 on abenhamdine:patch-1 into 71169065b5262f9858ac78cc0b688c84a438f290 on visionmedia:master.

Thanks!


authentication: Don't fail if token lastLoginAt is invalid

This will mitigate the current error in frontend E2E tests while we investigate on the root cause

Also fixed a test broken in https://github.com/opencollective/opencollective-api/pull/2392 (we missed it because PR was on a fork).
See https://circleci.com/gh/opencollective/opencollective-api/21223?utm_campaign=vcs-integration-link&utm_medium=referral&utm_source=github-build-link


Duplicated alt texts

Replacing two copy-pasted alt texts and adding semantic apostrophes.

Thanks!

Thanks!


FileLoadException: Could not load file or assembly System.Memory

We're seeing a high volume of these errors reported in our telemetry:

AI (Internal): [Microsoft-ApplicationInsights-Extensibility-DependencyCollector] Callback 'OnBeginSql' failed for id = '11495928'. Exception: System.IO.FileLoadException: Could not load file or assembly 'System.Memory, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
File name: 'System.Memory, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'
at System.Diagnostics.Activity.TrySetTraceIdFromParent()
at System.Diagnostics.Activity.GenerateW3CId()
at System.Diagnostics.Activity.Start()
at Microsoft.ApplicationInsights.DependencyCollector.Implementation.ClientServerDependencyTracker.BeginTracking(TelemetryClient telemetryClient) in ClientServerDependencyTracker.cs:line 44
at Microsoft.ApplicationInsights.DependencyCollector.Implementation.ProfilerSqlProcessingBase.OnBegin(Object thisObj) in ProfilerSqlProcessingBase.cs:line 238

This seems related to https://github.com/dotnet/runtime/issues/745
The DotNet team has responded:

The problem here is not really System.DiagnosticSource as that one does dual-target for net46, the problem is that it depends on System.Memory which doesn't dual target. This means that every application that targets .NET Framework (version <= 4.7.1) and wants to install only the ApplicationInsights package, will require all of the netstandard facades given that System.Memory targets .NET Standard 2.0. This could be mitigated if we service the System.Memory package in order to also have it dual-target, so that it won't require all of the facades at runtime.

The DotNet team is working on a fix but does not have an ETA.
At this time we don't have a workaround, but I've read that some people are having success with binding redirects.

I got an update last week that a fix for this should be available in mid March.
Will update here as we know more specifics.

System.Memory 4.5.4 was just released and we'll take a direct dependency on this until DiagnosticSource is also updated
https://www.nuget.org/packages/System.Memory/4.5.4


[bug 1068577] Add waffle switches to control ROTM automation.

Coverage increased (+0.01%) to 91.97% when pulling 7ef7a164a9569856256f38ed303f918f1bd6f703 on akatsoulas:rotm-waffle-switches into ea63ce6f124548b5e908d725296fc5f23394c0d0 on mozilla:master.

Coverage increased (+0.02%) to 91.98% when pulling c3212fb882db015b48de05c8e9e796c22d00dc02 on akatsoulas:rotm-waffle-switches into ea63ce6f124548b5e908d725296fc5f23394c0d0 on mozilla:master.

lgtm r+


should provide sugar for using React/memo with defnc

I get that you're trying to provide a "close to the (mental) metal" wrapper around React, but one of the nice things about working in clojure and with clojure data structures with React is that we can take advantage of their immutability to control re-rendering, as with rum's rum/static mixin for shouldComponentUpdate. The functional component equivalent of this is React.memo, a higher-order component for wrapping functional components to only re-render them when the arguments pass a shallow equality test, which I think will suit the nature of working with react from clojure.
I don't know what you'd consider this to look like, perhaps defncs or maybe defstatic, but it would be nice to not have to do this wrapping manually.

I think there are two things we could do:

Provide a fnc that allows us to create anonymous functional components with all the same sugar.

Implement https://github.com/Lokeh/hx/issues/9

OTOH, perhaps React/memo is both trivial and special enough that adding that as a space option to defnc makes sense? Let me know if you'd like a PR that explores this.

Since we discussed quite a lot about Clojure vs Javascript equality in the useState/useEffect discussion, I was happy to find that it seems that React/memo allows the use of a custom compare function. Still need to try it out to see how it works.

I implemented #9 in 0.4.0 (current master).
You can now do:
(defnc MyComponent [_]
  {:wrap [react/memo]}
  [:div "foo"])

To wrap the component in the React.memo HoC.
If you want to pass in a custom comparator:
(defnc MyComponent [_]
  {:wrap [(react/memo =)]}
  [:div "foo"])


Use error codes in VtGate

@alainjobart @guoliang100
Sorry for the messy PR, I wasn't quite sure where this was going at first. Probably isn't helpful to look at this commit-by-commit.
I basically do three things in this PR:

Classify all the errors that VtGate itself produces with an error code
Make sure that all the layers of VtGate are passing errors through without losing information. This means adding error codes to a lot more errors, to the point where it was getting quite unwieldy, so I added an interface.
I needed to be able to aggregate error codes, because there are many parts of VtGate that try multiple concurrent things, and we need to be able to return a coherent error code from that. I took an attempt at sorting error codes by priority, and my aggregation just pulls out the highest priority code from the list.

Let me know if the above doesn't make sense, we can talk in person too. Also am open to suggestions for how to do this cleaner, it feels like Go error handling and the number of VtGate layers don't play nicely together :)
This isn't totally complete, I want to do some more testing etc. before merging. Unfortunately, we don't have good VtGate client error tests right now, so I'll take a stab at adding some tomorrow.

The structure LGTM but Liang still needs to approve it for the vtgate changes, at least...

By the way, I decided I'm going to want to merge this right away, and do the clean-up / tests in a follow up PR. I think it'll be cleaner and easier to review that way.
@guoliang100 : going to wait on your LGTM before merging.

LGTM


silent updates for windows app

we need to patch/develop winsparkle further to support it, or start using another updater. examples:

https://code.google.com/p/wyupdate/
https://code.google.com/p/omaha/

also it's worth checking out other open source apps to see what updater they're using on Windows

After doing some research, I think we should not use a third party library at all.
Instead we could do this:

check for update ourself, in the background, by GETting the appcast XML file
compare version to appcast version. if they're different, GET the installer. save it to a subfolder in the app directory (?).
when app is started, check for the subfolder. if it has an update, run the update silently (with /S flag), in a different process (maybe using a helper.exe)
after running the silent update, helper.exe must delete the downloaded updater, and start the Desktop app again

If we use appcast format, it will not break existing Windows app - it will get the update too.


Add div and div_ to BatchedArray

Codecov Report
Patch coverage: 100.00% and no project coverage change.

Comparison is base (d058d25) 100.00% compared to head (f7d7103) 100.00%.

Additional details and impacted files
@@            Coverage Diff            @@
##              main      #346   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files           14        14
  Lines         1481      1498   +17
  Branches       162       166    +4
=========================================
+ Hits          1481      1498   +17

Files Changed
Coverage Δ

src/redcat/array.py
100.00% <100.00%> (ø)

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


OpenWhisk uses a non-OSS friendly version of org.json:json jar

https://github.com/apache/openwhisk-devtools/blob/5801dc226ddbae7bea2752991dbb0d5e2884dc8f/knative-build/runtimes/java/WhiskSim/pom.xml#L53
See https://www.apache.org/legal/resolved.html (JSON license section)
Could you upgrade to a newer version? And these versions have security fixes too.
Since late 2022, this jar is now properly in the public domain.

The knative-build part of this repo was experimental and isn't actively maintained.  Most likely the right thing is just to remove it entirely.


[HUDI-5003] Fix the type of InLineFileSystem`startOffset to long

Change Logs
InLineFileSystem will throw NumberFormatException, cause the type of startOffset is int and out of bounds.
The exception detail see HUDI-5003
Impact
N/A
Risk level: low
low
Documentation Update
N/A
Contributor's checklist

[ ] Read through contributor's guide
[ ] Change Logs and Impact were stated clearly
[ ] Adequate tests were added if applicable
[ ] CI passed

@hudi-bot run azure

can we add a unit test too? cc @nsivabalan

@xushiyan I only added a simple ut for InLineFSUtils. If you have better suggestions, I will adjust it again.


fix how vak.Model checks patience, #166

check not only in _train function after each
validation step, but also a level up in the
fit function after _train returns after
each epoch
fixes bug where training kept going even after
patience_counter > patience because fit would
just call _train again for the next epoch

tested whether this works by setting patience and val_step both to low numbers (2) and seeing if training did actually stop -- yes it did
seems like this could be a not terrible way to write a unit test for this, see #167


fix: use iarna/toml instead of toml

Using a better toml parser: https://shared.by.re-becca.org/misc/TOML-SPEC-SUPPORT.html
Fixes a known issue were the following table doesn't work but is valid toml:
[tool.pixi]
dependencies.boltons = "*"

You need to add this library to the tsup config

I think we should wrap the readfile and parse toml in a try catch and do core.error if we catch something
https://github.com/prefix-dev/setup-pixi/blob/b68487257f97d9a4b31dea6e468a50fc1bca2ca6/src/options.ts#L211
The issue was a bit annoying to spot right now.

Is an core.error enough or should we add more info to it?

I would add core.error("failed to parse pyproject.toml") and then throw the error again s.t. we see where this error was thrown. The previous error message (https://discord.com/channels/1082332781146800168/1082338253925003385/1245052133053829182) was not really helpful
All errors are catched and displayed in the outer most run action part

Yeah right! will do.

Haha @pavelzw this is why I wanted a pixi.toml, I'm to spoiled by it ;)
https://github.com/prefix-dev/setup-pixi/pull/118/files#diff-b335630551682c19a781afebcf4d07bf978fb1f8ac04c6bf87428ed5106870f5R354

Or should we updated to pnpm 9?
And should I make a patch release?

Let’s use pnpm 9 and a patch release 👍🏻


Integrate with Google and test register & login

Integrate with Google and test register & login, we should check MishkaAuth at first.

We changed our plan and this issue moved to our new repo mishka_social


Troubleshoot Compiler test 11 (generateTypeScript) on Mono

The test does not pass on Mono.
Related to #1719

Close by github by mistake


Example of Response JSON?

Could we have an example of the JSON response from the prediction endpoint? It would help me understand how the data is structured.

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

ID: e9a91d22-bd16-a250-5e81-26aca73e970b
Version Independent ID: badfb9d5-8762-830c-7601-96473d941a84
Content: Consume web service - Azure Machine Learning Studio
Content Source: articles/machine-learning/studio/consume-web-services.md
Service: machine-learning
GitHub Login: @ericlicoding
Microsoft Alias: amlstudiodocs

@ctrlaltdylan Hi, thanks for your feedback. I have assigned the author to update the document properly.
@ericlicoding Hi, can you please check it? Thanks a lot!

@ericlicoding it would also be helpful if there were examples of non-200 responses and error codes. Thank you!

@ctrlaltdylan Sorry for late respond Dylan. I'm afraid we don't have enough resource in near recent to add the example json or non-200 responses. But I'd like to clarify a bit what are you looking for to see whether we can optimize in future.  If possible, can you take a screenshot and send to me<EMAIL_ADDRESS>of where you expect to see example json and what you see today when non-200 respond happens? It will helps understand the problem you have.
Thank you!


Use regular URL to generated documentation for input/anonymize.py

Use regular URL (written in Markdown) to generated documentation for input/anonymize.py

Fixed in https://github.com/RedHatInsights/insights-results-aggregator-utils/pull/259


No colors in git bash on windows

Hi! I don't get colored output when using Git Bash on windows:

cc @Stebalien

What's your $TERM?

Actually, that's probably https://github.com/Stebalien/term/issues/58. Now that my thesis is "done" (well, submitted) I should have time to fix this once and for all.

Yep, doing TERMINFO=$(cygpath -w /usr/share/terminfo) cargo build --color always does the trick. I somehow assumed that "only a very minimal set of operations are supported on mys2/cygwin" includes colors, and that this one is a different issue than. I was wrong, so this could be closed :)

@zubair1024 colors should "just work" on msys terminals.  Is it not working for you?  Can you provide more detail on your environment (versions you are using, etc.)?


fix : Update dangerfile.js to have chore(deps) as valid prefix

Add chore(deps) as a valid prefix in dangerfile

Fails

:no_entry_sign:

Danger failed to run dangerfile.js.

Warnings

:warning:
This pull request needs a description.

Error ReferenceError
fs is not defined
ReferenceError: fs is not defined
    at dangerfile.js:32:19
    at Array.forEach (<anonymous>)
    at Object.<anonymous> (dangerfile.js:31:15)
    at Module._compile (node:internal/modules/cjs/loader:1105:14)
    at requireFromString (/home/circleci/apollo-mock-http/node_modules/require-from-string/index.js:28:4)
    at /home/circleci/apollo-mock-http/node_modules/danger/distribution/runner/runners/inline.js:161:68
    at step (/home/circleci/apollo-mock-http/node_modules/danger/distribution/runner/runners/inline.js:52:23)
    at Object.next (/home/circleci/apollo-mock-http/node_modules/danger/distribution/runner/runners/inline.js:33:53)
    at /home/circleci/apollo-mock-http/node_modules/danger/distribution/runner/runners/inline.js:27:71
    at new Promise (<anonymous>)
    at __awaiter (/home/circleci/apollo-mock-http/node_modules/danger/distribution/runner/runners/inline.js:23:12)
    at runDangerfileEnvironment (/home/circleci/apollo-mock-http/node_modules/danger/distribution/runner/runners/inline.js:118:132)
    at /home/circleci/apollo-mock-http/node_modules/danger/distribution/platforms/GitHub.js:181:38
    at step (/home/circleci/apollo-mock-http/node_modules/danger/distribution/platforms/GitHub.js:44:23)
    at Object.next (/home/circleci/apollo-mock-http/node_modules/danger/distribution/platforms/GitHub.js:25:53)
    at /home/circleci/apollo-mock-http/node_modules/danger/distribution/platforms/GitHub.js:19:71
    at new Promise (<anonymous>)
    at __awaiter (/home/circleci/apollo-mock-http/node_modules/danger/distribution/platforms/GitHub.js:15:12)
    at Object.executeRuntimeEnvironment (/home/circleci/apollo-mock-http/node_modules/danger/distribution/platforms/GitHub.js:144:88)
    at /home/circleci/apollo-mock-http/node_modules/danger/distribution/commands/danger-runner.js:101:47
    at step (/home/circleci/apollo-mock-http/node_modules/danger/distribution/commands/danger-runner.js:34:23)
    at Object.next (/home/circleci/apollo-mock-http/node_modules/danger/distribution/commands/danger-runner.js:15:53)
    at fulfilled (/home/circleci/apollo-mock-http/node_modules/danger/distribution/commands/danger-runner.js:6:58)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)

Dangerfile
27|   path.endsWith('js')
28| );
29|
30| // Check for console.log statements
31| modifiedFiles.forEach(file => {
---------------------^
32|   const content = fs.readFileSync(file).toString();
33|   if (content.includes('console.log') || content.includes('console.warn')) {
34|     fail(`a \`console.log\` was left in file (${file})`);
35|   }

  Generated by :no_entry_sign: dangerJS against 9846e879e57675343cfa60a9a1c680f417a8d163

@atyachari Rerunning to see if the error goes away

@atyachari Rerunning to see if the error goes away

Not sure why, the danger script isn't running.. however it runs in my local.

Retried the changes on a fresh PR. and the checks went fine.. merged these changes through the fresh PR (https://github.com/intuit/apollo-mock-http/pull/49). Thanks @atyachari


add a Barrier operation

To facilitate possible further optimization in PECOS it is useful to add barriers.

Duplicate of #53


Better README.

I think the project should have a better README to understand how to use the project.

@portlek You are right! As soon we will have something working ;)


[Bitwarden] Unable to log in using the master password

Extension
https://www.raycast.com/jomifepe/bitwarden
Raycast Version
1.79.1
macOS Version
14.5
Description
Unable to log in using the master password and receiving an error stating "Invalid master password." This was working fine until I tried syncing the vault through the extension, which failed, and now I get that invalid password every time trying to unlock the vault
The same password works with both the web client and desktop app so this is clearly an issue on the Raycast side.
Steps To Reproduce

Attempt to log into the Bitwarden vault with the Raycast extension
Watch it fail with an invalid password error

Current Behaviour
No response
Expected Behaviour
No response

Hey, https://github.com/raycast/extensions/issues/13329#issuecomment-2238743439

Thanks for the quick reply. That was indeed the issue


[beta 32] Error Initializing app

The installation process in beta 32 seems to be broken.
Error Initializing app: There was an error with the spawned command: npminstall

@manekinekko https://github.com/driftyco/ionic-cli/issues/1089

Closing this as a duplicate of #1013.


fix: Delegated ipam not configure ipv6 if ipv6 disabled in agent

Delegated ipam returns ipv6 address to cilium cni even if ipv6 disabled in cilium agent config. In this scenario, ipv6 node addressing is not set and its causing cilium cni to crash if delegated ipam returns ipv6.
Requires backport to 1.14 and 1.15 versions
Please ensure your pull request adheres to the following guidelines:

[ ] For first time contributors, read Submitting a pull request
[ ] All code is covered by unit and/or runtime tests where feasible.
[ ] All commits contain a well written commit description including a title,
description and a Fixes: #XXX line if the commit addresses a particular
GitHub issue.
[ ] If your commit description contains a Fixes: <commit-id> tag, then
please add the commit author[s] as reviewer[s] to this issue.
[ ] All commits are signed off. See the section Developer’s Certificate of Origin
[ ] Provide a title or release-note blurb suitable for the release notes.
[ ] Are you a user of Cilium? Please add yourself to the Users doc
[ ] Thanks for contributing!

Fixes: #31103
<!-- Fix crash of cilium-cni with delegated IPAM returning ipv6 when IPv6 is disabled in Agent -->

Good catch.
My suggestion would be to fix this on this line instead -- something like
if ipv6IsEnabled(ipam) && conf.Addressing.IPV6 != nil {

Make sense?

Good catch.
My suggestion would be to fix this on this line instead -- something like
if ipv6IsEnabled(ipam) && conf.Addressing.IPV6 != nil {

And, for extra safety, do the same for ipv4 on line 578.
Make sense?

Yep I thought about this. The reason I went with this approach is ipv6IsEnabled returns true even if conf.Addressing.IPV6 is nil . Thats why decided to update in allocateIPsWithDelegatedPlugin to be safer and not to regress. I'm fine adding in the place you suggested if there won't be any issues (that's the right place to add anyways)
	ipam := &models.IPAMResponse{
		HostAddressing: conf.Addressing,
		Address:        &models.AddressPair{},
	}

func ipv6IsEnabled(ipam *models.IPAMResponse) bool {
	if ipam == nil || ipam.Address.IPV6 == "" {
		return false
	}

	**if ipam.HostAddressing != nil && ipam.HostAddressing.IPV6 != nil {
		return ipam.HostAddressing.IPV6.Enabled
	}**

	return true
}

Hi, I'd suggest a release note in the description like: "Fix crash of cilium-cni with delegated IPAM when IPv6 is disabled". This way users have a decent chance to understand the change and whether this fix may address a problem they are facing.

/test

/test

@squeed Thanks for reviewing. Addressed your comment.

.test

/test

/test

/test

/ci-eks


Vulnerability roundup 74: libjpeg-turbo-2.0.2: 1 advisory

search, files

[ ] CVE-2019-13960 (nixos-unstable)

Scanned versions: nixos-unstable: 1412af4b2cf. May contain false positives.

This one is being disputed by upstream.

CVE-2019-13960: Still disputed. See https://github.com/libjpeg-turbo/libjpeg-turbo/issues/337 for details.


Minimal CI

We could start by validating the OpenAPI 3.1 description file, with redocly lint docs/kbs.yaml

@sameo dude, is this issue still relevant or can be closed?
If it's still relevant to what release do you think we should map it to (mid-November, end-December, mid-February etc...)?

Still relevant, dude.

Cool, added it to the CoCO releases board.
What drop and priority should be put it on?

Whoever ends up working on this may want to make sure all features are tested. I'm seeing some GH Actions jobs already but AFAICT some features such as coco-as-builtin-no-verifier aren't compiled:
https://github.com/confidential-containers/kbs/blob/8ca7c4dba6a89463446f02681df4d2a37caa3baa/.github/workflows/rust.yml#L52-L62


support signing hyperdrives in a single request

depends on hypercore-signing-request#3

depends on https://github.com/holepunchto/hypercore-signing-request/pull/3


docs: fix wrong plugin path

I found some wrong plugin path in docs. And I fixed it.

Arf, Me? Copy pasting? :-°
Thanks for the fix!


Add jwt tests

@osahner Can you review this ?
Have added a fail path test case.

Coverage increased (+4.0%) to 90.066% when pulling ad49e3f8e28336a50a56c7e6f9eb22a18d8f4701 on develop-jwt-tests into 19150d4031c2265f7772d96ed88c575f1fc1ecf5 on develop.


Getting "undefined is not an object (evaluating 'DocumentPicker.show')" error on a new project

index.ios.js
import React, { Component } from 'react';
import {AppRegistry,StyleSheet,Button,View} from 'react-native';

const DocumentPicker = require('react-native').NativeModules.RNDocumentPicker;

export default class newproject extends Component {
  render() {
    return (
      <View style={styles.container}>
        <Button
          onPress={() => this.openDocumentPicker()}
          title='Open document picker'
          />
      </View>
    );
  }

  openDocumentPicker() {
      DocumentPicker.show({
      filetype: ['public.image'],
    },(error,url) => {
      alert(url);
    });

    console.log(DocumentPicker) // prints 'undefined'
  }
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
  },
});

AppRegistry.registerComponent('newproject', () => newproject);

package.json dependencies:
"react": "16.0.0-alpha.12",
"react-native": "0.45.1",
"react-native-document-picker": "^2.0.0",

I ran react-native link, restarted simulator, packager, still doesn't work.

Did you try to do import DocumentPicker from 'react-native-document-picker'; instead?

I tried that too, didn't work. I eventually got it to work by creating another fresh project and installing everything again. Not sure what I did this time that made the difference.

hi @oliviachang29 , @bsonntag   I am facing the same problem, I followed manual linking, but the code is not working as expected

@kashifaliquazi, I solved doing the manual linking and running the react-native run-android to rebuild the app. For me, solved!


[openstack] support regexp for exclusion

Support regular expressions for Network IDs exclusion.

:shipit:

Appveyor failure was a tcp_check flake. Merging.


add cors headers

I needed to clone a soft-serve repo from the browser so I added cors headers.

ping @aymanbagabas, should I improve this so you can merge? make all rules "*" perhaps for consistency?

ping @aymanbagabas, should I improve this so you can merge? make all rules "*" perhaps for consistency?

Hey @fetsorn, I wonder if we can make the CORS origin field configurable. Without that, it can be a security issue for some users. https://github.com/charmbracelet/soft-serve/pull/516#discussion_r1586478681

we could add three lists to the http section of yaml configuration
# The HTTP server configuration.
http:
  # The address on which the HTTP server will listen.
  listen_addr: ":23232"

  allowed_headers:
    - Content-Type
    - X-Requested-With

  allowed_origins:
     - *

  allowed_methods:
     - GET
     - HEAD
     - POST

This looks good @fetsorn! I would move the config to http.cors.headers etc to make it clear that these are CORS config.

I brought out the "cors" configuration struct. I believe that "allowed_headers" is more correct than just "headers" because it corresponds to gorilla's variable`handlers.AllowedHeaders" and the preflight header Access-Control-Allow-Headers.

What can I improve to bring this closer to merge?

Hey @fetsorn, could you rebase the PR and any lint issues? This will be released in v0.8.0

@fetsorn I'm preparing the release notes for the next release, do you think you can add test cases for this feature to be included in the next release?

What tests cases do you imagine would be required? Should I add them to https://github.com/charmbracelet/soft-serve/blob/main/testscript/testdata/http.txtar?

What's the window of time until the release?

What's the window of time until the release?

Ideally in the next couple of weeks

@fetsorn I'm planning on pushing a new release soon. It would be nice to have this PR included in the next release 🙂


pytradfri 4.0.0 not working

Where are you using pytradfri (eg stand-alone, Home Assistant etc)
standalone
Version of pytradfri
4.0.0
Expected behaviour
working again with gateway firmware 1.2.42
Actual behaviour
running this:
#!/usr/bin/env python3

import sys
from pytradfri import Gateway
from pytradfri.api.libcoap_api import APIFactory

api_factory = APIFactory(sys.argv[1])
with open('/mnt/rw/ikea/gateway_psk.txt', 'a+') as file:
    file.seek(0)
    psk = file.read()
    if psk:
        api_factory.psk = psk.strip()
    else:
        psk = api_factory.generate_psk(sys.argv[2])
        print('Generated PSK: ', psk)
        file.write(psk)
api = api_factory.request

root@raspberrypi:~# /opt/testing <IP_ADDRESS> <devicekey>
gives:
Traceback (most recent call last):
  File "/opt/testing", line 13, in <module>
    psk = api_factory.generate_psk(sys.argv[2])
  File "/usr/local/lib/python3.5/dist-packages/pytradfri/api/libcoap_api.py", line 156, in generate_psk
    self._psk = self.request(command)
  File "/usr/local/lib/python3.5/dist-packages/pytradfri/api/libcoap_api.py", line 93, in request
    return self._execute(api_commands)
  File "/usr/local/lib/python3.5/dist-packages/pytradfri/api/libcoap_api.py", line 87, in _execute
    api_command.result = _process_output(return_value, parse_json)
  File "/usr/local/lib/python3.5/dist-packages/pytradfri/command.py", line 71, in result
    self._result = self._process_result(value)
  File "/usr/local/lib/python3.5/dist-packages/pytradfri/gateway.py", line 28, in process_result
    return result[ATTR_PSK]
TypeError: 'NoneType' object is not subscriptable

???

Was a gateway_psk.txt file written in your pytradfri-folder?

Yes, but empty.

To get you going, can you please testing rewriting the example-file so that the psk is printed to prompt:
@asyncio.coroutine
def run():
    # Assign configuration variables.
    # The configuration check takes care they are present.
    api_factory = APIFactory(sys.argv[1])
    psk = yield from api_factory.generate_psk(sys.argv[2])
    print('Generated PSK: ', psk)

And then you store the psk in the gateway_psk.txt-file.

It should work if you have the psk, there are two of us that has got it working.

Maybe an update of of README.me would help?
With reference to the vital examples.
Also, will this really work now?

python3 -i -m pytradfri IP KEY

These are the results I got when testing the new version:
:/usr/src/app# python3 example_async.py <IP_ADDRESS>
decrypt_verify(): found 24 bytes cleartext
decrypt_verify(): found 52 bytes cleartext
decrypt_verify(): found 291 bytes cleartext
decrypt_verify(): found 283 bytes cleartext
decrypt_verify(): found 237 bytes cleartext
decrypt_verify(): found 239 bytes cleartext
decrypt_verify(): found 310 bytes cleartext
decrypt_verify(): found 235 bytes cleartext
[<65538 - Koksbord (FLOALT panel WS 30x30)>, <65540 - Hall 2 (TRADFRI bulb E27 opal 1000lm)>, <65539 - Hall 1 (TRADFRI bulb E27 W opal 1000lm)>, <65537 - Kökslampa (TRADFRI bulb E27 WS opal 980lm)>, <65542 - Läslampa (TRADFRI bulb E27 CWS opal 600lm)>]
Is on: True
Dimmer: 110
Name: Läslampa
decrypt_verify(): found 284 bytes cleartext
Received message for: <Light #0 - name: Koksbord, state: on, dimmer: 254, hex_color: efd275, xy_color: (32886, 27217), >
decrypt_verify(): found 238 bytes cleartext
Received message for: <Light #0 - name: Hall 2, state: on, dimmer: 193, hex_color: None, xy_color: (None, None), >
decrypt_verify(): found 240 bytes cleartext
Received message for: <Light #0 - name: Hall 1, state: on, dimmer: 193, hex_color: None, xy_color: (None, None), >
decrypt_verify(): found 292 bytes cleartext
Received message for: <Light #0 - name: Kökslampa, state: on, dimmer: 254, hex_color: 0, xy_color: (32538, 27213), >
decrypt_verify(): found 311 bytes cleartext
Received message for: <Light #0 - name: Läslampa, state: on, dimmer: 110, hex_color: efd275, xy_color: (32886, 27217), >
decrypt_verify(): found 8 bytes cleartext
decrypt_verify(): found 8 bytes cleartext
decrypt_verify(): found 312 bytes cleartext
Received message for: <Light #0 - name: Läslampa, state: on, dimmer: 110, hex_color: efd275, xy_color: (32886, 27217), >

:/usr/src/app# python3 example_sync.py <IP_ADDRESS>
[<65538 - Koksbord (FLOALT panel WS 30x30)>, <65540 - Hall 2 (TRADFRI bulb E27 opal 1000lm)>, <65539 - Hall 1 (TRADFRI bulb E27 W opal 1000lm)>, <65537 - Kökslampa (TRADFRI bulb E27 WS opal 980lm)>, <65542 - Läslampa (TRADFRI bulb E27 CWS opal 600lm)>]
Sleeping to start observation task
Received message for: <Light #0 - name: Koksbord, state: on, dimmer: 254, hex_color: efd275, xy_color: (32886, 27217), >
True
254
Koksbord
Received message for: <Light #0 - name: Koksbord, state: on, dimmer: 254, hex_color: efd275, xy_color: (32886, 27217), >

@ggravlingen: I first have to install aiocoap support. I will let you know if this works...

I think this error happened to me before when I tried to get a second pre_shared_key for the same identity. Maybe the identity must be a random string...anyway I don't get why we don't need the security key now. Is this more secure?

@dperezbr this is how the gateway works, not much we can do I’m afraid 😊

I had the same issue as OP with 4.0.1.
I did not yet tried the aiocoap version (it complains about installed python 3.4.2, while required is 3.4.4 - sadly, Raspbian Jessie has 3.4.2 as the newest one), but if I manually write the xxx-xx-xxx code from Tradfri application into the file, it gets to line 57, where I get another issue:
Traceback (most recent call last):
  File "example_sync.py", line 107, in <module>
    run()
  File "example_sync.py", line 57, in run
    devices_commands = api(devices_command)
  File "/home/jtulak/tradfri/pytradfri/pytradfri/api/libcoap_api.py", line 93, in request
    return self._execute(api_commands)
  File "/home/jtulak/tradfri/pytradfri/pytradfri/api/libcoap_api.py", line 82, in _execute
    raise RequestTimeout() from None
pytradfri.error.RequestTimeout

Update: I managed to get newer python and install aicoap, but the example_async.py is failing as well. I verified I can ping the Tradfri gate, and before the gateway fw update, I used this library for weeks.
Traceback (most recent call last):
  File "example_async.py", line 115, in <module>
    asyncio.get_event_loop().run_until_complete(run())
  File "/home/jtulak/berryconda3/lib/python3.6/asyncio/base_events.py", line 466, in run_until_complete
    return future.result()
  File "example_async.py", line 45, in run
    psk = yield from api_factory.generate_psk(sys.argv[2])
  File "/home/jtulak/tradfri/pytradfri/pytradfri/api/aiocoap_api.py", line 193, in generate_psk
    self._psk = yield from self.request(command)
  File "/home/jtulak/tradfri/pytradfri/pytradfri/api/aiocoap_api.py", line 149, in request
    result = yield from self._execute(api_commands)
  File "/home/jtulak/tradfri/pytradfri/pytradfri/api/aiocoap_api.py", line 139, in _execute
    _, res = yield from self._get_response(msg)
  File "/home/jtulak/tradfri/pytradfri/pytradfri/api/aiocoap_api.py", line 92, in _get_response
    r = yield from pr.response
  File "/home/jtulak/berryconda3/lib/python3.6/site-packages/aiocoap/protocol.py", line 814, in _run_outer
    yield from cls._run(app_request, response, weak_observation, protocol, log, exchange_monitor_factory)
  File "/home/jtulak/berryconda3/lib/python3.6/site-packages/aiocoap/protocol.py", line 863, in _run
    blockresponse = yield from blockrequest.response
  File "/home/jtulak/berryconda3/lib/python3.6/site-packages/aiocoap/protocol.py", line 693, in _init_phase2
    yield from self.protocol.fill_remote(self.app_request)
  File "/home/jtulak/berryconda3/lib/python3.6/site-packages/aiocoap/protocol.py", line 426, in fill_remote
    raise RuntimeError("No transport could route message")
RuntimeError: No transport could route message

I too am having the same problem as @jtulak,
RuntimeError: No transport could route message
I am running on an RPI3 (without any HomeAssistant installed), with Python 3.5. I have installed aicoap.
Trying to run the example program;
python3.5 testp.py <IP_ADDRESS> KEY
Thanks to all involved for the work on this !

@xt16johnny can you please check the post about gateway_psk.txt above and see if it helps?

@ggravlingen
Unfortunately no... I created example_async.py as follows;
`#!/usr/bin/env python3
import asyncio
import logging
import sys
from pytradfri import Gateway
from pytradfri.api.aiocoap_api import APIFactory
root = logging.getLogger()
root.setLevel(logging.INFO)
try:
# pylint: disable=ungrouped-imports
from asyncio import ensure_future
except ImportError:
# Python 3.4.3 and earlier has this as async
# pylint: disable=unused-import
from asyncio import async
ensure_future = async
@asyncio.coroutine
def run():
# Assign configuration variables.
# The configuration check takes care they are present.
api_factory = APIFactory(sys.argv[1])
psk = yield from api_factory.generate_psk(sys.argv[2])
print('Generated PSK: ', psk)
asyncio.get_event_loop().run_until_complete(run())`
Full response is;
pi@MagicPi:~/MagicHome $ python3.5 example_async.py <IP_ADDRESS> KEY Traceback (most recent call last):   File "example_async.py", line 31, in <module>     asyncio.get_event_loop().run_until_complete(run())   File "/usr/local/lib/python3.5/asyncio/base_events.py", line 387, in run_until_complete     return future.result()   File "/usr/local/lib/python3.5/asyncio/futures.py", line 274, in result     raise self._exception   File "/usr/local/lib/python3.5/asyncio/tasks.py", line 241, in _step     result = coro.throw(exc)   File "example_async.py", line 27, in run     psk = yield from api_factory.generate_psk(sys.argv[2])   File "/usr/local/lib/python3.5/site-packages/pytradfri/api/aiocoap_api.py", line 193, in generate_psk     self._psk = yield from self.request(command)   File "/usr/local/lib/python3.5/site-packages/pytradfri/api/aiocoap_api.py", line 149, in request     result = yield from self._execute(api_commands)   File "/usr/local/lib/python3.5/site-packages/pytradfri/api/aiocoap_api.py", line 139, in _execute     _, res = yield from self._get_response(msg)   File "/usr/local/lib/python3.5/site-packages/pytradfri/api/aiocoap_api.py", line 92, in _get_response     r = yield from pr.response   File "/usr/local/lib/python3.5/asyncio/futures.py", line 361, in __iter__     yield self  # This tells Task to wait for completion.   File "/usr/local/lib/python3.5/asyncio/tasks.py", line 296, in _wakeup     future.result()   File "/usr/local/lib/python3.5/asyncio/futures.py", line 274, in result     raise self._exception   File "/usr/local/lib/python3.5/site-packages/aiocoap/protocol.py", line 814, in _run_outer     yield from cls._run(app_request, response, weak_observation, protocol, log, exchange_monitor_factory)   File "/usr/local/lib/python3.5/site-packages/aiocoap/protocol.py", line 863, in _run     blockresponse = yield from blockrequest.response   File "/usr/local/lib/python3.5/asyncio/futures.py", line 361, in __iter__     yield self  # This tells Task to wait for completion.   File "/usr/local/lib/python3.5/asyncio/tasks.py", line 296, in _wakeup     future.result()   File "/usr/local/lib/python3.5/asyncio/futures.py", line 274, in result     raise self._exception   File "/usr/local/lib/python3.5/site-packages/aiocoap/protocol.py", line 693, in _init_phase2     yield from self.protocol.fill_remote(self.app_request)   File "/usr/local/lib/python3.5/site-packages/aiocoap/protocol.py", line 426, in fill_remote     raise RuntimeError("No transport could route message") RuntimeError: No transport could route message
If I amend the example_sync to have a similar code, it simply runs and does not print a key.
I have had no joy with the gateway_psk.txt file with any test.
Thanks again

OK, the "RuntimeError: No transport could route message" with async version could be because I forgot to install dtlssocket. It should be installing now (pip install DTLSSocket), but it is taking reaaally long time (I see gcc in htop, so I guess it is ok so far, just slow). @xt16johnny can you verify if you have the same issue?

@jtulak took me about an hour (even more) to install on my rpi yesterday. So hang in there! :smile:

For whatever reason generating a new psk with example_sync.py doesn't work, but after using example_async.py (with pip3 install DTLSSocket) a gateway_psk.txt is generated that works with both... First I thought my gateway already had a "pytradfri" identity, but changing that from the code still didn't work.

I can confirm what @ppietikainen wrote just above. After installing DTLSSocket, the asynchronous example created the PSK file and with it, the synchronous example works as well. I see that #98 already fixes the documentation, so we can return to why the synchronous example does not work. 😃

@ggravlingen:  I can confirm now that my issues with >=4.0.0 have been solved. Sync & async working!

@ggravlingen : All going, thank you for your time on this guys!

@badblocks can the issue be closed?

I think I found the example_sync.py problem:
['coap-client', '-u', 'Client_identity', '-k', 'CENSORED', '-v', '0', '-m', 'post', '-f', '-', 'coaps://192.168.1.X:5684/15011/9063']
which is missing  -e '{"9090":"pytradfrii"}'  ? (gotta run so no patch :) )

I'm not convinced regarding the PSK handling, saving this to the file system. Why not just have a separate script that generates the PSK. It might save it to a file for backup but further use of the PSK is through a setting in the scripts just like IP and KEY was previously handled. IP and PSK instead.
Also, when running CLI, having KEY as a parameter is confusing since this is only used the first time (when PSK has not been created yet) according to ongoing pull request. Why not just have the PSK as parameter instead?
I haven't upgraded yet but i think that I'm going to put IP and PSK in a separate file that I import from various scripts. And a separate script just for generating the PSK but I will copy paste this to my file with IP and PSK.
Just some thoughts...

@hanpal I'm fixing the problem with python3 -i -m pytradfri IP KEY at the moment.

I know, just not convinced by the file handling used. Maybe better to separate the PSK generation completely from the example/CLI-scripts.

@hanpal python3 -i -m pytradfri IP KEY should work in 4.0.2 that I just pushed to pypi.

I'm still having problems in 4.0.2. I'm using the synchronous functionality.
$ python3 example_sync.py <IP_OF_GATEWAY> <KEY_ON_GATEWAY>
Traceback (most recent call last):
  File "example_sync.py", line 107, in <module>
    run()
  File "example_sync.py", line 49, in run
    psk = api_factory.generate_psk(sys.argv[2])
  File "/Users/lakitna/Documents/Github/pytradfri/pytradfri/api/libcoap_api.py", line 156, in generate_psk
    self._psk = self.request(command)
  File "/Users/lakitna/Documents/Github/pytradfri/pytradfri/api/libcoap_api.py", line 93, in request
    return self._execute(api_commands)
  File "/Users/lakitna/Documents/Github/pytradfri/pytradfri/api/libcoap_api.py", line 87, in _execute
    api_command.result = _process_output(return_value, parse_json)
  File "/Users/lakitna/Documents/Github/pytradfri/pytradfri/command.py", line 71, in result
    self._result = self._process_result(value)
  File "/Users/lakitna/Documents/Github/pytradfri/pytradfri/gateway.py", line 28, in process_result
    return result[ATTR_PSK]
TypeError: 'NoneType' object is not subscriptable

The gateway_psk.txt file is being created, but it's empty.
I get the same error when I run python3 -i -m pytradfri IP KEY/PSK like @ggravlingen said.

@Lakitna:  Did you install this first?
pip install -r requirements.txt
I had the same error but I think after this it was working.

@Lakitna I suppose that your gateway_psk.txt is empty? I was able to reproduce this error and couldn't get nor CLI or example scripts to work in my test environment. What I did to temporarily solve it was this:
% coap-client -u "Client_identity" -k KEY_ON_GATEWAY -v 0 -e '{"9090":"Lakitna"}' -m POST "coaps://<IP_ADDRESS>:5684/15011/9063"

This is returned
% {"9091":"PSK","9029":"1.2.0042"}

I then edited libcoap_api.py as a temporary workaround (replace PSK with output from above.)
    def _base_command(self, method):
        """Return base command."""
        return [
            'coap-client',
            '-u',
            'Lakitna',
            '-k',
            'PSK',
            '-v',
            '0',
            '-m',
            method
        ]

Ping @lwis: should we randomize the key generation, as has also been proposed downstream in Home Assistant?

@ggravlingen can't see why not.

May I suggest to use a combination of the name and a timestamp like pytradfri_YYYYMMDDHHMMSS instead of randomizing the identity used for key generation? This would guarantee unique identities each time you request a PSK and possibly makes future debugging a bit easier.

@ggravlingen Your temporary fix does the trick, thanks for the help!

I had the same PSK generating problem at first, but now I keep getting a timeout error.
python3 -i -m pytradfri <IP_ADDRESS> mykeywashere
DEBUG:pytradfri.api.libcoap_api:Executing <IP_ADDRESS> post ['15011', '9063']: {'9090': 'Client_identity'}
Traceback (most recent call last):
File "/usr/lib/python3.5/runpy.py", line 193, in _run_module_as_main
"main", mod_spec)
File "/usr/lib/python3.5/runpy.py", line 85, in _run_code
exec(code, run_globals)
File "/usr/local/lib/python3.5/dist-packages/pytradfri-4.0.3-py3.5.egg/pytradfri/main.py", line 26, in
File "/usr/local/lib/python3.5/dist-packages/pytradfri-4.0.3-py3.5.egg/pytradfri/api/libcoap_api.py", line 156, in generate_psk
File "/usr/local/lib/python3.5/dist-packages/pytradfri-4.0.3-py3.5.egg/pytradfri/api/libcoap_api.py", line 93, in request
File "/usr/local/lib/python3.5/dist-packages/pytradfri-4.0.3-py3.5.egg/pytradfri/api/libcoap_api.py", line 82, in _execute
pytradfri.error.RequestTimeout

Do you have any idea by this log what the problem is?

Is there a planning for these breaking bugs? I'd offer to do it myself but I fear this kind of stuff is beyond my capabilities.
@Siopaos from your error: psk = api_factory.generate_psk(sys.argv[2])
It looks like it still tries to generate a new PSK. Did you save the one from @ggravlingen his temporary bugfix in a file called gateway_psk.txt in the pytradfri root? If you did can you double check if it actually attempts to use it?

@Siopaos & @Lakitna:
Have you installed this first?
pip install -r requirements.txt
(installing aiocoap==0.4a1 and DTLSSocket==0.1.4)
I had the same error but, if I remember correctly, after this it was working.

Update: I've done an implementation in pytradfri of the PR below from the Home Assistant project by @NovapaX. It's working locally and I will push (and merge to main branch) as soon as I've finished the PR on color management.
https://github.com/home-assistant/home-assistant/pull/10414

@Lakitna , dank je voor de tip. :)
I think I did, but it still doesn't work. I will try to double check it when I have some more time.
@badblocks  yes I installed those, didn't help me though. also thanks for your hint though. :)

This is working in my environment to generate psk and is leaning on the implementation in Home Assistant:
https://gist.github.com/ggravlingen/459787e88bab4785fbd1a982970dba1f
Needs some cleanup but will hopefully do the trick.

I edited a gateway_psk.txt in a wrong location, but after I fixed that mistake I still had another error. This one I fixed by editing this part in libcoap_api.py:
def generate_psk(self, security_key):
"""
Generate and set a psk from the security key.
"""
if not self._psk:
existing_psk_id = self._psk_id
self._psk_id = 'Siopaos'
self._psk = 'myPSKwashere'
Now it's finally working. Thanks for the help guys! :-)

Is it a good idea to close this issue?

Please hold off a bit closing it. I'm working on a fix that will avoid (hopefully) these psk-errors.


Database types

https://en.wikipedia.org/wiki/Category:Types_of_databases

https://www.seas.upenn.edu/~zives/03f/cis550/codd.pdf

DB Rankings: https://db-engines.com/en/ranking


musescore: 3.0.5 ->  3.2.3

Motivation for this change
Fixes https://github.com/NixOS/nixpkgs/issues/66545.
Things done

[ ] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nix-review --run "nix-review wip"
[x] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Ensured that relevant documentation is up to date
[x] Fits CONTRIBUTING.md.

Notify maintainers
cc @

@GrahamcOfBorg build musescore


openssl header not found for dune build

I have encounter this issue on my mac that when I tried to install piaf, during dune build, it failed for such error that openssl's rand.h and sha.h not found, even though openssl@3 is installed via homebrew and following path is present<EMAIL_ADDRESS>for header file reference and I ran brew brew link --force openssl@3 to make sure it's linked, but still failed.
computer: apple macbook air m2
OS: macos Sequoia 15.1.1
package manager: brew
shell: bash
A temporary fix is put export<EMAIL_ADDRESS>in ~/.bash_profile

Do you have pkg-config available on your system?

I don't think so. How do I set up pkg-config for openssl?

I think you just need to brew install pkg-config, it will help packages find eachother when building.

sounds good, let me try that

I have pkgconf, and facing the same issue:
$ brew info pkgconf openssl
==> pkgconf: stable 2.3.0 (bottled), HEAD
...
Installed
...
==> openssl@3: stable 3.4.0 (bottled)
...
Installed

Error:
$ opam install --yes piaf
The following actions will be performed:
  ∗ install piaf 0.2.0

<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><>  🐫
⬇ retrieved piaf.0.2.0  (cached)
[ERROR] The compilation of piaf.0.2.0 failed at "dune build -p piaf -j 7 @install".

#=== ERROR while compiling piaf.0.2.0 =========================================#
# context     2.1.6 | macos/arm64 | ocaml-base-compiler.5.2.1 | https://opam.ocaml.org#a66a58bdc3f82c934381148025d7ae4282c5ef1f
# path        ~/.opam/dream-dev/.opam-switch/build/piaf.0.2.0
# command     ~/.opam/opam-init/hooks/sandbox.sh build dune build -p piaf -j 7 @install
# exit-code   1
# env-file    ~/.opam/log/piaf-74964-d7a2ce.env
# output-file ~/.opam/log/piaf-74964-d7a2ce.out
### output ###
# [...]
# lib/stubs/piaf_openssl_sha.c:37:10: fatal error: 'openssl/sha.h' file not found
# #include <openssl/sha.h>
#          ^~~~~~~~~~~~~~~
# 1 error generated.
# File "lib/dune", line 24, characters 28-45:
# 24 |   (names piaf_bigarray_read piaf_openssl_rand piaf_openssl_sha piaf_fdutils)))
#                                  ^^^^^^^^^^^^^^^^^
# (cd _build/default/lib && /usr/bin/cc -O2 -fno-strict-aliasing -fwrapv -pthread -pthread -D_FILE_OFFSET_BITS=64 -O2 -fno-strict-aliasing -fwrapv -pthread -pthread -g -I /Users/yawarquadiramin/.opam/dream-dev/lib/ocaml -I /Users/yawarquadiramin/.opam/dream-dev/lib/angstrom -I /Users/yawarquadiramin/.opam/dream-dev/lib/base64 -I /Users/yawarquadiramin/.opam/dream-dev/lib/base64/rfc2045 -I /User[...]
# lib/stubs/piaf_openssl_rand.c:37:10: fatal error: 'openssl/rand.h' file not found
# #include <openssl/rand.h>
#          ^~~~~~~~~~~~~~~~
# 1 error generated.

pkgconf seems to be in order:
$ pkg-config --variable pc_path pkg-config
/opt/homebrew/lib/pkgconfig:/opt/homebrew/share/pkgconfig:/usr/local/lib/pkgconfig:/usr/lib/pkgconfig:/opt/homebrew/Library/Homebrew/os/mac/pkgconfig/14

$ cat /opt/homebrew/lib/pkgconfig/openssl.pc
<EMAIL_ADDRESS>exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include

$ ls<EMAIL_ADDRESS>...
rand.h
...
sha.h
...

I'm not sure that dune-configurator will use pkg-config if you have homebrew installed. That could be the issue here, but I haven't verified.

Hmm, so ssl is using dune-configurator to grab the C header and library paths (and it installed successfully): https://github.com/savonet/ocaml-ssl/blob/72c275c6dcc98fca5a20a0676f521a0b2f877ccb/src/dune
But Piaf is not: https://github.com/anmonteiro/piaf/blob/e1fa28d0d524319e261dd6ff7b3a39462ad5dbd8/lib/dune
Could that be it?
$ opam switch
#  switch                                                         compiler                                            ...
→  5.2.1                                                          ocaml-base-compiler.5.2.1,ocaml-options-vanilla.1   5.2.1
...

$ opam list | rg ssl
conf-libssl             4            Virtual package relying on an OpenSSL library system installation
eio-ssl                 0.3.0        OpenSSL binding to EIO
lwt_ssl                 1.2.0        OpenSSL binding with concurrent I/O
ssl                     0.7.0        Bindings for OpenSSL

Maybe? Doesn’t sound likely since Piaf depends on ssl so it should inherit the include/link flags no?

Trying it out locally

Added, now getting a different error:
$ dune test
File "lib/dune", line 24, characters 9-27:
24 |   (names piaf_bigarray_read piaf_openssl_rand piaf_openssl_sha piaf_fdutils)
              ^^^^^^^^^^^^^^^^^^
Warning: The flag set for these foreign sources overrides the `:standard` set
of flags. However the flags in this standard set are still added to the
compiler arguments by Dune. This might cause unexpected issues. You can
disable this warning by defining the option `(use_standard_c_and_cxx_flags
<bool>)` in your `dune-project` file. Setting this option to `true` will
effectively prevent Dune from silently adding c-flags to the compiler
arguments which is the new recommended behaviour.
...
File "multipart/multipart.mli", line 32, characters 24-58:
32 | module Multipart_form = Piaf_multipart_form.Multipart_form
                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Error: Unbound module Piaf_multipart_form.Multipart_form
File "multipart/pp.ml", line 1, characters 24-58:
1 | module Multipart_form = Piaf_multipart_form.Multipart_form
                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Error: Unbound module Piaf_multipart_form.Multipart_form

Investigating...

@yawaramin clone with submodules?

Whoops. Will retry after getting submodules.

OK all tests successful. Will send a PR.


Increase language clarity in challenge "Basic Javascript: Iterate Through an Array with a For Loop"

[ x] I have read freeCodeCamp's contribution guidelines.
[x ] My pull request has a descriptive title (not a vague title like Update index.md)
[x ] My pull request targets the master branch of freeCodeCamp.
[x ] None of my changes are plagiarized from another source without proper attribution.
[ x] All the files I changed are in the same world language (for example: only English changes, or only Chinese changes, etc.)
[ x] My changes do not use shortened URLs or affiliate links.

Closes #36030

Just to summarize, we now have the following 4 suggestions:
Version No. 1 (my original suggestion)

Remember that arrays have zero-based indexing, which means the last index of the array is length - 1. Our condition for this loop is i < arr.length, which stops the loop when i is equal to length.

Version No. 2 (the OP's counter suggestion)

Remember that an array's first index is 0, not 1. That means that if i is your array's index, then the last the last defined index will be length - 1. That also means that your for loop should stop running when i > length - 1.

Version No. 3 (@ojeytonwilliams' suggestion)

Remember that arrays have zero-based indexing, which means the last index of the array is length - 1. Our condition for this loop is i < arr.length, which stops the loop when i is equal to length.  In this case the last iteration has i === 4 and outputs 6 to the console.

Version No. 4 (@thecodingaviator's suggestion)

Remember that arrays have zero-based indexing, which means the last index of the array is length - 1. Our condition for this loop is i < arr.length, which stops the loop when i is equal to length.  In this case the last iteration is i === 4 i.e. when i becomes equal to arr.length and outputs 6 to the console.

It is time to pick one and not accept any more suggestions.  I am fine with version 3 or 4.

@RandellDawson I'm fine with @thecodingaviator's last suggestion (version 4).

I made the suggested changes here. I also removed the strings we don't use in the tests and a few empty lines to clean up the file.

Thanks for contributing to the freeCodeCamp repository. Congratulations on your first PR! 🎊
Look forward to more contributions from you! ✈