text:
Use release_path instead of current_path

This solves the issue of pm2 restart not getting the new current directory

Does this actually work? I'm seeing the same path when I run pm2 info after a restart. I ended up having to do this:
namespace :deploy do
  desc 'Restart application'
  task :restart do
    invoke 'pm2:stop'
    invoke 'pm2:start'
  end

  after :publishing, :restart
end

but it's messy (leaves old PM2 processed hanging around).

I did only a manual test last time I touched this.
I migrated all my projects to docker based deployments. I would be very thankful if you could ensure and fix this buggy behaviour.
Thanks a lot.

authors: ajimix jstewart tomhanoldt


text:
Search result page goes blank after refreshing any random photo details page.

Describe the bug
Search result page goes blank after refresehing any random photo details page.
To Reproduce

Go to https://ccsearch.creativecommons.org/
Search for any image and then click any random image.
Refresh the photo detail page and Go Back
See error

Expected behavior
Results should appear after that also
Screenshots

Desktop (please complete the following information)

OS : Ubuntu
Browser Chrome

Additional context
Want to work on it :)

Thanks for reporting this :) I'm gonna close it since it's essentially a duplicate of #673. It's not an exact duplicate, but I think the issue that's causing this will be fixed by work on #673.

source: gharchive/issue

authors: abhisheknaiidu akmadian

repo: creativecommons/cccatalog-frontend

license: MIT

license_type: permissive

license_source: github-api


text:
change front page text to "explore CC platforms"

Currently says "explore CC partners" under use & remix
Also, change "partners" wherever else on the site to "platforms" where relevant.. I've changed on /platform but not sure where else it pops up..

fixed

authors: janeatcc little-wow


text:
case law database gone

https://wiki.creativecommons.org/wiki/Case_Law

@sarahpearson any idea who was updating this "database"?

I think various past lawyers at CC did at times, and then also probably some affiliates.

Lots of lawyers have, including Kat, me, Aurelia, and I had thought Sarah but she doesn't seem to remember so I must be mistaken.  And yes, affiliates have.  I can be in charge of it. We use it a lot, at least I do whenever I get an adoption question around "are the licenses enforceable?", and so we need to keep it.

Cool. All of the content is there, we'll need to add some better instructions on how to add future cases.

The cases can be found using the category, which is linked from the page a couple of times.
I've added some basic (links to) instructions for adding new cases.

Thanks, Rob!!

authors: janeatcc mattl peterspdx robmyers sarahpearson

repo: creativecommons/wiki

license_source: bigquery


text:
Switch are broke when in a text-center div

Hi I don't know if this is a bug or not but when I put the Switch component  in a text-center div it broke when turn off
the code:

when switch off:

when switch on it behave normal:

I am using material-tailwind with vite. Thank you

I'm seeing the same problem in Next 14.1.0 and material-tailwind/react 2.1.9

repo: creativetimofficial/material-tailwind


text:
Email field on login page should pre-populate after sign-up process

[x] Email field on login page should pre-populate with registered user's email after sign up process.

Tested on DEV environment and changes look fine
https://github.com/credebl/studio/assets/133863994/bcdfb9c6-b1b7-41ea-b484-c78f388f3e1d

repo: credebl/studio


text:
Update to LuciBase.py ; LuciWVT.py and LuciFit.py

Added new improvements for the WVT functions as well as the ability to freeze the initial conditions of velocity and broadening for the fitting procedure.

Looking good. I will handle merge conflicts later on today and the confirm the PR.

source: gharchive/pull-request


text:
Workergroup: Support for extraConfigMapMounts

Add Support for extraConfigMapMounts in workergroup chart config to provide a mechanism for external configuration/file injection

Added in 3d3d70f

authors: bdalpe stevelitras

repo: criblio/helm-charts


text:
Ignore test_utils to compute coverage

This change is

Coverage decreased (-10.1%) to 62.419% when pulling 44d7eb291f8e2f4d9431f2ab1ee2455ae4b845d0 on unbrice:tox into b34c3aa6565eca192be112d7d396bebf29978deb on criteo:master.

Coverage decreased (-1.02%) to 62.419% when pulling 2d327391906095882ce84c811a4a0dff93351559 on unbrice:tox into 8d21658f4a373f95dd77740c90ebb37842e50e0e on criteo:master.

Coverage decreased (-1.02%) to 62.419% when pulling 41ecb7ef7c0d6a9baf4b4a8c6392104579ebd282 on unbrice:tox into 8d21658f4a373f95dd77740c90ebb37842e50e0e on criteo:master.

