HTTPS encryption is not active for my domain. My Order certificates is not completed

Describe the bug:
Maybe is not precisely a bug, but I don't understand the reason by which I cannot enable https
Feel free of keep open this report or not, but I did want to post it here, maybe someone can support me.
No existing HTTP01 challenge solver pod found for Certificate "default/letsencrypt-staging-2613163196-0"
Expected behaviour:
Events:
  Type    Reason         Age   From          Message
  ----    ------         ----  ----          -------
  Normal  Generated      63s   cert-manager  Generated new private key
  Normal  OrderCreated   63s   cert-manager  Created Order resource "letsencrypt-staging-147606226"
  Normal  OrderComplete  19s   cert-manager  Order "letsencrypt-staging-147606226" completed successfully
  Normal  CertIssued     18s   cert-manager  Certificate issued successfully

Steps to reproduce the bug:
I am working with cert-manager in my kubernetes cluster, in order to get certificates signed by let'sencrypt CA to my service application inside my cluster.
I am performing the following steps in the order presented. I've wanted provide the most details as a possible of my process in order to understand the behavior presented.
Install the CustomResourceDefinition resources separately
⟩ kubectl apply -f https://raw.githubusercontent.com/jetstack/cert-manager/release-0.7/deploy/manifests/00-crds.yaml
customresourcedefinition.apiextensions.k8s.io/certificates.certmanager.k8s.io created
customresourcedefinition.apiextensions.k8s.io/challenges.certmanager.k8s.io created
customresourcedefinition.apiextensions.k8s.io/clusterissuers.certmanager.k8s.io created
customresourcedefinition.apiextensions.k8s.io/issuers.certmanager.k8s.io created
customresourcedefinition.apiextensions.k8s.io/orders.certmanager.k8s.io created
[I]

Label the cert-manager namespace to disable resource validation
⟩ kubectl label namespace kube-system certmanager.k8s.io/disable-validation=true
namespace/kube-system labeled
[I]

Install the cert-manager Helm chart
⟩ helm install \
    --name cert-manager \
    --namespace kube-system \
    --version v0.7.0 \
    jetstack/cert-manager

I've confirmed the steps in this guide, in order to avoid possible problems, and all steps are ok ...

Creating my ingress

I am using kong-ingress-controller to manage the ingress process.

⟩ kubectl get pod,svc,deploy,replicaset -n kong | grep kong-ingress-controller
pod/kong-ingress-controller-667b4748d4-ccj8z   2/2     Running   14         95m
service/kong-ingress-controller   NodePort       <IP_ADDRESS>   <none>          8001:32257/TCP               3d19h

deployment.extensions/kong-ingress-controller   1         1         1            1           3d19h

replicaset.extensions/kong-ingress-controller-667b4748d4   1         1         1       3d19h

This means that my external IP addres is given by kong-proxy and is <IP_ADDRESS>
⟩ kubectl get svc -n kong | grep kong-proxy
kong-proxy                LoadBalancer   <IP_ADDRESS>    <IP_ADDRESS>   80:31577/TCP,443:32323/TCP   3d21h

I've created the ingress for first time of this way:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: kong-ingress-zcrm365
  # namespace: default
  annotations:
    # kubernetes.io/ingress.class: "nginx" # Don't include it in order to use kong-ingress-controller
    # add an annotation indicating the issuer to use.
spec:
  rules:
  - host: test1kongletsencrypt.possibilit.nl
    http:
      paths:
        - path: "/"
          backend:
            serviceName: zcrm365dev
            servicePort: 80
      #- backend:
      #    serviceName: zcrm365dev
      #    servicePort: 80
      #  path: /

  tls: # < placing a host in the TLS config will indicate a cert should be created
  - hosts:
    - test1kongletsencrypt.possibilit.nl
    secretName:  cert-manager-webhook-webhook-tls
    # for the moment I've included this secret which was created by cert-manager installation

Apply it.

⟩ kubectl apply -f 03-zcrm365-ingress.yaml
ingress.extensions/kong-ingress-zcrm365 created
[I]

And my ingress is taking the kong-ingress-controller

⟩ kubectl describe ingress  kong-ingress-zcrm365
Name:             kong-ingress-zcrm365
Namespace:        default
Address:          <IP_ADDRESS>
Default backend:  default-http-backend:80 (<none>)
TLS:
  cert-manager-webhook-webhook-tls terminates test1kongletsencrypt.possibilit.nl
Rules:
  Host                                Path  Backends
  ----                                ----  --------
  test1kongletsencrypt.possibilit.nl
                                      /   zcrm365dev:80 (<none>)
Annotations:
  kubectl.kubernetes.io/last-applied-configuration:  {"apiVersion":"extensions/v1beta1","kind":"Ingress","metadata":{"annotations":{},"name":"kong-ingress-zcrm365","namespace":"default"},"spec":{"rules":[{"host":"test1kongletsencrypt.possibilit.nl","http":{"paths":[{"backend":{"serviceName":"zcrm365dev","servicePort":80},"path":"/"}]}}],"tls":[{"hosts":["test1kongletsencrypt.possibilit.nl"],"secretName":"cert-manager-webhook-webhook-tls"}]}}

Events:
  Type    Reason  Age    From                     Message
  ----    ------  ----   ----                     -------
  Normal  CREATE  3m30s  kong-ingress-controller  Ingress default/kong-ingress-zcrm365
  Normal  UPDATE  3m28s  kong-ingress-controller  Ingress default/kong-ingress-zcrm365
[I]

Creating a ClusterIssuer

I am going to create a ClusterIssuer, I'd can create a Issuer, but I've started with a ClusterIssuer. What is the best alternative? This depen of our deployment and requirements to future, mostly in the namespace situations

apiVersion: certmanager.k8s.io/v1alpha1
kind: ClusterIssuer
metadata:
 name: letsencrypt-staging
spec:
 acme:
   # The ACME server URL
   server: https://acme-staging-v02.api.letsencrypt.org/directory
   # Email address used for ACME registration
   email<EMAIL_ADDRESS>   # Name of a secret used to store the ACME account private key
   privateKeySecretRef:
     name: letsencrypt-staging
   # Enable the HTTP-01 challenge provider
   http01: {}

Apply it

⟩ kubectl apply -f 01-lets-encrypt-issuer-staging.yaml
clusterissuer.certmanager.k8s.io/letsencrypt-staging created
[I]

This ClusterIssuer was registered on ACME letsencrypt server

