[ question ] Dual cloud-config to turn off open-stack media drive unit

I'm trying to make a double cloud-init work in my env. However, looking at cloud-init logs I've noticed that the configs are MERGED, not parsed separately! Thus, the ssh-keys specified in one config get rewritten from the other one, as well as giving me other troubles. Log:

-- Logs begin at Fri 2016-09-02 12:41:53 UTC, end at Fri 2016-09-02 12:54:21 UTC. --
Sep 02 12:42:03 localhost coreos-cloudinit[822]: 2016/09/02 12:42:03 Checking availability of "local-file"
Sep 02 12:42:03 localhost coreos-cloudinit[822]: 2016/09/02 12:42:03 Fetching user-data from datasource of type "local-file"
Sep 02 12:42:03 localhost coreos-cloudinit[834]: 2016/09/02 12:42:03 Checking availability of "cloud-drive"
Sep 02 12:42:03 localhost coreos-cloudinit[834]: 2016/09/02 12:42:03 Fetching user-data from datasource of type "cloud-drive"
Sep 02 12:42:03 localhost coreos-cloudinit[834]: 2016/09/02 12:42:03 Attempting to read from "/media/configdrive/openstack/latest/user_data"
Sep 02 12:42:03 localhost coreos-cloudinit[834]: 2016/09/02 12:42:03 Fetching meta-data from datasource of type "cloud-drive"
Sep 02 12:42:03 localhost coreos-cloudinit[834]: 2016/09/02 12:42:03 Attempting to read from "/media/configdrive/openstack/latest/meta_data.json"
Sep 02 12:42:03 localhost coreos-cloudinit[822]: 2016/09/02 12:42:03 Fetching meta-data from datasource of type "local-file"
Sep 02 12:42:03 localhost coreos-cloudinit[834]: 2016/09/02 12:42:03 Parsing user-data as cloud-config
Sep 02 12:42:03 localhost coreos-cloudinit[834]: 2016/09/02 12:42:03 Merging cloud-config from meta-data and user-data
Sep 02 12:42:03 localhost coreos-cloudinit[822]: 2016/09/02 12:42:03 Parsing user-data as cloud-config
Sep 02 12:42:03 localhost coreos-cloudinit[822]: 2016/09/02 12:42:03 Merging cloud-config from meta-data and user-data
Sep 02 12:42:03 cgcoreossimon1 coreos-cloudinit[834]: 2016/09/02 12:42:03 Set hostname to cgcoreossimon1
Sep 02 12:42:03 cgcoreossimon1 coreos-cloudinit[834]: 2016/09/02 12:42:03 Creating user 'test'
Sep 02 12:42:03 cgcoreossimon1 coreos-cloudinit[822]: 2016/09/02 12:42:03 Set hostname to cgcoreossimon1
Sep 02 12:42:03 cgcoreossimon1 coreos-cloudinit[822]: 2016/09/02 12:42:03 Authorized SSH keys for core user
Sep 02 12:42:03 cgcoreossimon1 coreos-cloudinit[822]: 2016/09/02 12:42:03 Writing file to "/etc/sysctl.d/10-enable-arp-notify.conf"
Sep 02 12:42:03 cgcoreossimon1 coreos-cloudinit[822]: 2016/09/02 12:42:03 Wrote file to "/etc/sysctl.d/10-enable-arp-notify.conf"
Sep 02 12:42:03 cgcoreossimon1 coreos-cloudinit[822]: 2016/09/02 12:42:03 Wrote file /etc/sysctl.d/10-enable-arp-notify.conf to filesystem
Sep 02 12:42:03 cgcoreossimon1 coreos-cloudinit[822]: 2016/09/02 12:42:03 Writing file to "/etc/resolv.conf"
Sep 02 12:42:03 cgcoreossimon1 coreos-cloudinit[822]: 2016/09/02 12:42:03 Wrote file to "/etc/resolv.conf"
Sep 02 12:42:03 cgcoreossimon1 coreos-cloudinit[822]: 2016/09/02 12:42:03 Wrote file /etc/resolv.conf to filesystem
Sep 02 12:42:03 cgcoreossimon1 coreos-cloudinit[822]: 2016/09/02 12:42:03 Updated /etc/environment
Sep 02 12:42:03 cgcoreossimon1 coreos-cloudinit[822]: 2016/09/02 12:42:03 Masking unit file "user-configdrive.service"
Sep 02 12:42:03 cgcoreossimon1 coreos-cloudinit[822]: 2016/09/02 12:42:03 Masking unit file "user-configvirtfs.service"
Sep 02 12:42:03 cgcoreossimon1 coreos-cloudinit[822]: 2016/09/02 12:42:03 Masking unit file "user-configdrive.path"
Sep 02 12:42:03 cgcoreossimon1 coreos-cloudinit[822]: 2016/09/02 12:42:03 Masking unit file "media-configdrive.mount"
Sep 02 12:42:03 cgcoreossimon1 coreos-cloudinit[822]: 2016/09/02 12:42:03 Masking unit file "media-configvirtfs.mount"
Sep 02 12:42:03 cgcoreossimon1 coreos-cloudinit[822]: 2016/09/02 12:42:03 Writing unit "xe-linux-distribution.service" to filesystem
Sep 02 12:42:03 cgcoreossimon1 coreos-cloudinit[822]: 2016/09/02 12:42:03 Writing file to "/etc/systemd/system/xe-linux-distribution.service"
Sep 02 12:42:03 cgcoreossimon1 coreos-cloudinit[822]: 2016/09/02 12:42:03 Wrote file to "/etc/systemd/system/xe-linux-distribution.service"
Sep 02 12:42:03 cgcoreossimon1 coreos-cloudinit[822]: 2016/09/02 12:42:03 Wrote unit "xe-linux-distribution.service"
Sep 02 12:42:03 cgcoreossimon1 coreos-cloudinit[822]: 2016/09/02 12:42:03 Ensuring runtime unit file "etcd.service" is unmasked
Sep 02 12:42:03 cgcoreossimon1 coreos-cloudinit[822]: 2016/09/02 12:42:03 Writing drop-in unit "20-cloudinit.conf" to filesystem
Sep 02 12:42:03 cgcoreossimon1 coreos-cloudinit[822]: 2016/09/02 12:42:03 Writing file to "/run/systemd/system/etcd2.service.d/20-cloudinit.conf"
Sep 02 12:42:03 cgcoreossimon1 coreos-cloudinit[822]: 2016/09/02 12:42:03 Wrote file to "/run/systemd/system/etcd2.service.d/20-cloudinit.conf"
Sep 02 12:42:03 cgcoreossimon1 coreos-cloudinit[822]: 2016/09/02 12:42:03 Wrote drop-in unit "20-cloudinit.conf"
Sep 02 12:42:03 cgcoreossimon1 coreos-cloudinit[822]: 2016/09/02 12:42:03 Ensuring runtime unit file "etcd2.service" is unmasked
Sep 02 12:42:03 cgcoreossimon1 coreos-cloudinit[822]: 2016/09/02 12:42:03 Writing drop-in unit "20-cloudinit.conf" to filesystem
Sep 02 12:42:03 cgcoreossimon1 coreos-cloudinit[822]: 2016/09/02 12:42:03 Writing file to "/run/systemd/system/fleet.service.d/20-cloudinit.conf"
Sep 02 12:42:03 cgcoreossimon1 coreos-cloudinit[822]: 2016/09/02 12:42:03 Wrote file to "/run/systemd/system/fleet.service.d/20-cloudinit.conf"
Sep 02 12:42:03 cgcoreossimon1 coreos-cloudinit[822]: 2016/09/02 12:42:03 Wrote drop-in unit "20-cloudinit.conf"
Sep 02 12:42:03 cgcoreossimon1 coreos-cloudinit[822]: 2016/09/02 12:42:03 Ensuring runtime unit file "fleet.service" is unmasked
Sep 02 12:42:03 cgcoreossimon1 coreos-cloudinit[822]: 2016/09/02 12:42:03 Ensuring runtime unit file "locksmithd.service" is unmasked
Sep 02 12:42:03 cgcoreossimon1 coreos-cloudinit[822]: 2016/09/02 12:42:03 Calling unit command "start" on "etcd2.service"'
Sep 02 12:42:03 cgcoreossimon1 coreos-cloudinit[834]: 2016/09/02 12:42:03 Authorized SSH keys for core user
Sep 02 12:42:03 cgcoreossimon1 coreos-cloudinit[834]: 2016/09/02 12:42:03 Writing file to "/etc/sysctl.d/10-enable-arp-notify.conf"
Sep 02 12:42:04 cgcoreossimon1 coreos-cloudinit[834]: 2016/09/02 12:42:04 Wrote file to "/etc/sysctl.d/10-enable-arp-notify.conf"
Sep 02 12:42:04 cgcoreossimon1 coreos-cloudinit[834]: 2016/09/02 12:42:04 Wrote file /etc/sysctl.d/10-enable-arp-notify.conf to filesystem
Sep 02 12:42:04 cgcoreossimon1 coreos-cloudinit[834]: 2016/09/02 12:42:04 Writing file to "/tmp/custom-cloud-config-bootstrap.sh"
Sep 02 12:42:04 cgcoreossimon1 coreos-cloudinit[834]: 2016/09/02 12:42:04 Wrote file to "/tmp/custom-cloud-config-bootstrap.sh"
Sep 02 12:42:04 cgcoreossimon1 coreos-cloudinit[834]: 2016/09/02 12:42:04 Wrote file /tmp/custom-cloud-config-bootstrap.sh to filesystem
Sep 02 12:42:04 cgcoreossimon1 coreos-cloudinit[834]: 2016/09/02 12:42:04 Updated /etc/environment
Sep 02 12:42:04 cgcoreossimon1 coreos-cloudinit[834]: 2016/09/02 12:42:04 Writing unit "xe-linux-distribution.service" to filesystem
Sep 02 12:42:04 cgcoreossimon1 coreos-cloudinit[834]: 2016/09/02 12:42:04 Writing file to "/etc/systemd/system/xe-linux-distribution.service"
Sep 02 12:42:04 cgcoreossimon1 coreos-cloudinit[834]: 2016/09/02 12:42:04 Wrote file to "/etc/systemd/system/xe-linux-distribution.service"
Sep 02 12:42:04 cgcoreossimon1 coreos-cloudinit[834]: 2016/09/02 12:42:04 Wrote unit "xe-linux-distribution.service"
Sep 02 12:42:04 cgcoreossimon1 coreos-cloudinit[834]: 2016/09/02 12:42:04 Writing unit "cryptogate-cloud-config-bootstrap.service" to filesystem
Sep 02 12:42:04 cgcoreossimon1 coreos-cloudinit[834]: 2016/09/02 12:42:04 Writing file to "/etc/systemd/system/cryptogate-cloud-config-bootstrap.service"
Sep 02 12:42:04 cgcoreossimon1 coreos-cloudinit[834]: 2016/09/02 12:42:04 Wrote file to "/etc/systemd/system/cryptogate-cloud-config-bootstrap.service"
Sep 02 12:42:04 cgcoreossimon1 coreos-cloudinit[834]: 2016/09/02 12:42:04 Wrote unit "cryptogate-cloud-config-bootstrap.service"
Sep 02 12:42:04 cgcoreossimon1 coreos-cloudinit[834]: 2016/09/02 12:42:04 Ensuring runtime unit file "etcd.service" is unmasked
Sep 02 12:42:04 cgcoreossimon1 coreos-cloudinit[834]: 2016/09/02 12:42:04 Ensuring runtime unit file "etcd2.service" is unmasked
Sep 02 12:42:04 cgcoreossimon1 coreos-cloudinit[834]: 2016/09/02 12:42:04 Ensuring runtime unit file "fleet.service" is unmasked
Sep 02 12:42:04 cgcoreossimon1 coreos-cloudinit[834]: 2016/09/02 12:42:04 Ensuring runtime unit file "locksmithd.service" is unmasked
Sep 02 12:42:04 cgcoreossimon1 coreos-cloudinit[834]: 2016/09/02 12:42:04 Calling unit command "start" on "xe-linux-distribution.service"'
Sep 02 12:42:04 cgcoreossimon1 coreos-cloudinit[834]: 2016/09/02 12:42:04 Result of "start" on "xe-linux-distribution.service": done
Sep 02 12:42:04 cgcoreossimon1 coreos-cloudinit[834]: 2016/09/02 12:42:04 Calling unit command "start" on "cryptogate-cloud-config-bootstrap.service"'
Sep 02 12:42:04 cgcoreossimon1 coreos-cloudinit[834]: 2016/09/02 12:42:04 Result of "start" on "cryptogate-cloud-config-bootstrap.service": done

