Fixed importing EMMO

Isn't the issue here still that emmo-inferred has not been created in the emmo-repo/EMMO repository since emmo.info redirects to raw files there?
At least I still get a 404 Not Found for http://emmo.info/emmo-inferred/1.0.0-beta.

Isn't the issue here still that emmo-inferred has not been created in the emmo-repo/EMMO repository since emmo.info redirects to raw files there?
At least I still get a 404 Not Found for http://emmo.info/emmo-inferred/1.0.0-beta.

You are right, this doesn't solve the issue #9 - only that I can open crystallography.ttl locally.
We use the catalog file to map http://emmo.info/emmo-inferred/1.0.0-beta a resolvable. The issue is of cause that Protege only looks at the catalog file when we open the ontology locally, not from the web.
I guess this PR should be updated with http://emmo.info/emmo-inferred/1.0.0-beta replaced with an ugly, but resolvable url. Correct?

You are right, this doesn't solve the issue #9 - only that I can open crystallography.ttl locally.
We use the catalog file to map http://emmo.info/emmo-inferred/1.0.0-beta a resolvable. The issue is of cause that Protege only looks at the catalog file when we open the ontology locally, not from the web.
I guess this PR should be updated with http://emmo.info/emmo-inferred/1.0.0-beta replaced with an ugly, but resolvable url. Correct?

I actually think that this works. At least I can load https://raw.githubusercontent.com/emmo-repo/domain-crystallography/fix-imported-emmo/crystallography.ttl from URL in protege.
The reason for the failing check is more an issue with EMMO-python - we are working on it...

I actually think that this works. At least I can load https://raw.githubusercontent.com/emmo-repo/domain-crystallography/fix-imported-emmo/crystallography.ttl from URL in protege.
The reason for the failing check is more an issue with EMMO-python - we are working on it...


Add a Gitter chat badge to README.md

SciTools/iris now has a Chat Room on Gitter
@lbdreyer has just created a chat room. You can visit it here: https://gitter.im/SciTools/iris.
This pull-request adds this badge to your README.md:

If my aim is a little off, please let me know.
Happy chatting.
PS: Click here if you would prefer not to receive automatic pull-requests from Gitter in future.

It turns out we already had a gitter, but did I start an Iris specific room on the gitter. This just adds the badge to the readme.
Could someone merge this in? @pp-mo @bjlittle @dkillick @djkirkham
Once this is merged in I will put a post on google groups notifying people about this


Check in with Innolitics Oct. 11, 2022 - validate initial file and send feedback to sender

Sent email and requested changes to innolitics