⟩ kubectl describe clusterissuers letsencrypt-staging
Name:         letsencrypt-staging
Namespace:
Labels:       <none>
Annotations:  kubectl.kubernetes.io/last-applied-configuration:
                {"apiVersion":"certmanager.k8s.io/v1alpha1","kind":"ClusterIssuer","metadata":{"annotations":{},"name":"letsencrypt-staging"},"spec":{"acm...
API Version:  certmanager.k8s.io/v1alpha1
Kind:         ClusterIssuer
Metadata:
  Creation Timestamp:  2019-03-15T11:38:03Z
  Generation:          1
  Resource Version:    623999
  Self Link:           /apis/certmanager.k8s.io/v1alpha1/clusterissuers/letsencrypt-staging
  UID:                 cb48b391-4716-11e9-a113-e27267a7d354
Spec:
  Acme:
    Email<EMAIL_ADDRESS>    Http 01:
    Private Key Secret Ref:
      Name:  letsencrypt-staging
    Server:  https://acme-staging-v02.api.letsencrypt.org/directory
Status:
  Acme:
    Uri:  https://acme-staging-v02.api.letsencrypt.org/acme/acct/8579841
  Conditions:
    Last Transition Time:  2019-03-15T11:38:05Z
    Message:               The ACME account was registered with the ACME server
    Reason:                ACMEAccountRegistered
    Status:                True
    Type:                  Ready
Events:                    <none>
[I]

Modifying my ingress resource created previously

Now that I've created our Let's Encrypt staging ClusterIssuer, I am ready to modify the Ingress Resource we created above and enable TLS encryption for the test1kongletsencrypt.possibilit.nl paths adding the following

I am going to add certmanager.k8s.io/cluster-issuer: letsencrypt-staging annotation and use the secret created with the letsencrypt-staging ClusterIssuer named letsencrypt-staging
Our ingress has been stayed of this way:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: kong-ingress-zcrm365
  #namespace: default
  annotations:
    # kubernetes.io/ingress.class: "nginx" #new
    # certmanager.k8s.io/acme-challenge-type: http01

    # add an annotation indicating the issuer to use.
    certmanager.k8s.io/cluster-issuer: letsencrypt-staging

spec:
  rules:
  - host: test1kongletsencrypt.possibilit.nl
    http:
      paths:
        - path: "/"
          backend:
            serviceName: zcrm365dev
            servicePort: 80
  tls:
  - hosts:
    - test1kongletsencrypt.possibilit.nl
    secretName:  letsencrypt-staging # I've added this secret of letsencrypt cluster issuer

Apply it

⟩ kubectl apply -f 03-zcrm365-ingress.yaml
ingress.extensions/kong-ingress-zcrm365 configured
[I]

This process update on the ingress, create one ingres named cm-acme-http-solver-jr4fg
⟩ kubectl get ingress
NAME                        HOSTS                                ADDRESS         PORTS     AGE
cm-acme-http-solver-jr4fg   test1kongletsencrypt.possibilit.nl                   80        33s
kong-ingress-zcrm365        test1kongletsencrypt.possibilit.nl   <IP_ADDRESS>   80, 443   56m
[I]

The detail of cm-acme-http-solver-jr4fg ingress is:
⟩ kubectl get ingress cm-acme-http-solver-jr4fg -o yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    nginx.ingress.kubernetes.io/whitelist-source-range: <IP_ADDRESS>/0
  creationTimestamp: "2019-03-15T12:10:57Z"
  generateName: cm-acme-http-solver-
  generation: 1
  labels:
    certmanager.k8s.io/acme-http-domain: "4095675862"
    certmanager.k8s.io/acme-http-token: "657526223"
  name: cm-acme-http-solver-jr4fg
  namespace: default
  ownerReferences:
  - apiVersion: certmanager.k8s.io/v1alpha1
    blockOwnerDeletion: true
    controller: true
    kind: Challenge
    name: letsencrypt-staging-2613163196-0
    uid: 638f1701-471b-11e9-a113-e27267a7d354
  resourceVersion: "628284"
  selfLink: /apis/extensions/v1beta1/namespaces/default/ingresses/cm-acme-http-solver-jr4fg
  uid: 640ef483-471b-11e9-a113-e27267a7d354
spec:
  rules:
  - host: test1kongletsencrypt.possibilit.nl
    http:
      paths:
      - backend:
          serviceName: cm-acme-http-solver-svmvw
          servicePort: 8089
        path: /.well-known/acme-challenge/W7-9-KuPao_jg6EF5E2FXitFs8shOEsY5PlT9EEvNxE
status:
  loadBalancer:
    ingress:
    - ip: <IP_ADDRESS>

And the detail of our kong-ingress-zcrm365 resource ingress is:

⟩ kubectl describe  ingress kong-ingress-zcrm365
Name:             kong-ingress-zcrm365
Namespace:        default
Address:          <IP_ADDRESS>
Default backend:  default-http-backend:80 (<none>)
TLS:
  letsencrypt-staging terminates test1kongletsencrypt.possibilit.nl
Rules:
  Host                                Path  Backends
  ----                                ----  --------
  test1kongletsencrypt.possibilit.nl
                                      /   zcrm365dev:80 (<none>)
Annotations:
  certmanager.k8s.io/cluster-issuer:                 letsencrypt-staging
  kubectl.kubernetes.io/last-applied-configuration:  {"apiVersion":"extensions/v1beta1","kind":"Ingress","metadata":{"annotations":{"certmanager.k8s.io/cluster-issuer":"letsencrypt-staging"},"name":"kong-ingress-zcrm365","namespace":"default"},"spec":{"rules":[{"host":"test1kongletsencrypt.possibilit.nl","http":{"paths":[{"backend":{"serviceName":"zcrm365dev","servicePort":80},"path":"/"}]}}],"tls":[{"hosts":["test1kongletsencrypt.possibilit.nl"],"secretName":"letsencrypt-staging"}]}}

Events:
  Type    Reason             Age                  From                     Message
  ----    ------             ----                 ----                     -------
  Normal  CREATE             60m                  kong-ingress-controller  Ingress default/kong-ingress-zcrm365
  Normal  UPDATE             4m25s (x2 over 60m)  kong-ingress-controller  Ingress default/kong-ingress-zcrm365
  Normal  CreateCertificate  4m25s                cert-manager             Successfully created Certificate "letsencrypt-staging"
[I]

We can see that our ingress even using the kong-ingress-controller and the letsencrypt-staging certificate has been created in the default namespace:
⟩ kubectl get certificates
NAME
letsencrypt-staging
[I]

The letsencypt-staging certificate have the following detail
⟩ kubectl describe certificate letsencrypt-staging
Name:         letsencrypt-staging
Namespace:    default
Labels:       <none>
Annotations:  <none>
API Version:  certmanager.k8s.io/v1alpha1
Kind:         Certificate
Metadata:
  Creation Timestamp:  2019-03-15T12:10:55Z
  Generation:          1
  Owner References:
    API Version:           extensions/v1beta1
    Block Owner Deletion:  true
    Controller:            true
    Kind:                  Ingress
    Name:                  kong-ingress-zcrm365
    UID:                   8643558f-4713-11e9-a113-e27267a7d354
  Resource Version:        628164
  Self Link:               /apis/certmanager.k8s.io/v1alpha1/namespaces/default/certificates/letsencrypt-staging
  UID:                     62b3a31e-471b-11e9-a113-e27267a7d354
Spec:
  Acme:
    Config:
      Domains:
        test1kongletsencrypt.possibilit.nl
      Http 01:
  Dns Names:
    test1kongletsencrypt.possibilit.nl
  Issuer Ref:
    Kind:       ClusterIssuer
    Name:       letsencrypt-staging
  Secret Name:  letsencrypt-staging
Status:
  Conditions:
    Last Transition Time:  2019-03-15T12:10:55Z
    Message:               Certificate issuance in progress. Temporary certificate issued.
    Reason:                TemporaryCertificate
    Status:                False
    Type:                  Ready
Events:
  Type    Reason              Age    From          Message
  ----    ------              ----   ----          -------
  Normal  Generated           7m24s  cert-manager  Generated new private key
  Normal  GenerateSelfSigned  7m24s  cert-manager  Generated temporary self signed certificate
  Normal  OrderCreated        7m23s  cert-manager  Created Order resource "letsencrypt-staging-2613163196"
[I]
~/workspace/ZCRM365/Deployments/Kubernetes/cert-manager · (Deployments±)

I can see that my order issue is not completed, only was created in the OrderCreated event, and this order already have 7 minutes since I've created this certificate and the order was not completed and by that reason the certificate is not issued successfully
Another thing that happens to me, is that the letsencrypt-staging secret created by the letsencrypt-staging cluster Issuer and their respective certificate, only have the tls.key:
⟩ kubectl describe secrets letsencrypt-staging -n kube-system
Name:         letsencrypt-staging
Namespace:    kube-system
Labels:       <none>
Annotations:  <none>

Type:  Opaque

Data
====
tls.key:  1675 bytes
[I]

According to I understand, is that if the letsencrypt certificate complete the order and the certificate is issued, in the letsencrypt-staging secret I would have one tls.crt key and maybe my letsencrypt-staging will be of tls type and not Opaque?

When I see the logs of my cert-manager pod I get the following output, I think that the http challenge is not executed:

I0315 12:10:57.833858       1 logger.go:103] Calling Discover
I0315 12:10:57.856136       1 pod.go:64] No existing HTTP01 challenge solver pod found for Certificate "default/letsencrypt-staging-2613163196-0". One will be created.
I0315 12:10:57.923080       1 service.go:51] No existing HTTP01 challenge solver service found for Certificate "default/letsencrypt-staging-2613163196-0". One will be created.
I0315 12:10:57.989596       1 ingress.go:49] Looking up Ingresses for selector certmanager.k8s.io/acme-http-domain=4095675862,certmanager.k8s.io/acme-http-token=657526223
I0315 12:10:57.989682       1 ingress.go:98] No existing HTTP01 challenge solver ingress found for Challenge "default/letsencrypt-staging-2613163196-0". One will be created.
I0315 12:10:58.014803       1 controller.go:178] ingress-shim controller: syncing item 'default/cm-acme-http-solver-jr4fg'
I0315 12:10:58.014842       1 sync.go:64] Not syncing ingress default/cm-acme-http-solver-jr4fg as it does not contain necessary annotations
I0315 12:10:58.014846       1 controller.go:184] ingress-shim controller: Finished processing work item "default/cm-acme-http-solver-jr4fg"
I0315 12:10:58.015447       1 ingress.go:49] Looking up Ingresses for selector certmanager.k8s.io/acme-http-domain=4095675862,certmanager.k8s.io/acme-http-token=657526223
I0315 12:10:58.033431       1 sync.go:173] propagation check failed: wrong status code '404', expected '200'
I0315 12:10:58.079504       1 controller.go:212] challenges controller: Finished processing work item "default/letsencrypt-staging-2613163196-0"
I0315 12:10:58.079616       1 controller.go:206] challenges controller: syncing item 'default/letsencrypt-staging-2613163196-0'
I0315 12:10:58.079569       1 controller.go:184] orders controller: syncing item 'default/letsencrypt-staging-2613163196'

I get this message No existing HTTP01 challenge solver pod found for Certificate "default/letsencrypt-staging-2613163196-0"
According to this, I decide add the   certmanager.k8s.io/acme-challenge-type: http01 annotation to my kong-ingress-zcrm365 ingress but nothing happened  ... my ingress is updated, but nothing more.
All this process confirms that the TLS certificate was not successfully issued and HTTPS encryption is not active for my domains test1kongletsencrypt.possibilit.nl configured.
This make that my letsencrypt-staging certificate have a Status:False, and the order created event does not advance to completed to be issued.

  Conditions:
    Last Transition Time:  2019-03-15T12:10:55Z
    Message:               Certificate issuance in progress. Temporary certificate issued.
    Reason:                TemporaryCertificate
    Status:                False
    Type:                  Ready