I've got the following cloud-configs: Initial cloud-config required by XenOrchestra with an added bash script for proper etcd2 setup: config_xo.txt And then the 'real' dynamically created cloud-config here (well....this one wouldn't properly work, but it makes my thought easier to understand): config_real.txt
As you can see the bash script from the XO cloud-config uses a rather crude way of executing specific parts. Idealy, I would like not to do the partprobe thing and just parse the XO config on the first boot, run the custom script which installs the system with a specific local user-data file. Inside that new local cloud-config would be declarations of masked media-drive and other units. So that, upon reboot, right after install, the OS would parse the local config, turn off units (specifically the open-stack cloud drive service) and continue with the boot process without executing the initial XO cloud config once again.
Is this possible? Or maybe there is a better/different way of acomplishing this?
Thanks,
Simon

and continue with the boot process without executing the initial cloud config once again.

Have you looked into Ignition?

Oh man...I didn't know what was I going to be batteling.
Thanks for the advice, tho, @dghubble  =)
I did manage to make this work with Ignition. A bit of a hack, still, but the chain works.
(still have other issues, though, unfortunatelly. in particular somewhere along XenServer/XenOrchestra/CoreOS/iPXE or XenTools. one component screws it up for the rest of them, but that's a topic for another thread)

The Alpha release today will have experimental support for OpenStack in Ignition. I'd love it if you could give it a try.

@crawford what exactly are you interested in? My OpenStack is being fed to CoreOS via a chain of several software products. Basically, XenOrchestra creates a config-drive automatically, which is then attached and cloud-config parsed during cloud-init sequence. Not sure if running OpenStack with Ignition is under my control here... Could you be more specific?

@simoninkin instead of passing a cloud-config to the machine, try passing an Ignition config. Both tools use the same mechanism to retrieve the data (they just do it at very different times), so it should be possible to swap one for the other.

I don't see a specific issue to be solved by this repo and it looks like the original question has been answered. If not, feel free to open or raise an issue in coreos/bugs.


Automated Package Upgrade

:tada: This PR is included in version 7.7.402 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


redirect_link_to_new_page

Signed-off-by: Axit Patel<EMAIL_ADDRESS>Fixes #42
The Documentation can open in new tab
Checklist:

[x] My code follows the style guidelines of this project.

Please do have a look @nehagup


Add test script

Validation of Ruby API can be done by comparing the output with Python API's output.

Reconsider how to test


Refactor DeveloperQuery#build_pagy

This PR refactors DeveloperQuery#build_pagy by:

Reintroducing alias_method :build_pagy, :pagy
Redefining the method when the :paywalled_search_results feature flag is enabled

Looking at this again, I feel like it adds more complexity. I liked how we got rid of the alias. And wrapping an entire method in a feature flag feels weird to me.
I'm going to close this for now. But feel free to comment with your thoughts!

If you're happy with the current version, then I have nothing else to add 👍🏾


On GKE, how to specify an IP for udp-gateway

Dear All,
I tried to deploy stunner on GKE. As your docs, when apply file stunner-helm/livekit-call-stunner.yaml, it will auto create an udp-gateway service then it will auto get an IP. But I want to specify an IP for it as below that I did, but it still get a different IP.
apiVersion: stunner.l7mp.io/v1alpha1
kind: GatewayConfig
metadata:
  name: stunner-gatewayconfig
  namespace: stunner-dev
spec:
  realm: stunner.l7mp.io
  authType: plaintext
  userName: "user-1"
  password: "pass-1"
  loadBalancerServiceAnnotations:
    networking.gke.io/load-balancer-type: Internal

---
apiVersion: gateway.networking.k8s.io/v1beta1
kind: Gateway
metadata:
  name: udp-gateway
  namespace: stunner-dev
spec:
  gatewayClassName: stunner-gatewayclass
  listeners:
    - name: udp-listener
      port: 3478
      protocol: TURN-UDP
  addresses:
    - type: NamedAddress
      value: my_reserved_ip4

The "my_reserved_ip4" created by command:
gcloud compute addresses create IP_ADDRESS_NAME \
    --purpose=SHARED_LOADBALANCER_VIP \
    --region=COMPUTE_REGION \
    --subnet=SUBNET \
    --project=PROJECT_ID

Could you, please help.
Thanks and regards.

Using a fix external IP is, theoretically, supported by STUNner, but this is something that is not quite standardized across cloud providers and so we haven't tested this feature extensively yet.
The problem is that the address type you're using in the Gateway spec (NamedAddress) is deprecated and so we currently do not accept NamedAddress as the address type.
I have two suggestions.
First, try to replace the NamedAddress type with IPAddress as in the below, hoping that GKE would accept it:
apiVersion: gateway.networking.k8s.io/v1beta1
kind: Gateway
metadata:
  name: udp-gateway
  namespace: stunner-dev
spec:
  gatewayClassName: stunner-gatewayclass
  listeners:
    - name: udp-listener
      port: 3478
      protocol: TURN-UDP
  addresses:
    - type: IPAddress
      value: my_reserved_ip4

The other idea would be to create the LB Service manually (just copy-paste the YAML of the udp-gateway Service) and set the fields spec.externalIPs and spec.loadBalancerIP to the IP address you got from GKE. Would this work? Can you reach STUNner now over that IP? If you do then it is a quick patch to change the code to accept NamedAddress, that would at least fix GKE.
Also, can you please copy-paste the YAML of the service STUNner has created (kubectl -n stunner-dev get svc udp-gateway -o yaml)?

It just occurred to me that you could query the IP address assigned by gcloud compute addresses create ..., let the result be A.B.C.D. Then, set this IP with type IPAddress in the Gateway spec.addresses:
apiVersion: gateway.networking.k8s.io/v1beta1
kind: Gateway
metadata:
  name: udp-gateway
  namespace: stunner-dev
spec:
  gatewayClassName: stunner-gatewayclass
  listeners:
    - name: udp-listener
      port: 3478
      protocol: TURN-UDP
  addresses:
    - type: IPAddress
      value: A.B.C.D

It seems the NamedAddress type is not supported outside Google's own in-house load-balancers and, regrettably, we're not Google. Would this solution work for you?

Thank you for your helps,
I tried as your comments but I got below error:
2023-10-27T01:35:25.676233438Z  INFO    renderer        creating public service for gateway     {"name": "stunner-dev/udp-gateway", "gateway": "udp-gateway", "service": "{\"metadata\":{\"name\":\"udp-gateway\",\"namespace\":\"stunner-dev\",\"creationTimestamp\":null,\"labels\":{\"stunner.l7mp.io/owned-by\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"stunner-dev\"},\"annotations\":{\"networking.gke.io/load-balancer-type\":\"Internal\",\"stunner.l7mp.io/related-gateway-name\":\"stunner-dev/udp-gateway\"},\"ownerReferences\":[{\"apiVersion\":\"gateway.networking.k8s.io/v1beta1\",\"kind\":\"Gateway\",\"name\":\"udp-gateway\",\"uid\":\"21560782-753a-4e93-9689-14de0157495c\"}]},\"spec\":{\"ports\":[{\"name\":\"udp-listener\",\"protocol\":\"UDP\",\"port\":3478,\"targetPort\":0}],\"selector\":{\"app\":\"stunner\"},\"type\":\"LoadBalancer\",\"externalIPs\":[\"<IP_ADDRESS>\"],\"loadBalancerIP\":\"<IP_ADDRESS>\"},\"status\":{\"loadBalancer\":{}}}"}
2023-10-27T01:35:25.676331505Z  INFO    renderer        STUNner dataplane configuration ready   {"generation": 2762, "config": "{version=\"v1alpha1\",admin:{name=\"stunner-daemon\",logLevel=\"all:INFO\",health-check=\"http://<IP_ADDRESS>:8086\"},auth:{realm=\"stunner.l7mp.io\",type=\"plaintext\",username=\"<SECRET>\",password=\"<SECRET>\"},listeners=[\"stunner-dev/udp-gateway/udp-listener\":{turn://<IP_ADDRESS>:3478<32768-65535>,public=-:-,cert/key=-/-,routes=[stunner-dev/livekit-media-plane]}],clusters=[\"stunner-dev/livekit-media-plane\":{type=\"STATIC\",protocol=\"UDP\",endpoints=[<IP_ADDRESS>,<IP_ADDRESS>]}]}"}
2023-10-27T01:35:25.676385128Z  INFO    cds-server      processing config update event  {"generation": 2762, "update": "update (gen: 2762): upsert-queue: gway-cls: 1, gway: 1, route: 1, svc: 1, confmap: 1, dp: 0 / delete-queue: gway-cls: 0, gway: 0, route: 0, svc: 0, confmap: 0, dp: 0"}
2023-10-27T01:35:25.67641283Z   INFO    updater processing update event {"generation": 2762, "update": "update (gen: 2762): upsert-queue: gway-cls: 1, gway: 1, route: 1, svc: 1, confmap: 1, dp: 0 / delete-queue: gway-cls: 0, gway: 0, route: 0, svc: 0, confmap: 0, dp: 0"}
2023-10-27T01:35:25.729584964Z  ERROR   updater cannot update service   {"operation": "unchanged", "service": "{\"metadata\":{\"name\":\"udp-gateway\",\"namespace\":\"stunner-dev\",\"creationTimestamp\":null,\"labels\":{\"stunner.l7mp.io/owned-by\":\"stunner\",\"stunner.l7mp.io/related-gateway-name\":\"udp-gateway\",\"stunner.l7mp.io/related-gateway-namespace\":\"stunner-dev\"},\"annotations\":{\"networking.gke.io/load-balancer-type\":\"Internal\",\"stunner.l7mp.io/related-gateway-name\":\"stunner-dev/udp-gateway\"},\"ownerReferences\":[{\"apiVersion\":\"gateway.networking.k8s.io/v1beta1\",\"kind\":\"Gateway\",\"name\":\"udp-gateway\",\"uid\":\"21560782-753a-4e93-9689-14de0157495c\"}]},\"spec\":{\"ports\":[{\"name\":\"udp-listener\",\"protocol\":\"UDP\",\"port\":3478,\"targetPort\":0}],\"selector\":{\"app\":\"stunner\"},\"type\":\"LoadBalancer\",\"externalIPs\":[\"<IP_ADDRESS>\"],\"loadBalancerIP\":\"<IP_ADDRESS>\"},\"status\":{\"loadBalancer\":{}}}", "error": "cannot upsert service \"stunner-dev/udp-gateway\": services \"udp-gateway\" is forbidden: Use of external IPs is denied by admission control"}
github.com/l7mp/stunner-gateway-operator/internal/updater.(*Updater).ProcessUpdate
        /workspace/internal/updater/updater.go:115
github.com/l7mp/stunner-gateway-operator/internal/updater.(*Updater).Start.func1
        /workspace/internal/updater/updater.go:62

As I see, it error caused by duplicate by externalIP and loadbalacerIP ?
\"type\":\"LoadBalancer\",\"externalIPs\":[\"<IP_ADDRESS>\"],\"loadBalancerIP\":\"<IP_ADDRESS>\"}
Could you please advise this?

Hi,
I just found this link:

and stunner operator code:
// forward the first requested address to Kubernetes
	if len(gw.Spec.Addresses) > 0 {
		if gw.Spec.Addresses[0].Type == nil ||
			(gw.Spec.Addresses[0].Type != nil &&
				*gw.Spec.Addresses[0].Type == gwapiv1a2.IPAddressType) {
			// only the first address can be used because
			// stunner is limited to use a single public address
			// https://github.com/l7mp/stunner-gateway-operator/issues/32#issuecomment-1648035135
			svc.Spec.ExternalIPs = []string{gw.Spec.Addresses[0].Value}
			svc.Spec.LoadBalancerIP = gw.Spec.Addresses[0].Value
		}
	}

So, may be this we set externalIP to LoadBalancerIP will raised above error. Because my network team dose not allow to use externalIP in GKE - they will do NAT the internal LoadBalancerIP to public.
Please advise this.

@nhha1602  Hi,
as you mentioned your team does not allow using the externapIP field, thus you would like to set the svc.Spec.LoadBalancerIP field perhaps. I don't know what the answer should be yet however the loadBalancerIP field is deprecated and ignored by most cloud providers. Do you have any proof that GKE supports it?
    // Only applies to Service Type: LoadBalancer.
    // This feature depends on whether the underlying cloud-provider supports specifying
    // the loadBalancerIP when a load balancer is created.
    // This field will be ignored if the cloud-provider does not support the feature.
    // Deprecated: This field was under-specified and its meaning varies across implementations,
    // and it cannot support dual-stack.
    // As of Kubernetes v1.24, users are encouraged to use implementation-specific annotations when available.
    // This field may be removed in a future API version.
    // +optional
    LoadBalancerIP string `json:"loadBalancerIP,omitempty" protobuf:"bytes,8,opt,name=loadBalancerIP"`

We need to figure out first what all these fields mean actually and which of them are supported, etc. I think we need more docs about this topic, if you got some feel free to share with us.

For a quick fix you can just remove the offending line below, build a new stunner image and deploy that:
svc.Spec.ExternalIPs = []string{gw.Spec.Addresses[0].Value}

Or you can remove the other problematic line and start anew:
svc.Spec.LoadBalancerIP = gw.Spec.Addresses[0].Value

Let us know which one works, if any.
Unfortunately support for static external IPs is so underspeficied in Kubernetes and the Gateway API that we don't know what's the most portable way to implement this. The official advice is to use cloud-provider specific Service annotations but we couldn't fine any for GKE, let alone EKS and the other one thousand cloud providers out there.

THank you for your helps,
I remove line: svc.Spec.ExternalIPs = []string{gw.Spec.Addresses[0].Value} and build new image for stunner operator and it worked.
Thank you.

Thanks! Just for summary: svc.Spec.ExternalIPs and svc.Spec.LoadBalancerIP together are superfluous. I'm leaning towards removing svc.Spec.ExternalIPs, @davidkornel wdyt? Do you remember why we added it in the first place?

I'm afraid both of them were added in order to support this feature on different cloud-providers' clusters. Or these fields are not used anywhere and underspecified. Just reading their API documentation reveals that it is not advised to use these, since they are either not supported or the field itself is deprecated, etc. It seems that the svc.Spec.LoadBalancerIP works on GKE, however, it is most likely to not work on other platforms. TBH this quick 'removing that line' fix might have worked but in the long game, we should do some research on this and implement that annotation-based idea that I proposed in this issue, or something like that.

svc.Spec.LoadBalancerIP works on GKE. I tested it on my machine and is also recommended on Stack Overflow.

This has been addressed in l7mp/stunner-gateway-operator@d955a1b, at least for GKE. Feel free to reopen if bug regresses.


Fix bug with diff

Description
There was a bug in diff that made it impossible to use on some arrays with dimension 1.
Issue link (if applicable): #1834
Type of change

[ ] New feature (backwards compatible)
[ ] New feature (breaking API changes)
[x] Bug fix
[ ] Other (Documentation, CI, ...)

Contribution checklist

[x] Add our license to new files.
[x] Check that your code adheres to our coding style.
[x] Write unittests.
[x] Run the unittests and check that they’re passing.
[x] Run the benchmarks to make sure your change doesn’t introduce a regression.

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.Steven Diamond seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.


Add Security Tracker for Garden Linux

What would you like to be added:
Like the Security Tracker of Debian, Garden Linux should also provide a Security Tracker showing what CVEs exist in Garden Linux and which have already been resolved.
Before providing a specific Security Tracker, we should evaluate what possibilities already exists, how are we going to provide the Tracker and create a corresponding concept showing the integration of it.
Why is this needed:
Garden Linux does not provide the exact same packages like Debian. In some cases, specific changes have been made to Garden Linux packages compared to their Debian equivalents. In that case, some additional CVE information must be provided showing the state of the Garden Linux packages and their still existing or fixed vulnerabilities.

Hi everyone,
today we discussed the next steps to accomplish this issue. Thereby, the following steps have been identified:

@gehoern will clone the Security Tracker Repo to Garden Linux
We will provide a patch which enables the Security Tracker to work with multiple CVE files instead of just one.
The integration of the Security Tracker must be discussed with the website developers to define the integration of it there.
Once this is done, we will adjust the scripts within the Security Tracker Repo, so that the website provides static pages instead of dynamic ones.

In addition, we should propably clean up the Security Tracker script from some assumptions that do not work in context of Garden Linux


Schema builder - group min height

Set a minimum height for the content area of a group. This makes it easier to drop params into empty groups.
Very minor change, but makes it quite a bit easier to drop into new groups in my testing.
Before:

After:

Suggested by @ggabernet in nf-core/tools#626

I am still not 100% happy how it looks like. How about some muted help text in there a la "drag and drop a parameter here"?

Ok, I got it to work with the helper text instead. I think it's nicer 👍

Even nicer like this!

@mashehu - happy with this now?

yes! I would prefer if the text would disappear already while hovering with a grabbed parameter over the group, but one can't have everything 🙂

Yeah me too, but that was going to be more difficult 😅 Also having the text there actually makes it easier to drop..


Compile Java classes to Java 8 target

Since we compile classes by default with Java 11, the java
classes that are generated are versioned at 55. This breaks
compatibility with the majority of Java runtimes.
This commit introduces a compile target for java classes in the
project so that anyone running JRE8 or later will be able to
utilize these classes without running into compatibility issues.
Tested with javap to confirm using a Java11 compiler:
Before:
sbt -java-home /Library/Java/JavaVirtualMachines/openjdk-11.0.2.jdk/Contents/Home ";clean;compile"
...
$ javap -verbose core/target/scala-2.12/classes/pdi/jwt/JwtArrayUtils.class | grep "major"
major version: 55
After:
sbt -java-home /Library/Java/JavaVirtualMachines/openjdk-11.0.2.jdk/Contents/Home ";clean;compile"
$ javap -verbose core/target/scala-2.12/classes/pdi/jwt/JwtArrayUtils.class | grep "major"
major version: 52

Fixes #128

Thank you so much for both investigating and fixing it!


Multiple listing modals being opened at once

Is there an existing issue?

[X] I have searched the existing issues

What happened?

👋


Command "csolution run -g " fails when define with a value is used

Is there an existing issue for this?

[X] I have searched the existing issues

Current Behavior
In CMSIS-Toolbox.2.4.0 command "csolution run -g " fails when a symbol with a value is defined under define section in cproject/clayer file.
Expected Behavior
Command "csolution run -g"  should execute also when define with a value is used.
Steps To Reproduce

Create a csolution project
In cproject file add a define with a value
Example:

 define:                       # Start a list of define statements
    - TestValue: 12            # add symbol 'TestValue' with value 12

Execute command:
csolution <solution>.csolution.yml run -g CubeMX -c <context>

Reported error:

Unmarshal: yaml: unmarshal errors:
  line 42: cannot unmarshal !!map into string
Error : yaml: unmarshal errors:
  line 42: cannot unmarshal !!map into string

error csolution: executing generator 'CubeMX' for context 'test.Debug+device' failed

Affected tools

[ ] cbuild
[ ] cbuild-gen
[ ] cpackget
[ ] csolution
[ ] packchk
[ ] svdconv

Affected operating systems

[x] Windows amd64
[ ] Windows arm64
[ ] Linux amd64
[ ] Linux arm64
[ ] MacOS amd64
[ ] MacOS arm64

Environment
No response

@DavidLesnjak, would you agree that this error message comes from cbridge?
It looks like a define with value assignment is "breaking" the YAML parser in cbridge.
Note that running cbuild works correctly.

It looks like cbridge tries to parse the define as a string even when it can be a key/value pair.
https://github.com/Open-CMSIS-Pack/generator-bridge/blob/v0.9.5/internal/cbuild/cbuild.go#L89
FYI @bgn42 @thorstendb-ARM


Added XO game

Title and Issue number
XO Game #2088
Close #2088
Checklist:

[X] I have mentioned the issue number in my Pull Request.
[X] I have commented my code, particularly in hard-to-understand areas
[X] I have created a helpful and easy to understand README.md

https://github.com/pranjay-poddar/Dev-Geeks/assets/133862694/a653f9b7-a643-4ed0-af9c-e28dcc0701fe

@MohitGupta121

@pranjay-poddar Can you please merge it so that I can make other PRs?

@pranjay-poddar @MohitGupta121

@PoulavBhowmick03 merged.


play12 <IP_ADDRESS>

couldn't get the test to work with a plain IO.popen
should the executable be renamed play12 rather than introducing a conflict?

should the executable be renamed play12 rather than introducing a conflict?

We usually just conflict. Generally don't rename binaries unless it's something users expect, i.e. it happens upstream and/or other package managers. Open to persuasion though if it happens elsewhere.

We don't add conflicts_with to core formula when the conflict is with a tap, right? sox.rb doesn't need to be changed?

Merged in https://github.com/Homebrew/homebrew-versions/commit/bf77f34ee6283969ba555315a3c66f2c4715de19, Thanks!

We don't add conflicts_with to core formula when the conflict is with a tap, right?

Nope, core formulae remain untouched in this situation :+1:.


Provide adapter for Babylon JS

Awesome, thank you! I'm less familiar with Babylonjs so I'm not sure what the best way to do this would be but it seems like it would be great to enable the project to work easily with three.js and Babylon.
The simplest approach I can think of is a quick Babylon.js scene -> three.js scene converter. Not sure if anything like that already exists.


make sure the types.d.ts file is copied do dist

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 1 (0.0%)  changed or added relevant line in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 83.129%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

src/typescript-generator/repository.js
0
1
0.0%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
2473

Relevant Lines:
3040

💛  - Coveralls


Release to fez and remove from p6c

Hi,
from what I can see, currently, this module is available both in the "zef ecosystem" and p6c - however, the p6c version is more up-to-date. Please make releases using fez and then this repository can be removed from the old master list which is really a legacy thing.
Thank you.

I've just successfully uploaded with fez, but I don't remember what p6c is.

For all intents and purposes, this humongous text file is p6c. The dependency managers would simply examine the META files to resolve dependencies.
It was pretty obvious from early on that this is not going to scale, it's not really sufficient for versioning or integrity checks. This first led to setting up a CPAN infrastructure for Perl 6/Raku and then the creation of the "zef ecosystem" (which is quite a dysfunctional name but oh well).
The goal would be to eventually move away from p6c (and CPAN as well but that's a much more isolated thing) - all your concern should be this PR that I opened. https://github.com/Raku/ecosystem/pull/625 If this repository gets removed, it means that it won't keep popping up in raku.land and one won't retrieve it implicitly from the git repo's HEAD. Of course, people will still be able to explicitly install from the content of your repo but not because of any central ecosystem.
Instead, you will be able to (and have to, at the same time) release your code using fez. The versions you explicitly upload, with the metadata you set, will be authoritative, over whatever the git repo has.

I think this can be closed, I just wanted to give it some time, "to sink in". :)


java.lang.NoSuchMethodError: No virtual method isConnected()I in class Lnet/butterflytv/rtmp_client/RTMPMuxer; or its super classes (declaration of 'net.butterflytv.rtmp_client.RTMPMuxer' appears in /data/app/com.fel.example-1/base.apk:classes3.dex)

java.lang.NoSuchMethodError: No virtual method isConnected()I in class Lnet/butterflytv/rtmp_client/RTMPMuxer; or its super classes (declaration of 'net.butterflytv.rtmp_client.RTMPMuxer' appears in /data/app/com.fel.example-1/base.apk:classes3.dex)

@niteshfel need to add implementation 'net.butterflytv.utils:rtmp-client:0.2.8' yourself.
data had send to rtmp server, but no video show. audio works fine.
    implementation 'net.butterflytv.utils:rtmp-client:0.2.8'
    implementation 'com.github.takusemba:rtmppublisher:1.1.3'


Add task processing workflow busy metric

What changed?
Emit task processing workflow busy metric instead of task error metrics when failed to get workflow execution lock within timeout during task processing.

Why?
If a workflow schedules a large number of childworkflows or activities in a single decision batch, most of tasks will fail due to timeout error when getting the execution lock, and we will backoff the execution based on this error. This is an expected behavior so we should not emit task error metrics and cause the alert to fire in this case.

How did you test it?
Integration test.

Potential risks
N/A, only metrics changes.

Coverage increased (+0.02%) to 61.443% when pulling d70afb871706bb90e637ba8a13af02f2aaaf66a8 on yycptt:task-workflow-busy-metric into a04ba160ed8a208ddd480283f85aeb7d7c786691 on uber:master.

Coverage increased (+0.02%) to 61.443% when pulling d70afb871706bb90e637ba8a13af02f2aaaf66a8 on yycptt:task-workflow-busy-metric into a04ba160ed8a208ddd480283f85aeb7d7c786691 on uber:master.


Checks on master currently fail

 Run actions-rs/audit-check@v18s
##[error]The process '/usr/share/rust/.cargo/bin/cargo' failed with exit code 101
Run actions-rs/audit-check@v1
/usr/share/rust/.cargo/bin/cargo generate-lockfile
    Updating crates.io index
error: no matching package named `tendermint` found
location searched: /home/runner/work/tendermint-rs/tendermint-rs/tendermint
prerelease package needs to be specified explicitly
tendermint = { version = "0.13.0-dev" }
required by package `light_node v0.1.0 (/home/runner/work/tendermint-rs/tendermint-rs/light-node)`
##[error]The process '/usr/share/rust/.cargo/bin/cargo' failed with exit code 101

See:
https://github.com/informalsystems/tendermint-rs/runs/596045666

Fixed via #227


Submitting a project for Godot 4 possible yet?

Hello I want to submit an open source tool I made in Godot but it's made for Godot 4 only. Is it possible to add a new Godot 4 tab or are they not being accepted yet?
Edit: nvm I saw a 4.0 module listed.

Indeed, you can submit 4.0 projects, templates and add-ons :slightly_smiling_face:


[Feature Request] Gym tuple space mapping

Motivation
TorchRL cannot handle environments with gymnasium.spaces.Tuple observation spaces. I think these are fairly common outside of MuJoCo/Atari envs.
Solution
Support for tuple spaces
Additional context
Traceback (most recent call last):
  File "/Users/smorad/code/rqdn/segment_dqn.py", line 92, in <module>
    GymWrapper(load_popgym_env(config), device=device),
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/smorad/code/from_src/torchrl/torchrl/envs/libs/gym.py", line 371, in __init__
    super().__init__(**kwargs)
  File "/Users/smorad/code/from_src/torchrl/torchrl/envs/common.py", line 1388, in __init__
    self._make_specs(self._env)  # writes the self._env attribute
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/smorad/code/from_src/torchrl/torchrl/envs/libs/gym.py", line 522, in _make_specs
    observation_spec = _gym_to_torchrl_spec_transform(
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/smorad/code/from_src/torchrl/torchrl/envs/libs/gym.py", line 192, in _gym_to_torchrl_spec_transform
    raise NotImplementedError("gym.spaces.tuple.Tuple mapping not yet implemented")
NotImplementedError: gym.spaces.tuple.Tuple mapping not yet implemented

Checklist

[x] I have checked that there is no similar issue in the repo (required)

On it!

Most of the popgym envs. Or if you'd rather not install it, here's a super basic noop env:
class TestEnv(gym.Env):
    def __init__(self):
        self.observation_space = gym.spaces.Discrete(2)
        self.action_space = gym.spaces.MultiDiscrete([2, 3])

    def step(self):
        return self.observation_space.sample(), 0, False, False, {}

    def reset(self):
        return self.observation_space.sample(), {}

Right so as of now what is clear is that this is not clear :)
The core of the problem is that we do not carry tuples of data in torchrl / tensordict, but we work with dictionaries and dictionaries only.

We could treat that as a LazyStacked Spec but then we should have some lazy stacked tensor that we don't have (and probably don't want) since we need a datastructure that carries any list of tensors / tensordicts and allows for indexing, reshaping etc like we do in tensordict.
We could use a "regular" tensordict with keys "0", "1" etc although it's not straightforward.
Another option is to "force" users to convert their tuples in something else: we can provide a tuple conversion tool and give a proper error message that explains what to do.
We could add an option in the conversion function to allow people to choose between stacking and writing keys in a tensordict. I'm not very enthusiast about that because it is yet another option in the env construction and it will mean that multiple users can work with the same env but with data structures completely different. Also on a high level, it's gonna be hard to say "I want keys for this tuple and shape for this other"
My favourite is this: with tuples, we try to stack. If stacking is not possible (specs do not have the same type, dtype, device, or number of dims) then an error is raised. This error more or less looks like this: "Conversion of tuple spec to torchrl spec failed. This is likely due to heterogeneous specs in your env. To remedy, please use the conversion tool torchrl.envs.convert_gym_tuple_spec."