Thank for the clarification John,
In that case there are only a few updates I see that are needed. I've attached a copy of the file with the changes I've listed below.
Column Name	Value Received	Correct Value	Comment
symptomatic_for_disease	U (Unknown)	U	This is confusing in the Programmer's guide, we just need the code "U","N","Y"
patient_id	N/A	null	This is an optional column for OTC data. If you do not capture data relevant for this field please send blank. We do require the column to be present even if it is not populated with data
testing_lab_specimen_received_date	N/A	null	This is an optional column for OTC data. If you do not capture data relevant for this field please send blank. We do require the column to be present even if it is not populated with data
equipment_model_name	Alinty m	BinaxNOW COVID-19 Ag Card Home Test	For LOINC code 94558-4 "Alinity m" is not a correct value in the LIVD table (https://www.cdc.gov/csels/dls/sars-cov-2-livd-codes.html). Please use a value that aligns with 94558-4 (this will be different once your product is added to the table but for now to prevent errors let's use the value I've listed under "correct value".
testing_lab_clia	15D2243459
00Z0000014	For at-home testing there are two accepted CLIA values for this field "00Z0000014" is for OTC tests and 00Z0000015 is for prescription tests.
Also, do you have a preference for either token-based authentication or a shared secret key for connecting to the API? Both methods are described in the Programmer's Guide (https://reportstream.cdc.gov/resources/programmers-guide) with examples. Please go ahead and send a new sample file when you have made the listed changes and let me know if you have any questions.
Thanks,
James Gilmore
James Gilmore (Agile Six)
Senior HL7 Data Analyst
Pandemic-Ready Interoperability Modernization Effort (PRIME)

Feedback sent to sender on 8/30. Checked in on 9/12 to see if updates had been made.

9/16 - asked for update
"Hi Qais and Desiree,
I wanted to check in and see if you have been able to retrieve the keys and example curl command from the Keybase message I sent. Please let me know if you have any questions/
Thanks,
James"

9/27 - Sent additional email requesting update or if there were any questions.

@sarahnw @BerniXiongA6 let's follow up with them

Innolitics sent new file for validation. I reviewed the file and sent feedback along with instructions for the next step to Sam'an Herman-Griffiths<EMAIL_ADDRESS>"Hi Sam'an,
Not a problem. This file is almost entirely correct. The only change we would like if possible is to the responses in the columns for symptomatic_for_disease. It looks like you are sending "TRUE" or "FALSE". Could you instead use the values "Y", "N" or "UNK". Also, the next step will be sending a test file to our staging database. For this we generally share the secret key via Keybase encrypted message (https://keybase.io/). If possible, could you create a Keybase account and let me know your username so that I can send the secret keys and example curl commands for the next step?
Thanks,
James"


Webhook not mutating pods in a specific namespace

Describe the bug:
When creating a pod (part of a deployment) in a specific namespace with the appropriate annotations and vault paths, the init container nor the VAULT_* environment variables are injected. This happens in one namespace only, other namespaces are seems to work fine. However, secrets are working as expected in the same namespace as the pods.
The namespace is not part of the excluded namespaces, the name of namespace is customer-care-app
    namespaceSelector:
      matchExpressions:
      - key: name
        operator: NotIn
        values:
        - kube-system
      - key: name
        operator: NotIn
        values:
        - kube-system
    objectSelector:
      matchExpressions:
      - key: security.banzaicloud.io/mutate
        operator: NotIn
        values:
        - skip
    reinvocationPolicy: Never
    rules:
    - apiGroups:
      - '*'
      apiVersions:
      - '*'
      operations:
      - CREATE
      resources:
      - pods
      scope: '*'

The webhook is mutating secrets properly within the same namespace:
    namespaceSelector:
      matchExpressions:
      - key: name
        operator: NotIn
        values:
        - kube-system
      - key: name
        operator: NotIn
        values:
        - kube-system
    objectSelector:
      matchExpressions:
      - key: owner
        operator: NotIn
        values:
        - helm
      - key: security.banzaicloud.io/mutate
        operator: NotIn
        values:
        - skip
    reinvocationPolicy: Never
    rules:
    - apiGroups:
      - '*'
      apiVersions:
      - '*'
      operations:
      - CREATE
      - UPDATE
      resources:
      - secrets
      scope: '*'

I have tried to delete the pods, recreate the deployment and scaling the replicaset up and down.
Expected behaviour:
The pod is mutated and the init container and VAULT_* env vars to be injected
Steps to reproduce the bug:
Not sure
Additional context:
We have the same setup on other clusters are they are functioning properly as well, same namespace name and deployments. This is the only cluster that faces this issue.
Environment details:

Kubernetes version: v1.19.7
Cloud-provider/provisioner: OKE (Oracle Kubernetes Engine)
bank-vaults version: 1.13.1
Install method: Helm
Logs from the misbehaving component (and any other relevant logs):
No logs for the pod, only for secrets

vswh-vault-secrets-webhook-67c485df5c-7g8wx vault-secrets-webhook time="2022-04-29T19:00:52Z" level=debug msg="Webhook mutating review finished with: '[]' JSON Patch" app=vault-secrets-webhook dry-run=false kind=v1/Secret name=inbound-token-4grnw ns=customer-care-app op=create path=/secrets request-id=a49701e7-3686-4f79-9d65-d0ff5743b850 webhhok-type=mutating webhook-id=vault-secrets-secret webhook-kind=mutating wh-version=v1beta1
vswh-vault-secrets-webhook-67c485df5c-7g8wx vault-secrets-webhook time="2022-04-29T19:00:52Z" level=info msg="Admission review request handled" app=vault-secrets-webhook dry-run=false duration=6.839952ms kind=v1/Secret name=inbound-token-4grnw ns=customer-care-app op=create path=/secrets request-id=a49701e7-3686-4f79-9d65-d0ff5743b850 svc=http.Handler webhook-id=vault-secrets-secret webhook-kind=mutating wh-version=v1beta1

Resource definition (possibly in YAML format) that caused the issue, without sensitive data:
Pod YAML

apiVersion: v1
kind: Pod
metadata:
  annotations:
    cluster-autoscaler.kubernetes.io/safe-to-evict: "true"
    kubernetes.io/limit-ranger: 'LimitRanger plugin set: cpu, memory request for init
      container import-certs; cpu, memory limit for init container
      import-certs'
    vault.security.banzaicloud.io/vault-addr: https://EXTERNAL-VAULT-URL:8200
    vault.security.banzaicloud.io/vault-path: kubernetes-prod
    vault.security.banzaicloud.io/vault-role: webhook
    vault.security.banzaicloud.io/vault-skip-verify: "true"
  creationTimestamp: "2022-04-29T19:58:34Z"
  generateName: inbound-7645597799-
  labels:
    app-family: family
    app.kubernetes.io/instance: inbound
    app.kubernetes.io/name: inbound
    pod-template-hash: "7645597799"
  name: inbound-7645597799-ljqgl
  namespace: customer-care-app
  ownerReferences:
  - apiVersion: apps/v1
    blockOwnerDeletion: true
    controller: true
    kind: ReplicaSet
    name: inbound-7645597799
    uid: f387ef95-5ce5-45c3-b642-5d541d133160
  resourceVersion: "173690696"
  selfLink: /api/v1/namespaces/customer-care-app/pods/inbound-7645597799-ljqgl
  uid: 8455c7a6-df11-4721-9024-0488bf45f83c
spec:
  containers:
  - env:
    - name: ELASTIC_APM_SECRET_TOKEN
      value: vault:prod/data/oke/elastic-creds#apm_secret_token
    - name: OAUTH2_JWT_ISSUER_URI
      value: vault:prod/data/oke/internal-keycloak#INTERNAL_OAUTH2_JWT_ISSUER_URI
    - name: REDIS_PASSWORD
      value: vault:prod/data/oke/redis-creds#redis-password
    image: NEXUS_URL/inbound:1.48.0
    imagePullPolicy: IfNotPresent
    lifecycle:
      preStop:
        exec:
          command:
          - sleep
          - "30"
    livenessProbe:
      failureThreshold: 22
      httpGet:
        path: /liveness
        port: http
        scheme: HTTP
      initialDelaySeconds: 120
      periodSeconds: 10
      successThreshold: 1
      timeoutSeconds: 1
    name: service
    ports:
    - containerPort: 8080
      name: http
      protocol: TCP
    readinessProbe:
      failureThreshold: 22
      httpGet:
        path: /readiness
        port: http
        scheme: HTTP
      initialDelaySeconds: 120
      periodSeconds: 10
      successThreshold: 1
      timeoutSeconds: 1
    resources:
      limits:
        cpu: "1"
        memory: 2Gi
      requests:
        cpu: 100m
        memory: 1Gi
    securityContext: {}
    terminationMessagePath: /dev/termination-log
    terminationMessagePolicy: File
    volumeMounts:
    - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
      name: inbound-token-4grnw
      readOnly: true
  dnsPolicy: ClusterFirst
  enableServiceLinks: true
  imagePullSecrets:
  - name: regcred
  initContainers:
  - args:
    - -c
    - |-
      REDACTED
    command:
    - /bin/sh
    env:
    - name: somefile
      value: x
    image: NEXUS_URL/family-jre
    imagePullPolicy: IfNotPresent
    name: import-certs
    terminationMessagePath: /dev/termination-log
    terminationMessagePolicy: File
    volumeMounts:
    - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
      name: inbound-token-4grnw
      readOnly: true
  nodeName: <IP_ADDRESS>
  preemptionPolicy: PreemptLowerPriority
  priority: 0
  restartPolicy: Always
  schedulerName: default-scheduler
  securityContext: {}
  serviceAccount: inbound
  serviceAccountName: inbound
  terminationGracePeriodSeconds: 30
  tolerations:
  - effect: NoExecute
    key: node.kubernetes.io/not-ready
    operator: Exists
    tolerationSeconds: 300
  - effect: NoExecute
    key: node.kubernetes.io/unreachable
    operator: Exists
    tolerationSeconds: 300
  volumes:
  - name: inbound-token-4grnw
    secret:
      defaultMode: 420
      secretName: inbound-token-4grnw

/kind bug

+1

+1

Hi, first of all, sorry for the late response!
The problem with mutating pods vs secrets is that in the case of pods (and Kubernetes auth), the pod's serviceaccount is used instead of the webhook's, so it needs to be added to the Vault auth configuration to the bound_service_account_names and bound_service_account_namespaces list. See the docs here, or if you use the Bank-Vaults Operator, modify the CR similar to this:
spec:
  externalConfig:
    auth:
      - type: kubernetes
        roles:
          - name: webhook
            bound_service_account_names: ["default", "vault-secrets-webhook"]
            bound_service_account_namespaces: ["default", "bank-vaults-infra", "customer-care-app"]
            policies: ["allow_secrets"]
            ttl: 1h

Feel free to open a new issue in https://github.com/bank-vaults/vault-secrets-webhook if this problem persists.


Review npm audit warnings

Reported by Levi Morris.

truffle-config has been updated to resolve (currently version 1.1.13 https://www.npmjs.com/package/truffle-config)
https://github.com/trufflesuite/truffle/pull/1708
Can zos and zos-lib version of truffle-config be updated?

All of the vulnerabilities that show up on npm audit at the moment are from web3 or its dependencies, and none of them have been patched yet, so short of removing the web3 dependency there is not much we can do.


Setting for enabling/disabling font ligatures missing

I was not able to find a setting to disable font ligatures. Is there one present or are font ligatures enabled at all times?

There's no setting yet, but it's definitely on the TODO-list! Duplicate of #584


Pull request for the gene package

Contains code for genes, transcripts, exons, introns, 5'UTR, CDS and 3'UTR.

I've done a first pass, but I need to go over it again when comments have been addressed.

I will also put everything in a single file gene.go. Is that ok?

SGTM

Addressed all the comments (hope so) + some extras. I need to add a few tests for the CDS and UTRs of CodingTranscript but I will probably do it tomorrow.

Done with all changes.

I was thinking more about the dynamic calculation and it seems to me that a transcript is really best  defined as a collection of spliced exons. This means that it's feature is best defined dynamically by calculating along its []Exon. This together with the dynamic calculation of introns means that exons should be stored in sort order (at least during the calculation. They should also be non-overlapping (this is an invariant rather than an implementation detail).

So how do you think a transcript's feature should be calculated from exons? This also implies that the location of an Exon cannot be the transcript. Should we drop ChromStart, ChromEnd, from transcripts?

So how do you think a transcript's feature should be calculated from exons?

start = min(exon starts) where exon.loc == transcript
end = max(exon ends) where exon.loc == transcript
There is no point sorting prior to this obviously. But a call to sort.IsSorted() and a conditional sort.Sort() prior to determining introns is needed. This means we also need (probably not exported - say exons) a type that satisfies sort.Interface.

This also implies that the location of an Exon cannot be the transcript. Should we drop ChromStart, ChromEnd, from transcripts?

Yes.

start = min(exon starts) where exon.loc == transcript
I'm confused by this. If exon.loc is the transcript then how do i get the transcript.start from it?
I was thinking something like the following:

if exon.loc == transcript {
    error
}
transcript.start = min(exon starts)
transcript.loc = exon.loc

e.g.
func (t *CodingTranscript) Start() int {
    s := maxInt
    for _, e := range t.exons {
        if e.loc != t {
            continue
        }
        if e.Start() < s {
            s = e.Start()
        }
    }
    return s
}

Not sure whether to panic if there is no exon.

Shouldn't t.Location() == exon.Location()? If that's the case then the second if clause results in a circular reference. We return the transcript start on the transcript itself.
Also the first if clause prevents legit cases where the exons location is not the transcript (eg. chromosome). I would expect transcript.Start() be the min(exon starts) and t.Location==chromosome.
Like so:

func (t *CodingTranscript) Start() int {
    s := maxInt
    for _, e := range t.exons {
        if e.loc == t { // notice I changed not equal to equal
            // Maybe panic cause this should not happen or at least set the t.Location to nil
        }
        if e.Start() < s {
            s = e.Start()
        }
    }
    return s
}

You could do it that way, but i like to think of Location as not just a physical location, but also a conceptual location. The exon is located within a transcript, which is located in a gene, which is located in a chromosome.

I agree with you and the implementation we have so far allows for a tree-like structure or any other structure. It's up to the client, how to build the structure. However I'm now thinking that the dynamic nature of the transcript might not be such a good idea after all. Below I give some statements/test cases and you can tell me if we are on the same page.

I expect that the coords (Start, End) of a Feature are defined in respect to Location. This means that when I write Feature {Start : 10, Location: AnotherFeature} it means that Feature starts 10 units away from the start of AnotherFeature. This also means that function BaseStartOf() has a specific meaning and can be defined.
The dynamic location of a transcript must match that of its exons. Otherwise strange things could happen as in the following snippet:

// Build tree-like structure
chromA = Chrom{
    Start: 0
    Location: nil
}
transcA = Transcript{
    Location: chromA    // we allow sth different than exonA.Location
}
exonA = Exon{
    Start:200
    Location: transcA
}
print(transcA.Location) // prints chromA
print(transcA.Start)    // prints 200. BOOM!

Given (2) the tree-like capabilities for transcript break. The transcript can no longer be on anything other than the exon location.

chromA = Chrom{
    Start: 0
    Location: nil
}
transcA =Transcript{
}
ExonA = {
    Start:200
    Location: transcA
}
print(transcA.Location) // prints transcA
print(transcA.Start)    // prints 200. Does this really make sense?
                        // What about (1)? Exon was expected to be 200 units away from
                        // the transcript start but this is no longer the case.

It's up to the client, how to build the structure.

That's not entirely true. Sure, it's up to them, but there are certain semantic expectations that are (as yet poorly documented) the basis for the design. It's reasonable to break these internally (I do in some packages), but not to expose them publically.

I agree that locations relative to the location is a reasonable expectation (that's not defined - perhaps add it to your doc comments) and if that's what we want then the dynamic calculation is not the way to go and we need to hide much of the currently exposed fields. Alternatively, if the trasncript types keep an offset to translate the coordinates between chromosomal and transcript that would work - this is how I do coordiate mapping for the sequence types. Perhaps try that first.

An offset fixes that: just return the previous func's return value plus the offset.

ditto with the caveat that that is clearly broken; transcA has no location.

Can you please give an some examples of semantics that are poorly annotated and that should be restrictions to the client. Just so I can get a better understanding on what you refer to.
Maybe I'm missing some of the biogo internals but I cannot see any reason to introduce an offset. I'm mostly happy with the current implementation. Things are decoupled. Every type can stand on each own (eg a transcript works without necessarily needing the exons - although maybe it will panic if we call a function that needs them). The coords/location structure is flexible. To me right now an offset would just add (mental) complexity without an evident advantage. What is that advantage?
I did look at seq.linear.Seq and some others and realized that you use OffSet the same way we use ChromStart. Is that right? The word "global" that you use in the docs puzzles me. Does it refer to the sequence's location or the "BaseLocation"? I will try to dive in the sequence types some more to try to understand how exactly you use OffSet. Meanwhile if you have some insight that could help me that would be great.

The semantics that I'm refering to are that levels the location chain should not be skipped, i.e. transcript should be between chrom and exon (possibly keeping gene in between transcript and chrom if that is biologically meaningful to the problem).
The advantage is that I would like to keep the hierarchical relationship between exon and transcript. I'm not sure that exon and transcript are really separable in a conceptual sense; a transcript must have at lease one exon (even a bacterial transcript). Essentially a transcript is an annotation on a number of exons. You give a couple of cases where positions don't work properly if the location chain works the way I want, a single offset stops that happening.
Yes, offset is the ChromStart. You are right, that wording is terrible; it refers to the location. This should probably be fixed, and adding a generalised offset-relative-to-containing-feature similar to OrientationWithin would be helpful. I'm happy to be swayed on ways this should work.

To add to the above, there is a similar issue with the relationship between transcripts and genes.
Take this example: you construct a gene/transcripts/exons that is located on one chromosome, but you want to lift it over to another location because of some structural variation. If the locations are all pinned onto the gene (rather than directly to the chromosome), the only values that need to be altered are the offset and location of the gene. Otherwise, you need to update all coordinates and locations or have non-sane reutrns for Start()/End()/Location().

I'm writing this really fast just as food for though (and so as not to forget) cause I'm fried and need to get some rest. What if we rename CromStart and the likes in all our types to Pos define an OffSet for all types and then "define" that the Start is always OffSet + Pos (Pos will be calculated dynamically for transcripts and will be set at creation for the rest). I haven't though of it thoroughly but I think it gives consistency. I don't like having an OffSet value just for Transcript and in a way "surprise" the client on what this actually means. I repeat - I haven't though of it thoroughly :)
Regarding your latest comment: I see what you mean, I will get back to you later but just a quick comment. On the other hand if the client chooses to define everything on the chromosome think of the performance boost. Does not have to traverse deep in the tree to get the coords. This can be a important in the high throughput sequencing world that we now live.

Thanks for working through this with me, I appreciate your patience. I agree with everything you have there. I was also considering the performance impact, but I think I fall on the side that I'm prepared to accept that from an out of the box generalised implementation. When people want ultimate performance, they should really be implementing far more specific types themselves (types are cheap in Go).

That's fine, I enjoy diving in the semantics and I understand that the initial design is perhaps the single most important thing to create sth that scales well. Personal story: A couple years back I tried to explain to a guy why a framework I was working on would be useful. So I explained the gene structure, transcripts, splicing, etc only to get the reply "Oh come on, you just created some gene models". Seriously? Maybe I should forward this PR to the guy!
So let's summarize what needs to be done so I can get on it. These are my suggestions.

Rename all fields with suffix "Start" to Pos.
Delete all fields with suffix "End" and introduce Length instead.
Introduce OffSet for all types.
Make clear in the docs and implement that 'Start == Pos + OffSetand that it refers toLocation()`
Couple Exon and Intron with Transcript. Maybe rename Loc field to Transcript to make the coupling more evident.
Keep Transcript decoupled from Gene - Rename transcript field Chrom to Loc. I think leaving the coupling of these two to the client is important. A transcript can definitely be defined without a gene and vice versa. As a matter of fact the UCSC GTF file that supposedly contains the genes contains only transcripts.
Sort Exons and ensure they are not overlapping.

oh my, the more I try to justify the OffSet to myself the more I think it should not be used. I even tried to explain it to a colleague of mine and he was muddled. The notion that I always end up to, is that a transcript has a position onto itself (this is basically what the dynamic Pos boils down to) which is just mind blowing to me. For some reason my brain cannot accept this idea.
Think about this: We enforce that the exons added to a transcript must much the transcript itself. Also the AddExon method becomes AddExons and can only be used if the exons field is empty. So we enforce that all exons are added at the same time. And here comes the important thing - there must be one exon that starts at 0.
t = Transcript{
    Loc : a chromosome or a gene
    Pos: 1000
}
t.AddExons(Exon{Loc: t, Pos: 0, Len: 100}, Exon{Loc: t, Pos: 500, Len:1500})

print(t.Loc) // chromosome or gene
print(t.Start) // 1000
print(t.End) // 2000

Tight coupling without the need for dynamic calculation or offset. What do you say?

The notion that I always end up to, is that a transcript has a non zero position onto itself (this is basically what the dynamic Pos boils down to) which is just mind blowing to me.

This is not correct. It has a non-zero position relative to its location.

Tight coupling without the need for dynamic calculation or offset. What do you say?

SGTM but call it SetExons and allow it to be called again, blowing away the previous collection.
What do you intend to do with the equivalent relationship between transcripts and genes?
I'm confused about why you think there is no need for an offset - that's what Pos is. The reason I didn't use pos in seq is that pos (despite its use in SAM doesn't match a non-unit lengthed object well IMO), hence offset.

SGTM but call it SetExons and allow it to be called again, blowing away the previous collection.

better

What do you intend to do with the equivalent relationship between transcripts and genes?

If we agree that the gene cannot exist on its own I could do the same thing using its Features. Sounds good?

I'm confused about why you think there is no need for an offset - that's what Pos is. The reason I didn't use pos in seq is that pos (despite its use in SAM doesn't match a non-unit lengthed object well IMO), hence offset.

Yes sorry in a previous comment I mentioned that Start == Pos + OffSet. Now we got rid of one of these guys, that's what I really wanted to say. You prefer to name it OffSet then right?

If we agree that the gene cannot exist on its own I could do the same thing using its Features. Sounds good?

SGTM

Yes sorry in a previous comment I mentioned that Start == Pos + OffSet. Now we got rid of one of these guys, that's what I really wanted to say. You prefer to name it OffSet then right?

Yes please, but lc/S/.

OK, I've had a brief review. I'll look again in a couple of days, but it's looking pretty good.

Addressed all comments. Waiting for next review and directions on how to proceed with the merge (rebasing, etc).

How is this coming along?

I've finished all changes. It awaits your review and let me know how to proceed in terms of rebasing.

LGTM
Just rebase onto master squashing into one commit. When that's done I'll do a ff merge.

Done

Thanks.

Welcome. Thanks for the guidance


In the debug console, completion doesn't apply when pressing enter

Does this issue occur when all extensions are disabled?: Yes

VS Code Version: 1.74.3
OS Version: macOS Ventura 13.0.1

Steps to Reproduce:

Create a simple .js file containing

const greeting = "Hello World!";
console.log(greeting);

put a breakpoint on line 2
Debug as a Node application
When the breakpoint it, in the Debug console, start typing gr, select greeting and press enter
Completion item was not applied, instead the current gr statement is executed, causing an error:

Uncaught ReferenceError ReferenceError: gr is not defined
at eval (repl:1:1)

I understand it works as expected when hitting TAB instead, however, this is inconsistent with the editor, where I'm use to selecting the completion item with Enter. It makes the experience pretty frustrating.

Thanks, why isn't it the default?

This often catches me too, but at the same time, it's annoying to type exactly what you mean, then press enter to submit, and accidentally accept an unrelated suggestion.
The suggestions in the debug console don't work exactly the way I'd like them to, there are some issues with history and suggestions combined with certain syntax, so I wouldn't make it the default unless I fix those issues and tweak the suggestion behavior.

I guess I'll try to keep an eye on your improvements.
So far "debug.console.acceptSuggestionOnEnter": "on", works as expected with Java completion.


AddHostedService() registers service as Transient in the 2.1.1 apart from the 2.0

Hello.
According to the documentation for the 2.0
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/host/hosted-services?view=aspnetcore-2.0#timed-background-tasks
We have to register services as Singleton

According to the documentation for the 2.1
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/host/hosted-services?view=aspnetcore-2.1#timed-background-tasks
We should use the AddHostedService extension

which is Transient under the hood now: https://github.com/aspnet/Hosting/blob/master/src/Microsoft.Extensions.Hosting.Abstractions/ServiceCollectionHostedServiceExtensions.cs#L18
So my questions are:

Can it be a problem and why have you changed the lifetime?
What should I do If I have one more interface to reach the the service from the DI? Right now I'm doing the following:
Register custom interface as singleton:
services.AddSingleton<ICandleSubscriptionHostedService, CandleSubscriptionHostedService>();
Use the custom resolver for the IHostedService registration:
services.AddSingleton<IHostedService, CandleSubscriptionHostedService>(provider => (CandleSubscriptionHostedService) provider.GetRequiredService<ICandleSubscriptionHostedService>());
Both are Singletons so the second lifetime doesn't matter a lot actually.

Thank you!

Don’t make your hosted service an API. That’s the best bet. Instead use another service that the hosted service interacts with as the public API.
We made it transient because it’s usually only resolved once when used as a hosted service.

@davidfowl thank you for the answer
I have a worker app service on azure which does some work 24/7. And of course I want to get status\report from the service on demand. That's why I have implemented two interfaces: IHostedService and the custom one for accessing the service instance and getting some data from there.

I'm saying don't implement the interface on the IHostedService itself. Here's an example of a queue:
public interface IQueue<T>
{
    T Dequeue();
    void Enqueue(T item);
}

public class QueueHostedService : IHostedService
{
     public QueueHostedService(IQueue<WorkItem> queue)
     {
     }

     // Write code to Dequeue from the queue and perform some work
}

public class HomeController : Controller
{
     private readonly IQueue<WorkItem> _queue;
     public HomeController(IQueue<WorkItem> queue)
     {
          _queue = queue;
     }

     [Route("/item")]
     public IActionResult Post(WorkItem item)
     {
           _queue.Enqueue(item);
     }
}

In this example, you could implement the IQueue on the QueueHostedService, or you can implement it on another type that the QueueHostedService uses.

In this example, you could implement the IQueue on the QueueHostedServic
So will be:
public class QueueHostedService : IHostedService, IQueue ?

Maybe I wasn’t clear enough. I want suggesting that you implement the interface on then IHostedService, I was suggesting that you should use another service to store the state. I’m your case, don’t store the state on the hosted service, store it on a different service

Store the information in the different service

Does it mean in another Singleton which will be used from both hosted service to put and some client to pull data? What the pros of such flow? In the 2.0 I had hosted services as singleton and pulled the data directly from it. So my question is WHY?

Keep doing what you’re doing then. We chose transient because we don’t expect people to resolve the hosted service instance and use it like an API.

Sure but it’s currenrlt transient so you’ll have to avoid using this method.

Agreed but the naming is not great. I suspect when most people hear service they equate it to Singleton... I sure did and it caught me out.

Agreed but the naming is not great. I suspect when most people hear service they equate it to Singleton... I sure did and it caught me out.

It only matters if you try to resolve the service for yourself. Ususally when you register system components like this, you aren’t the one responsible for calling it. Similar to how controllers are transient and not scoped. We don’t expect you to resolve the controller instance in your own code.

Well, you weren't expecting us to actually use the hosted service, but we do. Because we need it. What good is a hosted service that nobody can talk to? Do I really need to create some more communication infrastructure of an unknown structure to make the connection? It's a lot simpler to just get that service and talk to it directly. Just like I can get any other singleton service.
In my case I'm hosting a router component that handles client WebSocket connections and can send data to them. So I resolve that service when I need it. Creating another level of indirection just to tell that service something looks bloated and hard to follow to me.
My suggestion would be to leave this hosted service topic completely out of DI. It's not related. (See my other referenced issue.) Instead, the hosted service should be registered through another API specifically for this purpose.

What good is a hosted service that nobody can talk to?

There are lots of reasons to.

Do I really need to create some more communication infrastructure of an unknown structure to make the connection? It's a lot simpler to just get that service and talk to it directly. Just like I can get any other singleton service.

No, in fact, you can just do what @sguryev outlines in the first post. Register using a delegate to resolve the original hosted service. Or you try not using it like an API and use another service for that.

My suggestion would be to leave this hosted service topic completely out of DI. It's not related. (See my other referenced issue.) Instead, the hosted service should be registered through another API specifically for this purpose.

Maybe, we'd then need to handle cases where it comes from DI and where it doesn't.

MVC style activate a list of Types.

I ran into the same issue as @sguryev today. I wrongly anticipated AddHostedService would result in a singleton. What I'm gathering from @davidfowl here is using a service that is a Singleton to manage state/status within the transient hosted service is the correct approach. Therefore never referencing the hosted service directly after it is started. It makes the implementation a tad more verbose, but I think it  enforces a separation of concerns of sorts assuming my understanding here is correct.

This thread is extremely strange. HostedServices should be singletons not transient.
One of the most obvious use cases of why you need a hosted service is you activate a shared resource's backplane and use it to tear it down. It doesn't make sense to have that done else where.
The situtation i'm looking at right now
HostedService StartAsync Start(msgbus)
HostedService StopAsync Stop(msgbus)
and i want my scoped services to get the singleton instance of msgbus only after it's been initialized by the host service.
It's really strange to use a hosted service to capture the msgbus as an injected dependency, manipulate state and then leave it as is with the expectation the container owns it.
I really expected to do something like:
services.AddSingleton<MyBusControl>(provider => provider.GetService<MyHostedService>().Bus);

Which fails with Bus is null because i got a surprise new instance of MyHostedService, when i expect i would get actual instance that's associated with aspnet.
It makes no sense that it doesn't return the correctly associated instance of MyHostedService.

I guess i'll just make Bus be a static property on MyHostedService with the expectation that only Start/Stop will ever touch it.

Why does it need to be static?

Because of how IHostedService is designed to register as transient.
I need the instance that is owned by my HostedService, the instance that had Start invoked on it.
With these being transient, they're nearly worthless other than i don't have to write voodoo code to fire on app start to initialize my connections. There needs to be a clear way to initialize a thing in a HostedService and then have that be accessible.
The aspnet core container doesn't seem to support run time modification, so i can't just register the service inside the HostedService. (That also would make perfect sense for me to add additional services into the container during StartAsync) I've used StructureMap since 2008 or earlier, i really want to believe in 10 years Microsoft could build a basic container that has features that have been standard to containers for over a decade now.
internal class Foo: IHostedService,
{
    public Task StartAsync(CancellationToken cancellationToken)
    {
        var initializedBar = new Bar();

        return Task.CompletedTask;
    }
}

@davidfowl  How would you acquire initializedBar inside a scoped service?

I must be missing something obvious so forgive me for being dense. Why can't you add Bar to the container as a singleton and inject it into Foo's constructor?

I must be missing something obvious so forgive me for being dense. Why can't you add Bar to the container as a singleton and inject it into Foo's constructor?

static Bar Singleton;

static void Main() {
Singleton = Bar.Empty;
}

static async Task CallMeMaybe() {
Singleton = await Bar.Intialize();
}

But i guess it's the best option available.

I still don't quite understand. Singletons don't need to be exposed statically via a variable.
public class Foo: IHostedService
{
    public Foo(Bar bar)
    {
    }

    public Task StartAsync(CancellationToken cancellationToken)
    {

        return Task.CompletedTask;
    }
}

@davidfowl my last code block is your design of injecting an uninitialized singleton into a hosted service to be bootstrapped by Start.

I don’t understand how making the hosted service a singleton changes this:

This is why HostedServices need to be singletons, so an uninitialized singleton is never ambiently available

Until Start is called, the service is unitialized

@dotnetchris not much.
https://github.com/aspnet/Hosting/blob/f9d145887773e0c650e66165e0c61886153bcc0b/src/Microsoft.Extensions.Hosting.Abstractions/ServiceCollectionHostedServiceExtensions.cs#L16-L18

@dotnetchris I understand the reasoning for wanting to use the same object, it seems easier but those other complains you mentioned I don't really buy any of your arguments.
Say we allowed container mutation on the fly (which performant containers usually do not allow), when would you add the service? After StartAsync was called? Does that mean that people consuming the service wouldn't be able to inject it until StartAsync is called? How do you ever coordinate that? Do you get injection errors until the connection to the bus succeeds?

The way AddHostedService() presents itself makes it feel like you're adding it to a special collection ala aspnet filters. It's very non-obvious that all that's actually happening is IHostedService magically adds capability via the container itself and you're just doing AddTransient()... the more i think about this the less it makes sense.
How does this even work? What happens if registered Foo: IHostedService as singleton? What would happen if i registered it as scoped?
This really seems to be abusing the container that just dropping an item in it magically causes it to activate with no dependencies to it. Then even stranger is that item then becomes a phantom living in its own reality that nothing else can ever access.

Separate topics, containers in general

Say we allowed container mutation on the fly (which performant containers usually do not allow)

So i had to step back and research this statement and it's really split down the road whether containers allow mutation or not. Pulling up https://github.com/autofac/Autofac/issues/811

Looking at other containers out there, locking a container after it's built and ready to resolve isn't uncommon. Simple Injector, LightInject, and the Microsoft.Extensions.DependencyInjection containers all disallow updating the container post-facto.

For those that do - StructureMap, Ninject, and Windsor to name a few - it appears they actually do all the work mentioned in "easier said than done" - flushing caches, rebuilding the whole container.

If your 'performant' label pretty much means either Light/Simple, it would be accurate. But back to your question at hand, there would be no difference in container behavior to requesting it to provide ICanNeverBeConstructed and ImCurrentlyNotRegisteredButMightBeLater just at some point the latter may actually succeed on future calls.

What IHostedService provides is immense, it just seems really awkwardly bolted onto the container when it should just be an independent collection.

It’s an extension method on IServiceCollection, that’s how you know it has something to do with dependency injection.
It’s very simple, the consumer of IHostedServices gets an IEnumerable of them and then calls StsrtAsync and StopAsync at the right time in the life cycle.
We do this in lots of other places as well. If you did it as a singleton it’ll work just fine (you have to add it as an IHostedService explicitly though. This is what the method is for). If you registered it as scoped it would fail. The method exists to register the type as the right service type and to pick the lifetime for you.
Containers that allow mutation after building will have a more complicated design just because of that fact. There’ll be more locking because they have to account for the fact that registrations can change at any point. The added flexibility can result in a much more complex implementation that usually results in poorer performance.

What about making it something more like:
 public static IServiceCollection AddHostedService<THostedService>(this IServiceCollection services, bool singletonLifetime = false)
     where THostedService : class, IHostedService
     => singletonLifetime ? services.AddSingleton<IHostedService, THostedService>() : services.AddTransient<IHostedService, THostedService>();

@dotnetchris doesn't that break down as soon as you have more than one IHostedService? The host will resolve and run all of them, but how do you resolve the right one in your app?

@Tratcher over 9 out of 10 times i don't use interfaces for injection, i depend on concrete types. So in my case I'd just receive Foo directly public Baz(Foo fooSingleton). About the only time i ever inject via an interface is i'm expecting to receive IEnumerable<IHaveManyImplementations>

We wouldn't add the bool, we would just make a singleton. @Tratcher lets track this and make it a breaking change in 3.0. It won't break that many people and it'll solve most of the problems described here where people want to use their IHostedService like a public API.


[validation] check cinderVolumes names are valid

CinderVolume name is -volume-
The CinderVolume controller creates StatefulSet for volume service to run.
This adds a StatefulSet pod's label
"controller-revision-hash": "<statefulset_name>-"
to the pod.
The kubernetes label is restricted under 63 char and the revision
hash is an int32, 10 chars + the hyphen. Which results in a default
statefulset max len of 52 chars. The statefulset name also
contain the cinder name and -volume-. So the max len also need to
be reduced bye the length of those.
Also the name of the created cinderVolume name match a lowercase RFC 1123.
Depends-On: openstack-k8s-operators/lib-common#532
Depends-On: https://github.com/openstack-k8s-operators/cinder-operator/pull/420
Jira: https://issues.redhat.com/browse/OSPRH-8063

need to rebase after https://github.com/openstack-k8s-operators/openstack-operator/pull/955


Added info about custom URL feature break.

[x] read the CONTRIBUTING guidelines
[x] raised a GitHub issue or discussed it on the projects chat beforehand
[ ] added unit tests
[ ] added integration tests
[x] updated documentation if needed
[ ] updated CHANGELOG.md

@rbangert have you consider opening an issue in https://github.com/tailscale/tailscale

I have created one with them, and dug through the code to find where it broke.
https://github.com/tailscale/tailscale/issues/6671
I suspect it will be a bit before this gets addressed, and thought this might be a good idea for the time being after seeing a few people come into discord over it yesterday and learning the windows client had also been impacted.

This is not correct for the Windows client, the method for logging in has changed and is docs are located on your running instance under yourheadscaledomain.com/windows.
The incorrect windows document will be removed in #1066


Update Coda SSO tutorial

Updating to include caveats and self-service options for the Coda integration.

It's been a couple of weeks.  Is there anything I need to do in order to move this PR forward?

@jeevansd - Could you review this pull request?  Thanks.

Great. Thanks @chrisleck

#sign-off

@chetansriv Coda does offer the self service UI for SSO. So please enable OneClickSSO with this app.

We'll move this PR to the private repo so we can apply current file naming standards to the new image files, and to check the updates on staging and by using rules validation. When the new PR is created, we'll post the PR # here and then close this PR.  The original contributor will be shown when the commit is published.

PR https://github.com/MicrosoftDocs/azure-docs-pr/pull/104189 in the private repository replaces this PR. The update should be live within a day. We'll close this PR.


GEODE-2637: Refactored LuceneQueryFactory.setResultLimit()

* Renamed LuceneQueryFactory.getResult to setLimit()
* This is done to match the cwiki documents

Thank you for submitting a contribution to Apache Geode.
In order to streamline the review of the contribution we ask you
to ensure the following steps have been taken:
For all changes:

[x] Is there a JIRA ticket associated with this PR? Is it referenced in the commit message?

[x] Has your PR been rebased against the latest commit within the target branch (typically develop)?

[x] Is your initial contribution a single, squashed commit?

[x] Does gradlew build run cleanly?

[ ] Have you written or updated unit tests to verify your changes?

[ ] If adding new dependencies to the code, are these dependencies licensed in a way that is compatible for inclusion under ASF 2.0?

Note:
Please ensure that once the PR is submitted, you check travis-ci for build issues and
submit an update to your PR as soon as possible. If you need help, please send an
email to<EMAIL_ADDRESS>

Potential reviewers
@ladyVader @upthewaterspout @jhuynh1 @boglesby @gesterzhou


Improve templates exercise

Reword/extend README.md
Repeat some instructions inside the code
Use std::less instead of custom less
Already provide the implementation of RevOrderString, so students can focus on the template related stuff
Move to C++20

Good after the two suggestions below.

Well, maybe not. Mac doesn't seem to speak "view" ...

I added a hint on how to implement the comparison functor instead of the implementation. I also renamed the comparison types to include Less, so it expresses that it implements a less than comparison.

Failure on MacOS:
/Users/runner/work/cpluspluscourse/cpluspluscourse/code/templates/solution/playwithsort.sol.cpp:11:58: error: no member named 'views' in namespace 'std'

Could be that the libc++ does not have a full ranges implementation there :/ I will fix that later.


[Docs] Fix README.md typos

Project documentation should be well written and doesn’t have typos.

Returns a users' followers details.

hello @mutairibassam.
i would like to work on this issue.

Returns a users' followers details.
can you give some clarrifications on this please?

Hi @t-bolt, It's just a typo needs to be modified. The statement should be written like this (Returns a user's followers details).
Please don't limit your contribution to this.


more details terminal output message

I tried running and get this result
Resolving dependencies...
Got dependencies!
Starting...
Server running.

it will be more better with message which port running and which api got hit by client.

This information is available in the log file. The name of that file defaults to api.log. You can run the application with an attached shell and have output to the console.
Leaving this issue open; to resolve, add support for a '--console' flag to the application start script that turns on console logging and does not detach the shell.

addressed in 2.0 branch


Fatal error on MacOS Mojave: 'wchar.h' file not found.

When I am trying to use infer on my MacOS Mojave, I get an error saying that it cannot find 'wchar.h' file.
Here are the information of my environment:
infer version: 1.5
OS: MacOS Mojave - No Docker
Command I used: infer -- g++ f1.cpp     OR       infer -- clang f1.cpp
Full output: output
Minimal example to reproduce error: example
Note: the same thing will happen if I use clang as the compiler too.

This problem is due to using outdated infer 0.15.0 on Mojave.
Upgrading to 0.17.0 fixes the problem for me.

Please re-open if upgrading to 0.17.0 didn't fix your issue.


m.Input Exception with "Home" and "End"

Hi !
If you don't use suggestion with m.Input and press "Home" or "End", it throws an Error:
Reproduce steps:
-go to the Explorer (https://openui5.hana.ondemand.com/explored.html#/sample/sap.m.sample.InputTypes/preview)
-press Home or End in the first Input
=> And you'll see in the console Uncaught TypeError: Cannot read property 'getItems' of undefined
The problems are (I think) on the onsaphome and onsapend handlers (line 666...yes devil number! :smiling_imp:  ):
Input.prototype.onsaphome = function(oEvent) {
	this._onsaparrowkey(oEvent, "up", this._oList.getItems().length);
};

Input.prototype.onsapend = function(oEvent) {
	this._onsaparrowkey(oEvent, "down", this._oList.getItems().length);
};

If no suggestions are used, this._oList is undefined

Hi David,
you are right... this._oList is undefined (probably this code has been added for the suggestion list).
Internal reference:<PHONE_NUMBER>
Thanks and regards
Andreas

Hi David,
this is now fixed in master for 1.28 and will also be in 1.26.7 (~two weeks from now).
Thanks and regards
Andreas


Enable OSGi bundle packaging for Javalin

As discussed at: https://github.com/tipsy/javalin/issues/1375
Testing with out OSGi enabled application been performed to ensure that newly introduced module javalin-osgi works as expected.

@tipsy - could you please review this PR?

@vkolomeyko I just released v4 a few hours ago, so I'm a bit busy with that. I don't know anything about OSGI either, so that is slowing me down. Do you have a nice introductory article you can recommend?

@vkolomeyko I just released v4 a few hours ago, so I'm a bit busy with that. I don't know anything about OSGI either, so that is slowing me down. Do you have a nice introductory article you can recommend?

Hello David,
This article should give and a relatively brief introduction of what OSGi is. For the work done in this PR, the Bundle aspect is especially important.
Applications using OSGi use custom classloaders at runtime where every module is wired with its depedencies (imports) and those and only those are available in the classpath at runtime. Unlike, traditional Java application where there is only one classloader with the whole classpath available.
This approach is similar to dependency mechanism used by Maven at build time, except it is applied to a graph of library dependencies at Java runtime.
HTH,
Viktor

Thanks @vkolomeyko, could you ask one of your coworkers (or however you were referring to when you said "we") to review this? I guess it's pretty harmless (since it's a separate module), but it's still nice to have a review from someone who knows this well.

Because it's just a new module, @vkolomeyko should be pretty fine testing this in dev & production envs when merged and in case of any issues no one will be affected. From the theory perspective it looks ok, it's mostly about listing packages to bundle 🤔

Yup, I'm not really that worried, I guess I can just merge it.

@dzikoysk - thanks for reviewing my work.
@tipsy - thanks for merging it. Would a new version of Javalin 3.x be published sometime soon? (which contains OSGi module)

I'll try to get it done tomorrow :)

Should be out now !

Should be out now !

Thanks, David - I can see published now at: https://search.maven.org/artifact/io.javalin/javalin-osgi/3.13.12/bundle


Insufficient and unequal methods for common 3-d objects

There are currently some methods called SurfaceAreaOf.. or VolumeOf.. that may live in /lib/*.js.
They are incomplete and needs to be fixed!

Acceptance Criteria:

Running yarn test <methodName> results in tests passing.
You have written a skeleton method for someone else to work on.
You have written tests surrounding your skeleton method.
Running yarn lint does not print any errors to the console!
Optional: write one or two more tests surrounding the method you are solving to account for potential edge cases.

Please include the skeleton of a new method + an accompanying test for someone else to work on at the time of creating a pull request! A pull request will most likely be denied if it does not contain a skeleton method for someone else to work on! For more information, please read the Contributing Guide.
Thank you so much for your contribution!

Hi @BlakeGuilloud I would like to work on this issue so that we can close #775 #773 and #766 and complete collection of such methods for common 3D objects in the Ganon library

Thanks @BlakeGuilloud  I will try to complete the methods as soon as possible.


Tons of "connection has unread data" log messages with v3.3.2

Not sure what happened, had no time to debug, but I get tons of connection has unread data messages since updating to 3.3.2:
redis: 2016/03/08 14:33:14 connection has unread data: "+OK\r\n"
redis: 2016/03/08 14:33:14 connection has unread data: "+OK\r\n"
redis: 2016/03/08 14:34:21 connection has unread data: "$-1\r\n"
redis: 2016/03/08 14:34:21 connection has unread data: "$-1\r\n"
redis: 2016/03/08 14:34:32 connection has unread data: "$-1\r\n"

Can you share redis.Options you are using?
It can be that v3.3.2 just made the problem more obvious, because now go-redis always prints something to the log when closing connection that has unread data.

My guess is that you have:

MaxRetries > 0
low ReadTimeout/WriteTimeout
timeouts on reads/writes

That combination can lead to unread data in connection buffer. I have an idea how to improve situation, but it requires non-trivial refactoring.

So yes, my ReadTimeout and WriteTimeout are quite low, which makes sense then. Thanks


L5 - phpspec dependency and outdated symfony/yaml error

If I have the following in composer.json under require-dev:
"phpunit/phpunit": "~4.0",
"phpspec/phpspec": "2.1.*@dev",
"benconstable/phpspec-laravel": "~2.0"

On running composer install I get this error:
vagrant@homestead:~/Code/Private/bookie$ composer install
Loading composer repositories with package information                                                                                Installing dependencies (including require-dev)       Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - benconstable/phpspec-laravel 2.x-dev requires phpspec/phpspec 2.1.0-RC1 -> satisfiable by phpspec/phpspec[2.1.0-RC1].
    - benconstable/phpspec-laravel 2.x-dev requires phpspec/phpspec 2.1.0-RC1 -> satisfiable by phpspec/phpspec[2.1.0-RC1].
    - Conclusion: don't install phpspec/phpspec 2.1.0-RC1
    - Installation request for benconstable/phpspec-laravel ~2.0 -> satisfiable by benconstable/phpspec-laravel[2.x-dev].

If I change phpspec to 2.1.0-RC1:
"phpunit/phpunit": "~4.0",
"phpspec/phpspec": "2.1.0-RC1",
"benconstable/phpspec-laravel": "~2.0"

Then composer install works but on running phpspec run the following error is thrown:
vagrant@homestead:~/Code/Private/bookie$ phpspec run
PHP Deprecated:  The ability to pass file names to Yaml::parse() was deprecated in 2.2 and will be removed in 3.0. Please, pass the contents of the file instead. in /home/vagrant/Code/Private/bookie/vendor/symfony/yaml/Symfony/Component/Yaml/Yaml.php on line 58
PHP Stack trace:
PHP   1. {main}() /home/vagrant/Code/Private/bookie/vendor/phpspec/phpspec/bin/phpspec:0
PHP   2. Symfony\Component\Console\Application->run() /home/vagrant/Code/Private/bookie/vendor/phpspec/phpspec/bin/phpspec:24
PHP   3. PhpSpec\Console\Application->doRun() /home/vagrant/Code/Private/bookie/vendor/symfony/console/Symfony/Component/Console/Application.php:126
PHP   4. PhpSpec\Console\Application->loadConfigurationFile() /home/vagrant/Code/Private/bookie/vendor/phpspec/phpspec/src/PhpSpec/Console/Application.php:67
PHP   5. PhpSpec\Console\Application->parseConfigurationFile() /home/vagrant/Code/Private/bookie/vendor/phpspec/phpspec/src/PhpSpec/Console/Application.php:117
PHP   6. Symfony\Component\Yaml\Yaml::parse() /home/vagrant/Code/Private/bookie/vendor/phpspec/phpspec/src/PhpSpec/Console/Application.php:159
PHP   7. trigger_error() /home/vagrant/Code/Private/bookie/vendor/symfony/yaml/Symfony/Component/Yaml/Yaml.php:58

Deprecated: The ability to pass file names to Yaml::parse() was deprecated in 2.2 and will be removed in 3.0. Please, pass the contents of the file instead. in /home/vagrant/Code/Private/bookie/vendor/symfony/yaml/Symfony/Component/Yaml/Yaml.php on line 58

Call Stack:
    0.0006     226592   1. {main}() /home/vagrant/Code/Private/bookie/vendor/phpspec/phpspec/bin/phpspec:0
    0.2076    2397520   2. Symfony\Component\Console\Application->run() /home/vagrant/Code/Private/bookie/vendor/phpspec/phpspec/bin/phpspec:24
    0.2693    2762288   3. PhpSpec\Console\Application->doRun() /home/vagrant/Code/Private/bookie/vendor/symfony/console/Symfony/Component/Console/Application.php:126
    0.2834    2997576   4. PhpSpec\Console\Application->loadConfigurationFile() /home/vagrant/Code/Private/bookie/vendor/phpspec/phpspec/src/PhpSpec/Console/Application.php:67
    0.2834    2997688   5. PhpSpec\Console\Application->parseConfigurationFile() /home/vagrant/Code/Private/bookie/vendor/phpspec/phpspec/src/PhpSpec/Console/Application.php:117
    0.2938    3014568   6. Symfony\Component\Yaml\Yaml::parse() /home/vagrant/Code/Private/bookie/vendor/phpspec/phpspec/src/PhpSpec/Console/Application.php:159
    0.2941    3014952   7. trigger_error() /home/vagrant/Code/Private/bookie/vendor/symfony/yaml/Symfony/Component/Yaml/Yaml.php:58

0 specs
0 examples
0ms

FYI this can be easily fixed by just aliasing the version phpspec-laravel has hard-coded in composer.json:
"phpspec/phpspec": "2.1.x-dev as 2.1.0-RC1",

That's a nice trick, no need to fork it. Thanks :)

Thanks for this. When I release version 2.0 in the next couple of weeks I'll make sure the dependencies are sorted and working correctly.

A small update on this, the issue you were having with the dependencies has now been resolved, so you can just add:
{
    "require-dev": {
        "benconstable/phpspec-laravel": "~2.0@dev"
    }
}

to your composer.json and the package will install without any problems. The extension now depends on the stable phpspec ~2.1, and so will work fine with the out-of-the-box Laravel 5 setup.
I'll be looking into the other issue you're having shortly.

@cgrossde - I've just tried to replicate the issue you were having with testing your model, and haven't been able to replicate it. Is it still a problem for you, or has it since been resolved after the Laravel 5 release?

Not using it currently. I think you can close it.

Ok, thanks. I'll re-open if you start using the extension again and the problem comes back.


ConnectorSink output is not committed by 2PC during cluster shrink sequence

Is this a bug, feature request, or feedback?
Bug
What is the current behavior?
Output is omitted by ConnectorSink during a cluster shrink sequence
What is the expected behavior?
No data should be lost by ConnectorSink when the cluster shrinks.
What OS and version of Wallaroo are you using?
Ubuntu Xenial/16.04 LTS + aloc-tee-source+new-passthrough branch @ commit 046a8576b
Steps to reproduce?
$ cd /top/of/wallaroo/repo
$ git checkout -f 7ab14750cd ; echo We need the passthrough app from another branch
$ mv examples/pony/passthrough
$ git checkout -f COMMIT-ABOVE
$ mv passthrough examples/pony
$ dd if=testing/data/market_spread/nbbo/r3k-symbols_nbbo-fixish.msg bs=1000000 count=4 | od -x | sed 's/^/T/' > /tmp/input-file.txt
$ cd testing/correctness/scripts/effectively-once
$ make -C ../../../.. PONYCFLAGS="--verbose=1 -d -Dresilience -Dtrace -Dcheckpoint_trace -Didentify_routing_ids" build-examples-pony-passthrough build-testing-tools-external_sender     build-utils-cluster_shrinker

$ ./master-crasher.sh 8 shrink
WARNING: all useful state files are deleted by this script!
Worker initializer: port = 7103
Worker worker1: port = 7113
Worker worker2: port = 7123
Worker worker3: port = 7133
Worker worker4: port = 7143
Worker worker5: port = 7153
Worker worker6: port = 7163
Worker worker7: port = 7173
Success
RUN: run_grow_shrink_loop shrink
Done, yay ... waiting
DBG: do_grow = 0, do_shrink = 1
,,Shrink worker3Cluster shrink response: Shrinking by 1 workers!
,,Shrink worker1Cluster shrink response: Shrinking by 1 workers!
,,,,Shrink worker5Cluster shrink response: Shrinking by 1 workers!
,,,Shrink worker4Cluster shrink response: Shrinking by 1 workers!
,,,,,,,,Shrink worker6Cluster shrink response: Shrinking by 1 workers!
,/tmp/input-file.txt /tmp/sink-out/output.concatenated differ: byte 1205551, line 24604
-rw-rw-r-- 1 vagrant vagrant 1206772 Sep 23 23:17 /tmp/first-bytes-of-input.q4X06
-rw-rw-r-- 1 vagrant vagrant 1206772 Sep 23 23:17 /tmp/first-bytes-of-output.dgLzJ
--- /tmp/first-bytes-of-input.q4X06	2019-09-23 23:17:51.454077000 +0000
+++ /tmp/first-bytes-of-output.dgLzJ	2019-09-23 23:17:51.458079000 +0000
@@ -24601,28 +24601,28 @@
 T1400600 3234 302e 3030 3a40 5e69 1b9e 9a08 3a40
 T1400620 5e69 1b9e 9a08 0000 2a00 2002 4144 324c
 T1400640 3130 3136 3230 2d37 3231 323a 3a39 3234
-T1400660 302e 3030 4640 4275 c9c3 ccee 4640 4275
BREAK2
SANITY LOOP FAILURE: pause the world

Full logs are available at http://wallaroolabs-dev.s3.amazonaws.com/logs/logs.20190923a.tar.gz
If we look at the last 2 entries in /tmp/sink-out/output.concatenated.mapping, we can see where the transition from output from worker6 to worker2 happens:
(1569280670.189359, '/tmp/sink-out/output.worker6', 1096277, 1205547, 'to', 1096277)
(1569280671.0738456, '/tmp/sink-out/output.worker2', 0, 1225, 'to', 1205547)

The cmp output above says that the concatenated output file, /tmp/sink-out/output.concatenated,  differs from the input file /tmp/input-file.txt at byte 1205551.
That is 4 bytes away from where /tmp/sink-out/output.concatenated.mapping says that the first chunk of output from worker2 was copied.  These 4 bytes can be explained by the fact that the first several bytes of every line in /tmp/input-file.txt are identical to the previous line's bytes.
If we look at the relevant lines of /tmp/sink-out/output.concatenated, we see where data has been omitted, jumping from T1400640 to T1451560 .
T1400600 3234 302e 3030 3a40 5e69 1b9e 9a08 3a40
T1400620 5e69 1b9e 9a08 0000 2a00 2002 4144 324c
T1400640 3130 3136 3230 2d37 3231 323a 3a39 3234
T1451560 3234 302e 3030 5540 a8b5 7958 d93d 5540
T1451600 a8b5 7958 d93d 0000 2a00 4902 4850 3249

According to /tmp/sink-out/output.concatenated.mapping, we see that worker6's last 2PC commit ended at byte offset 1205547.  However, the total file size of /tmp/sink-out/output.worker6 is 1269639 bytes.  The trailing 64092 bytes where not committed by Wallaroo during the cluster shrink operation.  The data that is missing from /tmp/sink/output.concatenated is exactly the those 64092 bytes.
This problem has been noted in other tickets:

#2805: Use a checkpoint barrier to complete autoscale migration
#2886: Checkpoint aligned event log rotation

Fix pending in the aloc-tee-source+scripts+autoscale-checkpoint branch.

Fixed by #3042


might be a tiny mistake in LSTM code

Hi, your article The Math Behind LSTM led me here, and I appreciate your work very much.
While I repeat the process, I think there might be a tiny mistake in the code:
in LSTM/TimeSeriesDataset/load_data function:
df = df[(df['Date'] >= self.start_date) & (df['Date'] <= self.end_date)]   # A
df = df.sort_index()  # B
df = df.loc[self.start_date:self.end_date]  # C

Line C filters thousands of rows to only 15 rows, which is too small for the dataset. I think maybe you intended to make the same filtering as line A but coded wrong (because loc() use index by default)?
And maybe line B is also unnecessary but harmless?
Thanks for your amazing work again!

Hi @skyblueee, thank you so much for pointing out the issue. I am removing line C from the code. As for line B, in this code is a bit redundant, as the dataset is already ordered. However, it would be nice to leave it there for scalability.


Resolve UNION ALL use internally

Either make behaviour to use SQL UNION ALL or client side unions runtime selectable, or remove the client side unions

Fixed.


[BUG] Updating Security config in a mixed cluster can result in Unrecognized field "<new_security_config_value>"

What is the bug?
A new security config value on_behalf_of was introduced in OpenSearch 2.12.0. When performing a rolling upgrade from 2.11 -> 2.12 the cluster will be in a mixed state until all nodes in the old version have been rebooted. While in a mixed state if a security config update request is performed against a 2.12 node, it will add the new security config values to the security index and fan out an internal transport config update request to instruct all nodes to re-read the security configuration from the index. Below is an example of a config update request to enable HTTP Basic auth that encounters this error:
➜  latest curl -XPATCH "https://admin:admin@localhost:9201/_plugins/_security/api/securityconfig" -k -H 'Content-Type: application/json' -d'[
{
    "op": "replace",
    "path": "/config/dynamic/authc/basic_internal_auth_domain/http_enabled",
    "value": "true"
  }
]'
{"status":"INTERNAL_SERVER_ERROR","message":"Error Failed node [mJV1aP-QSEiHzkFxe_CQEA]"}

The OpenSearch logs show:
opensearch-node1-1       | com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "on_behalf_of" (class org.opensearch.security.securityconf.impl.v7.ConfigV7$Dynamic), not marked as ignorable (15 known properties: "license", "disable_intertransport_auth", "http", "kibana", "authz", "auth_failure_listeners", "transport_userrname_attribute", "filtered_alias_mode", "authc", "disable_rest_auth", "respect_request_indices_options", "multi_rolespan_enabled", "do_not_fail_on_forbidden", "hosts_resolver_mode", "do_not_fail_on_forbidden_empty"])

What is the expected behavior?
The security config update should be successful regardless of which node receives the request.
Do you have any additional context?
The request to update the security config does not need to actually change the config. Any security config request will encounter this error. If HTTP Basic auth is already enabled and you submit a request to enable HTTP Basic auth, it will encounter this error.
There is an opportunity for an optimization to prevent fanning out an internal transport config update if nothing in the security index actually changes.

[Triage] Hi @cwperks, thanks for filing this issue. This seems like a good fix. Going to mark as triaged.


Why cannot I transfer testnet bitcoins via coinb.in

I went coinb.in settings page https://coinb.in/#settings, and changed the network into bitcoin testnet, and tried use the “Transaction” function, but I found I cannot type testnet pub key inside, does the bitcoin testnet  not work on this site?

Hi,
Coinbin currently allows bitcoin main net for broadcasting and unspent input retrieval, but not bitcoin testnet.
You can still build testnet transactions and submit them manually via a testnet block explorer.
Full testnet support maybe added at a later date.

Any news on adding full support for testnet?


Add SVDConv arm64 binary release

HI @JonatanAntoni @soumeh01 , an release test can be found on my fork:
https://github.com/spcaipers-arm/devtools/releases/tag/tools%2Fsvdconv%2F0.0.2


Remote Access To Postgresql

Change Type
Correction
Proposed Changes
https://docs.cloudmydc.com/database/postgresql/remote-access-to-postgresql

@cml-paul sir image is broken, please fix.

Image correction

Updated image


Fix searching to include all assets (but have root name in brackets)

Can you add some description to explain why we want this?


problem with either portable ruby or perl? not sure which is the real culprit.

Hello,
I went to update my homebrew today and started getting error messages when running brew doctor, brew config, and brew update. I get an error from perl about a file not being found, then I get an error about the portable ruby checksum being wrong. I am including the output of the commands below. I did try removing the portable ruby bottle to allow it to download again, but that didn't help. If you have any suggestions, please let me know. Thanks!
[mlevin:~] % brew doctor
==> Downloading https://homebrew.bintray.com/bottles-portable/portable-ruby-2.3.3.leopard_64.bottle.1.tar.gz
######################################################################## 100.0%
/usr/local/Homebrew/Library/Homebrew/cmd/vendor-install.sh: /Users/mlevin/perl5/bin/shasum: /usr/local/Cellar/perl518/5.18.0/bin/perl: bad interpreter: No such file or directory
Error: Checksum mismatch.
Expected: 34ce9e4c9c1be28db564d744165aa29291426f8a3d2ef806ba4f0b9175aedb2b
Actual:
Archive: /Users/mlevin/Library/Caches/Homebrew/portable-ruby-2.3.3.leopard_64.bottle.1.tar.gz
To retry an incomplete download, remove the file above.
Error: Failed to install vendor Ruby.
[mlevin:~] % brew config
==> Downloading https://homebrew.bintray.com/bottles-portable/portable-ruby-2.3.3.leopard_64.bottle.1.tar.gz
Already downloaded: /Users/mlevin/Library/Caches/Homebrew/portable-ruby-2.3.3.leopard_64.bottle.1.tar.gz
/usr/local/Homebrew/Library/Homebrew/cmd/vendor-install.sh: /Users/mlevin/perl5/bin/shasum: /usr/local/Cellar/perl518/5.18.0/bin/perl: bad interpreter: No such file or directory
Error: Checksum mismatch.
Expected: 34ce9e4c9c1be28db564d744165aa29291426f8a3d2ef806ba4f0b9175aedb2b
Actual:
Archive: /Users/mlevin/Library/Caches/Homebrew/portable-ruby-2.3.3.leopard_64.bottle.1.tar.gz
To retry an incomplete download, remove the file above.
Error: Failed to install vendor Ruby.
[mlevin:~] % brew update
==> Downloading https://homebrew.bintray.com/bottles-portable/portable-ruby-2.3.3.leopard_64.bottle.1.tar.gz
Already downloaded: /Users/mlevin/Library/Caches/Homebrew/portable-ruby-2.3.3.leopard_64.bottle.1.tar.gz
/usr/local/Homebrew/Library/Homebrew/cmd/vendor-install.sh: /Users/mlevin/perl5/bin/shasum: /usr/local/Cellar/perl518/5.18.0/bin/perl: bad interpreter: No such file or directory
Error: Checksum mismatch.
Expected: 34ce9e4c9c1be28db564d744165aa29291426f8a3d2ef806ba4f0b9175aedb2b
Actual:
Archive: /Users/mlevin/Library/Caches/Homebrew/portable-ruby-2.3.3.leopard_64.bottle.1.tar.gz
To retry an incomplete download, remove the file above.
Error: Failed to install vendor Ruby.

rm /Users/mlevin/Library/Caches/Homebrew/portable-ruby-2.3.3.leopard_64.bottle.1.tar.gz

@ilovezfs thanks, I tried that but I still get the same result. It just downloads the same thing.
[mlevin:~] % rm /Users/mlevin/Library/Caches/Homebrew/portable-ruby-2.3.3.leopard_64.bottle.1.tar.gz
[mlevin:~] % brew update
==> Downloading https://homebrew.bintray.com/bottles-portable/portable-ruby-2.3.3.leopard_64.bottle.1.tar.gz
######################################################################## 100.0%
/usr/local/Homebrew/Library/Homebrew/cmd/vendor-install.sh: /Users/mlevin/perl5/bin/shasum: /usr/local/Cellar/perl518/5.18.0/bin/perl: bad interpreter: No such file or directory
Error: Checksum mismatch.
Expected: 34ce9e4c9c1be28db564d744165aa29291426f8a3d2ef806ba4f0b9175aedb2b
Actual:
Archive: /Users/mlevin/Library/Caches/Homebrew/portable-ruby-2.3.3.leopard_64.bottle.1.tar.gz
To retry an incomplete download, remove the file above.
Error: Failed to install vendor Ruby.

try HOMEBREW_ENV_FILTERING=1 brew update

Bah! Somehow I had a bad shasum binary in ~/perl5/bin. I deleted that and then it started using the one in /usr/local/bin and everything started working. Sorry!

Yup, that's what HOMEBREW_ENV_FILTERING=1 will work around :)


ReorderableListView should also provide grab handles on Desktop and allow short-click mouse d'n'd

Several widgets in Flutter support longpress to initiate a drag 'n' drop action, e.g. ReorderableListView. That's a natural gesture on mobile form-factors but not on desktop web or native desktop. The material guidelines call for grab handles to indicate drag 'n' drop. Flutter should add grab handles into the widgets that support drag 'n' drop and not require longpress for mouse-initiated drag 'n' drop.
Here's a DartPad sample that shows one work-around for adding short-click and drag by creating a clone of ReorderableListView and changing a single line of code (LongPressDraggable => Draggable).

cc @goderbauer

Let's make this bug specifically about the ReorderableListView since even on desktop not everything that's draggable has a drag handle (example: I can drag any selected text on Mac around and it doesn't have the handles).

Anything that has longpress in Flutter today should be considered a candidate for grab handles and shortpress click + drag, not just ReorderableListView.

duplicate of #36314 I would suggest to close the other issue since this one is more general also I noticed this comment and it seems someone is working on it (at least in ReorderableListView)
Generally speaking I really think this class needs a rework with features that I have seen in many different issues (maybe combine them?).
#25789 (.builder, .separator, shrink wrap, primary)
#56003 Scroll Physics
45799 Dragging Background Color
as well as a bug giving the wrong index with a workout around actually written inside the class (instead of fixing the widget)
also renaming scrollcontroller to controller to be more consistent.

@csells I mean ReorderableListView is quite an important widget that is missing a lot of things and doesn't even listen to material design guidelines or aligns with Listview current features.
would be nice if you consider my suggestion or respond in any way...

cc @HansMuller for the feedback on RLV as related to Material design.

@Ran73Cohen - you are correct about ReorderableListView's many inadequacies. We're queuing up a project to remedy the situation now and hope to get your feedback about the TBD plan.
CC @darrenaustin

@HansMuller well as I stated before it seems someone is working on it but I dont see any PR, I would like to help with specific features to speed things up but there needs to be a skeleton class with some of the core fundamentals. (I guess yo are not going to let someone rewrite an entire widget).
I understand you do some work without publishing an issue but It would be nice to see an issue with a list of missing features so that I and others could pick and implement some.

The first step will be to publish a plan that makes the requirements for an updated ReorderableListView clear. We appreciate your offer of help with the implementation!

@HansMuller When you say publish a plan you mean I can create an issue with the full list or features?
I am asking because many of the features required are already in separate smaller issues.
Lets say I publish a plan, Because this is a rework it contains many breaking changes and changes core fundamentals of the RLV. It sounds like something you wouldn't just let me implement, so before I start the implementation I need to understand how to go about it from this front.

We'll publish a doc (and an issue) that covers what we think are the missing features, based on feedback from the Material Design team as well as the existing feature-request issues. I hope that you and other interested developers will review the plan. Once that's sorted out, we'll decide how to implement the changes. Evolving the RLV is possibility, even with breaking changes. Another option is to produce a new replacement widget.

Hey folks, we are ramping up a design to try to address this and other issues with ReorderableListView. We are tracking it with #66080 and in a design doc. Feedback welcome.

@darrenaustin is this complete, or is there still work to be done on this?

I have it on good authority that this has been fixed.


External Data Store

The heyemoji app uses a local data store rather than an external DB which means that if the container or VM goes down, we'll lose our history.
We should explore options to ensure that we can keep our data.
One option would be to:

mount the data path to the VM from the container. This would ensure that if the container restarts, we keep our data.
mount the VM data store to some external service in AWS to ensure that if the VM goes down or restarts, we can remount and maintain our data.

Original issue (bitovi internal)

It does seem that the data is persistent across container restarts, so that helps. We'll still need to handle the VM reload problem (or have another solution like redis for a container orchestrator path)
This effort might not need a go dev if we take a VM snapshot approach (i.e. no HA).

Bitovi Internal notes:
https://bitovi.slack.com/archives/C0GEQASKY/p1674078142153599


prewiev not work

Describe the bug
prewiev show only blank page
Link to the Bolt URL that caused the error
https://bolt.new/~/sb1-rwxmw4
Steps to reproduce

Open page
Click prewiev

Expected behavior
prewiev show only blank page
Screen Recording / Screenshot
No response
Platform
Browser name = Chrome
Full version = <IP_ADDRESS>
Major version = 130
navigator.appName = Netscape
navigator.userAgent = Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/<IP_ADDRESS> Safari/537.36
performance.memory = {
  "totalJSHeapSize": 56222690,
  "usedJSHeapSize": 53844822,
  "jsHeapSizeLimit":<PHONE_NUMBER>
}
Username = LexProfi
Chat ID = 61b7ee4edf28

Additional context
No response

Appreciate the feedback! We are aware of this issue and are tracking it here: https://github.com/stackblitz/bolt.new/issues/1791.


James - Created React App + Built Out Some Components

New Features

Built out the basic skeleton using CRA
Installed major dependencies that I listed in the ReadMe
Began working on several components listed in ReadMe
NavBar is specifically set up and ready to be linked to other comps.
Built out PrivateRoute | Ready for authenticated routing

Looks good


add coffee-script generation with a --coffee option

Added '--coffee' generator option for generating coffeescript files instead of javascript files.
Tests have been added to make sure the original list of files to generate are exactly the same than before.
Relative to the issue #1923

The tests cover all cases but if you don't like the build method, we can return to something more static as before @mikermcneil @konstantinzolotarev :)

Up :) @mikermcneil @konstantinzolotarev

@ebourmalo testing testing testing =D

@konstantinzolotarev Awesome :) Is it going well?
Let me know if I can help.

@konstantinzolotarev up :)

@ebourmalo Sorry for a long delay.
I moved this to new repo: https://github.com/balderdashy/sails-generate-backend-coffee
Could you please take a look there. If all is ok in coffee scripts ?

hey @konstantinzolotarev
If you copied the coffee files you were interested in, it will be ok ;)

Hi @ebourmalo, sorry for the long delay on getting to this.  The fact is that this is the kind of use case that drove us to build generators as separate modules in the first place.  What I mean is that instead of a PR to sails-generate-backend, this should be a completely separate generator: sails-generate-backend-coffee.  You would then add something like this to a .sailsrc file in your home directory:
"generators": {
   "modules": {
      "backend": "sails-generate-backend-coffee"
   }
}

and in that same home folder do npm install sails-generate-backend-coffee, and presto: every time you run sails new from then on, you'd get coffeescript files.  See sails-generate-frontend-angular as an example of another such generator override.
The good news is, I think you're pretty much done; all you'd need to make this a separate generator is to take out the logic that switches between coffee and regular templates (since it'd always be coffee).


set_async_mode not a member of 'spdlog'

how could we compile logging.cpp as there is no function  spdlog::set_async_mode, spdlog::stdout_color_mt, set_async_mode function in spdlog library

git checkout 35865ee54e3c1d537827cb0f88858d10e174cca5 seemsed to resovle it.


Add ability to stop updating agent components temporarily

Currently, any modifications to the ManifestWork will be reverted by the addon controller. So, the only modifications that can be made to addon agents on managed clusters are the ones specifically allowed by the addon.
In development or troubleshooting scenarios, it might be helpful to deploy a change to one addon on a cluster without updating the addon controller. For example, to add another argument to an addon agent container in order to enable a feature flag.
In stolostron, several controllers have "pause" annotations that can be placed on their resources, which prevent the controller from reconciling them. Something similar here could be useful.

We were able to implement this in our addon controller by overriding the Manifests function from the HelmAgentAddon, and returning an empty slice. See this commit for the example.
But now I'm worried that the empty slice is relying on the current implementation... specifically: https://github.com/open-cluster-management-io/addon-framework/blob/main/pkg/addonmanager/controllers/agentdeploy/controller.go#L156. So right now, an empty slice results in the ManfestWork getting ignored, but it would also make sense if an empty slice resulted in deleting the existing ManifestWork.

Having a consistent way of doing this for all addons is appealing so we can define a consistent interface before 2.5 is released and support gets trained to use different pause annotations per addon.

hrm, that is interesting. agree we should have a consistent way.

/kind feature

It seems that this workaround no longer works due to this change:
https://github.com/open-cluster-management-io/addon-framework/commit/0020a789fc8425ec91e191cbc277ee496f217dd4#diff-b47b9c6da1d283ccb32074dd2dc9571541f1cc4cbcbbd7d6679f7f0acba17217R161

I'm thinking about a change to https://github.com/open-cluster-management-io/addon-framework/blob/main/pkg/addonmanager/controllers/agentdeploy/controller.go#L147-L167
So that a nil Manifests could be handled differently to an initialized list with length 0. Then nil could function as the pause, like it previously did.
Opinions?

FYI @zhiweiyin318


Replace isort, flake8, and pyupgrade with ruff

See: https://github.com/charliermarsh/ruff

Applied as many rules as possible from https://beta.ruff.rs/docs/rules/#ruff-specific-rules-ruf but left a few comments out for now as it would be too much work to refactor every single flagged case.

Codecov Report

:exclamation: No coverage uploaded for pull request base (simplify-interactive-plots-in-docs@53a797c). Click here to learn what that means.
Patch coverage: 42.85% of modified lines in pull request are covered.

:exclamation: Your organization is not using the GitHub App Integration. As a result you may experience degraded service beginning May 15th. Please install the Github App Integration for your organization. Read more.
Additional details and impacted files
@@                          Coverage Diff                          @@
##             simplify-interactive-plots-in-docs     #131   +/-   ##
=====================================================================
  Coverage                                      ?   86.88%
=====================================================================
  Files                                         ?       11
  Lines                                         ?      389
  Branches                                      ?       64
=====================================================================
  Hits                                          ?      338
  Misses                                        ?       39
  Partials                                      ?       12

Flag
Coverage Δ

unittests
86.88% <42.85%> (?)

Flags with carried forward coverage won't be shown. Click here to find out more.

Files Changed
Coverage Δ

src/ridgeplot/_ridgeplot.py
60.52% <0.00%> (ø)

src/ridgeplot/_figure_factory.py
81.25% <50.00%> (ø)

src/ridgeplot/_testing.py
100.00% <100.00%> (ø)

src/ridgeplot/_types.py
100.00% <100.00%> (ø)

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


chore(router): inherit more app proxy settings from v1.x

Fill out the remaining proxy settings for an app, minus anything having to do with SSL, enforcing HTTPS, etc.

All looks good from my side of it


I'm looking for advice on compiling C++11

Hi,
thank you very much for starting this project. I have found it very useful already.
I'm wondering if anyone can offer guidance on compiling C++11 code.
My example code (which hinges on  and <stdint.h>) compiles out of the box with your script for Python 3.3 and above on any architecture. These are the versions where WinSDK 7.1 is used if I understand correctly.
In case of Python 2.7, I have managed to make it build for x64 by adjusting your script and forcing WinSDK 7.1 there too. For the 32 bit version I couldn't make this work yet, however. The most likely reason is that I didn't set 32 bit for the compiler version correctly.
Even if I could fix this though, I'm wondering whether there is  a reason you're avoiding the newer SDK on the old Python versions or whether it's just because the usual compilers worked for you in that case. Can you comment on that?
Kind regards,
Matthias

I have investigated this a bit further today.
The C++11 code I'm testing is here: https://github.com/MatthiasKauer/python-cpp-miniextension/blob/ionelmc-appveyor/mylib/c%2B%2B11swig_factorial/factorial.h
I'm wrapping this with swig and try to build it locally (Linux) and on AppVeyor, both with your and with ionelmc's scripts, mentioned in https://github.com/ogrisel/python-appveyor-demo/issues/29
On Linux, using -std=c++11 is no issue. On Appveyor, the result is still that your scripts build Python 3.3 and 3.4, but not 2.7. ionelmc's scripts only succeed for Python 3.5.
Consider this build, using ogriesel scripts https://ci.appveyor.com/project/MatthiasKauer/python-cpp-miniextension/build/1.0.25
and this build using ionelmc scripts https://ci.appveyor.com/project/MatthiasKauer/python-cpp-miniextension/build/ionelmc-appveyor-21
Looking at the logs: ogriesel builds Python 3.4 w/ WinSDK 7.1 for 64, local MSVC (10.0) for 32 bit while ionelmc fails to find WinSDK 7.1 for 64 bit (probably my fault) and MSVC 10.0 but fails (which I don't understand b/c it literally tries to build w/ the same command but then fails w/ the vector {1, 2} initialization).
This may be useful to know when considering switching to the Python script in https://github.com/ogrisel/python-appveyor-demo/issues/29

Python 2.7 on Windows is built using Microsoft Visual Studio 2008, which does not support C++11 features. You may try monkey-patching distutils in your setup.py to force it use Visual Studio 2010 instead (i.e. the one Python 3 is compiled with), but many discourage linking extension modules against MSVC runtime versions different from the main interpreter's. It may or may not work in your case, but it's worth trying. Another solution is to use the MinGW gcc compiler to build your extension module.

@anthrotype's answer seems correct to me. Using MinGW to build Python extensions will require your users to have it installed on there platform to be able to load your extensions though. Unless you use a static toolchain such as:
https://anaconda.org/carlkl/mingwpy
https://bitbucket.org/carlkl/mingw-w64-for-python/downloads/
Unfortunately this toolchain is still experimental and not very well documented yet.
Note that using MingGW for Python 3.5 is not yet possible though as far as I know.

Closing this as I don't think we can do much as part of the python-appveyor-demo project it-self.

Thanks for the input!
Especially for the heads-up that MingW will need a runtime on the user to run libraries even if I built them in the wheel format. Did I understand that correctly?

Not if you statically link libgcc and libstdc++.
See:
https://github.com/google/brotli/blob/master/setup.py

I think there is more than statically linking the C and C++ runtimes: they are also long long precision incompatibilities and C++ exception management problems with extensions built with MSVC although I am not very familiar with the details.
@carlkl knows the details better than I do.

You may simply try to install a prerelease of mingwpy  (the successor of the thing that was called mingw-w64-for-python) the following way:
Install with pip:
pip install -i https://pypi.anaconda.org/carlkl/simple mingwpy
or with conda: (thanks to omnia-md)
conda install -c https://conda.anaconda.org/omnia mingwpy
You may need to configure %USERPROFILE%\pydistutils.cfg to use the toolchain if you have an MSVC compiler installed.
If the Scripts folder of python is in your PATH you are done, otherwise you have to do this or add the bin folder of the toolchain into your PATH.
CPython-3.5 is not supported at the moment. And yes, all binaries are statically linked and don't need additional gcc runtime libraries.
The toolchain is configured using standard win32 threads as default (supporting pthreads with the help of winpthreads library). This configuration is the fastest but does not support new C++11 thread features.

Thanks all for the additional insight, all of you!
@carlkl is there a web presence for mingwpy? I only find this bitbucket repo: https://bitbucket.org/carlkl/mingw-w64-for-python
I'm particularly interested to find out how it is different from
conda install mingw

Is it just about 32bit/64bit?
Or have you adjusted static linking and the gcc version as well?

conda install mingw installes the mingw conda package from continuum.io. Using MSVC in favour of this mingw package is recommened by continuum.io:
https://groups.google.com/a/continuum.io/forum/#!searchin/anaconda/mingw$20in$20Anaconda$202.2.0/anaconda/XLcpwFDjwmg/9qXHSBcaZqMJ.
mingwpy  is a newer independently developed package containing an adapted mingw-w64 based gcc-toolchain.  This package is addressing the problems the users experienced with the combination of mingw-w64 compiled packages from within standard MSVC based Windows Python installations. There is a preliminary somewhat outdated documention on the bitbucket site you mentioned. A newer website with documenation is in preperation.
Any feedback on the usage of mingwpy is welcome.


PR check to verify crate generation

Right now it's possible to merge a PR that hasn't had its service crate code regenerated. This can be problematic because it means the code checked into master isn't what's actually being tested by Travis (Travis runs the codegen before running the tests) and it can make future PRs that do regenerate the code harder to review due to having unrelated changes.
A couple suggestions to resolve this:

Short term: change the build script to have the services generated to a garbage directory so we can still test that crategen works without making it so we test service code different than what's in the PR. Maybe run tests on both?
Long term: Add an option to the crate generator to just check whether the files would change after generating and fail the build if they would

We have this now! 🎉 Thanks @pgerber for https://github.com/rusoto/rusoto/pull/991 which fixed this. 👍


Property 'project' does not exist on type 'Request'

I'm unable to get type inference working on the withParams helper:
import { Router } from 'itty-router';
import { withParams } from 'itty-router-extras';

export default {
  fetch
};

const router = Router();

router.get('/projects/:project/deployments', withParams, async ({ project }) => {
  console.log(project);
  return new Response();
});

Gives me this error:
Property 'project' does not exist on type 'Request'. ts(2339)

you can extend the Request interface and add 'project' type and assign it to 'any' and make it optional

In the middle of https://github.com/kwhitley/itty-router/pull/121, where I may be rewriting all the types for core (I'm certainly doing it for extras, that are being brought into core), so this is helpful, thanks!


Weird Fletching Output

🐛 Bug Report
Was trying to fletch "Dragon Bolt" in the first command. It reported an error like usual, but then when the correct command was issued, it submitted it with additional s. It just doesn't look as neat as it could. Not a bot-breaking bug, but a could use a nice fix bug.

Fixed in #1204 .

Fixed in #1204 .


gns3-{gui,server}: fix build

Description of changes

Fix build of gns3-{gui,server}

Caused by sentry-sdk 1.11.x upgrade: https://github.com/NixOS/nixpkgs/pull/201894
Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[x] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[x] Tested basic functionality of all binary files (usually in ./result/bin/)
23.05 Release Notes (or backporting 22.11 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module
[ ] (Release notes changes) Ran nixos/doc/manual/md-to-db.sh to update generated release notes

[x] Fits CONTRIBUTING.md.

This pull request has been mentioned on NixOS Discourse. There might be relevant details there:
https://discourse.nixos.org/t/prs-ready-for-review/3032/1560

@ofborg build gns3-gui gns3-server


Dark theme not working

Despite the _config.yml file having the color_scheme: dark configuration as per https://pmarsceill.github.io/just-the-docs/docs/customization/#color-schemes, the theme still displays as light.

Side note, I'll probably end up adding a toggle, with the default likely being dark, at a later date.


Grid module doesn't work

Check that this is really a bug

[X] I confirm

Reproduction link
https://codesandbox.io/s/swiper-slides-grid-react-forked-p9sfn
Bug description
Grid module is not working. I took the link from the Swiper demo page and added the module and the CSS, still broken. Also doesn't work in the other versions (Svelte and Vue). Core looks fine. In my own project it also doesn't work.
Expected Behavior
Grid works like in the swiper core. You can set rows and there is no useless whitespace.
Actual Behavior
There is a lot of whitespace and the slider doesn't work as expected anymore (not all slider elements are there, pagination changes but no new slides etc.)
Swiper version
7.0.9
Platform/Target and Browser Versions
Latest Chrome and Firefox on Windows 10
Validations

[X] Follow our Code of Conduct
[X] Read the docs.
[X] Check that there isn't already an issue that request the same feature to avoid creating a duplicate.
[X] Make sure this is a Swiper issue and not a framework-specific issue

Would you like to open a PR for this bug?

[ ] I'm willing to open a PR

In your code sandbox you don't install Grid module

Yes, just add the line SwiperCore.use([Grid]); after the import SwiperCore


Unnecessary import blocking publishing action

Please approve to unblock publishing action
########## Publish Log
Package validation found the following potential issue:

dart analyze found the following issue(s):
Analyzing lib, pubspec.yaml...
info - lib/src/chart_painter.dart:4:8 - The import of 'package:flutter/widgets.dart' is unnecessary because all of the used elements are also provided by the import of 'package:flutter/material.dart'. Try removing the import directive. - unnecessary_import
1 issue found.

Package has 1 warning.
pub finished with exit code 65

@h65wang , please :D