Events:
  Type    Reason              Age                From          Message
  ----    ------              ----               ----          -------
  Normal  Generated           51m                cert-manager  Generated new private key
  Normal  GenerateSelfSigned  51m                cert-manager  Generated temporary self signed certificate
  Normal  Cleanup             5m42s              cert-manager  Deleting old Order resource "letsencrypt-staging-2613163196"
  Normal  OrderCreated        5m42s              cert-manager  Created Order resource "letsencrypt-staging-2965106631"
  Normal  OrderCreated        39s (x2 over 51m)  cert-manager  Created Order resource "letsencrypt-staging-2613163196"
  Normal  Cleanup             39s                cert-manager  Deleting old Order resource "letsencrypt-staging-2965106631"
[I]
~/workspace/ZCRM365/Deployments/Kubernetes/cert-manager · (Deployments±)

How to can I to my certificate to be signed and succesfully issued by letsencrypt CA and active the https encryption active?
What is happening with these logs messages?
kubectl logs -n kube-system cert-manager-6f68b58796-q7txg

0315 13:06:11.027204       1 logger.go:103] Calling Discover
I0315 13:06:11.032299       1 ingress.go:49] Looking up Ingresses for selector certmanager.k8s.io/acme-http-domain=4095675862,certmanager.k8s.io/acme-http-token=657526223
I0315 13:06:11.046081       1 sync.go:173] propagation check failed: wrong status code '404', expected '200'
I0315 13:06:11.046109       1 controller.go:212] challenges controller: Finished processing work item "default/letsencrypt-staging-2613163196-0"
I0315 13:06:21.046242       1 controller.go:206] challenges controller: syncing item 'default/letsencrypt-staging-2613163196-0'

I've heared that letsencrypt-staging environment only have test certificates and these are a kind of 'fake certificates' and maybe some clients like my chrome/firefox browser doesn’t trust certificate issuer ...
Is this a reason to I cannot enable https encryption on my domain?
In affirmative case, should I change from staging environment to production environment?
In this question some people talk about that but they emphasize:

that the staging environment should be used just to test that your client is working fine and can generate the challenges, certificates

In my case the http challenge is not generated still in staging environment. :(
Anything else we need to know?:
Environment details::

Kubernetes version : 1.12.6
Cloud-provider/provisioner: Azure Kubernetes service
cert-manager version: v0.7.0
Install method: I've installed cert-manager via helm

/kind bug

I have been exploring some cert-manager issues and I found this https://github.com/Kong/kubernetes-ingress-controller/issues/162 and https://github.com/jetstack/cert-manager/issues/958 but I am not sure if maybe could to be related to my situation.
Is possible that kong and cert-manager does not work together?
Can someone support me in relation to how to can I address this inconvenience?

I have this issue referenced, so, this can be deleted


[BUG] Allowlist PATCH API overwriting rest of the configuration

What is the bug?
When you execute PATCH request using allowlist API with add or replace operation, all other configuration for "requests" path get overwritten.
How can one reproduce the bug?
Steps to reproduce the behavior:
1: Create allowlist with PUT  call:
curl -k -X PUT https://localhost:9200/_plugins/_security/api/allowlist --cert config/kirk.pem --key config/kirk-key.pem -H "Content-Type: application/json" -d '{
  "enabled": true,
  "requests": {
    "/_cat/nodes": ["GET"],
    "/_cat/indices": ["GET"],
    "/_plugins/_security/whoami": ["GET"]
  }
}'

update it with PATCH:

curl -k -X PATCH https://localhost:9200/_plugins/_security/api/allowlist --cert config/kirk.pem --key config/kirk-key.pem -H "Content-Type: application/json" -d '[
  {
    "op": "replace",
    "path": "/config/requests",
    "value": {
      "/_cat/nodes": ["POST"]
    }
  }
]'

View the end result with GET
curl -k -X GET https://localhost:9200/_plugins/_security/api/allowlist?pretty --cert config/kirk.pem --key config/kirk-key.pem

You should get below:
{
  "config" : {
    "enabled" : true,
    "requests" : {
      "/_cat/nodes" : [
        "POST"
      ]
    }
  }
}

What is the expected behavior?
Expecting to get:
{
  "config" : {
    "enabled" : true,
    "requests" : {
          "/_cat/nodes": ["POST"],
          "/_cat/indices": ["GET"],
          "/_plugins/_security/whoami": ["GET"]
      ]
    }
  }
}

What is your host/environment?

OS: [e.g. iOS]
Version 2.13

[Triage] Hi @AntonEliatra, thanks for filing this issue. This issue should be resolved through an update in the documentation. PATCH should remove and then add the new value. This is based on the official JSON patch RFC found here: https://jsonpatch.com/

Great, thanks @scrawfor99


Decimal mark with different locale - SVM command is local aware