Thoughts?
cc @matteobettini

Yes i am aligned with 5. AKA try if we can create a lazystack from what we have (this will be represented by a lazystackedspec (either composite or normal)). If this does not succeed we tell users that the only option left is to convert the tuple in a dict with int positional keys and we provide a tool for that
this way we will be able to process any tuple of dicts always

My take is we provide the tool to convert the specs for people that are only using those in their custom simulators, but for gym envs we convert both specs and data.
If you use only the tool to convert specs then you must implement the data conversion yourself.

Currently the spec conversion isn't public. Making it public may require a bit of woodwork

Why not make it public?

same reason as any other private class or function
public = no deprecation, slow pace of development, robust testing needed (no more "this corner case will never happen")
The idea initially was that we were providing one and only one way to wrap a gym env in torchrl so there was no need to provide the tooling to convert the specs. Still today i'm not sure of that that would mean: why converting the specs without an env? Is it as common as that to have a lib that does not use gym as a backend but uses its specs (like VMAS)? If so, shouldn't each simulator use its own conversion?
Not sure why a random user should care about converting specs from gym to torchrl.
This is what puts me in an uncomfortable position with this tuple: there does not seem to be a proper way of automatically do the conversion and I worry that we're more and more getting to a stage where using basic features of the lib requires a deep dive in the lib classes. We're loosing the nice GymWrapper(any_gym_env) that is compelling for many users.