Previously, coveralls wrote…
>
> [![Coverage Status](https://coveralls.io/builds/6247997/badge)](https://coveralls.io/builds/6247997)
>
> Coverage decreased (-1.02%) to 62.419% when pulling **41ecb7ef7c0d6a9baf4b4a8c6392104579ebd282 on unbrice:tox** into **8d21658f4a373f95dd77740c90ebb37842e50e0e on criteo:master**.
>

Reviewed 1 of 3 files at r1, 1 of 2 files at r2, 1 of 1 files at r3.
Review status: all files reviewed at latest revision, all discussions resolved.

Comments from Reviewable

authors: coveralls natbraun unbrice

repo: criteo/biggraphite


text:
Center boxes within the card.

Fixes #102 .

Two comments:

This is subjective, some people might like left-aligned boxes (all other content is left-aligned)
This is a breaking change, the alignment needs to be a new parameter, e.g., boxes | [count] | [size] | [alignment]

Interesting!  I didn't even know size was a parameter.  I'll update the PR to make alignment a feature choice today.

Closing this. Will reopen a more appropriate PR.

authors: crobi kkragenbrink

repo: crobi/rpg-cards


text:
Quaternation issues?

Following a thread posted on forums.gta5-mods.com, it seems ScriptHookVDotNet have some problems calculating quaternions in some particular scenarios.
More exactly —and to repost an example in wrote there—, I firstly converted a Menyoo-based map to .ymap (Los Santos Electric Railway [Replace]洛圣都电气化铁路 to be exact) but two specific replaced items aren't rotated in-game (rail catenaries replacing prop_cs_20m_rope.ydr and prop_cs_30m_rope.ydr in \Grand Theft Auto V\mods\x64c.rpf\levels\gta5\props\lev_des\lev_des.rpf), standing always in a horizontal position when loaded as addon map.
However they are correctly rotated/shifted when loaded in both Menyoo or Map Editor in-game or when displayed in the Codewalker app.
Another user also reported the same problem while exporting their map as addon.
Does this quaternation issue is related to a bug within ScriptHookVDotNet?

@CalicoApricot
I have fixed issues on quaternions in PR #773 #774 #775 .
Can you verify one again, if the issues are still persisting ?

repo: crosire/scripthookvdotnet

license: Zlib


text:
Add unprovide

This adds the "unprovide" feature, and fixes some minor cleanup with unsubscribe.

@urbanpete awesome. thanks! fills in another gap;)

authors: oberstet urbanpete

repo: crossbario/autobahn-cpp


text:
Kubeconfig in connection secret is not working in the latest (0.4) version

What happened?
The kubeconfig in connection secrets seems to be missing username and password (both of them are empty). When I try to use the kubeconfig locally using cli to access the cluster, I am asked for username and password.
When I looked into config of this cluster in GKE console, Basic Authentication was disabled.
How can we reproduce it?
Use crossplane 0.6 and stack-gcp 0.4. Try provisioning a cluster using the following cluster claim and cluster class
# class
apiVersion: container.gcp.crossplane.io/v1beta1
kind: GKEClusterClass
metadata:
  labels:
    className: "app-kubernetes-class"
  name: app-kubernetes-class
  namespace: crossplane-system
specTemplate:
  forProvider:
    location: us-central1
  providerRef:
    name: gcp-provider
  reclaimPolicy: Delete
  writeConnectionSecretsToNamespace: crossplane-system
---
# claim
apiVersion: compute.crossplane.io/v1alpha1
kind: KubernetesCluster
metadata:
  name: app-kubernetes
  namespace: crossplane-system
  annotations:
    crossplane.io/external-name: foobarbaz
spec:
  classSelector:
    matchLabels:
      className: "app-kubernetes-class"
  writeConnectionSecretToRef:
    name: app-kubernetes
---
# nodepool
apiVersion: container.gcp.crossplane.io/v1alpha1
kind: NodePool
metadata:
  name: gke-nodepool
  namespace: crossplane-system
spec:
  providerRef:
    name: gcp-provider
  writeConnectionSecretToRef:
    name: gke-nodepool
    namespace: crossplane-system

  forProvider:
    cluster: "projects/myproject-12345/locations/us-central1/clusters/foobarbaz"
    initialNodeCount: 2

Check the cluster connection secret using
$ kubectl get secret app-kubernetes -o yaml

username and password field are empty.
What environment did it happen in?

I am running crossplane on minikube
Crossplane version: 0.6
Cloud provider: GCP
Kubernetes version (use kubectl version)

Client Version: version.Info{Major:"1", Minor:"16", GitVersion:"v1.16.2", GitCommit:"c97fe5036ef3df2967d086711e6c0c405941e14b", GitTreeState:"clean", BuildDate:"2019-10-15T19:18:23Z", GoVersion:"go1.12.10", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.0", GitCommit:"e8462b5b5dc2584fdcd18e6bcfe9f1e4d970a529", GitTreeState:"clean", BuildDate:"2019-06-19T16:32:14Z", GoVersion:"go1.12.5", Compiler:"gc", Platform:"linux/amd64"}

Kubernetes distribution: GKE

More details
I tried provisioning cluster manually first, by providing username in masterAuth by referring to this
https://github.com/crossplaneio/stack-gcp/blob/a6131969f4d1b2d6cbb0abd84cf4d452a1400367/pkg/clients/gke/gke.go#L98
through GKE's web api (https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters/create). If I provide a username in the API here, sure enough Basic Authentication is enabled and I get username and password.
This makes me wonder if there's some problem on our side. I am looking into the codebase to check if there's something wrong.
Update 1

Above code related to masterAuth does is for v1alpha3, v1beta1 does not seem to have Basic Authentication enabled by default

https://github.com/crossplaneio/stack-gcp/blob/a6131969f4d1b2d6cbb0abd84cf4d452a1400367/pkg/clients/cluster/cluster.go#L255
Update 2

v1beta1 seems to have changed authentication method to using certificates but the config generated using clientcmd is still using username and password which is not present. v1beta1 seems to use clientCert and clientKey but since it is not present in the config, the config is not working.
https://github.com/crossplaneio/stack-gcp/blob/a6131969f4d1b2d6cbb0abd84cf4d452a1400367/pkg/clients/cluster/cluster.go#L1102

Update 3

There is code for clientCert and clientKey. The problem seems to be somewhere else.
https://github.com/crossplaneio/stack-gcp/blob/a6131969f4d1b2d6cbb0abd84cf4d452a1400367/pkg/clients/cluster/cluster.go#L1127

Hey @vadasambar! Thanks for opening this issue and apologies for any inconvenience you have experienced. I want to make sure I have a good understanding of where you are at in your troubleshooting now following your updates. It sounds like the connection Secret generated does have enough information to connect to the GKE cluster (specifically when a KubernetesApplication is scheduled to it), but you would like for it to provide a username / password for your own manual connection.
If this is indeed the state you have found yourself in, it is actually by design right now while we determine a secure way to specify credentials on creation for v1beta1 resources. In the mean time, we do not support setting a Username and Password per security guidelines on GKE documentation. You can however request issuance of a client certificate with the following stanza:
masterAuth:
  clientCertificateConfig:
    issueClientCertificate: true

Let me know if this helps!

It sounds like the connection Secret generated does have enough information to connect to the GKE cluster (specifically when a KubernetesApplication is scheduled to it), but you would like for it to provide a username / password for your own manual connection.

I want a way to connect to the provisioned cluster. It does not have to be username/password.
masterAuth:
  clientCertificateConfig:
    issueClientCertificate: true

I will try this. Thank you!
I could not find anything related to this in the release notes nor the documentation. I came across this just a while before I read your reply.

I do get the cert fields populated now. Thank you!
But when I used the raw kubeconfig in cli (I wrote it to config file)
$ kubectl get po --kubeconfig=./config
Error from server (Forbidden): pods is forbidden: User "client" cannot list resource "pods" in API group "" in the namespace "default"

Thread on slack around this issue: https://crossplane.slack.com/archives/CEG3T90A1/p1578059370045600

As far as I understand, there are 3 ways to authenticate to a GKE cluster (please correct me if I'm wrong):

Basic auth: simple username and password.

We do not support this for now until we have Secret input, which should be available in the short term.

Client cert: a user with almost no permission.

I run into this when I manually create the GKE cluster from the console as well, so, that's how they work and we support that. It's a bad UX but not much we can do for that I guess.

IAM auth: this is what gcloud uses; your user in GCP is actually a user in GKE cluster as well.

In the kubeconfig that gcloud generates, there is an auth provider referred that authenticates you. In kubeconfig, it looks something like this:

- name: gke_crossplane-playground_us-central1_foobarbaz
  user:
    auth-provider:
      config:
        access-token: <REDACTED>
        cmd-args: config config-helper --format=json
        cmd-path: /Users/username/sdks/google-cloud-sdk/bin/gcloud
        expiry: "2020-01-03T13:09:59Z"
        expiry-key: '{.credential.token_expiry}'
        token-key: '{.credential.access_token}'
      name: gcp

I am not sure whether it's possible but we can investigate that in case neither basic auth nor client cert is enabled, how we can generate a kubeconfig for access that doesn't depend on gcloud. I mean, in the end there is a Kubernetes user/serviceaccount in the cluster that you're using in any scenario, so, it should be possible to fetch its raw credentials given that we have the necessary GCP credentials. The most straight-forward but definitely not the best way is that gke controller could authenticate to the cluster using the credential in Provider(via Google GKE client or even gcloud), find that user and fetch its credentials.
I found this but didn't dig much https://gist.github.com/ahmetb/548059cdbf12fb571e4e2f1e29c48997

I mean, in the end there is a Kubernetes user/serviceaccount in the cluster that you're using in any scenario

I'm fairly confident this isn't the case, unfortunately. The cluster doesn't actually have knowledge of what users exist - it typically defers to some external authentication system for that. For example the CN of any valid auth certificate will be used as the username when cert auth is in use.

Slack thread about discussion around the fix: https://crossplane.slack.com/archives/CKXQHM7U3/p1578063791101100

The cluster doesn't actually have knowledge of what users exist - it typically defers to some external authentication system for that.

Yes this seems to be the case, one more thing to learn for me. Thanks!

I reopen the subject as the slack threads are not accessible anymore (I don't know if buying pro will give me access to it?). I'am facing the same problem of client certificate with no sufficient permissions. Could someone explain how to connect to the cluster with enough permissions (ideally admin) wihtout using gcloud? All other cloud providers provide sufficient token or certificate to connect but it seems that gcp is a bit harder to use. Thank you.

Hello, we are facing the same problem
Please, can  anyone tell us how to solve this problem ?
Than you 🙏🏻

authors: Agarnier22 cdesaintleger hasheddan muvaf negz vadasambar

repo: crossplane-contrib/provider-gcp


text:
Pending deletion of DisposableRequest

What happened?
I am not able to deleting a DisposableRequest. If I do kubectl delete of a DisposableRequest, the http provider pods logs say some external resource has been scheduled for deletion but not deleted yet. The provider to be able to create the output secret.
How can we reproduce it?

Here is the yaml of DisposableRequest and ProviderConfig
apiVersion: http.crossplane.io/v1alpha2
kind: DisposableRequest
metadata:
  name: httpbin-moulick
spec:
  deletionPolicy: Delete
  forProvider:
    url: "https://httpbin.org/get"
    method: GET
    headers:
      Content-Type:
        - application/json
    expectedResponse: '.body.url == "https://httpbin.org/get"'
    rollbackRetriesLimit: 5
    waitTimeout: 5m
    secretInjectionConfigs:
      - secretRef:
          name: notification-response
          namespace: moulick-test
        secretKey: origin
        responsePath: .body.origin
  providerConfigRef:
    name: default
---
apiVersion: http.crossplane.io/v1alpha1
kind: ProviderConfig
metadata:
  name: default
spec:
  credentials:
    source: None

Logs
2024-09-25 13:21:42 1.0s ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
provider-http-398cee502993-6449577c4c-rwsbr package-runtime 2024-09-25T11:21:43Z	DEBUG	provider-http	Reconciling	{"controller": "managed/disposablerequest.http.crossplane.io", "request": {"name":"httpbin-moulick"}}
provider-http-398cee502993-6449577c4c-rwsbr package-runtime 2024-09-25T11:21:43Z	DEBUG	provider-http	Successfully requested deletion of external resource	{"controller": "managed/disposablerequest.http.crossplane.io", "request": {"name":"httpbin-moulick"}, "uid": "aed54305-5a4d-4634-9de1-9e2ce54c5580", "version": "123647023", "external-name": "httpbin-moulick", "deletion-timestamp": "2024-09-25 11:21:40 +0000 UTC"}
provider-http-398cee502993-6449577c4c-rwsbr package-runtime 2024-09-25T11:21:43Z	DEBUG	events	Successfully requested deletion of external resource	{"type": "Normal", "object": {"kind":"DisposableRequest","name":"httpbin-moulick","uid":"aed54305-5a4d-4634-9de1-9e2ce54c5580","apiVersion":"http.crossplane.io/v1alpha2","resourceVersion":"123647045"}, "reason": "DeletedExternalResource"}
2024-09-25 13:21:44 2.0s ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
provider-http-398cee502993-6449577c4c-rwsbr package-runtime 2024-09-25T11:21:47Z	DEBUG	provider-http	Reconciling	{"controller": "managed/disposablerequest.http.crossplane.io", "request": {"name":"httpbin-moulick"}}
provider-http-398cee502993-6449577c4c-rwsbr package-runtime 2024-09-25T11:21:47Z	DEBUG	provider-http	Successfully requested deletion of external resource	{"controller": "managed/disposablerequest.http.crossplane.io", "request": {"name":"httpbin-moulick"}, "uid": "aed54305-5a4d-4634-9de1-9e2ce54c5580", "version": "123647046", "external-name": "httpbin-moulick", "deletion-timestamp": "2024-09-25 11:21:40 +0000 UTC"}
provider-http-398cee502993-6449577c4c-rwsbr package-runtime 2024-09-25T11:21:47Z	DEBUG	events	Successfully requested deletion of external resource	{"type": "Normal", "object": {"kind":"DisposableRequest","name":"httpbin-moulick","uid":"aed54305-5a4d-4634-9de1-9e2ce54c5580","apiVersion":"http.crossplane.io/v1alpha2","resourceVersion":"123647098"}, "reason": "DeletedExternalResource"}
2024-09-25 13:21:48 4.0s ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
provider-http-398cee502993-6449577c4c-rwsbr package-runtime 2024-09-25T11:21:55Z	DEBUG	provider-http	Reconciling	{"controller": "managed/disposablerequest.http.crossplane.io", "request": {"name":"httpbin-moulick"}}
provider-http-398cee502993-6449577c4c-rwsbr package-runtime 2024-09-25T11:21:55Z	DEBUG	provider-http	Successfully requested deletion of external resource	{"controller": "managed/disposablerequest.http.crossplane.io", "request": {"name":"httpbin-moulick"}, "uid": "aed54305-5a4d-4634-9de1-9e2ce54c5580", "version": "123647099", "external-name": "httpbin-moulick", "deletion-timestamp": "2024-09-25 11:21:40 +0000 UTC"}
provider-http-398cee502993-6449577c4c-rwsbr package-runtime 2024-09-25T11:21:55Z	DEBUG	events	Successfully requested deletion of external resource	{"type": "Normal", "object": {"kind":"DisposableRequest","name":"httpbin-moulick","uid":"aed54305-5a4d-4634-9de1-9e2ce54c5580","apiVersion":"http.crossplane.io/v1alpha2","resourceVersion":"123647192"}, "reason": "DeletedExternalResource"}

As you see in the logs, the Successfully requested deletion of external resource keeps repeating and never finishes
What environment did it happen in?
Client Version: v1.17.0
Server Version: v1.17.1

Cloud provider: AWS EKS
Kubernetes version : Server Version: v1.29.7-eks-a18cd3a
Kubernetes distribution (e.g. Tectonic, GKE, OpenShift): EKS

Does it mandatorily need deletionPolicy: Orphan, if so, why?

This is not a bug. The DisposableRequest is designed to send one-time or continuous requests, such as obtaining a JWT or other data, rather than provisioning an actual external resource.
For this reason, the deletionPolicy field is mandatory. If you intend to provision an actual resource, you should use Request.

authors: Moulick arielsepton

repo: crossplane-contrib/provider-http


text:
Add guide for upgrading to v0.18.x

Description of your changes
Adds a guide for handling breaking API changes while upgrading to v0.18.x.
This PR also fixes an issue with late initializing during importing a resource which causes a nil pointer exception.
I have:

[x] Read and followed Crossplane's contribution process.
[x] Run make reviewable test to ensure this PR is ready for review.

How has this code been tested
In progress...

[x] Test clean migration by upgrading from v0.17.0 to latest master

[x] With no managed resource

[ ] Test with broken package upgrade from v0.17.1 to latest master

[x] Revert with no managed resource
[ ] Revert with nodepool and gkecluster as managed resources
[x] Fix Upgrade with no managed resource
[ ] Fix Upgrade with nodepool and gkecluster as managed resources, import as stable

[ ] Test clean migration by upgrading from v0.17.1 to latest master

[x] With no managed resource
[x] With a Bucket & CloudMemorystore - no nodepool or gkecluster
[x] With nodepool and gkecluster as managed resources, import as stable
[x] With nodepool and gkecluster as managed resources, import as beta
[ ] With nodepool and gkecluster as part of a composition, import as stable

Install platorm-ref-gcp configuration using package registry.upbound.io/upbound/platform-ref-gcp:v0.0.5
Create example network and cluster resources there.
Follow migration guide and upgrade to provider-gcp latest master
Upgrade configuration package to registry.upbound.io/hasan/test-platform-ref-gcp:v0.0.6 which is built from this PR

Tested with the scenarios listed in the PR description. All passed except the one with composition seems to be a bit tricky, new composition resulted in a new cluster resource ignoring the imported one. I guess I will need one more step to make sure that previous composite resources bind the imported ones.
kubectl get clusters.container.gcp.crossplane.io
NAME                                   READY   SYNCED   STATE     ENDPOINT        LOCATION   AGE
platform-ref-gcp-cluster-mwx8t-5j9hv   True    True     RUNNING   34.102.44.105   us-west2   11m # <--- imported one
platform-ref-gcp-cluster-mwx8t-bzk59   False   False                              us-west2   10m

repo: crossplane/provider-gcp


text:
[usecase] Combine CSS style for app version

Combine two app version style together
Remove useless css file

This sounds like you incorporate some code snippets from 3rd party to our licensed file, right?

Yes, we copy part css from bootstrap, and do some changes and add ours css style

@haoxli shall we close this now or you rewrite it?

Close this.

authors: haoxli zqzhang

repo: crosswalk-project/crosswalk-test-suite


text:
[Crosswalk-13][usecase-webapi] Update WebStorage.feature

Impacted tests(approved): new 0, update 1, delete 0
Unit test platform: Crosswalk Project for Android 15.43.355.0
Unit test result summary: pass 1, fail 0, block 0
BUG=https://crosswalk-project.org/jira/browse/XWALK-4379

Unit test platform: Crosswalk Project for Android 15.43.355.0

Shall use 13.* image.


text:
Shared library check using PackageManager

This is a reworking of https://github.com/crosswalk-project/crosswalk/pull/2718.  In order to avoid the licensing issue, this makes the assumption that the PackageManager is trustworthy and checks that signature.

Is this still required for the shared mode implementation, or was it replaced by another PR? @terriko @lincsoon

I assumed that @lincsoon will be rolling it into a more comprehensive patch with actual signature checks, but I can clean this up so it's mergable if needed.

that might be the case, the overall patch about shared mode is https://github.com/crosswalk-project/crosswalk/pull/2780, let's wait for @lincsoon to comment

Because this PR is based on old implementation, I already prepared another patch upon the approach from Terri in my new implementation of shared mode. As #2780 has been merged, I will soon send the PR about security check.

Excellent, this can be closed then.

authors: baleboy lincsoon terriko

repo: crosswalk-project/crosswalk


text:
feat: Add config to enable instant file download

Issue: https://github.com/crowdin/crowdin-api-client-ruby/issues/66

Hi @artem-vavilov, thanks for the contribution!
This download file functionality doesn't fit well into this API client, and it's something that's unique to this client. None of our other API clients have it, so I've even thought about removing it.
I'm not sure if it's a good idea to introduce the new config parameter, so I'd suggest changing the behavior a little bit.
Let's download the file only in cases when the destination parameter is specified. In that case, we'll still return the path to the downloaded file.
If the destination parameter is not passed - return the full API response.
For example, with the destination:
crowdin.download_file(file_id: your_file_id, destination: your_destination, project_id: your_project_id)

# -> should return the downloaded file path.

Without the destination:
crowdin.download_file(file_id: your_file_id, project_id: your_project_id)

# -> should return an object from the response

# {
#   "url": "https://production-enterprise-importer.downloads.crowdin.com/992000002/2/14.xliff?......",
#   "expireIn": "2019-09-20T10:31:21+00:00",
#   "etag": "ebd69a1b7e4c23e6d17891a491c94f832e0c82e4692dedb35a6cd1e624b62"
# }

Please let me know what you think about this!

If the destination parameter is not passed - return the full API response.

@andrii-bodnar I also considered this option but rejected it because it would dramatically change the behavior of some methods.
However, if you don't mind, I'm happy to implement this!

@artem-vavilov yes, it could be a bit risky. We'll try to release it by adding a warning message to release notes about this change.
Could you please take a look at the #67 PR as well?
It would be great if we could release both of these fixes within a single release.

New PR: https://github.com/crowdin/crowdin-api-client-ruby/pull/69

authors: andrii-bodnar artem-vavilov

repo: crowdin/crowdin-api-client-ruby


text:
Handle Warning format in mysql-logs.yaml

2023-11-21 19:42:20 134334 [Warning] Access denied for user 'root'@'34.140.248.32' (using password: NO)

https://mariadb.com/kb/en/server-system-variables/#log_warnings
log_warnings=3

Could we have a test log line and update asserts?

Could we have a test log line and update asserts?

In fact I noticed that I should have looked at MariaDB, I did a mistake.
Anyway, here is a new test for a non local IP

I fixed the documentation, everything works now

authors: LaurenceJJones williamdes

repo: crowdsecurity/hub


text:
Render HTML from JSX on the server

WHAT

Render HTML from JSX on the server using express-react-views

WHY

To make migrating to SPA easier

I think it's easier to using SSR after rewriting Swig to JSX than changing Swig to a React component at once

This PR depends on #634

client/util still exists after 'Rename to utils'.

when I open Storybook,  it is crashed because APP_CONTEXT is missing.

TypeError: Cannot read property 'user' of undefined
    at Object.lookup (http://localhost:6001/main.7ded10f007708373fdce.bundle.js:14183:33)
    at http://localhost:6001/vendors~main.7ded10f007708373fdce.bundle.js:192452:54
    at Array.forEach ()
    at Browser.detect (http://localhost:6001/vendors~main.7ded10f007708373fdce.bundle.js:192450:22)
    at I18n.changeLanguage (http://localhost:6001/vendors~main.7ded10f007708373fdce.bundle.js:194608:47)
    at load (http://localhost:6001/vendors~main.7ded10f007708373fdce.bundle.js:194460:16)
    at I18n.init (http://localhost:6001/vendors~main.7ded10f007708373fdce.bundle.js:194474:9)
    at http://localhost:6001/main.7ded10f007708373fdce.bundle.js:14187:136
    at Module../client/components/Admin/AdminPage.stories.tsx (http://localhost:6001/main.7ded10f007708373fdce.bundle.js:94:54)
    at __webpack_require__ (http://localhost:6001/runtime~main.7ded10f007708373fdce.bundle.js:786:30)

I created utils directory. But I should have to keep its name.
However, It is difficult to revert these changes at the moment because they will be conflicted with other branches. So I'll revert its name after other branches merged.
Anyway, I changed util directory name to utils.
https://github.com/crowi/crowi/pull/639#issuecomment-593399996

For temporary solution, I assigned window.APP_CONTEXT when createAppContext function called.
https://github.com/crowi/crowi/pull/639#issuecomment-593413355

repo: crowi/crowi


text:
How to use NodePlayground Panels?

Hi, I want to use NodePlayground panel.
Is there any documentation? please tell me how to use this panel.

It hasn't been fully developed yet. Stay tuned!!

It should work now! There's documentation in the panel itself. Let us know if you have any questions!

repo: cruise-automation/webviz


text:
Fix kube-prometheus

chart and values need to be reworked from the original. values transferred from fluxv1 stopped working for some reason. needs investigation.

this is mostly fixed, needs to be divided into smaller issues

repo: crutonjohn/gitops


text:
Authentication

Description
TBD
Steps to Reproduce
Omit
Versions
develop
Additional Information
------------Chinese-----------
需要身份认证，可访问测试链及 Microscope

部署 Nginx

repo: cryptape/cita


text:
fix: cannot parse binance ws endopint like wss://dstream.binance.com/…

let url = Url::parse("wss://dstream.binance.com/stream").unwrap();
assert!(url.port() == None);

Binance endpoint cannot be parsed, it should use port_or_known_default to set default port value.

@soulmachine Maybe we shouldn't enforce a PR to pass Cargo test? I saw a lot of Operation timed out, and seems like GitHub Actions is not stable for sending a request.

Thanks for the bugfix!
Yeah, some tests are failing, so I skipped them and merged your PR.

authors: GhostLee pan93412 soulmachine

repo: crypto-crawler/crypto-crawler-rs


text:
Stricter grammar for Unicode identifier names

Any chracter whose Unicode codepoint is 0xA0 or above is allowed in identifier names (see https://github.com/crystal-lang/crystal/pull/10978#discussion_r674068256). This means the following is valid code:
= 1
puts  # => 1

The above, in turn, is produced by the following Crystal code:
puts "\u200B= 1"
puts "puts \u200B"

That is, the variable's name is just the zero-width space character. To exclude those edge cases I suggest that we implement the Default Identifiers from UAX #31 (revision 35) with the following profile:
<Start> := XID_Start + U+005F
<Continue> := <Start> + XID_Continue
<Medial> :=

The above sets, when restricted to ASCII, are consistent with Crystal's existing lexer rules. Type and constant names must still begin with an ASCII uppercase letter.
For reference, this is also how C++23 does it (with the additional requirement that all identifiers must be in NFC).

https://github.com/crystal-lang/crystal/pull/11508#discussion_r766923604 suggests to remove the Number Letter category from <Start>. I think that's fine.
We can always reconsider and loosen this restriction if there are some legitimate use cases for identifiers starting with number letters.

#11508 has been reverted in  #11687 because it was too restrictive resulting in a breaking change that's unacceptable for a minor release.

Do we really want "most" emojis as identifiers? Ones that contain ZWJs won't be allowed anyway, unless the lexer operates on grapheme clusters and the compiler / standard library supports those sequences. I wouldn't miss being able to name my variables like 😂 and 🌂.
We could simply bring #11508 back but use the new parser warning facilities instead.

authors: HertzDevil straight-shoota

repo: crystal-lang/crystal


text:
Drop globals, make all variables starting with $ pseudo globals aka magic variables

Let's say it: we don't need globals. There are plentiful alternatives to global state and all of them are to prefer. Let's list a few:
# Alternative 1, classic singleton
class Foo
  def self.instance
    new
  end
end

# Alternative 2, module level class variables
# Usually you have some library namespace, we can use that!
module MyLib
  @@foo = initial
  def self.foo
    @@foo
  end

  def self.foo=(value)
    @@foo = value
  end
end

# Alternative 3: "You meant to use a constant"
# Most global usage I observe is perfectly fine with using a constant
# pointing to a mutable datastructure
Foo = {} of String => String

Now we would want to keep $?, $~ and so on, as previously discussed. Let's call them magic variables. But now we got all names starting with $ free, let's allow to define magic variables with any name.
Magic variables...

can't be defined on the toplevel or class/module level, only inside methods.
are visible in the direct caller scope, but not in the scope of the caller's caller.
are visible in the method defining them, but not inside subsequent calls.
can be passed on by the caller to its caller by reassigning them to themselves, $foo = $foo. This fails if there wasn't a call defining $foo prior.

The name magic variable suggest that this is still something to be used with care, not as go to tool over multiple return using a tuple or returning a nice struct. It just replaces the, in a object oriented language, useless concept of global variables with something more useful, while removing inconsistency from the language between pseudo globals ($~, $? etc) and global variables.

I'm in favor (somewhere less than "strongly in favor") of dropping globals, but can you go into the motivations for the things in the bulleted list?

It's essentially the behaviour of the pseudo globals, I just listed it out. Since we want to keep this my proposal is to make all $vars behave that way.

I would drop globals and just keep the few special variables. As their name imply, they are "special" and I wouldn't like having more of those.
On the other hand, globals are pretty useful for counting global things in a program, for example how many times a method was invoked, or benchmarking a single method across a whole program, by writing to a global. These are not "serious" use cases, but practical. They could still be done with a class variable, but you need to write a bit more.

We can also add things like class_property, reducing the overhead to two lines of code and a namespace on the caller side.
module MyLib
  class_property! foo
end

I think this can be closed. We don't have globals anymore. We have some magic vars like $1 and $! but we don't want to have general-purpose magic vars as they make code harder to understand.

authors: asterite jhass will


text:
Inconsistent {{@type}} expansion in macros

If the macro is inside a module, the @type is referring to the container module instead of the type where the macro is expanded.
Running the docs tool with the following code exhibits the differences. But the issue affects also the generated code.
I was expecting to always be the type were the macro is executed (since the otherone can be explicitly mentioned)
module XXX
  macro m
    # This will be XXX (not ideal) `{{@type}}`
    def foo
      {{@type}}
    end
  end
end

macro m
  # This will be Foo (ideal) `{{@type}}`
  def bar
    {{@type}}
  end
end

class Foo
  XXX.m
  m
end

pp! Foo.new.foo # => XXX
pp! Foo.new.bar # => Foo

Extracted from #8994

Right now you can do:
UInt8.slice(1, 2, 3)

That generates:
Slice(UInt8)...

The macro uses {{@type}} to get the UInt8 type.
Essentially, it seems there's no way to fix this unless we have a way to refer to where the macro is called, and where the macro is defined.

Right now self inside macros gives an error because it has no meaning. We could make self work for this purpose: it's the type where the macro is defined. On the other hand, @type is the type where the macro is expanded.
When the macro happens inside a method, like:
class Foo
  def foo
    {{@type}}
  end
end

then @type and self will be the same. In the examples provided by @bcardiff @type will work as he expects it, which I think is what's expected, and self will return XXX inside XXX.m but will give an error saying "there's no self" inside the top-level macro m... just like what happens with regular methods.
However, this is a breaking change.

authors: asterite bcardiff


text:
Allow channels to be closed on blocking select

This PR might deserve a bit of discussion. On the MT recent work, we focus on non-blocking select and I think there were some cases for blocking select that might have slipped.
_, r = Channel.select(ch1.receive_select_action, ch2.receive_select_action)

is equivalent to
select
when r = ch1.receive
when r = ch2.receive
end

and to
_, r = Channel.select([ch1.receive_select_action, ch2.receive_select_action], false)

And it is expected to wait for a send over any ch1 and ch2.
Then, there is a construct for non-blocking select (when an else is present):
select
when r = ch1.receive
when r = ch2.receive
else
  r = Channel::NotReady # this is to match the behaviour of the next example.
end

Or equivalent:
_, r = Channel.select([ch1.receive_select_action, ch2.receive_select_action], true)

For non-blocking select there is no change in the behaviour in this PR.
For blocking select, since closing a channel awakes the fiber, there is a need to loop and re-wait over the channels. This is what is mainly added in this PR.
A decision was made regarding what should happen on blocking select over closed channels: It will generate a runtime exception with the message "All channels are closed on a blocking select".
Additionally, we avoid waiting over already closed channels.
Related to #8231, but the opening issue will still raise since it was a blocking select over a closed channel. But it pushed the think exposed here in the specs.

As a comparison to Go,
select {
case m, e := <-c:
   // ...
}

when the channel is closed, e will inform so. There is an explicit way to know that the channel is been closed. I think in Crystal we prefer to use unions or typed messages when needed to signal that. Otherwise every Channel(T)#receive should return T | Channel::Closed.

We were discussing with @waj about the design.
Another idea is that instead of going the route of this PR, the select could remain loopless and when an awaited channel is closed the select will exit. If the select was using ch.receive then an exception will be raised when closing the channel. If the select was using ch.receive? then a distinguished value will be sent when the channel is closed.
This will be actually more similar to Go in the sense that a close event will awake the select, but will keep the simple API for when the user does not care about channel been closed.
A select with ch.receive? will allow the user to know about which channel is been closed.
Regarding the Channel#receive? there are two alternatives:
a) It returns a Nil when the channel is closed. This will be cumbersome for Channel(Nil) (and any nilable value) since there will be no way to distinguish a message from the closing
b) It returns a Channel::Closed value. So Channel(T)#receive : T and Channel(T)#receive? : T | Closed. The user will need a m = ch.receive? ;  if m.is_a?(Channel::Closed) ... which is a bit more code than if m.

I didn't see select documented anywhere, could you add documentation? (It doesn't have to be in this PR)
It would also be great to document more Channel in the API docs, and the book. People are certainly missing powerful Channel features.
I did try, but I don't know the topic well enough 🤐

@bcardiff I like the simple design: wake up the select, let receive raise and receive? return nil.
For the alternatives, the case of Channel(Nil) is independent of select; we never know whether receive? returns because the channel is closed or you got a value. One must manually check for #closed? or use another type (e.g. Int32). I don't see any benefit for passing an union.

@ysbaddaden that won't work. It is not possible to effectively use close? to check if the state of the channel when received? returned. It could change in between.
That why the alternative is to either
a) use nil as a signal of the closed channel. Which will disallow, in practice, the usage of nilable types as channel messages.
b) introduce Channel::Closed to allow nil as a kind of data.
Either way, an independent ch.receive or ch.receive? (ie: wihout a select) will be blocking.
The non-blocking behaviour is brought by the select.
So the difference between ch.receive and ch.receive? is about how to handle the closing reaction (ie: exception or explicit value)

An alternative is ch.receive { ... } which will invoke the block if the channel is closed. That way you can return any type in the block. This is similar to Hash#fetch, where we have [] (raises), []? (returns nil, not useful if values can be nil) and fetch (if values are nil you can know because the block will or won't be invoked).

I've been iterating on this. As said before

the difference between ch.receive and ch.receive? is about how to handle the closing reaction
there should be no difference whether the channel was closed or is closed while the current fiber is suspended
closing a channel that is been wait will awake the fiber

if that raises an exception or not it depends on whether receive or receive? was used

there will be no loop in the implementation of select
the implementation of blocking and non-blocking select will need to be different functions because their types need to defer.

Channel.select is considered a private API, it should have :nodoc: and its usage should be mainly from a select statement.

The current review of what types is expected can be viewed at: https://gist.github.com/bcardiff/289953a80eb3a0512a2a2f8c8dfeb1db
Closing this PR. I should submit a new one with the above implementation.

authors: asterite bcardiff j8r ysbaddaden


text:
修复2.8.5 log 相关公式部分

修复2.8.5 log 相关公式部分
$log_{n}$ -> $\log_{}{n}$
$log_{n}$ -> $\log_{}{n}$
$log2(n)$ -> $\log_{2}{n}$
$log2(n)$ -> $\log_{2}{n}$
补上常数项遗漏加粗

这个修改感觉没有必要

authors: mancuoj zhoudaixing

repo: csfive/composing-programs-zh


text:
Resolve symlinks when finding scriptdir

If the script is symlinked, the scriptdir will be resolved incorrectly. This has been fixed by doing a 'readlink' as part of the scriptdir resolution.

Thanks!

authors: Nitemice cspeterson

repo: cspeterson/splatmoji


text:
C API

Hey
I would like to use it from Rust. However it doesn't work well with C++.
Could you expose c-api like with sherpa-onnx?
Thanks
By the way I tried to compare native fbank with torchaudio.compliance.kaldi and seems like something is wrong with native fbank it's not identical.
I test it on nemo speaker embedding. with torchaudio fbank I get good results. with native fbank it's not correct.

log
There are 5 speakers in the audio file. it's 16khz mono.
python main.py
--- Pytorch kaldi fbank ---
{'start': 0.788, 'end': 3.994, 'speaker': 1}
{'start': 4.348, 'end': 7.892, 'speaker': 1}
{'start': 9.816, 'end': 14.828, 'speaker': 2}
{'start': 17.106, 'end': 28.193, 'speaker': 3}
{'start': 29.475, 'end': 31.669, 'speaker': 4}
{'start': 32.529, 'end': 33.019, 'speaker': 5}
{'start': 33.458, 'end': 36.242, 'speaker': 4}
{'start': 39.229, 'end': 42.03, 'speaker': 5}
{'start': 46.907, 'end': 48.544, 'speaker': 1}
{'start': 48.848, 'end': 51.294, 'speaker': 1}
--- Native fbank ---
{'start': 0.788, 'end': 3.994, 'speaker': 1}
{'start': 4.348, 'end': 7.892, 'speaker': 1}
{'start': 9.816, 'end': 14.828, 'speaker': 2}
{'start': 17.106, 'end': 28.193, 'speaker': 2}
{'start': 29.475, 'end': 31.669, 'speaker': 2}
{'start': 32.529, 'end': 33.019, 'speaker': 1}
{'start': 33.458, 'end': 36.242, 'speaker': 2}
{'start': 39.229, 'end': 42.03, 'speaker': 2}
{'start': 46.907, 'end': 48.544, 'speaker': 2}
{'start': 48.848, 'end': 51.294, 'speaker': 2}

plots

The compute function is here
The program source is here

It is usually used as a subproject so we don't plan to add C api for it.

Make sure your are using the same parameters as torchaudio.
Don't use default parameters!

Believe me that as long as you use identical parameters, you should get identical results if you give the same input.

Apparently, you are not using the same input for testing and you are not using the same parameters for computing
To give you two examples,

torchaudio is using samples in the range [-32768, 32767] while kaldi_native_fbank is using [-1, 1]

torchaudio is using the hamming window

Please check the code carefully by yourself.

Apparently, you are not using the same input for testing and you are not using the same parameters for computing

Thanks that helped me find it. I inspected it deeply and compared until it was identical input.
Then the features was identical.
I created pyannote-rs for diarization and it turned to be very accurate (Like pyannote).
Maybe you'll find it useful for adapting it to sherpa-onnx

Is there a way I can control kaldi-native-fbank so it will link msvc dynamically?
When trying to link my project with msvc dynamic I get the error
mismatch detected for 'RuntimeLibrary': value 'MT_StaticRelease' doesn't match value 'MD_DynamicRelease' in libknf_rs_sys-7965f34deb79ccd6.rlib(knfc.obj)

Maybe the problem is in the wrapper I wrote

please pass -DBUILD_SHARED_LIBS=ON to cmake.

@thewh1teagle
same issue. fixed with:
cmake -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded -DCMAKE_CXX_FLAGS_RELEASE="/MT" -DCMAKE_C_FLAGS_RELEASE="/MT" ..

authors: Baiyuetribe csukuangfj thewh1teagle

repo: csukuangfj/kaldi-native-fbank


text:
Added backupdir to save backups of firmware in a subfolder

add subfolder for firmware backups (to backup them easily)
rename device-info.txt to device-info_{ChipID}.txt to save one file per device (instead of overwriting old device-info.txt-files)
softlink firmware backups back to root folder of tuya-convert to retain functionality of "curl http://10.42.42.42/undo"

Thanks for your efforts. To save yourself trouble next time, please check open PRs. Closing as this is covered by #276.
PS. the /undo function does not download backups, it only restarts the device to use the alternate partition.

By the way, you can get early access to the open PRs by using the development branch

Ok overlooked this PR and thanks for pointing out the development branch, I'll give it a try for the next flashes.

repo: ct-Open-Source/tuya-convert


text:
added WeatherContainer for event-based outside atmospheric conditions

We use this approach in processing MAGIC data to read outside air temperature, pressure, and humidity for each event, to later properly compute the (ra,dec) coordinates with Astropy according to
AltAzframe = SkyCoord(az=event.pointing[1].azimuth, alt=event.pointing[1].altitude,                   obstime=event.trig.gps_time,                  location=EarthLocation(...), frame='altaz', pressure=event.weather.air_pressure,                   temperature=event.weather.air_temperature,                  relative_humidity=event.weather.air_humidity                  )

Surely these shouldn't be per-event quantities, right? Rather Monitoring quantities, measured once per second at most.
This is a good time to define a general MonitoringContainer that contains at least a single timestamp (or a start_time, end_time range?) , so that we can manage all Monitoring quantities in the same way.

Surely these shouldn't be per-event quantities, right? Rather Monitoring quantities, measured once per second at most.
This is a good time to define a general MonitoringContainer that contains at least a single timestamp (or a start_time, end_time range?) , so that we can manage all Monitoring quantities in the same way.

Sure, as there (seemingly) hasn't been such a feature, so far, we have been saving the info event-wise, but of course, such a Monitoring quantities feature, with some method for interpolating to the time of an event, would be even better. Do you have a specific design in mind?

Do you have a specific design in mind?

I guess just having a simple common base class that defines the time columns would be enough for now, than any monitoring Container would derive from it and only define the quantities it needs.  That way we have a common way to store a monitoring file (or to read one).  Might want to check that there is isn't already a standard in ACADA, but i'm sure it can't be too complex.
something like:
class MonitoringContainer(Container):
    time = Field(None, "Measurement time, as a TAI timestamp in unix format", unit=u.s)

class WeatherMonitoringContainer(MonitoringContainer):
    atmospheric_pressure = Field(np.nan *u.bar, "atmospheric pressure", unit=u.bar)
    ...

Or we could store it as an astropy Time object (but that's currently not supported by the io.TableWriter/TableReader, though it could be added pretty easily).

Sure. Actually, there already is a MonitoringContainer(Container) class in containers.py (but without time field), do mean that? And do I understand right, that then all fields have an extra dimension in time? But what to do if different monitored quantities are taken at different times? Yes, in my case (MAGIC) the monitoring quantities are recorded for a fixed moment in time/timestamp, not interval. (See also @FrancaCassol's comment to my simultaneous #1209)

Not an expert on pointing, so maybe this is a stupid question:  does giving pressure and temperature to astropy mean that it applies correction for atmospheric refraction to the altaz - to - radec conversion?
If yes, how are the differences between air showers and star taken into account?

air showers are light sources at ~10 km distances, stars at infinity
air showers are mostly blue, while star are more redish

Not an expert on pointing, so maybe this is a stupid question: does giving pressure and temperature to astropy mean that it applies correction for atmospheric refraction to the altaz - to - radec conversion?
If yes, how are the differences between air showers and star taken into account?
* air showers are light sources at ~10 km distances, stars at infinity

* air showers are mostly blue, while star are more redish

Yes, this data is meant to be used (below others) for a precise altaz - to - radec conversion from starguider positions. Indeed, as far as I know, in current IACT analyses/Cherenkov light simulations this effect is not taken into account for the Cherenkov light and may add to the systematics of the primary particle angular reconstruction. W.r.t. starlight, the effect is usually tiny (less than one arcmin for zenith angles smaller than 60 degrees), but may become large at very large zenith angles. We also discussed this a while ago shortly with @moralejo .

We close this PR for now and work on a a more efficient implementation using some MonitoringContainer as suggested by @kosack . Thanks for the suggestions so far!

Not an expert on pointing, so maybe this is a stupid question: does giving pressure and temperature to astropy mean that it applies correction for atmospheric refraction to the altaz - to - radec conversion?
If yes, how are the differences between air showers and star taken into account?
* air showers are light sources at ~10 km distances, stars at infinity

* air showers are mostly blue, while star are more redish

Yes, this data is meant to be used (below others) for a precise altaz - to - radec conversion from starguider positions. Indeed, as far as I know, in current IACT analyses/Cherenkov light simulations this effect is not taken into account for the Cherenkov light and may add to the systematics of the primary particle angular reconstruction. W.r.t. starlight, the effect is usually tiny (less than one arcmin for zenith angles smaller than 60 degrees), but may become large at very large zenith angles. We also discussed this a while ago shortly with @moralejo .

UPDATE: In Corsika, Cherenkov light refraction is in fact taken into account with the raybnd() function.

@moritzhuetten Under which conditions?
IACT atmo with CERWLEN?

authors: GernotMaier MaxNoe kosack moritzhuetten

repo: cta-observatory/ctapipe


text:
Add interface implementation of IMessage to Froto.Serialiation to make code gen have less dependencies

    type IMessage =
        abstract member SerializedLength: unit -> uint32
        abstract member Serialize: ZeroCopyBuffer -> unit
        abstract member ReadFrom: ZeroCopyBuffer -> unit

Currently when you are generating code you have to make a dependency on Froto.serialization which if fine, its the serialization lib after all, but then you also have to include Froto.codec too as you have to have a concrete interface or rely completly on SRTP which is not always easy and gets rapidly more complex if you have to add reflection into that mix.  Having the interface as a hard reference in Froto.Serialization means you can more or less eliminate Froto.Codec from the type provider implementation and any custom code gen, which is what I have been doing.  Ive been whittling away Froto.Codec but now Ive come to the point where the basic interface implementation of IMessage needs to have a home.

Basically this: https://github.com/ctaggart/froto/blob/ba4d5e506e1be6105dc6746a08a1d6714793e8fe/TypeProvider/Core/Message.fs#L10
Becomes an interface defined in Froto.Serialzation

The Message implementation can still live in froto/TypeProvider/Core/Message.fs just it implements the interface, then other code generators have a point or reference implementation.

Any thoughts @ctaggart / @jhugard

Basically I just want that interface in the first comment to be defined here.

Sounds quite reasonable.  Should IMessage also define a WriteTo?

The interface I suggested was based on what's implied via the srtp method
constraints.
On Fri, 31 Aug 2018 13:57 James Hugard, notifications@github.com wrote:

Sounds quite reasonable. Should IMessage also define a WriteTo?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/ctaggart/froto/issues/91#issuecomment-417655739, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AAj7yjfUdGnTHMsx8Yc491E2tZjutu2cks5uWTLTgaJpZM4V-QYP
.

repo: ctaggart/froto

license: mit


text:
set up CreateAccount General Information and Weekly Information pages

Set up pages for creating a new account.

/cib 18-set-up-create-account-general-weeklyinfo-pages

Branch 18-18-set-up-create-account-general-weeklyinfo-pages created!

repo: ctc-uci/abound-food-care-frontend


text:
How to install this through Anaconda Python

How can I do it?  I have tried pip.  nothing works.

Have you tried this?
pip install git+https://github.com/ctgk/PRML

clone the repository on you terminal commad of you IDE , run the following code
git clone https://github.com/ctgk/PRML
if you want to work online check out the link https://colab.research.google.com/drive/1OtBevAIJZsm-kZOjS_G-z7Czc3T6xHYe#scrollTo=U-pTAGoXla5e
if using jupyter notebook in the code cell run: !git clone https://github.com/ctgk/PRML

authors: said-ml thamaiatess walkersw

repo: ctgk/PRML


text:
Remove ticket support

This feature is now obsolete since SF has "native" support for it.

Actually....

authors: Edholm lindskogen

repo: cthdidIT/itbio


text:
TagBot trigger issue

This issue is used to trigger TagBot; feel free to unsubscribe.
If you haven't already, you should update your TagBot.yml to include issue comment triggers.
Please see this post on Discourse for instructions and more details.
If you'd like for me to do this for you, comment TagBot fix on this issue.
I'll open a PR within a few hours, please be patient!

Triggering TagBot for merged registry pull request: https://github.com/JuliaRegistries/General/pull/50353

Triggering TagBot for merged registry pull request: https://github.com/JuliaRegistries/General/pull/51318

Triggering TagBot for merged registry pull request
This extra notification is being sent because I expected a tag to exist by now, but it doesn't.
You may want to check your TagBot configuration to ensure that it's running, and if it is, check the logs to make sure that there are no errors.

Triggering TagBot for merged registry pull request
This extra notification is being sent because I expected a tag to exist by now, but it doesn't.
You may want to check your TagBot configuration to ensure that it's running, and if it is, check the logs to make sure that there are no errors.

Triggering TagBot for merged registry pull request: https://github.com/JuliaRegistries/General/pull/51456

Triggering TagBot for merged registry pull request: https://github.com/JuliaRegistries/General/pull/51860

Triggering TagBot for merged registry pull request: https://github.com/JuliaRegistries/General/pull/52556

Triggering TagBot for merged registry pull request: https://github.com/JuliaRegistries/General/pull/52564


text:
apollo在不同的kubernetes集群间如何同步配置

不同环境的微服务集群，在不同的kubernetes集群中，portal是如何与不同环境的集群建进行通信的，目前A环境的Portal通过B集群暴露端口可以链接到configserver，但是adminserver是通过访问eureka中获取的集群内的地址，无法访问。这块我们是怎么做的呢

可以看一下网络策略

我看到客服端是可以跳过 meta service 的，但是https://github.com/ctripcorp/apollo/blob/5d67ce64a354869096c38989c68b02b165204b60/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/component/AdminServiceAddressLocator.java#L118:24 中获取获取admin service 还是需要用过  meta service 来进行获取；
这样子对于没有打通各个环境网络的情况是不是不太友好的，比如：

我不同环境使用不同的vpc，vpc之间进行了隔离的，我使用 Portal  通过meta service 拿到的ip可能就是就是内网ip，虽然也可以通过网络策略进行配置外网ip，但是这样子会增加部署的成本；
是否在使用 Portal  访问meta service 和admin service 的时候是没有任何验证的？这是不是也是基于打通各个环境网络的情况下的情况呢？

还有我发现其实在某一个环境中，config service 与 admin service 是没有任何交互的(基于 wiki 给出的架构图)，那么其实在某个环境的 meta service 只是为了给外部发现 admin service 和 config service 的功能，这对于在有SLB的情况下(比如 k8s 环境)，meta service 的意义是不是并不是很大？
基于以上我的理解(如果我的理解有偏差，希望您能帮助我进行更好的理解)；
我有两个提议：

是不是可以提供直接在 Portal  中配置admin service的地址并加上验证？
是不是可以提供一个启动选项关闭meta service?

@nobodyiam 希望能与您进行讨论

@fudali113
meta service的用途就是实现服务发现和注册，它是一个逻辑角色，只是为了简化部署，所以和config service部署在一个jvm进程而已。
像k8s这样，似乎确实不需要一个单独的meta service了，可以想一下是否有比较好的一套模型可以兼容非k8s和k8s环境，欢迎讨论~

authors: fudali113 nobodyiam vmulex

repo: ctripcorp/apollo


text:
服务发现配置问题解惑

分布式部署中的configserver服务发现地址
helm部署中的参数
运行参数中
# 通过配置环境变量
        - name: eureka.service.url
          value: http://apollo-devconfigservice:8080/eureka/

数据库中
INSERT INTO `ServerConfig` (`Key`, `Cluster`, `Value`, `Comment`)      VALUES          ('eureka.service.url', 'default', 'http://apollo-devconfigservice:8080/eureka/', 'Eureka服务Url，多个service以英文逗号分隔'),

疑问的地方
一个服务有两个配置eureka的地方是不是重复了呢？或者说Apollo默认是从数据库里面读取，通过环境变量的方式来加入根本就用不到，望解答！

优先从环境变量读，其次从数据读，可以debug一下com.ctrip.framework.apollo.biz.config.BizConfig#eurekaServiceUrls

谢谢解惑

authors: nobodyiam sunnoy


text:
Display the scenario

Hi, It's still me. I want to know if there is an option to display the scenario when we have trained the agents to compare visually the difference between different scenario implemented.
Thanks.

Yes, env.reset(gui=True) will launch the SUMO gui for visualization. I will update the repo shortly regarding this feature.

Ok, thank you in advance.

In wich file do we add the env.reset(gui=True) please?

You do not need to do this anymore. Just follow step 4 in Usages: adding --demo when you run evaluation. I have changed the code so please do not change the structure of ma2c folder after training.


text:
Finished high fidelity for searching and fixed viewmodel bugs

Overview

Finished high fidelity designs for searching flow
Also created ViewModel for searching
Changes Made

Test Coverage

Manual testing
Next Steps

Fixing padding
Related PRs or Issues

Another PR coming out about fixing padding for the search card
Screenshots & Videos

Screen Shot Name

  <!-- You can drag your file to attach it, obtaining the URL.

<img width="430" alt="Screenshot 2023-04-19 at 6 30 08 PM" src="https://user-images.githubusercontent.com/33012352/233213738-03515c86-2c68-4950-88ea-8c71fbcce54d.png">

Great work. Just a slight issue, when you are on dark mode, the text doesn't appear.

Check again?

Great work!

repo: cuappdev/scoop-android


text:
Use layer caching to speed up Build / Release workflows

The Build workflow, which is a required status check, takes about an hour to run.
When we run the Release workflow we have to rebuild the container again from scratch, because we don't have any of the layers cached.
This blog post could be a good starting point for how to use GitHub's cache.

I've merged #46 so we can watch it perform.

Don't know why this isn't working. It all looks correct to me, but the images are still being completely rebuilt every time.

This may be improved by #69

Shall we close this now @ciaranmcnulty ?

Think so, yeah

@mattwynne although thinking about it, what's the point of a nightly cached build?

I guess the nightly build should not be cached, but it would be nice if the on.push build were faster.

As we gradually dismantle the monorepo, this image becomes less and less important anyway. I think we can figure out a new approach if we want to be able to do polyglot builds locally of libraries like gherkin once they're out of the monorepo.

We could --no-cache the nightly
I've been holding off on optimising the cucumber/common build because of the promised monorepo future :)

if we want to be able to do polyglot builds locally of libraries

A buildkit + multiple container approach would be good here. Is it worth prototyping inside, say, Messages?

I think an existing polyglot repo like cucumber-expressions would be a better place to prove the concept, then when we have extracted messages we can try it there with more languages/build environments.

Is there a problem with the cucumber-expressions build process we need to address? I’m fine with the way it currently works.

Not particularly. The suggestion is that we may, for some polyglot projects (e.g. gherkin), want a way to run tests across all/several platforms locally, without having to push and wait for CI for feedback, or rely on this big docker image. I think cucumber-expressions would be a good place to try that kind of thing out.

Expressions is fine IMO because there's not anything generated
The complexity has in the past come from something like messages where Ruby+target are used, or Gherkin where dotnet+target were used
I don't know how we are tackling the DX of running the tests locally for Expressions?

authors: aslakhellesoy ciaranmcnulty mattwynne

repo: cucumber/build


text:
gherkin 23.0.1 post-release missing?

I think this may have been omitted - I can't see it in the commit log at least on main

Resolved using 7c78279.

authors: ciaranmcnulty ehuelsmann

repo: cucumber/common


text:
Need Travis ruby 2.0 test? Nokogiri 1.7 requires Ruby 2.1.

Summary
Nokogiri 1.7 looks requiring "ruby version >= 2.1.0"
How to fix Travis test for ruby2.0?
Expected Behavior
Current Behavior
https://travis-ci.org/cucumber/cucumber-ruby/jobs/190347224

$ ruby --version
ruby 2.0.0p598 (2014-11-13 revision 48408) [x86_64-linux]
...
nokogiri-1.7.0.1 requires ruby version >= 2.1.0, which is incompatible with the current version, ruby 2.0.0p598

Possible Solution

Use latest version nokogiri 1.7.x. And stop support for ruby 2.0. Remove ruby 2.0 from .travis.yml.
or
Use old verson nokogiri 1.6. For example, update cucumber.gemspec from '~> 1.5' to ~> 1.6.0

Steps to Reproduce (for bugs)
Just run travis test for ruby2.0.
Context & Motivation
We are happy for the contribution if we can pass all the tests for Travis CI.
Your Environment
My local environment is

Version used:
ruby 2.4.0p0 (2016-12-24 revision 57164) [x86_64-linux]
Operating System and version:
Feodora 24.
Link to your project:
Fedora Project cucumber RPM package:
https://admin.fedoraproject.org/pkgdb/package/rpms/rubygem-cucumber/

Thanks for logging this @junaruga, appreciated :) 👍

I still see this issue:
nokogiri-1.7.1 requires ruby version >= 2.1.0, which is incompatible with the current version, ruby 2.0.0p648

authors: junaruga mattwynne wolffan

repo: cucumber/cucumber-ruby


text:
Move CI to GitHub actions

Description
Moving the CI from Circle CI to Gihub actions.
Regular (ubuntu) builds: ✔
Windows builds: ✔
JRuby build: ✔
🆕 MacOS builds 🆕: ✔
The previous GitHub workflow was designed to push to cucumber reports, but it did not worked anymore since personal tokens have been deprecated on reports. It has been removed, we may consider recreating a dedicated workflow for that purpose if we want to, with a new collection token.
If we want to activate back the CCK tests, we could created a dedicated workflow too
I noticed that we are using a pretty old version of Rubocop, and updating it reveals a lot of offenses. I suggest to try upgrading it as part of another PR to avoid blocking this one.
Type of change
Please delete options that are not relevant.

Refactoring (improvements to code design or tooling that don't change behaviour)

Checklist:
Your PR is ready for review once the following checklist is
complete. You can also add some checks if you want to.

[ ] New and existing tests are passing locally and on CI
[ ] bundle exec rubocop reports no offenses

It seems that the build does not work on windows with ruby 2.5 for unknown reason.
Still, we have ruby 2.6, 2.7 and 3.0 which are running no Windows successfully. With circle-ci, we had only one build, and I can't even figure out which version of ruby it is.


text:
Separate repo for Objective-C parser

Hello, from your Contributing.md file:

Gherkin3 is implemented in several different languages, and each language implementation lives in a separate git repository.

Is that right? Can I find it in a separate repo? As I need it for one personal project. I'm thinking about how to integrate it as 3rd party without getting the entire gherkin3 repo.
Also is the current implementation ready to be used in real projects, or it is a work in progress?
Thank you.

The separate git repo for the Objective-C version is cucumber/gherkin-objective-c.

authors: alexmx brasmusson


text:
VS Code Syntax Highlighting

Is there a VS code extension for syntax highlighting planned in the near future?

Andrew Hodges put one together: https://github.com/betawaffle/vscode-cue
It works well!
Friedrich Nietzsche – "Freedom is the will to be responsible to ourselves."
On Wed, Oct 2 2019 at 3:00 PM, < notifications@github.com > wrote:

Is there a VS code extension for syntax highlighting planned in the near
future?
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub (
https://github.com/cuelang/cue/issues/137?email_source=notifications&email_token=AAAFMOIKZJH65PKPQIKDZT3QMUDWPA5CNFSM4I43MM62YY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4HPHWJAA
) , or mute the thread (
https://github.com/notifications/unsubscribe-auth/AAAFMOMAQPZI4LKBWWBTF43QMUDWPANCNFSM4I43MM6Q
).

It works! Thanks

This issue has been migrated to https://github.com/cue-lang/cue/issues/137.
For more details about CUE's migration to a new home, please see https://github.com/cue-lang/cue/issues/1078.

authors: apobbati cueckoo jlongtine

repo: cuelang/cue


text:
pkg/list: FlattenN inappropriately reports "incomplete value" error

commit 38a114dca0a705be8cd2656b48088489b783c853
The following code fails:
import "list"
d :: {
	x :: string
	result: [x]
}
foo :: {
	x :: _
	y: list.FlattenN((d & {"x" :: x}).result, 1)
}
r: foo & {
	x :: "hello"
}

It produces this error:
0: cannot convert incomplete value "string" to JSON:
    ./z.cue:4:7

If I remove the flatten operation, it works OK, so this definitely seems like a bug.

weird, it works in the playground but not via the CLI

It will work if you change x in d to 	x :: string | *""

This issue has been migrated to https://github.com/cue-lang/cue/issues/332.
For more details about CUE's migration to a new home, please see https://github.com/cue-lang/cue/issues/1078.

authors: cueckoo rogpeppe verdverm


text:
cmd/cue: fmt should not attempt to resolve imports

What version of CUE are you using (cue version)?

$ cue version
cue version +fdccfbc5 linux/amd64

Does this issue reproduce with the latest release?
Yes
What did you do?
A variation on #653
exec cue fmt x.cue
rm a/a.cue
exec cue fmt x.cue

-- a/a.cue --
package a
-- cue.mod/module.cue --
module: "mod.com"
-- x.cue --
package x

import "mod.com/a"

x: 5

What did you expect to see?
No error
What did you see instead?
> exec cue fmt x.cue
> rm a/a.cue
> exec cue fmt x.cue
[stderr]
import failed: build constraints exclude all CUE files in mod.com/a (ignored: x.cue):
    ./x.cue:3:8

This issue has been migrated to https://github.com/cue-lang/cue/issues/728.
For more details about CUE's migration to a new home, please see https://github.com/cue-lang/cue/issues/1078.

authors: cueckoo myitcv


text:
Migrate to ESM

What
Migrate to ESM
More info

Roadblocked by https://github.com/facebook/create-react-app/pull/11797

repo: cujarrett/js-pollock


text:
Override scheduler globally?

We have a system that processes events from hardware devices. Each event has a timestamp, and the event-source ensures that the events are delivered strictly increasing in time. We need to advance the clock only based on the event timestamps; never based on the computer clock.
From what I can tell a lot of modules require ./scheduler/defaultScheduler directly. But I would need for the default scheduler to be more akin the rxjs historical-scheduler (or the externally controlled clock of esper). That is, no matter what the scheduler should only run tasks when the clock is explicitly advanced by the application.
Is there a clean to achieve this without modifying sources?

Currently there is no clean way to do this. I believe @briancavalier has some changes and improvements planned for the library, but for the moment you will need to provide your own wrappers. Here's something I'm experimenting with for my tests:
const Observer = require('most/lib/sink/Observer');
const Promise = require('most/lib/Promise');
const SettableDisposable = require('most/lib/disposable/SettableDisposable');

export function withScheduler(f, source, scheduler) {
	return new Promise(function (resolve, reject) {
		var disposable = new SettableDisposable();
		var observer = new Observer(f, resolve, reject, disposable);
		disposable.setDisposable(source.run(observer, scheduler));
	});
}

export function observe(f, stream, scheduler) {
  var i = 0;
  const emit = x => f(x, i++);
  return withScheduler(emit, stream.source, scheduler);
}

And to go with it, I've got a simple test scheduler (rudimentary, can be improved):
const Scheduler = require('most/lib/scheduler/Scheduler');

export function TestScheduler() {
  var t = 0, id = 0;
  const timers = {};

  function setTimer(f, ms) {
    const k = id++;
    timers[id] = { f, ms: t + ms };
  }

  function clearTimer(id) {
    delete timers[id];
  }

  function now() {
    return t;
  }

  function flush() {
    for(let key of Object.keys(timers)) {
      const timer = timers[key];
      if(timer.ms <= t) {
        delete timers[key];
        timer.f();
      }
    }
  }

  function tick(n) {
    t += (n||1);
    flush();
  }

  const scheduler = new Scheduler(setTimer, clearTimer, now);
  scheduler.tick = tick;
  scheduler.collect = function(stream) {
    const events = [];
    return new Promise((resolve, fail) => {
      source.run(sink(x => events.push(x), () => resolve(events), fail), scheduler);
    });
  };

  return scheduler;
}

authors: axefrog memelet

repo: cujojs/most


text:
Calendar Widget

We would like to use the same widget for another 3rd party site. In this example, another web site in the region of Outaouais is called "MRC Collines-de-outaouais".
Features to add to html for installing the widget on another website:

config to hide the navbar for event/workshop/organization
config to keep event list open rather than opening/closing like on toutculture.ca
links to "view all" on toutculture.ca should have the same number of total hits in both places
config to set a filter by region ie. Tout culture wants to show only events and workshops in the region "collines-de-outouais".
config to open new tab/window when clicking events or any click leaving the widget.  The Toutculture.ca site should open full screen (not inside the 3rd party site).

Additional request from Minimal for the search widget:

session cookie storage of the current search term, tab (event, workshop, org) and date or date range so that a new page load does not erase the search settings in progress.
Adjust the thumbail image to use the image's natural aspect ratio (remove fitimage: cover) but still set the max height.

@SyamBabu-M please assign this issue to me after you do the estimate.

@troughc I have some doubts regarding this tickets. Can we discuss this in todays standup?

@saumier https://docs.google.com/spreadsheets/d/1NgK_C-MSRr4qEwTDhSCDiOtU6bfrq_eyKe7ZjKRcw7s/edit#gid=0

Estimate of 24 hours by Syam.

@SyamBabu-M I have updated the Readme with my suggested parameters and created a PR here https://github.com/culturecreates/minimal-footlight-search-widget/pull/82
Please review and let me know if you have any questions or ideas to do the configurations differently. You can merge the PR if you agree with the changes.

@saumier I have merged the PR. The suggestions looked great to me.

@troughc Is the design for this completed?

@saumier @troughc
http://demo.staging-tout-culture.s3-website.ca-central-1.amazonaws.com/
http://staging.minimal-footlight-search-widget.s3.ca-central-1.amazonaws.com/v2/test-dist.html
please use these links to test the widget.

@troughc The link with the 3 tabs is relevant because it is the new widget that will be seen on toutculture.ca.  So we need to test that the new widget works in both places at the same time.
I will update the parameters on the test page to show FR and the  region "collines-de-outouais" but it will take me a bit of time. I'll ping you when it is done.

The region ID for collines de l'outouais is 63bc0b2d1c6b6c005aad5253

@SyamBabu-M I did some testing and there are things that need to be fixed.  Below is my list divided into MUST FIX and NICE TO HAVE.  Please only do the must fix and after you have tested the must fix and you still have time then you can work on the nice to have.
MUST FIX

Unable to configure the filter by region. The widget must be configurable to only show events from the region "collines de l'outaouais".  This should be configurable with the parameter data-search-events-filter='&region=63bc0b2d1c6b6c005aad5253&exclude-type=64776b93fbeda20064d2332f'. There are today only 3 events and no workshops. Test by comparing with this result: https://toutculture.ca/filter-evenements/?region=63bc0b2d1c6b6c005aad5253
concept ids for event filters must no be hardcoded. You currently hardcode "type=64776b93fbeda20064d2332f" and "exclude-type=64776b93fbeda20064d2332f". These should be passed in to the widget using parameters like data-search-events-filter. You will probably need to add a new parameter for workshops like data-search-workshop-filter.
there is a delay when clicking the search box. It appears that the throbber starts and only after about 1 second then the Footlight API is called. The API should be called right away when you click on the search box, and only while the person is typing should there be a debounce.

NICE TO HAVE

The parameters inline and float are backwards. The float is when the search results are in a layer above the webpage, inline is when the search box and results all appear in the page together. The default is "float" so it remains compatible with toutculture.ca.
There appears to be only 9 events listed, but the API call has a limit of 10. Why are we only displaying 9 of the 10? Either the limit is decreased or the display increased.

The footer label says no events are found, but there are events.  Label is incorrect.

@troughc I tested and it looks good. I am pushing to production.

@SyamBabu-M Please add links that you found here, and your thoughts on pros and cons.  Also, please try to setup a test page with the iframe passing the parameters.

@saumier you can access the test page using the link given below.
http://staging.minimal-footlight-search-widget.s3.ca-central-1.amazonaws.com/v3/test-iframe.html

test according ot the MRC story:

when you click results, open in a new tab
inline
uses iFrame
limiting set of filters (targets third party website)
No organizations

@SyamBabu-M What is the status?  I need to let the client know when they can start using v3 on the Minimal site.  Does the default click in production now open in the same window?

@saumier I have added a PR

@troughc Have you tried the widget on MRC with the click opening in the iframe instead of opening a new window? It is interesting. Maybe even better? Try it out and let me know what you think.

@saumier in my marketing experience  customers (i.e. a customer like Tout Culture) often use a widget like this as a way of:

promoting events
promoting their own calendar
So having the calendar open on another tab helps bring traffic to the Tout Cutlure website.
But, I can also talk with Isabelle at Tout Culture about this to get her feedback directly. Because it is interesting.

authors: SyamBabu-M saumier troughc


text:
Stray LICENSE installed into site-packages

Describe the bug
The package installs a stray LICENSE file to the top directory of site-packages.
To Reproduce
$ pip install fakeredis
Collecting fakeredis
  Downloading fakeredis-2.24.0-py3-none-any.whl.metadata (3.8 kB)
Collecting redis>=4 (from fakeredis)
  Using cached redis-5.0.8-py3-none-any.whl.metadata (9.2 kB)
Collecting sortedcontainers<3,>=2 (from fakeredis)
  Using cached sortedcontainers-2.4.0-py2.py3-none-any.whl.metadata (10 kB)
Downloading fakeredis-2.24.0-py3-none-any.whl (97 kB)
Using cached redis-5.0.8-py3-none-any.whl (255 kB)
Using cached sortedcontainers-2.4.0-py2.py3-none-any.whl (29 kB)
Installing collected packages: sortedcontainers, redis, fakeredis
Successfully installed fakeredis-2.24.0 redis-5.0.8 sortedcontainers-2.4.0
$ ls $VIRTUAL_ENV/lib/python*/site-packages
fakeredis                   LICENSE  pip-24.2.dist-info  redis-5.0.8.dist-info  sortedcontainers-2.4.0.dist-info
fakeredis-2.24.0.dist-info  pip      redis               sortedcontainers

Note the LICENSE file that shouldn't be there.
Expected behavior
All files installed into fakeredis directory.
Screenshots
n/a
Desktop (please complete the following information):

OS: Gentoo Linux amd64
python version: 3.12.5
redis-py version: 2.24.0
full requirements.txt? n/a

Additional context
Apparently this is because LICENSE is listed in tool.poetry.packages.

Upvote & Fund

We're using Polar.sh so you can upvote and help fund this issue.
We receive the funding once the issue is completed & confirmed by you.
Thank you in advance for helping prioritize & fund our backlog.

thanks for reporting this. Fixed in 2.24.1

Thanks.

authors: cunla mgorny

repo: cunla/fakeredis-py


text:
🛑 cuong-dev.ml is down

In e825087, cuong-dev.ml (http://cuong-dev.ml) was down:

HTTP code: 0
Response time: 0 ms

Resolved: cuong-dev.ml is back up in 5374af3.

repo: cuong-nd/uptime


text:
Implementing specific NumPy functions in CuPy

As a part of a course project, I'd like to contribute to CuPy. I reached out to @kmaehashi who told me I could start by implementing simple functions which are not yet present in CuPy according to this Comparison Table.
I would like to start by implementing numpy.argwhere in CuPy. It would be great if someone could guide me on what I can do to implement it.
Thanks!

Sorry I haven't responded here after replying to you via email...
Closing as this issue is not active for months.
For those who need support when contributing to CuPy, please join the Gitter chat so that we can help you.

authors: kmaehashi suryadwar

repo: cupy/cupy


text:
cupy.einsum is very slow for elementwise operations

I've found a performance issue on the einsum function.
The einsum function runs 100x slower than the simple elementwise expression for 1D elementwise operations.

Conditions
Debian GNU/Linux 10.2

CuPy Version          : 7.0.0
CUDA Root             : /usr/local/cuda
CUDA Build Version    : 10000
CUDA Driver Version   : 10010
CUDA Runtime Version  : 10000
cuBLAS Version        : 10000
cuFFT Version         : 10000
cuRAND Version        : 10000
cuSOLVER Version      : (10, 0, 0)
cuSPARSE Version      : 10000
NVRTC Version         : (10, 0)
cuDNN Build Version   : 7605
cuDNN Version         : 7605
NCCL Build Version    : 2408
NCCL Runtime Version  : 2408
None

Model: 		 Tesla P100-PCIE-16GB
IRQ:   		 35
GPU UUID: 	 GPU-9b34f11a-1998-9a07-e54e-5ff7f7a0157f
Video BIOS: 	 86.00.4d.00.01
Bus Type: 	 PCI
DMA Size: 	 47 bits
DMA Mask: 	 0x7fffffffffff
Bus Location: 	 0000:00:04.0
Device Minor: 	 0
Blacklisted:	 No

Code to reproduce
Here, we measure timings 10 times.

N = 10000000

A = cp.zeros(N)
B = cp.zeros(N)
C = cp.empty(N)

print("elementwise operations")
for i in range(5):
    cp.cuda.Stream.null.synchronize()
    t1 = time.time()
    C[:] = A[:] * B[:]
    cp.cuda.Stream.null.synchronize()
    t2 = time.time()
    print(t2-t1)

print("einsum")
for i in range(5):
    cp.cuda.Stream.null.synchronize()
    t1 = time.time()
    C[:] = cp.einsum('i,i->i', A, B)
    cp.cuda.Stream.null.synchronize()
    t2 = time.time()
    print(t2-t1)

Output
einsum is super slow!

elementwise operations
0.0012805461883544922
0.0007987022399902344
0.000858306884765625
0.0008094310760498047
0.0008041858673095703
einsum
0.06707024574279785
0.06706762313842773
0.06700778007507324
0.06230592727661133
0.06144094467163086

I've figured out that the einsum ends up with matmul of two 3D arrays of shape (N, 1, 1).
This function indeed runs slow for these arrays.
In the following results, I used Tesla P4 instead of P100, the numbers differ by a factor of 4.
print("matmul")
AA = cp.zeros((N, 1, 1))
BB = cp.zeros((N, 1, 1))
CC = cp.empty((N, 1, 1))

for i in range(5):
    cp.cuda.Stream.null.synchronize()
    t1 = time.time()
    CC[:, :, :] = cp.matmul(AA, BB)
    cp.cuda.Stream.null.synchronize()
    t2 = time.time()
    print(t2-t1)

matmul
0.31870174407958984
0.2773165702819824
0.26548099517822266
0.2651982307434082
0.26521778106689453

As you noticed, einsum is a generalization of several operations and the current implementation relies on matrix multiplications. Therefore we favor the general case over specific ones and simple Element-wise or reduction operations are expected to be faster when directly implemented.

Agreed.
But, this issue becomes annoying when cupy is used together with opt_einsum (or numpy.einsum_path).
I am trying to contract many arrays/tensors using the opt_einsum package with cupy backend.
In this case, an optimal contraction is searched at runtime and the whole contraction procedure is split into multiple einsum operations.
Thus, I have no prior knowledge of what elementary operations appear along the contract path.
If such an "elementwise operation" appears,
it ruins the speed of the contraction.
Do you think if it's possible to add a special treatment of elementwise operations to cupy.einsum?

It should be possible, let us discuss this in the team.

Do you have an example of an einsum equation where this is a burden besides the trivial case?

Thank you for your help.
Another bottleneck in my test calculations is the following.
The einsum is slower than the optimal case by a factor of 10 on P100.
But, it may not a big difference.
import cupy as cp
import time

N1, N2, N3 = 20, 100000, 16

a = cp.zeros((N1, N2, N3))
b = cp.zeros(N2)
c = cp.empty((N1, N2, N3))

print("Elementwise operations")
for i in range(5):
    cp.cuda.Stream.null.synchronize()
    t1 = time.time()
    c[:,:,:] = a * b[None,:,None]
    cp.cuda.Stream.null.synchronize()
    t2 = time.time()
    print(t2-t1)

print("Einsum")
for i in range(5):
    cp.cuda.Stream.null.synchronize()
    t1 = time.time()
    c[:,:,:] = cp.einsum('ACB, C->ACB', a, b)
    cp.cuda.Stream.null.synchronize()
    t2 = time.time()
    print(t2-t1)

Elementwise operations
0.0029981136322021484
0.002943754196166992
0.0029549598693847656
0.002942800521850586
0.0029387474060058594
Einsum
0.02181863784790039
0.02160191535949707
0.021611928939819336
0.021459341049194336
0.021472454071044922

One more (maybe independent) bottleneck:
import cupy as cp
import time

N1, N2, N3, N4 = 20, 100000, 16, 30

print("Einsum")
print(N2 * N1 * N3 * N4 * 1e-12)
a = cp.zeros((N2, N1, N3))
b = cp.zeros((N2, N3, N4))
c = cp.empty((N1, N3, N4))
for i in range(5):
    cp.cuda.Stream.null.synchronize()
    t1 = time.time()
    c[:,:,:] = cp.einsum('CAB, CBD->ABD', a, b)
    cp.cuda.Stream.null.synchronize()
    t2 = time.time()
    print(t2-t1)

Timings on Tesla P100-PCIE-16GB
Einsum
0.00096
0.2861499786376953
0.02833104133605957
0.02822113037109375
0.02715277671813965
0.02727365493774414

It may be simply bounded by the memory bandwidth?

One possible solution is to use cutensorContraction, a tensor contraction routine in cuTENSOR, instead of matmul as a backend for cupy.einsum.
N = 10000000

A = cp.zeros(N)
B = cp.zeros(N)
C = cp.empty(N)

print("elementwise operations")
for i in range(5):
    cp.cuda.Stream.null.synchronize()
    t1 = time.time()
    C[:] = A[:] * B[:]
    cp.cuda.Stream.null.synchronize()
    t2 = time.time()
    print(t2-t1)

print("einsum")
for i in range(5):
    cp.cuda.Stream.null.synchronize()
    t1 = time.time()
    C[:] = cp.einsum('i,i->i', A, B)
    cp.cuda.Stream.null.synchronize()
    t2 = time.time()
    print(t2-t1)

print("cuTensor")
for i in range(5):
    cp.cuda.Stream.null.synchronize()
    t1 = time.time()
    desc_a = cutensor.create_tensor_descriptor(A)
    desc_b = cutensor.create_tensor_descriptor(B)
    desc_c = cutensor.create_tensor_descriptor(C)
    C = cutensor.contraction(1.0,
                         A, desc_a, ('i',),
                         B, desc_b, ('i',),
                         0.0,
                         C, desc_c, ('i',))
    cp.cuda.Stream.null.synchronize()
    t2 = time.time()
    print(t2-t1)

Measurement results on GV100
elementwise operations
0.08599257469177246
0.0007219314575195312
0.0007059574127197266
0.0007042884826660156
0.0007023811340332031
einsum
0.2394275665283203
0.05134439468383789
0.05128169059753418
0.04924917221069336
0.048856496810913086
cuTensor
0.1486213207244873
0.0010166168212890625
0.0009043216705322266
0.0009119510650634766
0.00090789794921875

import cupy as cp
from cupy import cutensor
import time

N1, N2, N3 = 20, 100000, 16

a = cp.zeros((N1, N2, N3))
b = cp.zeros(N2)
c = cp.empty((N1, N2, N3))

print("Elementwise operations")
for i in range(5):
    cp.cuda.Stream.null.synchronize()
    t1 = time.time()
    c[:, :, :] = a * b[None, :, None]
    cp.cuda.Stream.null.synchronize()
    t2 = time.time()
    print(t2-t1)

print("Einsum")
for i in range(5):
    cp.cuda.Stream.null.synchronize()
    t1 = time.time()
    c[:, :, :] = cp.einsum('ACB, C->ACB', a, b)
    cp.cuda.Stream.null.synchronize()
    t2 = time.time()
    print(t2-t1)

print("cuTensor")
for i in range(5):
    cp.cuda.Stream.null.synchronize()
    t1 = time.time()
    desc_a = cutensor.create_tensor_descriptor(a)
    desc_b = cutensor.create_tensor_descriptor(b)
    desc_c = cutensor.create_tensor_descriptor(c)
    C = cutensor.contraction(1.0,
                             a, desc_a, ('A', 'C', 'B'),
                             b, desc_b, ('C',),
                             0.0,
                             c, desc_c, ('A', 'C', 'B'))
    cp.cuda.Stream.null.synchronize()
    t2 = time.time()
    print(t2-t1)

Performance measure on GV100
Elementwise operations
0.08752107620239258
0.0018515586853027344
0.0018191337585449219
0.001821279525756836
0.0018160343170166016
Einsum
0.19353342056274414
0.011642932891845703
0.011593818664550781
0.01158905029296875
0.011589527130126953
cuTensor
0.15397882461547852
0.0030057430267333984
0.0029113292694091797
0.002923727035522461
0.002886533737182617

import cupy as cp
from cupy import cutensor
import time

N1, N2, N3, N4 = 20, 100000, 16, 30

print("Einsum")
print(N2 * N1 * N3 * N4 * 1e-12)
a = cp.zeros((N2, N1, N3))
b = cp.zeros((N2, N3, N4))
c = cp.empty((N1, N3, N4))
for i in range(5):
    cp.cuda.Stream.null.synchronize()
    t1 = time.time()
    c[:,:,:] = cp.einsum('CAB, CBD->ABD', a, b)
    cp.cuda.Stream.null.synchronize()
    t2 = time.time()
    print(t2-t1)

print("cuTensor")
for i in range(5):
    cp.cuda.Stream.null.synchronize()
    t1 = time.time()
    desc_a = cutensor.create_tensor_descriptor(a)
    desc_b = cutensor.create_tensor_descriptor(b)
    desc_c = cutensor.create_tensor_descriptor(c)
    C = cutensor.contraction(1.0,
                             a, desc_a, ('C', 'A', 'B'),
                             b, desc_b, ('C', 'B', 'D'),
                             0.0,
                             c, desc_c, ('A', 'B', 'D'))
    cp.cuda.Stream.null.synchronize()
    t2 = time.time()
    print(t2-t1)

Performance measure on GV100
Einsum
0.00096
0.30731821060180664
0.03711557388305664
0.037061214447021484
0.03646731376647949
0.03490185737609863
cuTensor
0.19055414199829102
0.041312217712402344
0.04131007194519043
0.03946805000305176
0.037695884704589844

Thank you for your data. Impressive improvement!
Using cuTensor seems to be the right direction.

authors: anaruse emcastillo shinaoka