When using PHP-ML with a locale which uses commas instead of dots for the decimal point,
libsvm cannot read the input and crashes. (inspired by #271)

Fixed by #288

I think there is a problem with %F format. Maybe solution from @fsteinbauer (#271) is better.


side bar coming down

in the new release options are coming downside,

Are you using Firefox? I have noticed this behavior there, but not in chrome. Will take a look.

no @kevgliss , I have also used chrome

Thank you @mvilanova for fixing this in new release, please close this ticket :)

Closed by #2777


Doesn't work with current IDF

With current versions of IDF, there isn't any output on the pin.
I've identified the problem to be on https://github.com/espressif/esp-idf/commit/17747b33586075e46cadfe0c096dabb7f1a80df2 -- Reverting it makes the leds blink again :)
I would love to submit a PR, but I really haven't figured out those IO matrixes yet, so I'm hoping you can work a proper fix.
Thank you!

That's weird - I haven't used it in a while but odds are it's something in my code. I assume it was the IDF driver you were testing - the Arduino one probably has the same issue.
I'll give it a try when time permits and see if I can see what's going on.

Neither the IDF or the Arduino versions work out of the box.
I managed to get the IDF version working by reverting that commit.

Well, hopefully it's fixable. I will look at it as time permits, though the next week or so it going to be unusually busy here.

Followup: I'm able to delve into the issue now. I'll update you when I (or ESP) figures something out. I'm hoping it'll be a straightforward fix by either myself or in the IDF.

This auto-closed with my commit, but if it's still not working for you let me know

As I haven't heard from you but this seems to have resolved the main problem and worked for others similarly affected I'm going to close this out.

It took me a while, but I have tested it and works perfectly.
Thank you!

I'm glad to hear it! Thanks for your help tracking down that commit!


docstring code formatter: decide whether doctests should end with a empty PS2 prompt line or not

(This issue is forked off from discussion beginning at https://github.com/astral-sh/ruff/issues/7146#issuecomment-1829264623.)
Currently, the way code snippet formatting in docstrings works is by collecting all of the lines in a single code snippet, feeding them into a recursive call to the formatter and then printing the resulting lines back into the docstring. For doctests in particular, the first line in a code snippet is always a PS1 prompt (starts with >>> ) and all subsequent lines (if any) are always PS2 prompts (starts with ... ). For example:
>>> with pl.Config(trim_decimal_zeros=False):
...     print(df)
...

This particular example contains a trailing empty line. This trailing empty line is collected as part of the code snippet and fed into the formatter. The formatter, as one might expect, trims this empty line. The end result is that the reformatted code snippet looks like this:
>>> with pl.Config(trim_decimal_zeros=False):
...     print(df)

The point of this issue is to decide whether this is desirable behavior or not. It came up in feedback from @stinodego after I reformatted the code snippets in polars. If one looks at the diff carefully, you can see some examples where there was an empty PS2 prompt line at the end of a code snippet (and got trimmed). But there are also plenty of code snippets that do not have an empty PS2 prompt line at the end of it. It therefore seems clear that we cannot unconditionally add an empty PS2 prompt line at the end of every reformatted doctest code snippet.
For example, it seems at least clear that a code snippet with only a PS1 prompt line should not have an empty line added after it. That is, we wouldn't want a reformatted code snippet to look like this:
>>> foo(x)
...

I say this because I've looked at a number of real doctests in the wild and I don't think I've ever seen one written like this.
But if the code snippet does contain at least one non-empty PS2 prompt line, then I think it's less clear whether we should add a trailing empty line or not. Namely, if you look at the diff to polars closely, not all code snippets with non-empty PS2 prompt lines contain a trailing empty line. That is, we can't really discern a consistent pattern from existing practice from this one example.
Another data point is a diff from applying code snippet reformatting to CPython. I can't discern a consistent rule there either. Some code snippets with non-empty PS2 prompt lines have a trailing empty line and others don't.

Speaking for me personally, I favor following the existing formatting rules and trimming the new line. But this might be something we want to collect user feedback on.
Pinging folks involved in the discussion in #7146: @stinodego @MichaReiser @ofek @pawamoy

I think trimming such new lines is the correct behavior 👍

But if the code snippet does contain at least one non-empty PS2 prompt line, then I think it's less clear whether we should add a trailing empty line or not. Namely, if you look at the diff to polars closely, not all code snippets with non-empty PS2 prompt lines contain a trailing empty line. That is, we can't really discern a consistent pattern from existing practice from this one example.

I think there is actually a consistent way to determine when there should be a trailing .... It occurs in the Python console when an indentation decrease happens, i.e. after defining a function or using a context manager. But not after a simple statement like foo(x).
That being said, I'm completely fine with these being trimmed. Humans writing doc examples also naturally leave them out. They are currently enforced and added by blackdoc in our code base.

adding a trailing ... after the end of block statements like if or with is a code-style choice, so this is very subjective (see keewis/blackdoc#52): it makes the code example a appear little less dense. Obviously, trailing empty lines should be removed for anything that is not a block statement.
Following the argument that doctest is basically a copy-pasted REPL cell would mean that you'd have to remove the trailing empty line after a block statement, although this appears to be changing in python=3.13 (can't remember where I got that bit of information, though).

@BurntSushi from what I understand is that we currently strip the empty line. I'm fine with leaving it as is because we haven't received any feedback that clearly shows that it should be the other way round. The "worst" outcome is that we have to add an option controlling whether it should be stripped or not, which I think would be fine. So I would recommend closing this for now and re-visit when it comes up as an issue

SGTM!


Document 2.3 permissions and user configuration

There are at least three parts to this:

Two new system tables "users" and "permissions" that need to be documented under http://rethinkdb.com/docs/system-tables/ . I think they probably should get their own subdocument.
A new grant command for the API
A conceptual overview of our permissions system. This should probably go into a new separate document that should also be mentioned on http://rethinkdb.com/docs/security/

We also need to document how permissions interact with the existing system tables (see https://github.com/rethinkdb/rethinkdb/issues/5463). If we add a separate "Permissions & User Accounts" document for point 3 above, then that would likely be the best place for putting this.
The issue about this in the rethinkdb repo is https://github.com/rethinkdb/rethinkdb/issues/4519 .
Finally, we'll need to document the setup of protected clusters somewhere (https://github.com/rethinkdb/rethinkdb/issues/5490). This still needs to be implemented. I think it could also go into the "Permissions & User Accounts" overview document.
Assigning to myself as I want to provide some examples and details on the system tables and other aspects of the system. Will reassign to @chipotle later.

General concepts
====

Users
RethinkDB 2.3's permissions system is based around users.
When starting a completely fresh cluster, there is a default "admin" user out of the box. The "admin" user always has full permissions. It cannot be deleted.
When just starting a cluster, the "admin" user has an empty password, though you can override the initial password through the --initial-password (or --initial-pw, argument name still needs to be decided) command line argument (see proposal 1 from https://github.com/rethinkdb/rethinkdb/issues/5490 ).
You can create additional users by inserting into the "users" system table. A newly created user (other than the default-created "admin") has no permissions by default at all. Permissions need to be added separately through the r.grant command or by inserting into the "permissions" system table.
Every user has a unique user name (a string), and a password. The password can be empty, or it can be an arbitrary string. A password can be set, but cannot be retrieved again afterwards (it's internally stored in a salted and then hashed form).
When connecting through the client (driver) port, user authentication is performed based on a user name and password passed into the driver's connect method. If no user and password is specified, the "admin" user with an empty password is assumed by the driver.
User authentication is not performed when using the web UI (HTTP port), nor can it be used to protect from an attacker who is able to connect to the cluster poster. The web UI always runs with full privileges, as if it was logged in as "admin".
Permissions
There are four different permissions:

"read" allows reading the data in a table
"write" allows modifying the data in a table (including inserting, replacing and deleting)
"config" allows changing the cluster configuration of a table, e.g. by running reconfigure(), rebalance() or config().update(). It also allows creating and dropping secondary indexes. If a user has "config" permissions on a database, they can additionally create and drop tables in the database. If they have "config" permissions on the global level, they can create and drop databases (dropping only works if they also have "config" permissions for each table inside the database). @VeXocide I'm unsure about the details here. Do users also need "write" permissions on the table to drop the table?
"connect" determines whether a user is allowed to "open connections". Right now the only effect this has is whether or not a user can use r.http. One reason for why this is important is because r.http can be used by an attacker to circumvent firewall restrictions. For example it could be used to run queries through the server's local http / web UI interface with full "admin" privileges.

Scopes
All permissions except for "connect" can be specified on different scopes. If a permission is specified at a more granular scope, it overrides any setting at the coarser scope. (Note that permissions can be set to true or false at any scope, or not specified at all in which case the setting from the coarser scope is inherited.)
"connect" can only be specified at the global scope.
The three scopes are:

global
database
table

System tables and r.grant
===

"users"
A document in the r.db('rethinkdb').table('users') table looks like this:
{
    "id": "admin" ,
    "password": false
}

Here you can see that the "admin" user has an empty password. You can insert a new user with a given password like this:
r.db('rethinkdb').table('users').insert({id: "name", password: "secret"})

The inserted user's document will look like this:
{
    "id": "name" ,
    "password": true
}

Note that the password is not displayed in the table. Instead the fact that it's not empty is merely indicated by the value true.
You can use update to change a user's password by setting it to a new string, or you can set it to false to make it empty:
r.db('rethinkdb').table('users').get("name").update({password: false})

The username itself cannot be changed. You can also delete users from the table.
"permissions"
Documents in the "permissions" table look like this:
 {
    "id": [
        "admin"
    ] ,
    "permissions": {
        "config": true ,
        "connect": true ,
        "read": true ,
        "write": true
    }
}

This is an example of a global-scope permission.
You can see that "permissions" contains the values for the different permission types. Each value can either be true, false or absent. When updating an entry in the "permissions" table, you can also set a permission to null to delete its entry (so that the value from the higher scope will be inherited again).
The "id" is what determines the user and the scope. The first element in the "id" is always the user name that this permission applies to. If the scope is a database, the "id" array will have a second element which is the UUID of the database. Such documents will also have an additional field database which contains the name of the database:
 {
    "database": "test" ,
    "id": [
        "name" ,
        "8b2c3f00-f312-4524-847a-25c79e1a22d4"
    ] ,
    "permissions": {
        "read": true
    }
}

Finally for permissions on the table scope, the id will be [username, db_id, table_id], and you get both a database as well as a table field:
 {
    "database": "test" ,
    "id": [
        "name" ,
        "8b2c3f00-f312-4524-847a-25c79e1a22d4" ,
        "9d705e8c-4e49-4648-b4a9-4ad82ebba635"
    ] ,
    "permissions": {
        "read": true
    } ,
    "table": "t1"
}

When inserting into "permissions", you only need to specify the primary key (id) and the permissions object. The "database" and "table" fields will be filled in automatically if applicable.
"grant"
The grant command provides a second, often more convenient, way for granting or removing permissions. You can call it globally r.grant, on a database r.db('test').grant or on a table r.db('test').table('t1').grant.
In either case, the first argument to grant is the username that you want to grant/remove permissions for, and the second argument is an object similar to the "permissions" object in the "permissions" table. For example:
// Allow user "name" to read all tables, across all databases:
r.grant("name", {read: true})

// Allow user "name" to write to tables in the "test" database:
r.db("test").grant("name", {write: true})

// Allow user "name" to configure the table "t1" in the database "test":
r.db("test").table("t1").grant("name", {config: true})

// Disallow "name" from writing to table "t2" in the database "test" (it can still write to other tables in that database):
r.db("test").table("t2").grant("name", {write: false})

// Delete the "config" permission for table "t1" again (it will inherit the value from the higher scope again):
r.db("test").table("t1").grant("name", {config: null})

The return value of grant looks like this:
{
    "granted": 1 ,
    "permissions_changes": [
        {
            "new_val": {
                "read": true
            } ,
            "old_val": null
        }
    ]
}

@VeXocide when you have a few minutes, could you double-check my writeup for correctness please?
Remaining parts I still need to write:

Permissions & system tables (including commands such as config() etc.)

--initial-password and managing a secured cluster

What the permission system is for and what it isn't for

Permissions & System Tables
====

The meaning of read and write permissions on the common operations on normal tables is fairly obvious. These semantics mostly apply to the system tables as well. However there are a few special cases:
config() vs. table_config
A table can be reconfigured in two ways:

By calling r.db(...).table(...).reconfigure(...), or by changing the configuration through r.db(...).table(...).config().update(...). In these cases, the "config" permission on the given table determines whether a user is allowed to perform these operations or not. In fact calling config() is only allowed if the user has "config" permissions, even when no subsequent update() is used in the query.
By writing directly to r.db('rethinkdb').table('table_config'). Only the "admin" user can write to this table. It doesn't matter which permissions a user has on the table they are trying to reconfigure, and it doesn't matter which permissions a user has on r.db('rethinkdb').table('table_config') either.

System tables
Generally system tables can only be written to by the "admin" user. Read permissions on the other hand are assigned in the usual way, by granting "read" permissions either globally, on r.db('rethinkdb') or on one of the system tables r.db('rethinkdb').table(...) specifically.
There are two exceptions to this general rule:

users: A user who has "write" permissions on r.db('rethinkdb').table('users') can update their own entry. This is useful for allowing users to change their own password. They can not write to any other entry in the table, nor can they insert or delete any documents (including their own).
jobs: Even with read permissions, a user is only able to see their own queries in the jobs table. The only exception is the "admin" user who can see all entries. (this might still change. We might end up not allowing any read access at all for regular users in 2.3, and only show entries for the "admin" user.)

Managing a secured cluster and the --initial-password option
====

If you start a new RethinkDB server without any additional options, it will create the default "admin" user without any password. This makes it easy to get started in a protected environment, or when developing locally.
Once you want to start using authentication, the first step is to change the password of the "admin" user through the r.db('rethinkdb').table('users') system table.
--initial-password
A second option is to start a new cluster with password-protection directly. This can be achieved through the --initial-password command-line option. The --initial-password option takes one parameter, which will be used to initialize the password of the "admin" user. For example:
rethinkdb --initial-password secret

The provided password only has an effect if no previous password has been set for "admin". Once any password is set for the "admin" user (either from writing to its entry in r.db('rethinkdb').table('users'), or from a previous start with the --initial-password option), the option is ignored.
Additionally, --initial-password also accepts a special value auto. When starting a new server like this:
rethinkdb --initial-password auto

the "admin" user is initialized with a random password. The generated password will be printed to standard out, but not to the log file. This by itself doesn't sound particularly useful, but it simplifies adding servers to an existing cluster as we will see below.
Joining an existing cluster
Whenever a server (including a proxy) joins an existing cluster, they synchronize the current user accounts and passwords. However this process is asynchronous, and there might be a delay until a new server has received all passwords. If an attacker is able to run queries to such a server before it has received all user data, the attacker might exploit the default "admin" password with an empty password in order to run arbitrary queries.
For this reason, a new server without any "admin" password cannot join an existing cluster where an "admin" password is set. If you try to join a password-protected cluster like this:
rethinkdb --join secure.server

the join will fail.
This is where the --initial-password auto option comes in handy. Any server that's supposed to join an existing password-protected cluster, should be started with the --initial-password auto option. Once it has connected to the remaining cluster, the random initial password will be overwritten by the "admin" password that has been configured in the existing cluster.
rethinkdb --initial-password auto --join secure.server

The same applies to proxy servers as well.
Common scenarios
Scenario 1: Setting up a cluster without password protection
1. Start and join all nodes without a password (just like now)
Scenario 2: Setting up a new cluster in a trustworthy environment with password protection
1. Start and join all nodes without a password
2. Configure the admin password through the users table
Scenario 3: Setting up a new cluster in an untrustworthy environment
1. Reconsider if you actually want to do this. You should probably use TLS instead.
2. Configure servers with an explicit --initial-password <pw>
3. Start and join all nodes
4. Change the admin password through the users table
Scenario 4: Joining a new server into an existing password-protected cluster
1. Start and join the new server with the --initial-password auto option
(if you forget to specify that option, you will see an error)
Recovering from a lost password
If you forget the "admin" password, you can recover by connecting to the web UI and running the following query in the Data Explorer:
r.db('rethinkdb').table('users').get('admin').update({password: "new password"})

In general it is important to note that the web UI does not support user authentication as of RethinkDB 2.3. Queries in the Data Explorer are always executed with full "admin" permissions. Hence, special care must be taken to protect the web UI from outside access, for example by binding it only to localhost with the --bind-http localhost option.
This will probably change in a future version of RethinkDB.
We should have a prominent warning about this in the documentation.

What's documented here is in CR. If this is wrong, let me know, @VeXocide. :)

ping @VeXocide about whether jobs are going to be filtered by user in 2.3 or whether jobs are just for admin ( I don't know which issue is tracking it)

@chipotle One more thing I forgot about: All drivers now accept two new options to their connect method. user with a username, and password for the password (both strings). The defaults are user = "admin" and password = "".
@deontologician Can you clarify how you implemented the user/password API in the Java driver?

Oh yeah, it's just going to be the r.connection().user(userName, password) as suggested


Fix polyhedron error, improve UX for CifEnsemble, fix histogram label

Fixed the following issues

https://github.com/bobleesj/cifkit/issues/10
https://github.com/bobleesj/cifkit/issues/11
https://github.com/bobleesj/cifkit/issues/12
https://github.com/bobleesj/cifkit/issues/13
https://github.com/bobleesj/cifkit/issues/14
https://github.com/bobleesj/cifkit/issues/15
Use pyproject.toml to install packages in GitHub Actions

:warning: Please install the  to ensure uploads and comments are reliably processed by Codecov.
Codecov Report
Attention: Patch coverage is 98.96907% with 1 line in your changes missing coverage. Please review.

Project coverage is 97.15%. Comparing base (aa21e2d) to head (f558f65).

Files
Patch %
Lines

tests/core/models/test_cif.py
96.15%
1 Missing :warning:

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@            Coverage Diff             @@
##             main      #17      +/-   ##
==========================================
+ Coverage   97.07%   97.15%   +0.08%
==========================================
  Files          34       34
  Lines        1297     1337      +40
==========================================
+ Hits         1259     1299      +40
  Misses         38       38

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


Improve UI

The Verida Account Explorer needs to be updated to better showcase the activity and details of the Verida Network.
User stories

Homepage:

As a User I can view a count of the total number of active DIDs on the network
As a User I can view a table showing the 20 most recent created DIDs that includes; Name, country, profile picture, how recently the DID was created, link to view full details
As a User I can view details of a DID (already exists)
As a User I can paginate through all the recently created DIDs

Stats page:

As a User I can view statistics on the network
As a User I can view a bar chart of the number of network users per day
As a User I can view a bar chart of the number of network users per week
As a User I can view a bar chart of the number of network users per month

Nodes page

As a User I can view information on nodes running on the network
As a User I can view a table showing the 20 most popular storage nodes that includes; node name, region, country, % utilisation progress bar, link to view full details
As a User I can view full details of a storage node (see full info from testnet.json)

Navigation

As a User I can toggle between testnet and mainnet explorers

@tahpot

As a User I can view a bar chart of the number of network users per day
As a User I can view a bar chart of the number of network users per week
As a User I can view a bar chart of the number of network users per month

Do you want these as aggregated numbers (so always going up) or new users per week?
For example, a few recent weeks looked like this:
"24th week of 2023", num DIDs: 3259
"25th week of 2023", num DIDs: 5119
"26th week of 2023", num DIDs: 11348
"27th week of 2023", num DIDs: 11905
The two ways of presenting the data look like this. Obviously they present pretty different messages.


Fixed tracks with multiple artists causing crashes and rendering issues

I've found a bug with how multiple artists are handled. When a track has multiple artists, they are stored in a list, however miniplayer wrongly assumes that they are a single string, thus causing unexpected behavior like this:
                                     ['Maxim Shostakovich', 'Prague Symphony Orche
                                     ['Maxim Shostakovich', 'Prague Symphony Orche
                                     ['Maxim Shostakovich', 'Prague Symphony Orche
                                     ['Maxim Shostakovich', 'Prague Symphony Orche
                                     ['Maxim Shostakovich', 'Prague Symphony Orche
                                     ['Maxim Shostakovich', 'Prague Symphony Orche
                                     ['Maxim Shostakovich', 'Prague Symphony Orche
                                     ['Maxim Shostakovich', 'Prague Symphony Orche
                                     ['Maxim Shostakovich', 'Prague Symphony Orche
                                     ['Maxim Shostakovich', 'Prague Symphony Orche
Symphony No. 13 in B-Flat Min...     ['Maxim Shostakovich', 'Prague Symphony Orche
Shostakovich: Symphonies - Co...     ['Maxim Shostakovich', 'Prague Symphony Orche
['Maxim Shostakovich', 'Prague Sy    ['Maxim Shostakovich', 'Prague Symphony Orche
────╶y Orchestra', 'Prague Philha    ['Maxim Shostakovich', 'Prague Symphony Orche
                       1:50/13:38    ['Maxim Shostakovich', 'Prague Symphony Orche
, 'Pavel Kühn', 'Peter Mikulas']     ['Maxim Shostakovich', 'Prague Symphony Orche

Notice how at the bottom-left corner artists are printed over four lines, while they normally should be stripped to fit one line. In this case, miniplayer assumes that len(artist) is the width of the artist string, but since artist is a list, it uses number of artists as the string width, thus printing potentially large string. This behavior also leads to crashes if unstripped artists string doesn't fit the window.
I added code to compile artists to a single string, so the output would look like this:
                                  Maxim Shostakovich, Prague Symphony Orche
                                  Maxim Shostakovich, Prague Symphony Orche
                                  Maxim Shostakovich, Prague Symphony Orche
                                  Maxim Shostakovich, Prague Symphony Orche
                                  Maxim Shostakovich, Prague Symphony Orche
                                  Maxim Shostakovich, Prague Symphony Orche
                                  Maxim Shostakovich, Prague Symphony Orche
                                  Maxim Shostakovich, Prague Symphony Orche
                                  Maxim Shostakovich, Prague Symphony Orche
                                  Maxim Shostakovich, Prague Symphony Orche
Symphony No. 13 in B-Flat...      Maxim Shostakovich, Prague Symphony Orche
Shostakovich: Symphonies -...     Maxim Shostakovich, Prague Symphony Orche
Maxim Shostakovich, Prague...     Maxim Shostakovich, Prague Symphony Orche
╶                                 Maxim Shostakovich, Prague Symphony Orche
                    0:01/12:53    Maxim Shostakovich, Prague Symphony Orche
                                  Maxim Shostakovich, Prague Symphony Orche

This is good work! Thanks a lot. I'll push a new version to PyPi later tonight.


update storage packages with fixed generator

update swagger-to-sdk generator version to latest

[ ] The purpose of this PR is explained in this or a referenced issue.
[ ] The PR does not update generated files.

These files are managed by the codegen framework at Azure/autorest.go.

[ ] The PR targets the latest branch.
[ ] Tests are included and/or updated for code changes.
[ ] Updates to CHANGELOG.md are included.
[ ] Apache v2 license headers are included in each file.

Fixes https://github.com/Azure/azure-sdk-for-go/issues/4842

Can one of the admins verify this patch?


Migrate Zooniverse User Table to Panoptes

So the way I think would work best for handling this is having the Panoptes database replace Zooniverse Home as the authoritative database for usernames/passwords across the the zooniverse.
Here's a list of things we'll need to do to handle the change:

[x] Point Ouroboros's ZooniverseUser model at the Panoptes database
[x] Connect the CAS Server to the Panoptes database for authenticating users
[x] Write a script to migrate users into Panoptes
[ ] Write a script to migrate email subscriptions
[ ] Write a script to migrate classification counts

For what it's worth, here are the things I use the Zoo Home DB for at the moment:

Building email lists for newsletters
Generating lists of names for author pages
Updating/maintaining the publications page
The Zooniverse advent calendar
Updating Zoo Home (obvs)

This is all good then. We just have to do the migration from ZooHome.

Does this mean the migration hasn't taken place yet? Am thinking ahead to the possible World Bank/Nepal project on Panoptes, which we'd want to email out to the volunteers and let them use their logins.

No we're planning to do it the week before the launch

@edpaget are you working on this?

Yes I was planning to find a time next week were we could tolerate some downtime (or at least frozen account creation/password resets) while the migration happened'

So have you written the email / count scripts? Also what's the plan with migrating classification counts, where will they live in Panoptes?

Nope. I only added them recently when I realized we'd need them. I'm going to add a classifications_count field the user project preferences model that users per-project classification counts will be saved at.

Mind if I take a crack at them? Just been delving into the subscription table to figure out why new project counts weren't showing up on zoo home.

For sure. Do you want to add stuff to denormalize user-per-project classification counts too then?

Do you mean add a classifications_count and panoptes_project field in UserProjectPreferences?

I don't know what the second field would be for...

Marker to say it's a legacy project outside of panoptes, prob should be inverted if that's the case. Perhaps just legacy|migrated_project?


Add note of ref doc headings

View a preview at https://prompt.ws/r/Azure/azure-cli/6337
This is an experimental preview for @microsoft users.


Zoom in ui?

I find it difficult to sufficiently zoom by dragging on the timeline--the timescale I'm looking for is lower than what I see when the timeline span is only a few pixels. Is there any other way to change the zoom level?

Ah, I found the hotkeys list.


collectionFormat always multi

I using latest version 2.9.2
Linked Issues:

collectionFormat is always multi #1442

collectionFormat problem #1946

This Issues closed,  but problem with collectionFormat not resolve yet!
I use @ApiImplicitParam annotation, like this:
 @ApiImplicitParam(name = "id", paramType = "path", allowMultiple = true, dataType = "long", collectionFormat = "csv")

Swagger result, its generate with collectionFormat: multi.
      parameters:
        - name: id
          in: path
          required: false
          type: array
          items:
            type: integer
            format: int64
          collectionFormat: multi

collectionFormat ignored.
I want to believe in the imminent hot fix 2.9.3
Thank you!
PS this patch based on 2.9.2 tag.

Rebased and squashed merge commit via 55e79912c69facad7c82424dfa9b213892058b13

Thanks for the PR!

Just as information for someone who is also struggling with this issue:
Using v2.8.0 helps.


Release 2.1.2 uses features from 2.2.0-dev?

Version 2.1.1 works fine, but a new version 2.1.2 was released 3 weeks ago.
When installing this version, and trying to run it, this happens in the browser console:

This is a case that must not happen! Features from the next version and from the current stable version seem to be mixed. Please test the release with viur install scriptor 2.x.x in an existing project and afterwards call it, before marking them as release!

Seems like the current release is broken. I updated the release, try it again please.
https://github.com/viur-framework/viur-scriptor/releases/tag/v2.1.2
Please check this out and let me know if the problem persists.


New notebook on using healpix manipulation to find clusters

A simple notebook that finds clusters using healpix from DES and Legacy Survey catalogs, and compares the results to Redmapper catalog.
@kadrlica

@FalseAnomaly This notebook requires some updates before it would be ready to request a Data Lab review. In particular, it requires the addition of some explanatory text to explain the goals and approach that are being taken. Let me know if you'd like to continue with this process, and we can work toward an updated version over the summer.

@FalseAnomaly let me know if you have any plans to further develop this notebook. Otherwise, I propose that we close this PR.

@kadrlica Should we close this PR?

Yes, let's close it.

Closing this PR.


[FLINK-13761][ScalaAPI]SplitStream should be deprecated because SplitJavaStream is deprecated

What is the purpose of the change
SplitStream should be deprecated because SplitJavaStream is deprecated.
Brief change log
Deprecated SplitStream scala api.
Verifying this change
This change does not affect any tests.
Does this pull request potentially affect one of the following parts:

Dependencies (does it add or upgrade a dependency): (yes / no)
The public API, i.e., is any changed class annotated with @Public(Evolving): (yes/ no)
The serializers: (yes / no / don't know)
The runtime per-record code paths (performance sensitive): (yes / no / don't know)
Anything that affects deployment or recovery: JobManager (and its components), Checkpointing, Yarn/Mesos, ZooKeeper: (yes / no / don't know)
The S3 file system connector: (yes / no / don't know)

Documentation

Does this pull request introduce a new feature? (yes / no)
If yes, how is the feature documented? (not applicable / docs / JavaDocs / not documented)

@flinkbot please recheck the pull request title.

@zentol

Deprecated message updated.


Fixed #28561 -- Removed inaccurate docs about QuerySet.order_by() and joins.

As of ccbba98131ace3beb43790c65e8f4eee94e9631c, both examples don't use a join.

@jarshwah, you added this. Am I missing anything (see https://code.djangoproject.com/ticket/28561#comment:3)?

@timgraham I can only guess that I wasn't aware of the optimisation at the time and hadn't tested it. Remove away.


Test Explorer does not discover unit tests in VS 2019 Preview build

(sorry OSS folks, you don't have access to this yet)

Build the solution in the IDE
Ensure that the NUnit test runner package is installed

VS 15.9.2:

VS 16.0 P1 internal build:

Log in dev16:
[11/29/2018 12:54:24 PM Warning] No test is available in C:\repos\visualfsharp\vsintegration\src\FSharp.Editor\bin\Debug\FSharp.Editor.dll C:\repos\visualfsharp\vsintegration\src\FSharp.LanguageService\bin\Debug\FSharp.LanguageService.dll C:\repos\visualfsharp\vsintegration\src\FSharp.ProjectSystem.FSharp\bin\Debug\FSharp.ProjectSystem.FSharp.dll C:\repos\visualfsharp\vsintegration\src\FSharp.VS.FSI\bin\Debug\FSharp.VS.FSI.dll C:\repos\visualfsharp\vsintegration\tests\GetTypesVSUnitTests\bin\Debug\GetTypesVSUnitTests.dll C:\repos\visualfsharp\vsintegration\tests\Salsa\bin\Debug\VisualFSharp.Salsa.dll C:\repos\visualfsharp\vsintegration\tests\UnitTests\bin\Debug\VisualFSharp.UnitTests.dll C:\repos\visualfsharp\vsintegration\Utils\LanguageServiceProfiling\bin\Debug\LanguageServiceProfiling.exe. Make sure that test discoverer & executors are registered and platform & framework version settings are appropriate and try again.

We'll have to determine if this is on our side of on the test runner side.

Can't repro today. Must just be some preview weirdness.

Just for posterity:

Tests cannot be run in VS 2019 preview yet because we are trying to load a dev15 .dll
Tests cannot be run in VS 2017, when working out of the dev16 branch, due to failing to load a P2P reference

So if we're doing any dev16 work we cannot run unit tests locally 😢

Re-opening due to internal ticket report

So with File | New project for:

MSTest
NUnut
xUnit

It all works. You just need to build the solution first.

Not sure is the same issue or different.
In my case I noticed that VS cannot "discover" tests.
I have a VS solution with the main projects created in C# .Net 4.7.
The solution has also test projects (NUnit 3).
I add test projects in dotnet Core and change the Target Framework to "net47".
Right click in the test "run test" does not have any effect.
"Run All" in the Test View find all the test and after that I can select the test in the Tests Window and run it again. "Run test" context menu voice still doesn't work from the code.
I don't have ReSharper.
It happens with VS 2019 preview 2.
It works in VS 2017 15.9.6.

@alex-piccione Just for clarity, is this with C# projects or F# ones?
There are some new features for tests that are based on Roslyn syntax trees, so they won't work for F#. But the Test Runner should be able to discover and run tests provided that you build the .dll(s) and have the appropriate NuGet package runner installed into the test project(s).


Clean up memory used for tracing in TCharm when exiting

Original date: 2017-04-28 19:12:13
Original PR: https://charm.cs.illinois.edu/gerrit/2463

Change-Id: I9728c5ac0b58c6e1efac50e8b24d96b52cdfaf64

This isn't the proper way to do this, we need to do a reduction on each node to ensure all users of the TCharm tracing stuff are finished using it before deleting it


feat: application crashes when property entity is not passed

Update documentation with this new feature.
Fix application crashes when property entity  is not passed in generateRoutes

@mtperesvx could you please fix the conflict?

@jhomarolo Sure,
This branch was out of date. I opened another PR to upload the changes and closed this PR.
https://github.com/herbsjs/herbs2rest/pull/38


CB-21391 FMS doesn't put instance metadata status to FAILED state on …

…upscale failure, instead it remains in REQUESTED state
When handling upscale failure, instance put to terminated if there is no instance id available and put to FAILED if it's still in requested state or it's missing the IP or FQDN.
See detailed description in the commit message.

Looks good, but I can't see any unit tests for this. Most of the actions are untested, is this intentional in FMS?


Filtering Video

Hi,
I have written the code for filtering and saving to an url but, I want to make player to play filtered video when a filter clicked and continue where exactly it was (as in time. no start from beginning or anything else.) like instagram or snapchat. Is there any way to achieve this?

hey @mrfarukturgut not by using Player today. thanks for the project interest.


[bridge] Formally verify the Native Bridge Move-contract.

Feature Request
We are Movement. We distinguish from the rest of Eth ecosystem by supporting Formal Verification through Move. We should embrace this, live this, and formally verify the native bridge (on the Move side)
This particularly holds true if the bridge is simplified.
Is your feature request related to a problem? Please describe.
The bridge is not formally verified.. yet.
Describe the solution you'd like
Formally verify the Native Move bridge contract.
Describe alternatives you've considered
The alternative is to not live up to our preached standards.

Indeed, we are Movement.
Yes, formally verifying the native bridge is important. I was going to start on this after fully finishing the modules, to get more hands-on spec experience, but maybe it would be better in the interest of time for @franck44 to do it, once we decide that the modules are feature-complete?

If you'd like to check it out, I began a spec for native_bridge.move in the latest commit in PR 100 to aptos-core here: https://github.com/movementlabsxyz/aptos-core/pull/100/commits/3b917589af0ccba849a40f3d9815778c21eceb08
As long as the spec doesn't block the modules from compiling, I think it's fine to land PR 100 and then fix the spec so it passes formal verification in a separate PR, which we can track in this issue.
I'm a bit stumped on the syntax of the spec for the bridge_transfer_id function. Details here, please feel free to comment if you can help, thank you:
https://github.com/movementlabsxyz/aptos-core/pull/100#issuecomment-2489770158


Optimise processGlobalLeaderboard mysql function

While it works well with our small data set it does too many SQL queries. In each loop it does 2 queries, so 2 queries per unbanned user. Seems like a lot.

Sounds like a good place for a join so we can filter out banned users in one query

Leaderboard is gonna be handled by Hirasawa Web, this is no longer needed


HID: Flash/Strobe indicator (aka "Saftblandare")

Objective:
Human Interface Device(HID)

Visible motion feedback/Indicator/warning on top of vehicle (aka "Saftblandaren").
Light with the following characteristics...

Fast rotate
Slow rotate
Flash
Strobe
Off

Definition of done:

[x] Hardware/Mechanics Done: Flash light connected to ROS-serial node "/dev/ArduinoNano0"
[x] New message type for manipulating/controlling the characteristics of the flashlight.
[x] Implement support(subscriber) for changing characteristics of the flashlight

Prerequisites:

[x] #25 ROS-Serial on extra (Auxiliary) Arduino Nano

Known issues that need to be manage:

Problem combining ROS Serial & servo-library.
https://answers.ros.org/question/341697/unable-to-operate-servo-with-rosserial_arduino/
http://wiki.ros.org/rosserial_arduino/Tutorials/Servo Controller

Implemented & tested


[Mocha] Crash on testFinish with errors

Hello,
I'm in the process of implementing BuildKite as a trial for my team, however ran into the following issue when running our Mocha suite in a Github Action.
Unhandled asynchronous exception: TypeError: Cannot read properties of undefined (reading 'map')
    at failureExpanded (/home/runner/work/my-repo/my-repo/node_modules/buildkite-test-collector/util/failureExpanded.js:2:17)
    at MochaBuildkiteAnalyticsReporter.testFinished (/home/runner/work/my-repo/my-repo/node_modules/buildkite-test-collector/mocha/reporter.js:59:27)
    at RunnerMain.<anonymous> (/home/runner/work/my-repo/my-repo/node_modules/buildkite-test-collector/mocha/reporter.js:34:14)
    at RunnerMain.emit (node:events:525:35)
    at RunnerMain.emitSubprocessEvents (/home/runner/work/my-repo/my-repo/node_modules/mocha-parallel-tests/dist/main/runner.js:158:30)
    at RunnerMain.reEmitSubprocessEvents (/home/runner/work/my-repo/my-repo/node_modules/mocha-parallel-tests/dist/main/runner.js:54:14)
    at TaskManager.<anonymous> (/home/runner/work/my-repo/my-repo/node_modules/mocha-parallel-tests/dist/main/mocha.js:77:20)
    at TaskManager.emit (node:events:513:28)
    at TaskManager.onTaskProcessingFinished (/home/runner/work/my-repo/my-repo/node_modules/mocha-parallel-tests/dist/main/task-manager.js:22:18)
    at TaskManager.emit (node:events:513:28)

Note: this is not blocking me as I've switched to JUnit upload, however figured I'd raise the issue for investigation 👍

Thanks @itsJess1ca for raising this issue! I've created an internal ticket and we'll look into it.

Hihi, I've encountered the same issue. We're using mocha 8.1.3 with Cypress version 12.5.1.

This issue has been resolved in v1.5.0


Should be marked as Deprecated or Obsolete - can no longer create "Classic" alerts, and they will stop working in June 2020.

I attempted to run an ARM template containing some "Classic" alerts this afternoon which failed with the notice that:
> As part of classic alerts retirement, starting Sep 01, 2019, no new classic alerts can be created except on a few metrics listed here https://aka.ms/classic-alerts-exceptions. All classic alerts including the exceptions listed will stop working after June 2020. It is strongly recommended to use new metric alerts. See https://aka.ms/create-metric-alerts.
Following the link to "Create Metric Alerts" takes me to Create, View and Manage Metric Alerts with options to create through the portal or Azure CLI. Following the link in Next Steps on that page for "Create metric alerts using Azure Resource Manager Templates" brings me here - which is what I was trying to create.

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

ID: c3b9fa00-b319-daa4-3bd5-1f83f96590d4
Version Independent ID: 69d25f7e-30e4-0c6a-1d67-25e282d71a3c
Content: Create a classic metric alert in Azure with a Resource Manager template - Azure Monitor
Content Source: articles/azure-monitor/platform/alerts-enable-template.md
Service: azure-monitor
Sub-service: alerts
GitHub Login: @rboucher
Microsoft Alias: robb

@Zhaph Thank you for your feedback, we will look into it and get back to you at the earliest.

Agreed. New text will be "This article describes creating classic metric alerts using Resource Manager templates. Classic alerts were retired in August 2019. You cannot create new one in public Azure. Some regional versions of Azure may still have the option. Instead, create newer metric alerts using templates. This article provides the details."  @harelbr

Actually updated language to be even stronger.  Should be out in the next week if not sooner. Thanks for your comment @Zhaph

@rboucher  Thank you for helping enhance the document.
@Zhaph Thanks again for sharing your feedback. Closing this issue for now, feel free to revert back if you have any further queries and will be happy to reopen the thread and continue the conversation.

update due out around 11am Pacific time 3/10/2020


Adding scaphold

Scaphold Slackr GraphQL API!
🎉 🎉 🎉

@vning93 Thank you for contribution and sorry for delay.
Your example is great since it is the only API in our collection that supports subscriptions.
I need to make a few changes to your commit before merge, will try to make it today.

@vning93 I added Slarck to this section:
https://github.com/APIs-guru/graphql-apis#demonstration-only-apis
Since it only example API.

@vning93 Sorry for huge delay :(

No problem, thanks for the add!


Genesis blocks

You can search for block '0' on etherscan to get all genesis transactions. using getBlock 0 returns no transactions.

Moved to https://github.com/Great-Hill-Corporation/quickBlocks/issues/69


fix(cfg): convert signed nums to unsigned if meets unsigned operators

When unsigned operator uop contains a signed number in LLVM IR, we need to convert the signed number to an unsigned number in CrabIR before lowering the unsigned operation to signed. For instance:
%3 = icmp ult i64 %1, -26, !dbg !1010

should appear in crab IR:
@V_15 = (-_0 <= 0);
@V_16 = (_0 <=<PHONE_NUMBER>3709551589);
@V_17 = true;
_2 = ite(@V_15,@V_16,@V_17);

Just to clarify, to convert to _2 = (_0 <=_u -27) is correct because then it's up to the abstract domain to deal with unsigned comparisons. The problem only arises when we try to lower unsigned comparisons to signed ones.

It would also nice to add a test.

Fixed checking signed operand based on your clarification. Also added some tests for lower unsigned.

This should be fixed in commit d84dee4


NonStandard Validators - Import Bug

Package version eg. v8, v9:
v9
Issue, Question or Enhancement:
When using the non-standard validators, the validation functions do not implement go-playground/validator.v9.Func type because the non-standard/validators package use github.com/andreiavrammsd/validator.Func instead.
See: https://github.com/go-playground/validator/blob/v9.29.1/non-standard/validators/notblank.go#L7
Code sample, to showcase or reproduce:
package mypackage

import (
	"gopkg.in/go-playground/validator.v9"
	nonstandard "gopkg.in/go-playground/validator.v9/non-standard/validators"
)

var validate *validator.Validate

func init() {
	validate = validator.New()
	validate.RegisterValidation("notblank", nonstandard.NotBlank)
}

This does not compile because of:
cannot use nonstandard.NotBlank (value of type func(fl validator.FieldLevel) bool) as validator.v9.Func value in argument to validate.RegisterValidation
Fix:
Replace import of github.com/andreiavrammsd/validator with go-playground/validator.v9 on here. Happy to submit a PR.

PR#522, if it makes sense.

Merged today and release in v9.30.0


Allow formatting references and operations in tables

Coverage increased (+0.03%) to 91.48% when pulling a87897b1c2a5c5a6678164cd8f64376c6c0083b0 on gl3nn:formatting-references into 27d56f5601834f2fa84dea72988a68d86a9bc26a on kayak:master.


👩💻 Proposed notes on versioning for contributors

This PR is an attempt to slightly formalize my answer to this: https://github.com/jupyter-book/mystmd/pull/1650#issuecomment-2485557941
I'm totally open to feedback here - this is just the general rules I personally follow when bumping versions (and I always try to avoid any changes that don't just fall under patch...).
These rules are different from "official" semantic versioning which is basically - major: any breaking change, minor: any feature, patch: bugfix. But I'd argue in favor of maintaining the distinction between user-facing breaking change vs. developer-facing breaking change. (Possibly this suggests we should have different versioning on mystmd - "user-facing" - and myst-cli - "dev-facing" - where breaking changes can imply different levels of impact...)

For what it's worth, I'd be keen on trying out Jacob Tomlinson's effver approach, which I've found to more naturally map onto the ways that devs think about versioning their code. It is basically semver, but with the guiding question.being "how much effort would it likely take your target user to upgrade?".
That said I'm not sure how it works in practice so I don't feel super strongly about this.
https://jacobtomlinson.dev/effver/

@fwkoch I like this PR. If you are happy that it represents the current state of thinking on your part and Rowan's, then let's merge?


[misc] The LICENCE file in the JARs

The LICENCE file should be in every generated JAR.
The LICENSE file is currently copied across all sub-modules, which is unnecessary duplication.
The pom.xml must be changed to copy the same LICENSE file from the project root everywhere.
something like this:
<plugin>
  <artifactId>maven-resources-plugin</artifactId>
  <executions>
    <execution>
      <id>copy-resources</id>
      <phase>validate</phase>
      <goals>
        <goal>copy-resources</goal>
      </goals>
      <configuration>
      <outputDirectory>${project.basedir}/target/classes/META-INF</outputDirectory>
        <resources>
          <resource>
            <directory>${project.basedir}/../</directory>
            <includes>
              <include>LICENSE</include>
            </includes>
          </resource>
        </resources>
      </configuration>
    </execution>
  </executions>
</plugin>

done.


panic: runtime error with DRONE_STASH_CONSUMER_RSA_STRING

Drone 7.3 from docker hub
Configured to use Bitbucker server (stash). Privarte key in DRONE_STASH_CONSUMER_RSA_STRING
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x18 pc=0x958051]

goroutine 1 [running]:
github.com/drone/drone/remote/bitbucketserver.New(0xc420014040, 0x13, 0xc42000c0b9, 0x6, 0xc4200140a9, 0x9, 0xc420014079, 0x14, 0x0, 0x0, ...)
        /go/src/github.com/drone/drone/remote/bitbucketserver/bitbucketserver.go:83 +0x151
github.com/drone/drone/router/middleware.setupStash(0xc4203a6f00, 0xdbcd4a, 0x5, 0x1, 0x0)
        /go/src/github.com/drone/drone/router/middleware/remote.go:90 +0x306
github.com/drone/drone/router/middleware.setupRemote(0xc4203a6f00, 0x20, 0xcfa800, 0x9e2701, 0xc420403d80)
        /go/src/github.com/drone/drone/router/middleware/remote.go:40 +0x22f
github.com/drone/drone/router/middleware.Remote(0xc4203a6f00, 0x13cb580)
        /go/src/github.com/drone/drone/router/middleware/remote.go:21 +0x2f
github.com/drone/drone/extras/cmd/drone/server.server(0xc4203a6f00, 0x0, 0xc4203a6f00)
        /go/src/github.com/drone/drone/extras/cmd/drone/server/server.go:408 +0x161
github.com/drone/drone/vendor/github.com/urfave/cli.HandleAction(0xc9e220, 0xdf5720, 0xc4203a6f00, 0xc4203aa400, 0x0)
        /go/src/github.com/drone/drone/vendor/github.com/urfave/cli/app.go:485 +0xd4
github.com/drone/drone/vendor/github.com/urfave/cli.Command.Run(0xdbdf88, 0x6, 0x0, 0x0, 0x0, 0x0, 0x0, 0xdd69c4, 0x1e, 0x0, ...)
        /go/src/github.com/drone/drone/vendor/github.com/urfave/cli/command.go:207 +0xb72
github.com/drone/drone/vendor/github.com/urfave/cli.(*App).Run(0xc4203c6680, 0xc42008a060, 0x2, 0x2, 0x0, 0x0)
        /go/src/github.com/drone/drone/vendor/github.com/urfave/cli/app.go:250 +0x7d0
main.main()
        /go/src/github.com/drone/drone/drone/main_extras.go:43 +0x386

I can confirm this error. From my naive point of view the DRONE_STASH_CONSUMER_RSA_STRING is incorrectly handled and causes this nil pointer.
Using a key file provided by DRONE_STASH_CONSUMER_RSA does not cause any problems as far as I can see.

resolved in 1.0.0-rc.1


Can't set amount of rewards (at least for Cosmic Crates)

Please add a field to the crate config file for min-max rewards.
Currently, Cosmic crates are set to 4 rewards, which, is a bit inconvenient since server administrators might want to give 3 items, 5 items, etc...
Thanks and cheers!

Thanks for the request it has been noted in my suggestions.


Add mesa-aco-git for AMD GPUs for more performant ACO shader compiler

This PR swaps out mesa in favor of mesa-aco, which provides a more performant shader compiler. More information about it can be found here:
https://steamcommunity.com/games/221410/announcements/detail/1602634609636894200
With it, ACO can be used for shader compilation in games by adding a launch option:
RADV_PERFTEST=aco %command%

ACO was merged into mainline mesa in 19.3. GamerOS currently ships mesa 19.3.4.

@alkazar Thanks! Didn't know it was merged into mainline. I'll try and use RADV_PERFTEST=aco in 19.3.4 to see if it's on par with 20.0.


add quota easily and able to remove quota group

[x]  can remove a quota group
[x]  can add quota with just one click with no need to edit the detailed quota item

Done

yes it works. but the Delete button is ugly. Is it possible to use only public buttons: Create, Edit, Delete selected items?

Done

good work.

I reopen this issue for two reasons:

The table Admin - Quota  uses Bold font, should be normal font.
There should be an nfs quota item, i.e., the disk size the user can have in their global data directory.

@zhongyehong
I just tested your code, sadly it failed.
Two problems:

The data field should have a default value, e.g., 100. Currently it is blank.
Can not change default group.  Get error message

simplejson.scanner.JSONDecodeError
simplejson.scanner.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

1.You can set the value of data in admin page, Is this a problem? I will add default value in upgrade.py later.
2.This problem due to PedroLiu rewrite the httprest.py, I use getvalue method of form before, now should be get, I will fix it soon.
3.About the Bold font, I don't know why it is Bold. I write it the same as other table, but only admin page has this problem.

A default value is better.

About upgrade.py, I think it is a bit professional. But, it could be more professional. For example, check the version of original system and determine the upgrade actions. Since we will have many releases, there should be many upgrade actions, each could be very different.  This could be done in the future.

About the commits of #89 , the docklet.conf.template could be changed to
Also you need to change code accordingly, especially NO changed to False, YES changed to True
# DATA_QUOTA : whether enable the quota of data volume or not
# True or False, default: False
# DATA_QUOTA=False

# DATA_QUOTA_CMD : the cmd to set the quota of a given directory. It accepts two the arguments:
# arg1: the directory name, relative path from the data volume root, e.g, "/users/bob/data"
# arg2: the quota value in GB of string, e.g., "100"
# default: "gluster volume quota docklet-volume limit-usage %s %s"
# DATA_QUOTA_CMD="gluster volume quota docklet-volume limit-usage %s %s"

Done