If I'm understanding this correctly, #5 would not be very helpful. If the observations are stackable, they would be represented as a MultiDiscrete(stack_dim * [feat_dim]) or Box(shape(stack_dim, feat_dim)) rather than a tuple.
Tuples are used primarily when the data types do not align. For example a pose Box(shape=(6,)) and a collision sensor Discrete(2). Or an Atari image Box((width, height, colour)) and a score Box((1,)).

Then why don't people name them {"pose": Box, "collision_sensor": Discrete}?
From a good engineering practice point of view, it seems a bit odd to provide 2 ways of doing the same thing no?

Gym was (and still is) a poorly designed interface in many regards -- it should have kept all iterables as dictionaries. Personally, the RL libraries I was using ages ago had issues representing dicts but could represent tuples, which is why I went with tuples for my envs.
I think one of the big draws for RL libraries is handling crazy IO specs. It takes me significantly longer to write code handling the specs than it does to implement DQN or PPO losses. I believe it is the most frustrating part of RL.

I agree, hence I'm more in favour of a restrictive, clear env API than letting users do everything in every possible way.
The way we try to do things at PyTorch is to give users one way of solving a problem, but not two (the "try" in this sentence is there on purpose :) )
To me, there are 2 use cases:

Several specs are put together when they are semantically identical. This is like the "lidars" in MARL, you may have 4 or 10 of them but they convey an info that does not necessarily need to be differentiated by name -- ie enumeration is good.
Several specs are put together but they are semantically different. It's the example you had above: one is a vector of discrete values and the other an image for instance. You would not say: this is "0" and this is "1", it's a very poor representation of the data. It's like naming your variable cat and dog when you're writing code, it's confusing and as you're saying error prone. If one is an image, it should be named "image" or "pixels".
In TorchRL, we decided to handle the first by indexing tensordicts along a shape dimension and the second along a key dimension. I thought deeply about introducing a new class that would be some stack of whatever data is given to it but it goes against what I stated above and I feel we'd be saying something like "we propose tensordict to do things in this way, but if you want to do it in a different way it's fine too", which weakens the message and eventually breaks the logic.

To wrap it up, I think we should provide a solution that is generic. My feeling is that we should:

Try to stack the elements of the tuple together as if they were semantically identical.
If that breaks, an error message is thrown that will tell the user exactly what to do to convert this tuple in a dict.
We provide the tooling to convert that tuple in dict for various gym versions (if that can't be found anywhere else?)

To come back to whether or not we should expose the gym spec conversion tool (@matteobettini) I think not. As I've said earlier, it is not clear to me where that would be needed: if you have a gym env and it's properly defined, that conversion should be done automatically. If you have something that is not gym but with gym specs, it isn't very clear what the specs mean in general as you may be doing anything you want with them so I would not expose the conversion API, that would be unsafe.


Issue with price formatting in percentage mode

Lightweight Charts™ Version: 4.1.1
Description:
I am encountering an issue with formatting the labels on the price scale (and eventually the text inside the colored box where the charts meet the price scale), specifically when the price scale mode is set to percentage. Despite the information provided in previous issues (#1328 and #1291), the suggested solution of using priceFormatter to format the price scale labels while in percentage mode does not seem to be working as expected.
Steps/code to reproduce:

Set the price scale mode to percentage.
Use priceFormatter to format the price scale labels.
Observe that the formatting is not applied to the price scale labels.

Actual behavior:
The formatting applied using priceFormatter does not affect the price scale labels (and the text inside the colored box), and it only displays the percentage.
Expected behavior:

I expect to be able to format the price scale labels while using the percentage mode.
My final goal is to only modify the text inside the colored box, while in percentage mode and would like to show the correlated chart's symbol (title) next to the percentage in the colored box. This would enable different symbols for each chart.

CodeSandbox/JSFiddle/etc link:
Here's the desired result, except it should be in percentage mode, and the format should only apply on the colored box JSFiddle Link
Note:
Please let me know if there is any additional information needed or if there are alternative approaches to achieving the desired formatting in the colored box while in percentage mode. Thank you.

Have you been able to try the percentageFormatter within the Localization settings?

Have you been able to try the percentageFormatter within the Localization settings?

Thank you for your prompt response. The use of percentageFormatter in the Localization settings, resolved my formatting issue in percentage mode.


Output of AU detector

Hi Gajarsky. I really appreciate that you deveop this cool tool! But I am a little bit confused about the output of AU detector like this.

'au': Prediction(label='inner_brow_raiser', logits=tensor([5.9231e-01, 6.0695e-02, 3.0883e-01, 3.8449e-02, 2.9211e-01, 3.2139e-01,
7.0077e-04, 3.4345e-01, 1.0299e-03, 8.1870e-02, 0.0000e+00, 1.3947e-01,
3.1471e-02, 1.4108e-03, 8.3429e-02, 0.0000e+00, 6.6746e-05, 0.0000e+00,
0.0000e+00, 1.1023e-01, 2.9374e-03, 1.3591e-01, 7.4503e-03, 3.5197e-04,
2.9681e-03, 0.0000e+00, 0.0000e+00, 1.6567e-02, 5.1174e-03, 3.3988e-02,
5.1338e-04, 7.6977e-04, 3.8522e-03, 4.3307e-03, 7.2081e-04, 0.0000e+00,
2.0911e-02, 1.7393e-03, 6.8589e-03, 3.1934e-02, 0.0000e+00]), other={'multi': ['inner_brow_raiser']})

From #46 I know that the number is the logits of each AU. However, I am confused that how to interpret these logits? Does it mean the confidence of prediction of each unit? Can I know the position of each predicted unit? Or draw a nice heatmap like the original paper? Thanks!

Thank you for your kind words and for trying out facetorch. Let me help clarify the output structure of the AU detector for you.

Logits: The values you see under logits are indeed the confidence scores for each Action Unit (AU). Higher values represent higher confidence levels.
Label: The label attribute contains the name of a single AU that has the highest confidence among all AUs detected.
other['multi']: This captures all the AUs whose confidence scores (logits) surpass a set threshold, which is currently 0.5. If multiple AUs exceed this threshold, they will all be listed here.

Regarding your other questions:
Currently, facetorch does not have a functionality that enables you to visualize the exact position of each predicted unit.
Additionally, while the original paper might have presented heatmaps, Facetorch does not offer heatmap generation out-of-the-box.
Lastly, the exported TorchScript model used in facetorch does not output the latent node features, which could potentially be used to generate such heatmaps.


⚠ ClamAV has degraded performance

In b7e852e, ClamAV (https://spamassassin.apache.org/) experienced degraded performance:

HTTP code: 200
Response time: 569 ms

Resolved: ClamAV performance has improved in 46e0802.


Checkmarx - E2E - Client_HTML5_Insecure_Storage

Scan Date:
June 30, 2019.
Report
https://cx.wdf.sap.corp/CxWebClient/ViewerMain.aspx?scanId=4547096&ProjectID=63198
File:
\cloud-commerce-spartacus-storefront-develop\projects\storefrontapp-e2e-cypress\cypress\support\utils\login.ts
Line:
48
Violations:
4
Checkmarx Severity
Medium
Issue:
Client_HTML5_Insecure_Storage
Comment:
The application stores sensitive personal data stringify on the client, in an insecure manner, at line 31 of cloud-commerce-spartacus-storefront-develop\projects\storefrontapp-e2e-cypress\cypress\support\utils\login.ts.

See #3647

Security scans of e2e cypress tests to be bypassed for now.


Pass parameters to trans

Being able to dynamically pass parameters to the breadcrumbs because of the @ParamConverter is really awesome.
https://github.com/Abhoryo/APYBreadcrumbTrailBundle/blob/master/Resources/doc/annotation_configuration.md#routes-with-parameters
These parameters could come in really handy if they also should be passed to the Twig trans filter. That way we can use a translation key as the breadcrumb label, and use the parameters in the actual translation.
https://github.com/Abhoryo/APYBreadcrumbTrailBundle/blob/master/Resources/views/breadcrumbtrail.html.twig#L10-L12
Would also be nice to configure the translation domain via an option in the Twig renderer. So something like an OptionResolver and some extra default configuration parameters would be nice.

@rvanlaak, I think @bpolaszek added support for your issue in PR #26. I just added support for the domain attribute in the annotations as well in my fork. I wish we could get them all merged now :)

That would be great, so if #26 could be merged you would be able to make a new PR for localized breadcrumbs?
Already implemented a workaround myself now by overriding the template, and passing the translation domain per application bundle manually.
Currently we've had to move away from annotations quite often because of complex translated breadcrumbs. These could be moved back to annotations then.

I am not really sure how to submit a PR for that, since I have already fixed depreciated TWIG methods, added a pageTitle TWIG extension, and now added this. If I submit this as a PR it will include everything changed. Hmmm....

What about some cherry picking in a new branch based on your upstream/master? :+1:


Smoothing variable

Great Library! Thank you for the time you spent on programming it.
I have one question. I do not want to smooth a value from analog input, but a variable from a light sensor that is connected via I2C. Is this possible with your library?
Best
Peter

Hello,
As with Frickelpiet I wish to use I2C and can't work out how to pass your lib the info.
Great work though! excellent visuals !
lewsut.

I agree, it would be great to be able to use this with any input, not only analogRead!

I think you can feed it via analog.update(your input data here) then grab it via analog.getValue() but you sill need to set it up with ResponsiveAnalogRead analog(x, bool).... I think!?

I agree, it would be great to be able to use this with any input, not only analogRead!

I'll be grateful for this too please

Hi all, looks like I'm not receiving notifications for this repo so sorry about the late reply. To do this you can pass a raw reading as an argument to update. So then in your project you can read your input by whatever means you like, and pass it's output into update. Then getValue will return your smoothed value.
When using update like that, the pin argument is not used, and no analogRead takes place. You may still need to pass a value into the ResponsiveAnalogRead constructor though (it doesn't matter what value as it won't be used). Hope this helps.


How to union or unionAll with jpa?

Querydsl version: 4.4.0
JPAQuery or JPAQueryFactory, i cannot find union or unionAll function.
en... I didn't find any example.
teach me how to write, please. thanks.

JPA does not support union. Either express your queries differently, or use a database specific technology, like querydsl-sql or native queries.

You can achieve set operations in JPQL queries in Querydsl using the Blaze-Persistence integration. See my stackoverflow answer here; https://stackoverflow.com/a/62085941/2104280


Panes shortcuts not working when undocking panes

Description of your problem
What steps will reproduce the problem?

in normal view Ctrl+Shift plus either I or E will switch between IPython Console and Editor
For the IPython Console click on the icon next to the button to close the pane. This will seperate the Console from the rest. (undock button?!)
Now put the cursor in the Editor and press Ctrl+shift+I -> Cursor won't jump to IPython Console as before!
now dock the Ipython Console back -> Shortcut will work again

What is the expected output? What do you see instead?
explained above
Please provide any additional information below
none
Versions and main components

Spyder Version: 3,1,3
Python Version: 3,6,0 64bits
Qt Version: 5.6.2
PyQt Version: 5.6
Operating system: Win7

Dependencies
Please go to the menu entry Help > Optional Dependencies (or
Help > Dependencies), press the button Copy to clipboard
and paste the contents below:

Thanks for reporting. This is a known issue and we're working to try to fix it in Spyder 4, to be released next year.


How to fail a step when testing a Uni?

Hi.
Thanks for your extension. :-)
I am pretty new to Java and Quarkus but have used Cucumber in Javascript.
I want to test a class via a method that returns a Uni. I have devised the following setup to learn how to use Cucumber with Quarkus and it almost works.
The issue I am having is the intentional failure of the 4th line of the example data which I hoped would cause Cucumber to report a failing test. However, instead I am getting a passing result and the message:
Mutiny had to drop the following exception: org.opentest4j.AssertionFailedError: expected: <Sorry, kim, I don't know you.> but was: <Who dat?>

The second question is: Is this the best way to go about structuring a Uni test? I could not find an example anywhere.
(As an aside: To help others who are as new as I am, and who might stumble on this post, I have included the folder structure screenshot (VSCode) because it took me a while to work out where the files should go. It is obvious now, but wasn't when I was starting out. ;-) )

The test_my_greeting.feature file:
Feature: Test My Greeting Service

  Scenario: Test Greeting
    Given my name is "<name>"
    When I send a greeting
    Then the reply should be "<reply>"

    Examples:
      | name  | reply                         |
      | fred  | Hello fred                    |
      | sally | Hello sally                   |
      | kim   | Sorry, kim, I don't know you. |

      # This one should fail
      | kim   | Who dat?                      |

The TestRunner.java file:
package org.acme;

import io.quarkiverse.cucumber.CucumberOptions;
import io.quarkiverse.cucumber.CucumberQuarkusTest;
import io.quarkus.test.junit.main.QuarkusMainTest;
//import org.junit.runner.RunWith;

@QuarkusMainTest

@CucumberOptions(features = { "src/test/resources" }, plugin = { "pretty", "html:target/cucumber-reports/report.html" })
public class TestRunner extends CucumberQuarkusTest {
  public static void main(String[] args) {
    runMain(TestRunner.class, args);
  }
}

(Again, for newbies: you can view the report.html in your browser by using the Finder / File Manager at eg: file:///Path/To/Your/Project/target/cucumber-reports/report.html)
The GreetingService.java file:
package org.acme;

import javax.enterprise.context.ApplicationScoped;

import io.smallrye.mutiny.Uni;

@ApplicationScoped
public class GreetingService {
  public String greeting (String name) {
    if ("fred,sally".contains(name)) {
      return "Hello " + name;
    } else {
      return "Sorry, " + name + ", I don't know you.";
    }
  }

  public Uni<String> greetingUni (String name) {
    return Uni.createFrom().item(greeting(name));
  }
}

And finally, the TestGreeting.java file:
package org.acme;

import static org.junit.jupiter.api.Assertions.assertEquals;

import javax.inject.Inject;

import io.cucumber.java.en.*;
import io.quarkus.logging.Log;
import io.smallrye.mutiny.Uni;

public class TestGreeting {
  @Inject
  GreetingService greetingService;

  String testName = "";
  Uni<String> greetingUni = null;

  @Given("my name is {string}")
  public void my_name_is(String name) {
    testName = name;
    System.out.println("GIVEN with " + testName);
  }

  @When("I send a greeting")
  public Uni<String> i_send_a_greeting() {
    System.out.println("WHEN with " + testName);

    greetingUni = greetingService.greetingUni(testName);
    return greetingUni;
  }

  @Then("the reply should be {string}")
  public void the_reply_should_be(String reply) {
    System.out.println("THEN for " + testName + " expected reply to be: " + reply);

    greetingUni.subscribe().with(
        greetingReply -> {
          System.out.println("greetingService.greetingUni greetingReply=" + greetingReply);

          // This throws the org.opentest4j.AssertionFailedError on example 4
          // but Mutiny "drops" it, so the test passes.
          assertEquals(greetingReply, reply);
        },
        failure -> {
          Log.error("greetingService.greetingUni failed=" + failure.toString());
        });
  }
}

Any suggestions on how all this should be done would be gratefully received. :-)
Cheers,
Murray

Ok, I have found the problem and will update this once fully tested...


Cleaned up deltaspike data example to use Java 8 based features.  Fix…

…ed missed assertions and use container managed transaction strategy.

Can one of the admins verify this patch?

One of the things I'm not sure about - whats supposed to be the difference here and in https://github.com/wildfly-swarm/wildfly-swarm-examples/tree/master/jaxrs/jaxrs-cdi-deltaspike ?

Ok to test


Use apollo signatures

I want to merge this change because it eases developers life.
#Fixes #2578
Pull Request Checklist

[ ] Privileged views and APIs are guarded by proper permission checks.
[ ] All visible strings are translated with proper context.
[ ] All data-formatting is locale-aware (dates, numbers, and so on).
[ ] Database queries are optimized and the number of queries is constant.
[ ] The changes are tested.
[ ] The code is documented (docstrings, project documentation).
[ ] GraphQL schema and type definitions are up to date.

Please fix the import order identified by Code Climate before merging.


HydrostaticMass profile init telling me values quantity has NaN or infinite values when it does not

This goes away when I use the fit radii (with the first radius as 1 rather than 0) property of t_prof, rather than radii.
I know it doesn't like radii of 0, but the error is either wrong or needs to be more informative that the actual mass values are NaNed rather than values of the profiles being passed in


react-universal-component error

Are you reporting a bug? Yes

Using non-static-routing shows error from react-universal-component:
/Users/cdock/dev/non-static-routing-app/node_modules/react-universal-component/dist/utils.js 59:11-29
Critical dependency: the request of a dependency is an expression

Environment

react-static -v:  6.0.0-beta.16
node -v: v9.11.1
yarn --version or npm -v: 6.2.0
Operating system: macOS
Browser and version (if relevant):

Steps to Reproduce the problem
Base your steps off of any freshly installed react-static template!

create new app from non-static-routing
update the react-static dep to next
add missing dependency babel-runtime
start the app

Expected Behavior
no errors

Reproducible Demo
react-static create .... non-static-routing

Same here

here is the temporary solution: https://github.com/faceyspacey/react-universal-component/issues/139 downgrade to webpack 4.16.1 for now

Info: master branch now points to 5.x.x and the v6 branch to 6.0.0-beta.

This is not a bug, not will it cause any harm to your project.
Its due to how we load code-split modules, which is a variable.
As the core maintainer of Universal, I can confirm there isnt anything "wrong"
We are currently investigating a new way to load modules in order to make the warning go away


Intermittent Dot plot zoom in error

On PR #604: this is not consistently reproducible, but 3 times now, I've gotten my dot plot into a state where the zoom in gets stuck. This tends to happen after I've been using the vertical marker line in the spectrum viewer that draws the corresponding line in the dot plot viewer.  Here is a screenshot of what it looks like.
(The dotted gray line shows the zoom in range specified).

Terminal errors:

ERROR:solara.server.patch:Uncaught exception: Traceback (most recent call last):
  File "/Users/Pat/anaconda3/envs/common-solara/lib/python3.11/site-packages/ipywidgets/widgets/widget.py", line 222, in m
    return(method(self, *args, **kwargs))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/Pat/anaconda3/envs/common-solara/lib/python3.11/site-packages/ipywidgets/widgets/widget.py", line 773, in _handle_msg
    self.set_state(state)
  File "/Users/Pat/anaconda3/envs/common-solara/lib/python3.11/site-packages/ipywidgets/widgets/widget.py", line 650, in set_state
    with self._lock_property(**sync_data), self.hold_trait_notifications():
  File "/Users/Pat/anaconda3/envs/common-solara/lib/python3.11/contextlib.py", line 144, in __exit__
    next(self.gen)
  File "/Users/Pat/anaconda3/envs/common-solara/lib/python3.11/site-packages/traitlets/traitlets.py", line 1510, in hold_trait_notifications
    self.notify_change(change)
  File "/Users/Pat/anaconda3/envs/common-solara/lib/python3.11/site-packages/ipywidgets/widgets/widget.py", line 701, in notify_change
    super().notify_change(change)
  File "/Users/Pat/anaconda3/envs/common-solara/lib/python3.11/site-packages/traitlets/traitlets.py", line 1525, in notify_change
    return self._notify_observers(change)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/Pat/anaconda3/envs/common-solara/lib/python3.11/site-packages/traitlets/traitlets.py", line 1568, in _notify_observers
    c(event)
  File "/Users/Pat/anaconda3/envs/common-solara/lib/python3.11/site-packages/plotly/basewidget.py", line 719, in _handler_js2py_pointsCallback
    trace._dispatch_on_selection(points, selector)
  File "/Users/Pat/anaconda3/envs/common-solara/lib/python3.11/site-packages/plotly/basedatatypes.py", line 6249, in _dispatch_on_selection
    callback(self, points, selector)
  File "/Users/Pat/anaconda3/envs/common-solara/lib/python3.11/site-packages/glue_plotly/viewers/common/tools.py", line 53, in on_selection
    self._on_selection(trace, points, selector)
  File "/Users/Pat/Documents/GitHub/hubbleds/src/hubbleds/viewers/tools/wavelength_zoom.py", line 22, in _on_selection
    super()._on_selection(_trace, _points, selector)
  File "/Users/Pat/anaconda3/envs/common-solara/lib/python3.11/site-packages/glue_plotly/viewers/common/tools.py", line 102, in _on_selection
    with self.viewer.figure.batch_update(), delay_callback(viewer_state, 'x_min', 'x_max'):
  File "/Users/Pat/anaconda3/envs/common-solara/lib/python3.11/contextlib.py", line 144, in __exit__
    next(self.gen)
  File "/Users/Pat/anaconda3/envs/common-solara/lib/python3.11/site-packages/plotly/basedatatypes.py", line 3062, in batch_update
    self.plotly_update(
  File "/Users/Pat/anaconda3/envs/common-solara/lib/python3.11/site-packages/plotly/basedatatypes.py", line 2915, in plotly_update
    ) = self._perform_plotly_update(
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/Pat/anaconda3/envs/common-solara/lib/python3.11/site-packages/plotly/basedatatypes.py", line 2967, in _perform_plotly_update
    restyle_changes = self._perform_plotly_restyle(restyle_data, trace_indexes)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/Pat/anaconda3/envs/common-solara/lib/python3.11/site-packages/plotly/basedatatypes.py", line 1735, in _perform_plotly_restyle
    raise ValueError(
ValueError:
Invalid property path 'marker.size' for trace class Heatmap

Possible culprit - we noticed that the state of the zoom in tool button got out of sync with the state of the tool itself. The zoom button was in the "on" state, but the vertical line was in measurement mode rather than zoom mode.

so @Carifio24 @patudom A little more info on what is happening here. Something is preventing on_selection from running in the tool.
A normal call sequence looks like
PlotlyHZoomMode.activate
PlotlySelectionMode.activate
PlotlyDragMode.activate
PlotlySelectionMode.on_selection
WavelengthZoom._on_selection
PlotlyHZoomMode._on_selection
PlotlySelectionMode.deactivate
PlotlyDragMode.deactivate

but instead what happens when it doesn't work is
PlotlyHZoomMode.activate
PlotlySelectionMode.activate
PlotlyDragMode.activate

I am not sure why, but this is the furthest I have gotten on this problem so far.
I generated these by adding a print statement to all of the those Plotly tools.
There is no error emitted for me when it breaks.


[Question][Sluggable] generate slug only when publish my documents

Hello,
I have an application that needs to have slugs for each content but only when they are published online and not at the creation of the content.
My documents contain fields "title" with which I generate the slug, a field "publicationStatus."
/**
 * @var string
 *
 * @ODM\String
 * @ODM\Index(unique=true)
 * @Assert\NotBlank(message="article.title.required")
 */
protected $title;

/**
 * @ODM\String
 * @Gedmo\Slug(fields={"title"})
 */
private $slug;

/**
 * @var string
 *
 * @ODM\String
 */
protected $publicationStatus;

What I would do is generate the slug when the status of publication is set to "online".
$entity = $em->find('Entity\Something', $id);
$entity->setPublicationStatus("online");
$em->flush();

Once my slug is generated it could not be updated !

ping @stof  @l3pp4rd  I would like to know how to deal with that too. I thought that setting the slug the null value in a prePersist / preUpdate event while the condition do not match the business rule would regenerate the slug but unfortunatly it does not. Any advice ? (Thanks for your time invested on this library btw)

Slug is always built on flush. There is no way to comfigure it differently. If slug does not regenerate when setting null, then it may be an issue. Concerning your problem, you may have two entities, Draft and Post. Library won't adapt to all use cases.


Saving result of multiple select-statements in one array?

Hi everybody,
When I run the following code, the output looks like:

So here is my problem:
I want to write the result of the first select-statement in the array "select_result ", display its content
and delete/overwrite its content for the next select-statement. But as you can see in the screenshot, the results of all 3 select-statements are stored in the array. The event "request.on()" is somehow executing all 3 select-statements simultaneously?
Here is the code:

var ConnectionPool = require('tedious-connection-pool');
var Request = require('tedious').Request;

var connectionConfig = {
    server: 'MSserver',
    userName: 'user',
    password: 'password',
    options: {
        database: 'databaseName',
        port: 55555
    }
};

var poolConfig = {
    min: 1,
    max: 10,
    log: true
};

//Define a pool:
var pool = new ConnectionPool(poolConfig, connectionConfig);

var select_result = [];
var loop_count = 0;

//Execute SQL SELECT commands
execute_SELECT_Statement('SELECT ID FROM table');
//select_result = [];
//display_Select_Result(select_result);

execute_SELECT_Statement('SELECT Room FROM table');
//select_result = [];
//display_Select_Result(select_result);

execute_SELECT_Statement('SELECT Floor FROM table');
//select_result = [];

display_Select_Result(select_result);

/*
 * Function which selects from database-tables
 */
function execute_SELECT_Statement(sql_statement) {

    pool.acquire(function(err, connection) {
        if (err)
            console.error(err);

        //use the connection as normal
        var request = new Request(sql_statement, function(err, rowCount) {
            if (err)
                console.error(err);

            //release the connection back to the pool when finished
            connection.release();
        });

        connection.execSql(request);

        request.on('row', function(columns) {
            console.log('loop_count: ' + loop_count);
            select_result[loop_count] = columns[0].value;
            loop_count++;
        });
        //pool.drain();
    });
   loop_count = 0;
}

/*
 * Function which displays content of any array
 */
function display_Select_Result(select_result) {
    for (var l = 0; l < select_result.length; l++) {
        console.log('[' + l + ': ' + select_result[l] + '\n');
    }
}

https://github.com/pekim/tedious-connection-pool/issues/26
You posted essentially the same question on my project, Tedious Connection Pool. What you are reporting is not a bug in either library. Your questions are really about basic programming technique.
That said, I did post several pointers that I hope are helpful to you. But, the github Issue Tracker is for reporting bugs in the library not general help. For more help, I suggest you use stackoverflow.com. That community is very capable of helping you learn and solve these issues.

Hi ben-page,
thank you for your tips.
I am new to Github and Javascript. Therefore I wanted to post my questions on Github, because I wanted to ask you (because its your project) directly.


What's the status of the version 1.0 release?

Hello again, I was wondering what is the status of the version 1.0 release to work with STAC v1.0? My work around has been to have a duplicate of the 0.9.0 jsonschema renamed to 1.0.0 in my fork.
@raphaelrpl are there any issues that could help with for a STAC v1.0 compatible version of stac.py or pypi release.

Hi @Mahir-Sparkess
The package stac.py is not currently under active development and will be archived soon.
Please, consider migrating to pystac-client instead.

I see, thank you for the response.


[config] early return if cannot find GlobalDataPath

Summary
From inspecting the code, I think this should early return. The following statement
about readConfig(filepath.Join(dataPath, "devbox.json")) doesn't make sense
to execute if there's been an error in retrieving the dataPath.
How was it tested?
buildkite testscripts

Current dependencies on/for this PR:

main

PR #739   👈

This comment was auto-generated by Graphite.


WIP: markov-network

Before I finished off documentation and tests I wanted to make sure that this meets the requirements.
I have provided the following example to see how it lines up with https://github.com/dwavesystems/markov-network#example
            >>> fixed = {'n01': 1, 'n03': 0. }
            >>> edges = [['n01', 'n02', 3.0, 4.0, -6.0, 2.0],
                         ['n02', 'n04', 5.0, -1.0, -4.0, 2.0],
                         ['n03', 'n04', 1.0, 6.0, -6.0, 2.0],
                         ['n03', 'n05', -4.0, -3.0, 6.0, 5.0]]
            ...
            >>> # generate the markov network in a form that can be solved
            >>> network = dimod.BinaryQuadraticModel.from_markov_random_field(edges)
            ...
            >>> # next we want to clamp/fix some of the variables
            >>> clamped = network.copy()
            >>> clamped.fix_variables(fixed)
            ...
            >>> # sample
            >>> samples = dimod.ExactSolver().sample(clamped)
            >>> samples.first
            Sample(sample={'n02': 0, 'n04': 1, 'n05': 0}, energy=-1.0, num_occurrences=1)

One piece that is missing is the export to pandas dataframe. See #332

Codecov Report

Merging #333 into master will decrease coverage by 0.01%.
The diff coverage is 100%.

@@            Coverage Diff             @@
##           master     #333      +/-   ##
==========================================
- Coverage    92.3%   92.29%   -0.02%
==========================================
  Files          40       40
  Lines        2327     2335       +8
==========================================
+ Hits         2148     2155       +7
- Misses        179      180       +1

Impacted Files
Coverage Δ

dimod/binary_quadratic_model.py
96.21% <100%> (+0.05%)
:arrow_up:

dimod/io/json.py
95.32% <0%> (-0.94%)
:arrow_down:

Continue to review full report at Codecov.

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

Thanks for the comments! The first point is fundamentally philosophical so I will address the technical ones in this comment.

Because the phi and quadratic-edge formats are not part of a known standard, I think that should be part of a wrapper provided to EigenMed. I would be happy to write it.
I am completely happy to have this block release, the good news is that it is being written today and should be up by the end of the week.
As was mentioned above, see #334
It does, I provided an example to Jesse before that had a bug but the above is correct.

Thanks for your request for a Markov Network object. Regarding MNs vs BQMs, I agree we want to improve transparency for developers who work regularly with MNs. I think we'll look to see if some of that can be done with common MN programming tools. If there are any developers who work regularly with Markov Networks who can point us to any existing open source projects that would be helpful!

Excellent, thanks for taking these requirements into account.  I’ll look for evidence on the first point; it’s not just philosophical.
On 12/20/18, 2:50 PM, "Alexander Condello" <notifications<EMAIL_ADDRESS>wrote:
Thanks for the comments! The first point is fundamentally philosophical so I will address the technical ones in this comment.
·         Because the phi and quadratic-edge formats are not part of a known standard, I think that should be part of a wrapper provided to EigenMed. I would be happy to write it.
·         I am completely happy to have this block release, the good news is that it is being written today and should be up by the end of the week.
·         As was mentioned above, see #334https://github.com/dwavesystems/dimod/pull/334
·         It does, I provided an example to Jesse before that had a bug but the above is correct.
—
You are receiving this because your review was requested.
Reply to this email directly, view it on GitHubhttps://github.com/dwavesystems/dimod/pull/333#issuecomment-449131144, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AV3BdeTxS7OFazZJNKlwdFjSm7A4ePfEks5u6_f3gaJpZM4ZcmC0.

It's possible that "transparency" is the wrong term for what we're looking to provide for the user. I interpret Steve's request not as "philosophy" but as a desire to provide the user with the best OO standard:

"dealing with BQMs is an unnecessary conceptual overload": This is not philosophy, I see it is a request for encapsulation and abstraction. Let's only define what is needed for the situation. In particular, this principle of OO programming asks that the developer only include aspects that are relevant to the particular situation. Are BQM's relevant? Is an ExactSolver something the user needs to understand? Or could we encapsulate these in some syntactic sugar? Speaking of...
"slight bit of syntactic sugar": A spoonful of polymorphism is all that we need here. For instance, let MarkovNetwork inherit from NetworkX (for graph stuff) and dimod (for sampling work) and you can then overload/redefine the sample method in whatever way is necessary for a MarkovNetwork. For example, MarkovNetwork(param1, param2, token=mytoken).sample([list of edges], {dict of forced vars}) would call the QPU and return a DF. This is simple, elegant, and the user never needs to know that a BQM or QUBO was created.
3 "often struck, in a negative way, by how many concepts/terms I'm expected to grok to do almost anything": A clear signal/sanity check that abstraction and encapsulation may not be working the way people think.

IMHO, creating BinaryQuadraticModel.from_markov_random_field() completely misses the power of encapsulation and polymorphism. We want to empower a developer to stay in their space by enabling them to extend our packages with common patterns. We do not want to force them to come into our space and have to figure out how to manipulate a BinaryQuadraticModel and then fiddle around with a Response object.  Choosing a "common" open source tool isn't much better, and sounds like a very heavy-weight solution.
Alright, that's my $0.02. As usual, happy to answer any questions. :)

Appreciate the $0.02! I want to make sure that we make the best code possible.
For a user who desires to solve their markov network problem on a QPU, understanding BQMs is relevant. Since concepts like sampling and fixing variables are properties of the BQM, not concepts of the markov network, it makes sense to include them in a binary quadratic model object. The point here is not to pretend that a BQM is a markov network, the method from_markov_random_field derives a BQM from an input that defines a markov network. For your specific example MarkovNetwork(param1, param2, token=mytoken).sample([list of edges], {dict of forced vars}) includes two notions, 'token' and 'sample' that are QPU and BQM properties respectively, not concepts associated with markov networks.
I do think that it would make sense to define what that input should be. I have followed the syntax from the experimental code that defines a markov network in term of a list-of-lists, but I would happily take suggestions of better input formats. I do not think though that creating a MarkovNetwork object is something that fits within Ocean where we try whenever possible to use existing formats/frameworks/libraries. My preference would be to use an existing format/library but failing that a 'native' python object that encodes the relevant information in a simple way is best.
This is also just the first pull request dealing with these concepts. If you know of an existing library or framework that is commonly used in the markov network community that we could extend using this logic then please let me know!

@arcondello, In this case the sample method happens to be "BQM-derived". My point was that in developing extensions it is important to have a common framework, so I used the term sample to indicate that I want to transform my QUBO into QMI. The best-in-class tools for this allow for the developer to subclass a base class with such a method, and all that is expected as data moves through a pipeline is that each class has such a common method.  Since sample seems ubiquitous in dwave code, it's the clear option. Libraries like sklearn use fit, transform, and fit_transform so that large pipelines can fit seamlessly together. The closest analogy for us would likely be sample == fit_transform.
I entirely agree that it is not ideal to create a MarkovNetwork object within Ocean (or dimod for that matter). That's why we initially submitted the code as a separate (extension) package (with dimod and Ocean dependencies). I like many of the changes/simplifications you've proposed, but I'm still not clear on why keeping it a a separate package is so undesirable.


a single dot or box

Thank you for providing, two onnx files. Would I like to ask, does this great algorithm only support the output of a single dot or box

yes it supports a single point (dot) or a single box.

yes it supports a single point (dot) or a single box.

What should be done? Is it possible to output multiple boxes? Any ideas or suggestions?

for multiple inputs, you can try this: https://github.com/NVIDIA-AI-IOT/nanosam


include what key is empty or null

currently I'm getting this error message and its difficult to debug what the offending key is

Changes in line 123, validate_trial_generate_json results in the following error:
errorMsg = "Parameters" + word + HPOErrorConstants.VALUE_MISSING
NameError: name 'word' is not defined


feat: main and test net flags

Allows for providing network alias instead of IDs.

This change is

Looks good! Missing the default connection to our bootnode cluster:
When mainnet (networkID 1), connect to /dnsaddr/mainnet.ethswarm.org
When mainnet (networkID 10), connect to /dnsaddr/mainnet.ethswarm.org
Also, please ensure that we update the commented-out config for our packages, update the documentation, validate configuration in docker packages.

When mainnet (networkID 1), connect to /dnsaddr/mainnet.ethswarm.org
When mainnet (networkID 10), connect to /dnsaddr/mainnet.ethswarm.org

Huh?  Shouldn't the second be "When goerli"?  Shouldn't these be different dnsnames?

@significance , heads up for configuration change. Please update the docs.

When mainnet (networkID 1), connect to /dnsaddr/mainnet.ethswarm.org
When mainnet (networkID 10), connect to /dnsaddr/mainnet.ethswarm.org

Huh? Shouldn't the second be "When goerli"? Shouldn't these be different dnsnames?

:+1:


refactor: NoMatch to functional component

High Level Overview of Change

Add back default landing pages for /accounts and /transactions
Add ability to customize warning
Fix missing space between icon and warning
Update default i18n key because their name was causing notFound to be false so it would not show "Not Found" warning by default.

Type of Change

[x] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[x] Refactor (non-breaking change that only restructures code)
[x] Tests (You added tests for code that already exists, or your new feature included in this PR)

TypeScript/Hooks Update

[x] Updated files to React Hooks

Before / After
Account No Id
Before

After

Transaction No Hash
Before

After

Transaction Invalid Hash (did not change)
Before

After

Future Work
Switch to Typescript.

Can this handle ledger not found when clicking on a validator on outdated ledger as well?

Can this handle ledger not found when clicking on a validator on outdated ledger as well?

I think that should be handled differently because we have all the data except for the hash of the ledger this validator last reported.  We should display everything normally and just make the ledger index show as white.
What this should be used for is when a validator cant be found at all.


fix(aws-cloudfront-s3) cfn nag error when using existingBucketInterface

Issue #, if available: 318
Description of changes:
Fix Cfn Nag error when passing  existingBucketInterface to aws-cloudfront-s3 construct
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

AWS CodeBuild CI Report

CodeBuild project: codebuildgithubautobuildPro-fkVQbXRiQi6A
Commit ID: 844a33423802517159c08d728d998fa1c370a9b4
Result: FAILED
Build Logs (available for 30 days)

Powered by github-codebuild-logs, available on the AWS Serverless Application Repository

AWS CodeBuild CI Report

CodeBuild project: codebuildgithubautobuildPro-fkVQbXRiQi6A
Commit ID: b32353dbc8af96157c583f43b11f6d9f2828fa1d
Result: SUCCEEDED
Build Logs (available for 30 days)

Powered by github-codebuild-logs, available on the AWS Serverless Application Repository

AWS CodeBuild CI Report

CodeBuild project: codebuildgithubautobuildPro-fkVQbXRiQi6A
Commit ID: 7fc4a2d517fb6936711855765bb1664430e32c33
Result: SUCCEEDED
Build Logs (available for 30 days)

Powered by github-codebuild-logs, available on the AWS Serverless Application Repository

AWS CodeBuild CI Report

CodeBuild project: codebuildgithubautobuildPro-fkVQbXRiQi6A
Commit ID: 567bcb07dc17769a4d7937578aeda402db9f3a06
Result: SUCCEEDED
Build Logs (available for 30 days)

Powered by github-codebuild-logs, available on the AWS Serverless Application Repository


Need better words to conceptually describe states of BindingsSets

From @vsbogd  (in code review)

BindingsSet::single in matcher means that two atoms are equal, and BindingsSet::empty means they cannot be matched. Thus I don't see the use-case for such semantics of _empty() yet. And if this semantics is not used then name can be confusing because one may think it returns true iff no Bindings instances are inside.

I don't feel like this conceptual difference is adequately communicated by the words "empty" and "single".
Maybe "unconstrained" and "fully_constrained"?  Those are clumsy to write and probably not accurate.  Any other ideas?
Context: I'm seeing this as a teeny tiny step towards laying the foundation to support infinite, explosive, lazily evaluated, or otherwise unbounded bindings.  I still don't have a picture of what that needs to look like, but this seems like the beginnings of building up that conceptual framework.

Maybe "unconstrained" and "fully_constrained"? Those are clumsy to write and probably not accurate. Any other ideas?

The instance of Bindings is a container for a single set of variable values and equalities. When we match (maybe unify is a better term here, but match is used in the code) two atoms, we can receive a number of such containers (instances of Bindings) as a result. Each instance of Bindings in this set can be considered as independent from others.
There are three kinds of results:

If matching is not successful, then the result is empty set of Bindings.
If two atoms being matched are equal, then the result contains a single instance of Bindings which doesn't have variables inside.
If there are many different options to match two atoms, then the result contains a set of Bindings, each instance of Bindings contains the unique set of variables and values.

The result of matching can also be represented by a generator instead of a finite set, and it is one of the reasons the match_atoms returns the instance of Iterator. For now the BindingsSet represents the result as a finite set of Bindings.
I would like to make the points here:

The result of the atom matching is not a single set of variable values (i.e. Bindings), but a set of such sets;
User need the ability to construct empty instance of the BindingsSet to return it when matching is unsuccessful (situation (1)), it is needed to implement a custom matching interface;
I am not sure unconstrained and fully_constrained reflect the situations (1) and (2) respectively.

Current names are bound to the set nature of the BindingsSet. Name empty() reads more or less ok, but it is not clear for the developer who is out of context. It constructs the new "empty" instance of the BindingsSet, so in Rust conventions it should be BindingsSet::new() instead. Then empty instance of BindingsSet can be returned as a result for the situation (1) or extended to the situation (2) or (3). single() is definitely unclear because single element of the set could be anything. And here we specifically use this constructor to represent the situation (2). May be we don't need single() at all and should use chain of calls something like BindingsSet::new().add_full_match().
Luke, could you please explain the logic you have under the names you suggested?

I'm seeing this as a teeny tiny step towards laying the foundation to support infinite, explosive, lazily evaluated, or otherwise unbounded bindings.

I agree that it is would be more general to implement BindingsSet as a stream or comprehension of the Bindings instances. We also can replace the MatchResultIter by BindingsSet. But to make it work we need to replace most of the Vec in the implementation by the streams or comprehensions. It is not easy on the current implementation but can be more easy after moving on the minimal interpreter implementation I am trying to evaluate at the moment.

I have been hesitant to reply here because I feel that what I need is a good mental model for what a Bindings (and also a BindingsSet) is at a conceptual level.  I understand what it means within the context of the current MeTTa hyperon-experimental implementation, but that is only a specific instance of a larger concept.  For example, I think of a Bindings as a container for Information in the sense of Information Programming proposed by https://github.com/Adam-Vandervorst .
Anyway, there is more to say on this topic, but I wanted to mention this issue in the context of https://github.com/trueagi-io/hyperon-experimental/pull/298.  If we can establish a "North Star" about what form Bindings take at a conceptual level (possibly an amalgamated form that allows for specific bindings a'la the current Bindings type, in addition to overarching rules) then I think this will help answer the questions down in the weeds about what a Bindings API should look like.  Sorry I don't have a specific proposal yet.  Still learning the solution space.

Am I right that your idea is to replace BindingsSet by something more abstract like "Information"? In such a case think we need to talk about interpreter and its principles rather then talk about Bindings or BindingsSet. Bindings has a very specific role in a context of the current interpreter: keeping values of variables and relations between variables. But it is not the complete information interpreter operates.  It also has the current result of the atom transformations for instance.

My thoughts aren't formed to the point yet that I could propose specific changes RE architecture.  So I wouldn't say I have an idea.  But yes, it seems to me that Bindings / BindingsSet is a container for intermediate information representing the results of a space query operation or a grounded atom match operation.  So in theory that container could be reworked to contain more abstract information.  Unfortunately I don't have any concrete proposals yet.


Remove Parser::statusToInt().

The motivation is that the int errno is implementation-specific (in this
case defined by http-parser).  Removing this method from the abstract
Parser interface and changing
ParserCallbacks::setAndCheckCallbackStatus* methods to return
ParserStatus instead of this implementation-specific int will make it
simpler to add another Parser implementation, one not based on
http-parser.
Instead of applying statusToInt() within setAndCheckCallbackStatus() and
setAndCheckCallbackStatusOr() before returning in ConnectionImpl, return
ParserStatus, and apply statusToInt() within LegacyHttpParserImpl.  This
allows statusToInt() to be moved to legacy_parser_impl.cc anonymous
namespace, right next to its counterpart intToStatus().
Tracking issue: #21245
Signed-off-by: Bence Béky<EMAIL_ADDRESS>
Commit Message:
Additional Description:
Risk Level:
Testing:
Docs Changes:
Release Notes:
Platform Specific Features:
[Optional Runtime guard:]
[Optional Fixes #Issue]
[Optional Fixes commit #PR or SHA]
[Optional Deprecated:]
[Optional API Considerations:]

/assign @KBaichoo


This PR is to add the first line of pkg/ddc/alluxio/shutdown.go

Ⅰ. Describe what this PR does
This PR is to add Copyright  of pkg/ddc/alluxio/shutdown.go
Ⅱ. Does this pull request fix one issue?

fixes #XXXX
Ⅲ. List the added test cases (unit test/integration test) if any, please explain if no tests are needed.
Ⅳ. Describe how to verify it
Ⅴ. Special notes for reviews

/assign @trafalgarzzz

/retitle add copyright to pkg/ddc/alluxio/shutdown.go


Cleanup Store and Prevent Spammers and Scammers

Please quickly clean up and prevent spam in the marketplace. Please protect your users.
Recent Extensions URL: https://marketplace.visualstudio.com/search?target=VSCode&category=All categories&sortBy=PublishedDate
It's being spammed with these extensions:

robux
Google Play Gift Card
Amazon Gift Cards

e.g:

Please consider automatically blocking with rules like:

Minimum extension size > X
Icon has been set
Author is not spamming
Set a maximum number of times a user can upload an extension per day
etc..

Thanks for reporting the issue, we are actively working on preventing these spam extensions.
Meantime you may experience service degradation
We appreciate your patience ❤

Please use this https://github.com/microsoft/vsmarketplace/discussions/343 for further discussion


[DO NOT MERGE] [WIP] [SR-5860] Support "swift -e" for immediate execution

@jrose-apple if you wouldn't mind having a look at this, I'd like to ensure I'm on the right track here.
I feel like I must be missing something because I'm not seeing how to convey the original command line arguments (e.g. swift -e 'print("hello")') down into CompilerInvocation::ParseFrontEndArgs, where the MemoryBuffers for each of the -e arguments will be made, and presumably attached to FrontendOptions::InputBuffers if I'm understanding things correctly.
At the end of Driver::buildJobsForAction(...) is the last point at which I still have access to those -e argument pairs from the original command line. But I'm not seeing how to attach them to the returned Job (again, presuming that's what I should be doing).
I see that Job has Arguments, which is an llvm::opt::ArgStringList (which is actually a SmallVector), but I'm pretty rusty on my C++ so I'm not exactly sure how to be working with it.
Thanks in advance for the help and feedback, very much appreciated. :)

You'll need to do a clean rebase.


TLS issue with paket in the repo

We hit the TLS issue in our verification process for the March patch release of .NET Core 2.0.
I can update it sometime this weekend if someone doesn't jump on it today.

Closing since @forki applied #300 while I was sleeping 😄


Update flink-java, flink-streaming-java, ... to 1.15.1

Updates

org.apache.flink:flink-java
org.apache.flink:flink-streaming-java
org.apache.flink:flink-test-utils
org.apache.flink:flink-test-utils-junit

from 1.15.0 to 1.15.1.
GitHub Release Notes - Version Diff
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

Adjust future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "org.apache.flink" } ]

Or, add this to slow down future updates of this dependency:
dependencyOverrides = [{
  pullRequests = { frequency = "@monthly" },
  dependency = { groupId = "org.apache.flink" }
}]

labels: library-update, early-semver-patch, semver-spec-patch, commit-count:1

Superseded by #16.


use cargo build instead of rustc

@josephroberts wouldn't it be better to build using Cargo as this would allow user to use cargo packages easily and have a cargo.toml file like we have package.json for nodejs projects

Seems like an obsolete issue. I don't see rustc usage in this project. Closing. Feel free to reopen if you disagree.


Add KS Sources

cc/ @iandees @migurski

Seeing some failures on these, like:

http://data-test.openaddresses.io.s3.amazonaws.com/runs/205/output.txt
http://data-test.openaddresses.io.s3.amazonaws.com/runs/201/output.txt

etc.

I think you need to specify OA:x and OA:y for lon and lat, respectively. I'm not sure if the processing steps will guess that automatically.

@migurski how does one know what the run # from the PR?

@iandees seems to be working as expected: http://data-test.openaddresses.io.s3.amazonaws.com/runs/225/output.txt

@ingalls for the moment, you’d go to https://github.com/openaddresses/openaddresses/settings/hooks/5060155 and look at responses from recent deliveries, which would send you here: http://ci.openaddresses.io/jobs/24958d54-78ea-4811-be46-0d157c2702bf
That runaround is because I’m just wrapping up testing on the CI service. Pretty soon, results would show up alongside the ones from Travis on this page right here.

Turned it on. Thomas County looks to be failing because of corrupt data coming back from ArcGIS. It worked okay previously, so I’m going to merge.


Koalas?

I think it would be great if this mod added koalas - they go so naturally with Flamingos
Here's a baby koala being cared for by a Flamingo - I assume it's mother is having a nap or had chlamydia and died

Hmmm... How to say it in the kindest way possible...


Documentation and packaging

Write a Readme that describe the structure of the project
Write documentation strings in the code before it is too late.
Separate common functions from example scripts and put them into the module.

Closing this issue in order not to confuse with refactoring


Removed required version from Pester

Removed required version from Pester, possible fix: https://github.com/pester/Pester/pull/1941

Fixes #137.


Fix Migrations

Migrations is not correctly mentioned in the documentation.
Models are loaded twice because of the service provider!

💡: Make a list in config where all models and tables are listed. This way all models and tables are loaded to be picked up by the migration command.


docs: Add NATS to Toolchain

Adds a NATS page (with structure for multi-page section in the future) under the Toolchain nav item.

@thomastaylor312 Super useful feedback, thank you! Updated to incorporate your changes.


Fix modelsim regex

Somehow the regex does not work any more. Removing the newline char fixes the problem.

I wonder why though, the specs still seem to work (that failure in Travis CI is caused by something else).

I have no idea. I just recognized that after some update then profile wasn't showing up any more under windows. I don't now weather this is related?

Did errors not get highlighted or did the profile not show up in the settings page?
I'm wondering how this $ could have caused a problem. Other profiles use it as well and they work fine.

Just no highlighting including file detection, line detection, error detection and message.

Well I don't understand why (yet), but the $ is a bit redundant anyway 😄
Thanks for the contribution.

Awesome work. Keep it up. I have create some more profiles and use build-tools every day. :-)