Cannot decode Certificate CRD

/kind question
What happened:
kubectl errors when attempting to convert a Certificate from yaml to json
bash-4.3$ cat cert.yaml
apiVersion: certmanager.k8s.io/v1alpha1
kind: Certificate
metadata:
  name: test
spec:
  acme:
    config:
      - domains:
          - test.domain
        http01:
          ingress: test.domain
  dnsNames:
    - test.domain
  issuerRef:
    name: some.issuer
  secretName: some.secret

bash-4.3$ kubectl convert -f cert.yaml --local=false -o json
error: unable to decode "cert.yaml": no kind "Certificate" is registered for version "certmanager.k8s.io/v1alpha1"

bash-4.3$ kubectl describe crd certificates.certmanager.k8s.io
Name:         certificates.certmanager.k8s.io
Namespace:
Labels:       <none>
Annotations:  <none>
API Version:  apiextensions.k8s.io/v1beta1
Kind:         CustomResourceDefinition
Metadata:
  Creation Timestamp:  2017-11-08T13:26:30Z
  Generation:          1
  Resource Version:    5482
  Self Link:           /apis/apiextensions.k8s.io/v1beta1/customresourcedefinitions/certificates.certmanager.k8s.io
  UID:                 6ea7d1b9-c488-11e7-af8f-027bd720ceca
Spec:
  Group:  certmanager.k8s.io
  Names:
    Kind:       Certificate
    List Kind:  CertificateList
    Plural:     certificates
    Singular:   certificate
  Scope:        Namespaced
  Version:      v1alpha1
Status:
  Accepted Names:
    Kind:       Certificate
    List Kind:  CertificateList
    Plural:     certificates
    Singular:   certificate
  Conditions:
    Last Transition Time:  <nil>
    Message:               no conflicts found
    Reason:                NoConflicts
    Status:                True
    Type:                  NamesAccepted
    Last Transition Time:  2017-11-08T13:26:30Z
    Message:               the initial names have been accepted
    Reason:                InitialNamesAccepted
    Status:                True
    Type:                  Established
Events:                    <none>

What you expected to happen:
kubectl converts Certificate kind from yaml to json
How to reproduce it (as minimally and precisely as possible):
See above.  Particularly with --local=false, shouldn't this contact the server and just work?
Anything else we need to know?:
Really appreciate the work on this project.
Environment:
bash-4.3$ kubectl version --short
Client Version: v1.8.3
Server Version: v1.8.1+coreos.0

See upstream, conversions are not defined.


westeurope location deployment is failing for TWT website ARM template (AIML20). But worked for westus2.

Just reproducing instructions from here. Using westeurope as a location.

I confirmed the Error.

@amynic should we update the note in the ReadMe section?
(https://github.com/microsoft/ignite-learning-paths-training-aiml/blob/master/aiml20/DEMO Setup.md#deploy-the-tailwind-traders-website)

@smurawski could I ask your advice - does this error point to a similar issue we had with the AIML50 template? https://github.com/microsoft/ignite-learning-paths-training-aiml/pull/76

@amynic It is the same error (and that must be where I got the problematic line from!).
Here's the problem line https://github.com/microsoft/TailwindTraders-Website/blob/master/azuredeploy.json#L170
And what I changed it to in my template - https://github.com/microsoft/ignite-learning-paths-training-aiml/blob/master/aiml50/template/azuredeploy.json#L355

I PR'd the change to the upstream repo - we'll see what happens.  https://github.com/microsoft/TailwindTraders-Website/pull/93

@amynic @Vadikus @FBoucher The PR above was merged into the TailwindTraders-Website repo.  If one of y'all would like to validate that AIML20 will spin up, then I think this issue can be closed.


5.x.x

Hi @topcerebro,
Can you let us know the purpose of this pull request ?

It was a mistake. Not necessary.


Add versions to documentation

Add versions to documentation. This is accomplished by having https://e3sm-project.github.io/zstash/docs/html/index.html be the latest documentation (e.g., documentation reflecting master).
The documentation currently reflects v0.4.2, which I just released today. I believe the easiest way to version the documentation is by doing the following:
conda activate sphinx
make html
cp docs/html docs/html-v0-4-2

docs/html/ is the latest documentation that will continue to be updated. docs/html-v0-4-2 is the documentation from v0.4.2 that will now be left alone. So, the source directory will only include the latest documentation. The docs directory will hold "snapshots" of the html from each release.
On source/index.rst I have added a bulleted list of previous documentation versions. Right now, it only contains the v0.4.2 docs. Going forward we can add to that list with each release. I used explicit links rather than :ref references because the html directories are essentially independent and I don't think the documentation generator is able to connect them. (As a result, the link is broken for me because https://e3sm-project.github.io/zstash/docs/html-v0-4-2/index.html doesn't exist yet).
If this versioning method is acceptable, I can update the "How to Prepare a Release" docs to add a new documentation version.

@golaz What do you think of the versioning method I described above? If you think it's acceptable I will update the "How to Prepare a Release" docs to reflect this process and merge this pull request.
@chengzhuzhang I think this versioning method would also work out well for the E3SM Diags docs.

It occurs to me we could probably also make copies of source, so that we could update documentation for previous releases (e.g., if the documentation was discovered to be incorrect).

The second commit includes a copy of source and an update to the docs on releasing a new version. I will combine the two commits before merging.

It would probably be good to make sure the v0.4.2 docs are good before copying over the documentation as a previous version. (i.e. would be good to merge #78, #81 before this one).

@forsyth2 Thanks for working on this! I like the versioning method you proposed here. And this implies to make update documentation a standard practice each time before a code release with new features.

@chengzhuzhang great! When I have time, I will implement something similar for E3SM Diags to address https://github.com/E3SM-Project/e3sm_diags/issues/299.

Since more docs updates have been added that are for v0.4.2 since this was created, it's cleaner to close this pull request in favor of #95.


[SPARK-44457][CONNECT][TESTS] Add truncatedTo(ChronoUnit.MICROS) to make ArrowEncoderSuite in Java 17 daily test GA task pass

What changes were proposed in this pull request?
Similar to SPARK-42770 | https://github.com/apache/spark/pull/40395, this pr call truncatedTo(ChronoUnit.MICROS) on java.time.Instant and java.time.LocalDateTime for Java 17/Linux to make ArrowEncoderSuite can test pass Java 17 daily test
Why are the changes needed?
Make Java 17 daily test GA task run successfully.
The Java 17 daily test GA task failed now: https://github.com/apache/spark/actions/runs/5570003581/jobs/10173767006
[info] - nullable fields *** FAILED *** (169 milliseconds)
[info]   NullableData(null, JANUARY, E1, null, 1.000000000000000000, 2.000000000000000000, null, 4, PT0S, null, 2023-07-16, 2023-07-16, null, 2023-07-16T23:01:54.059339Z, 2023-07-16T23:01:54.059359) did not equal NullableData(null, JANUARY, E1, null, 1.000000000000000000, 2.000000000000000000, null, 4, PT0S, null, 2023-07-16, 2023-07-16, null, 2023-07-16T23:01:54.059339538Z, 2023-07-16T23:01:54.059359638) (ArrowEncoderSuite.scala:194)
[info]   Analysis:
[info]   NullableData(instant: 2023-07-16T23:01:54.059339Z -> 2023-07-16T23:01:54.059339538Z, localDateTime: 2023-07-16T23:01:54.059359 -> 2023-07-16T23:01:54.059359638)
[info]   org.scalatest.exceptions.TestFailedException:
...
[info] - lenient field serialization - timestamp/instant *** FAILED *** (26 milliseconds)
[info]   2023-07-16T23:01:55.112838Z did not equal 2023-07-16T23:01:55.112838568Z (ArrowEncoderSuite.scala:194)
[info]   org.scalatest.exceptions.TestFailedException:
...

Does this PR introduce any user-facing change?
No, just for test
How was this patch tested?

Pass GitHub Action
Git Hub Action test with Java 17 passed: https://github.com/LuciferYang/spark/runs/15118408311

https://github.com/apache/spark/actions/runs/5570003581/jobs/10173767006
Java 17 daily test failed

[info] - nullable fields *** FAILED *** (169 milliseconds)
[info]   NullableData(null, JANUARY, E1, null, 1.000000000000000000, 2.000000000000000000, null, 4, PT0S, null, 2023-07-16, 2023-07-16, null, 2023-07-16T23:01:54.059339Z, 2023-07-16T23:01:54.059359) did not equal NullableData(null, JANUARY, E1, null, 1.000000000000000000, 2.000000000000000000, null, 4, PT0S, null, 2023-07-16, 2023-07-16, null, 2023-07-16T23:01:54.059339538Z, 2023-07-16T23:01:54.059359638) (ArrowEncoderSuite.scala:194)
[info]   Analysis:
[info]   NullableData(instant: 2023-07-16T23:01:54.059339Z -> 2023-07-16T23:01:54.059339538Z, localDateTime: 2023-07-16T23:01:54.059359 -> 2023-07-16T23:01:54.059359638)
[info]   org.scalatest.exceptions.TestFailedException:
[info]   at org.scalatest.Assertions.newAssertionFailedException(Assertions.scala:472)
[info]   at org.scalatest.Assertions.newAssertionFailedException$(Assertions.scala:471)
[info]   at org.scalatest.Assertions$.newAssertionFailedException(Assertions.scala:1231)
[info]   at org.scalatest.Assertions$AssertionsHelper.macroAssert(Assertions.scala:1295)
[info]   at org.apache.spark.sql.connect.client.arrow.ArrowEncoderSuite.$anonfun$compareIterators$1(ArrowEncoderSuite.scala:194)
[info]   at scala.collection.Iterator.foreach(Iterator.scala:943)
[info]   at scala.collection.Iterator.foreach$(Iterator.scala:943)
[info]   at scala.collection.AbstractIterator.foreach(Iterator.scala:1431)
[info]   at org.apache.spark.sql.connect.client.arrow.ArrowEncoderSuite.compareIterators(ArrowEncoderSuite.scala:191)
[info]   at org.apache.spark.sql.connect.client.arrow.ArrowEncoderSuite.roundTripAndCheck(ArrowEncoderSuite.scala:155)
[info]   at org.apache.spark.sql.connect.client.arrow.ArrowEncoderSuite.roundTripAndCheckIdentical(ArrowEncoderSuite.scala:174)
[info]   at org.apache.spark.sql.connect.client.arrow.ArrowEncoderSuite.$anonfun$new$21(ArrowEncoderSuite.scala:359)
[info]   at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
[info]   at org.scalatest.OutcomeOf.outcomeOf(OutcomeOf.scala:85)
[info]   at org.scalatest.OutcomeOf.outcomeOf$(OutcomeOf.scala:83)
[info]   at org.scalatest.OutcomeOf$.outcomeOf(OutcomeOf.scala:104)
[info]   at org.scalatest.Transformer.apply(Transformer.scala:22)
[info]   at org.scalatest.Transformer.apply(Transformer.scala:20)
[info]   at org.scalatest.funsuite.AnyFunSuiteLike$$anon$1.apply(AnyFunSuiteLike.scala:226)
[info]   at org.scalatest.TestSuite.withFixture(TestSuite.scala:196)
[info]   at org.scalatest.TestSuite.withFixture$(TestSuite.scala:195)
[info]   at org.scalatest.funsuite.AnyFunSuite.withFixture(AnyFunSuite.scala:1564)
[info]   at org.scalatest.funsuite.AnyFunSuiteLike.invokeWithFixture$1(AnyFunSuiteLike.scala:224)
[info]   at org.scalatest.funsuite.AnyFunSuiteLike.$anonfun$runTest$1(AnyFunSuiteLike.scala:236)
[info]   at org.scalatest.SuperEngine.runTestImpl(Engine.scala:306)
[info]   at org.scalatest.funsuite.AnyFunSuiteLike.runTest(AnyFunSuiteLike.scala:236)
[info]   at org.scalatest.funsuite.AnyFunSuiteLike.runTest$(AnyFunSuiteLike.scala:218)
[info]   at org.scalatest.funsuite.AnyFunSuite.runTest(AnyFunSuite.scala:1564)
[info]   at org.scalatest.funsuite.AnyFunSuiteLike.$anonfun$runTests$1(AnyFunSuiteLike.scala:269)
[info]   at org.scalatest.SuperEngine.$anonfun$runTestsInBranch$1(Engine.scala:413)
[info]   at scala.collection.immutable.List.foreach(List.scala:431)
[info]   at org.scalatest.SuperEngine.traverseSubNodes$1(Engine.scala:401)
[info]   at org.scalatest.SuperEngine.runTestsInBranch(Engine.scala:396)
[info]   at org.scalatest.SuperEngine.runTestsImpl(Engine.scala:475)
[info]   at org.scalatest.funsuite.AnyFunSuiteLike.runTests(AnyFunSuiteLike.scala:269)
[info]   at org.scalatest.funsuite.AnyFunSuiteLike.runTests$(AnyFunSuiteLike.scala:268)
[info]   at org.scalatest.funsuite.AnyFunSuite.runTests(AnyFunSuite.scala:1564)
[info]   at org.scalatest.Suite.run(Suite.scala:1114)
[info]   at org.scalatest.Suite.run$(Suite.scala:1096)
[info]   at org.scalatest.funsuite.AnyFunSuite.org$scalatest$funsuite$AnyFunSuiteLike$$super$run(AnyFunSuite.scala:1564)
[info]   at org.scalatest.funsuite.AnyFunSuiteLike.$anonfun$run$1(AnyFunSuiteLike.scala:273)
[info]   at org.scalatest.SuperEngine.runImpl(Engine.scala:535)
[info]   at org.scalatest.funsuite.AnyFunSuiteLike.run(AnyFunSuiteLike.scala:273)
[info]   at org.scalatest.funsuite.AnyFunSuiteLike.run$(AnyFunSuiteLike.scala:272)
[info]   at org.apache.spark.sql.connect.client.arrow.ArrowEncoderSuite.org$scalatest$BeforeAndAfterAll$$super$run(ArrowEncoderSuite.scala:49)
[info]   at org.scalatest.BeforeAndAfterAll.liftedTree1$1(BeforeAndAfterAll.scala:213)
[info]   at org.scalatest.BeforeAndAfterAll.run(BeforeAndAfterAll.scala:210)
[info]   at org.scalatest.BeforeAndAfterAll.run$(BeforeAndAfterAll.scala:208)
[info]   at org.apache.spark.sql.connect.client.arrow.ArrowEncoderSuite.run(ArrowEncoderSuite.scala:49)
[info]   at org.scalatest.tools.Framework.org$scalatest$tools$Framework$$runSuite(Framework.scala:321)
[info]   at org.scalatest.tools.Framework$ScalaTestTask.execute(Framework.scala:517)
[info]   at sbt.ForkMain$Run.lambda$runTest$1(ForkMain.java:414)
[info]   at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
[info]   at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
[info]   at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
[info]   at java.base/java.lang.Thread.run(Thread.java:833)
[info] - lenient field serialization - timestamp/instant *** FAILED *** (26 milliseconds)
[info]   2023-07-16T23:01:55.112838Z did not equal 2023-07-16T23:01:55.112838568Z (ArrowEncoderSuite.scala:194)
[info]   org.scalatest.exceptions.TestFailedException:
[info]   at org.scalatest.Assertions.newAssertionFailedException(Assertions.scala:472)
[info]   at org.scalatest.Assertions.newAssertionFailedException$(Assertions.scala:471)
[info]   at org.scalatest.Assertions$.newAssertionFailedException(Assertions.scala:1231)
[info]   at org.scalatest.Assertions$AssertionsHelper.macroAssert(Assertions.scala:1295)
[info]   at org.apache.spark.sql.connect.client.arrow.ArrowEncoderSuite.$anonfun$compareIterators$1(ArrowEncoderSuite.scala:194)
[info]   at scala.collection.Iterator.foreach(Iterator.scala:943)
[info]   at scala.collection.Iterator.foreach$(Iterator.scala:943)
[info]   at scala.collection.AbstractIterator.foreach(Iterator.scala:1431)
[info]   at org.apache.spark.sql.connect.client.arrow.ArrowEncoderSuite.compareIterators(ArrowEncoderSuite.scala:191)
[info]   at org.apache.spark.sql.connect.client.arrow.ArrowEncoderSuite.roundTripAndCheck(ArrowEncoderSuite.scala:155)
[info]   at org.apache.spark.sql.connect.client.arrow.ArrowEncoderSuite.$anonfun$new$81(ArrowEncoderSuite.scala:594)
[info]   at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
[info]   at org.scalatest.OutcomeOf.outcomeOf(OutcomeOf.scala:85)
[info]   at org.scalatest.OutcomeOf.outcomeOf$(OutcomeOf.scala:83)
[info]   at org.scalatest.OutcomeOf$.outcomeOf(OutcomeOf.scala:104)
[info]   at org.scalatest.Transformer.apply(Transformer.scala:22)
[info]   at org.scalatest.Transformer.apply(Transformer.scala:20)
[info]   at org.scalatest.funsuite.AnyFunSuiteLike$$anon$1.apply(AnyFunSuiteLike.scala:226)
[info]   at org.scalatest.TestSuite.withFixture(TestSuite.scala:196)
[info]   at org.scalatest.TestSuite.withFixture$(TestSuite.scala:195)
[info]   at org.scalatest.funsuite.AnyFunSuite.withFixture(AnyFunSuite.scala:1564)
[info]   at org.scalatest.funsuite.AnyFunSuiteLike.invokeWithFixture$1(AnyFunSuiteLike.scala:224)
[info]   at org.scalatest.funsuite.AnyFunSuiteLike.$anonfun$runTest$1(AnyFunSuiteLike.scala:236)
[info]   at org.scalatest.SuperEngine.runTestImpl(Engine.scala:306)
[info]   at org.scalatest.funsuite.AnyFunSuiteLike.runTest(AnyFunSuiteLike.scala:236)
[info]   at org.scalatest.funsuite.AnyFunSuiteLike.runTest$(AnyFunSuiteLike.scala:218)
[info]   at org.scalatest.funsuite.AnyFunSuite.runTest(AnyFunSuite.scala:1564)
[info]   at org.scalatest.funsuite.AnyFunSuiteLike.$anonfun$runTests$1(AnyFunSuiteLike.scala:269)
[info]   at org.scalatest.SuperEngine.$anonfun$runTestsInBranch$1(Engine.scala:413)
[info]   at scala.collection.immutable.List.foreach(List.scala:431)
[info]   at org.scalatest.SuperEngine.traverseSubNodes$1(Engine.scala:401)
[info]   at org.scalatest.SuperEngine.runTestsInBranch(Engine.scala:396)
[info]   at org.scalatest.SuperEngine.runTestsImpl(Engine.scala:475)
[info]   at org.scalatest.funsuite.AnyFunSuiteLike.runTests(AnyFunSuiteLike.scala:269)
[info]   at org.scalatest.funsuite.AnyFunSuiteLike.runTests$(AnyFunSuiteLike.scala:268)
[info]   at org.scalatest.funsuite.AnyFunSuite.runTests(AnyFunSuite.scala:1564)
[info]   at org.scalatest.Suite.run(Suite.scala:1114)
[info]   at org.scalatest.Suite.run$(Suite.scala:1096)
[info]   at org.scalatest.funsuite.AnyFunSuite.org$scalatest$funsuite$AnyFunSuiteLike$$super$run(AnyFunSuite.scala:1564)
[info]   at org.scalatest.funsuite.AnyFunSuiteLike.$anonfun$run$1(AnyFunSuiteLike.scala:273)
[info]   at org.scalatest.SuperEngine.runImpl(Engine.scala:535)
[info]   at org.scalatest.funsuite.AnyFunSuiteLike.run(AnyFunSuiteLike.scala:273)
[info]   at org.scalatest.funsuite.AnyFunSuiteLike.run$(AnyFunSuiteLike.scala:272)
[info]   at org.apache.spark.sql.connect.client.arrow.ArrowEncoderSuite.org$scalatest$BeforeAndAfterAll$$super$run(ArrowEncoderSuite.scala:49)
[info]   at org.scalatest.BeforeAndAfterAll.liftedTree1$1(BeforeAndAfterAll.scala:213)
[info]   at org.scalatest.BeforeAndAfterAll.run(BeforeAndAfterAll.scala:210)
[info]   at org.scalatest.BeforeAndAfterAll.run$(BeforeAndAfterAll.scala:208)
[info]   at org.apache.spark.sql.connect.client.arrow.ArrowEncoderSuite.run(ArrowEncoderSuite.scala:49)
[info]   at org.scalatest.tools.Framework.org$scalatest$tools$Framework$$runSuite(Framework.scala:321)
[info]   at org.scalatest.tools.Framework$ScalaTestTask.execute(Framework.scala:517)
[info]   at sbt.ForkMain$Run.lambda$runTest$1(ForkMain.java:414)
[info]   at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
[info]   at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
[info]   at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
[info]   at java.base/java.lang.Thread.run(Thread.java:833)

friendly ping @MaxGekk @dongjoon-hyun

Can you explain this change? why is the logic different for a specific Java version?

@srowen This is not the first case, the first case we can see https://github.com/apache/spark/pull/40395
Run `LocalDateTime.now()` and `Instant.now()` with Java 8 & 11 always get microseconds on both Linux and MacOS, but there are some differences when using Java 17, it will get accurate nanoseconds on Linux, but still get the microseconds on MacOS.

On Linux(CentOs)

jshell> java.time.LocalDateTime.now()
$1 ==> 2023-03-13T18:09:12.498162194
jshell> java.time.Instant.now()
$2 ==> 2023-03-13T10:09:16.013993186Z

On MacOS

jshell> java.time.LocalDateTime.now()
$1 ==> 2023-03-13T17:13:47.485897
jshell> java.time.Instant.now()
$2 ==> 2023-03-13T09:15:12.031850Z

At present, Spark always converts them to microseconds ...

Whether it starts with or without microseconds, shouldn't the round-trip encode/decode work? Maybe I misunderstand.
Can we always truncate instead of special-casing?

I see, arrow does not encode the full precision? then always truncate here? it is at least simpler.

I see, arrow does not encode the full precision? then always truncate here? it is at least simpler.

Let me clarify my thoughts again:

This is not related to arrow, the same result applies to using ExpressionEncoder（https://github.com/apache/spark/pull/40395）

In the current implementation of Spark, we use DateTimeUtils to convert Instant or LocalDateTime to microseconds:

https://github.com/apache/spark/blob/4644344f443f2f6ab26a72b44b9219fb6c82d26e/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/util/DateTimeUtils.scala#L542-L568

Therefore, in special scenarios, the result of encoded+decoded data loses precision after microseconds.

For example:
Normal scenario：input is 2023-03-13T18:09:12.498162, the result after encoded+decoded is 2023-03-13T18:09:12.498162, input equals output.
Special scenario（Java17&Linux）: input is 2023-03-13T18:09:12.498162194, the result after encoded+decoded is 2023-03-13T18:09:12.498162, input not equal to output.
Calling truncatedTo(ChronoUnit.MICROS) on input in special scenarios is only for the convenience of comparing results

OK, up to your judgment. I'm just wondering if this test is simpler if it never has nanoseconds for any Java version, instead of special-casing.

I'm just wondering if this test is simpler if it never has nanoseconds for any Java version

Yes

OK, up to your judgment. I'm just wondering if this test is simpler if it never has nanoseconds for any Java version, instead of special-casing.

So change to use a fixed Instant or LocalDateTime as inputs with only microsecond accuracy?

Why not just always truncate? I just didn't see why that's not simpler for this an previous changes. It's valid for earlier Java versions. It makes the result match the desired semantics of the test.

In order to only apply new code on Java17 + Linux environment only https://github.com/apache/spark/pull/40395#discussion_r1134941041
But I also think always truncate is more simpler.

I don't quite understand that logic. We would rather not have different code paths for different environments - although here the difference is trivial.

48b3a05 change to always truncate, let's test Java 17 using GA once more

rebase

Merged to master

Thanks @srowen ~


Otel oss integration

The changes are straightforward and make a lot of sense. Thanks @saikonen for handling this!

Internal tests are fine (the 2 failures are flaky). The R test I don't know.


feat: validate types when adding new tuples

On every write we validate that the user part of the tuple satisfies the type definitions on the authorization model.
Description

References

https://github.com/openfga/rfcs/pull/7
https://github.com/openfga/api/pull/27

Review Checklist

[ ] I have clicked on "allow edits by maintainers".
[ ] I have added documentation for new/changed functionality in this PR or in a PR to openfga.dev [Provide a link to any relevant PRs in the references section above]
[x] The correct base branch is being used, if not main
[x] I have added tests to validate that the change in functionality is working as expected

Codecov Report
Base: 76.90% // Head: 77.00% // Increases project coverage by +0.10% :tada:

Coverage data is based on head (75341a0) compared to base (c6f4052).
Patch coverage: 97.67% of modified lines in pull request are covered.

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #232      +/-   ##
==========================================
+ Coverage   76.90%   77.00%   +0.10%
==========================================
  Files          80       80
  Lines        8876     8876
==========================================
+ Hits         6826     6835       +9
+ Misses       1696     1690       -6
+ Partials      354      351       -3

Impacted Files
Coverage Δ

server/test/write.go
66.66% <ø> (ø)

server/test/check.go
23.88% <33.33%> (ø)

server/commands/write.go
90.12% <88.09%> (-0.87%)
:arrow_down:

server/commands/write_authzmodel.go
94.23% <100.00%> (ø)

server/test/list_objects.go
79.54% <100.00%> (ø)

server/test/write_assertions.go
92.68% <100.00%> (-0.18%)
:arrow_down:

server/test/write_authzmodel.go
100.00% <100.00%> (ø)

storage/postgres/postgres.go
65.90% <0.00%> (+0.62%)
:arrow_up:

storage/postgres/utils.go
89.36% <0.00%> (+0.70%)
:arrow_up:

server/commands/check_utils.go
94.53% <0.00%> (+1.26%)
:arrow_up:

... and 2 more

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

:umbrella: View full report at Codecov.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


issue #2

create languages vietnamese

Hi, @thanhnt-2075  ! Thank you for your PR, but after merging other PRs yours have a conflicts now. Please resolve the conflicts.


BIP49 (SegWit) Address Generation Support

After spending a few hours on this, it seems to me that something is missing so I can't generate proper BIP49 addresses. Unless I missed something. I use hdkeychain.NewKeyFromString to generate (derived) addresses. Works fine for BIP44. But now I'm trying to generate SegWit addresses.
It seems I need to be able to set the BIP32 Derivation path to: m/49'/1'/0'/0, or, well m/49' something at least as currently m/44' seems to be hard-coded somewhere. I have the proper "Account Extended Public Key", but since I can't change the "Purpose", the generated addresses ends up different from what I expect to get.
Anyone here that can help me out here?
Thanks!

I'd have to see your code to be sure, but nothing in hdkeychain generates a specific path or hard codes it, rather that is something you do in the caller.  Based on your comment, it sounds like you're trying to load in an extended public key derived with the BIP44 sceme, and then trying to "go back up" to change a purpose.  There is no way to do that from a given child derivation as hardened children are specifically designed to prevent that.
Instead, you need to start with the master extended key, and then derive 49'/1'/0'/0.
For example, consider the following:
package main

import(
	"bytes"
	"fmt"

	"github.com/btcsuite/btcd/chaincfg"
	"github.com/btcsuite/btcutil/hdkeychain"
)

func main(){
	fakeSeed := bytes.Repeat([]byte{0x00}, 16)
	master, err := hdkeychain.NewMaster(fakeSeed, &chaincfg.MainNetParams)
	if err != nil {
		panic(err)
	}

	// m/49'
	purpose, err := master.Child(49 + hdkeychain.HardenedKeyStart)
	if err != nil {
		panic(err)
	}

	// m/49'/1'
	coinType, err := purpose.Child(1 + hdkeychain.HardenedKeyStart)
	if err != nil {
		panic(err)
	}

	// m/49'/1'/0'
	acct0, err := coinType.Child(0 + hdkeychain.HardenedKeyStart)
	if err != nil {
		panic(err)
	}

	// m/49'/1'/0'/0
	acct0External, err := acct0.Child(1)
	if err != nil {
		panic(err)
	}

	acct0ExternalPub, err := acct0External.Neuter()
	if err != nil {
		panic(err)
	}

	fmt.Println(acct0ExternalPub)

	// Show that starting with the correct extended public key string
	// is not modified.
	fmt.Println(hdkeychain.NewKeyFromString(acct0ExternalPub.String()))
}

Output:
xpub6ErAwkSsGjZB5AJ6kEmdHLBT953p3NikFcEgFuSVggz1LUCp1JXqtwEcumJR1WMBoY92am573ac8VXXTTGj46Q6HCzFzZBkZHFCjU4UtWSK
xpub6ErAwkSsGjZB5AJ6kEmdHLBT953p3NikFcEgFuSVggz1LUCp1JXqtwEcumJR1WMBoY92am573ac8VXXTTGj46Q6HCzFzZBkZHFCjU4UtWSK

So, I get this panic:
panic: cannot derive a hardened key from a public key
which means I can't do the 49 + hdkeychain.HardenedKeyStart part.
And the whole point here is to just use the public key, so it don't have to provide the private anywhere. I use testnet so I can share the code for it. So, this work fine:
	masterKey, err = hdkeychain.NewKeyFromString("tpubDCTeyz8KLiDVwexXoYmfDSMRmooGoMrKKrrhXJMhZxtWqm63Y6dbaDaYaEd99dgp6w2b9miDEK6Z7f1qcmbCshEkx7WMgJGkVJtDCdiEarh")
	if err != nil {
		fmt.Println(err)
		return "", err
	}
	acct0Ext, err := masterKey.Child(0)
	if err != nil {
		fmt.Println(err)
		return "", err
	}
	acct0Ext1, err := acct0Ext.Child(subkey)
	if err != nil {
		fmt.Println(err)
		return "", err
	}

	params := chaincfg.TestNet3Params
	acct0ExtAddr1, err := acct0Ext1.Address(&params)
	if err != nil {
		fmt.Println(err)
		return "", err
	}
	fmt.Println("Account 0 External Address 1:", acct0ExtAddr1)

I get: mkKNecT6fGfzb8iL9YmjMDHbaL87eLjFFz
I even added data into https://iancoleman.github.io/bip39/ and noticed that the "Account Extended Public Key" I use changes for BIP49. Then it's: tpubDCFUZ43iCUBBTJnMv2nHT4wTuNpDwguV4pbCgDKxbRijNF4N9fWGXNARD22w2AcjHDnzs9SkriSwHS5piRVm91tNMtJywpJwuEY1pt2ioFD
And this is fine, because this is exactly the same that Trezor is providing me.
But, if I use that in the above code, the address I get is: mmVn5JSRUZcWgxJJnAVSX7rGxt1fwbaXb3 and NOT: 2N3HSFUtaaqm5aaWboxup3uppGp4Z7HrcCP which I should get. So, something is missing.

Oh, and feel free to use these on that bip39 site to see what I mean:
wish
best
bamboo
toward
thrive
parade
relief
denial
tissue
okay
limb
clock
end
sketch
unique
train
rib
there
viable
canvas
nothing
napkin
post
enough

Alright, I understand you're issue now.  It appears that you are conflating things here, so I was having trouble following you.   All an extended public key does is give you a way to deterministically derive the actual underlying pubkey.  Extended keys and addresses are entirely different things.
When you talk about mkKNecT6fGfzb8iL9YmjMDHbaL87eLjFFz  being correct for BIP44, that really isn't the case.  Rather, it is a pre-segwit base58 non-segwit pay-to-pubkey-hash style address for the derivation path of m/49'/1'/0'/0/0.
The Address function of the hdkeychain is just a convenience function to create a base58 non-segwit pay-to-pubkey-hash style address.  What you really are after is creating a new base58 segwit pay-to-script-hash style address, where the script hash is the script per the specification in BIP49, and for which the package does not provide a convenience function.
It's trivial to do though.  You'd just need to follow BIP49 in order to generate the hash and use btcutil.NewAddressScriptHashFromHash with that generated hash.  You can get the public key with .ECPubKey and use btcutil.Hash160 to get the HASH160 of it.
package main

import (
	"fmt"

	"github.com/btcsuite/btcd/chaincfg"
	"github.com/btcsuite/btcd/txscript"
	"github.com/btcsuite/btcutil"
	"github.com/btcsuite/btcutil/hdkeychain"
)

func main() {
	// m/49'/1'/0'
	acct0Pub, err := hdkeychain.NewKeyFromString("tpubDCFUZ43iCUBBTJnMv2nHT4wTuNpDwguV4pbCgDKxbRijNF4N9fWGXNARD22w2AcjHDnzs9SkriSwHS5piRVm91tNMtJywpJwuEY1pt2ioFD")
	if err != nil {
		panic(err)
	}

	// m/49'/1'/0'/0
	acct0ExternalPub, err := acct0Pub.Child(0)
	if err != nil {
		panic(err)
	}

	// m/49'/1'/0'/0/0
	acct0External0Pub, err := acct0ExternalPub.Child(0)
	if err != nil {
		panic(err)
	}

	// BIP49 segwit pay-to-script-hash style address.
	pubKey, err := acct0External0Pub.ECPubKey()
	if err != nil {
		panic(err)
	}
	keyHash := btcutil.Hash160(pubKey.SerializeCompressed())
	scriptSig, err := txscript.NewScriptBuilder().AddOp(txscript.OP_0).AddData(keyHash).Script()
	if err != nil {
		panic(err)
	}
	acct0ExtAddr1, err := btcutil.NewAddressScriptHash(scriptSig, &chaincfg.TestNet3Params)
	if err != nil {
		panic(err)
	}
	fmt.Println(acct0ExtAddr1)
}

Output:
2N3HSFUtaaqm5aaWboxup3uppGp4Z7HrcCP

Oh, wow. That was certainly not something obvious and straight forward to do for me (who comes up with all this stuff? :) ), but thanks a lot for the help!
Maybe there should be a convenience function for this? Even though it isn't all that extra code to write, I can imagine this will become more popular to do though.

It might be worth adding a convenience function in btcutil.  I'm actually of the mind that Address should probably be removed from the extended pubkey type however since, as you noted, it will become more and more confusing as different address schemes are devised.  The only reason it was there to provide a slight optimization when the underlying serialized public key bytes are already known without exposing them to the caller which could potentially mutate them.

I'll go ahead and leave this open in case somebody wants to make the aforementioned modifications and it doesn't get forgotten.

+1

I have created a small commit which adds the functionality, feel free to use it (and suggestions for improvements are of course very welcome!). However, I also agree with @davecgh that at some point with more and more different address/script types it may actually be the wrong place to add those functions to.

Any reason this hasn't been merged?

@davecgh David, could you explain how to generate the BIP49 public key?
From example above, how can I get Account Extended Public Key
upub5DP47pDH39bHdd29xmSKctKb4MHE8SRvmrSEyUbA7VqCTewyKUAVWjXAuN5PVwhjGPug199CwdZEwPkXAUQUrsPGhGUQWZCFW6kfu6aNZb1 for path
m/49'/1'/0'/0
Because basic method .Neuter() did not working :(
with error message unknown hd private extended key bytes
Thanks!

If this patch is fine, could you merge it?


🧑💻:  CLICKABLE CARDS

Title
CLICKABLE CARDS
Enhancement Aim
THESE CARDS SHOULD BE CLICKALE SO THAT WE CAN DIRECTLY SEE THAT DETAILS..
Changes
MAKE IT CLICKALBE
Screenshots 📷

Full Name
MEET SHAH
Participant Role
CONTRIBUTER
Guidelines

[X] I have read the guidelines
[X] I have the link to my latest merged PR

/assign

@rishicds Can i work on it ?

@rishicds can i work on it ?

Assigned

@rishicds please accept PR as soon as possible when i will send PR about it

@rishicds Please Review PR..


error check before return the ActivityLocalDispatchInfo

Coverage decreased (-0.02%) to 61.289% when pulling bda0070231adad54e238ccba3f82d0740ef224a5 on mkolodezny:small into b9f3cffd9072fb7ce988e8af17d943701de0a2b5 on uber:master.


Move lists into settings

I found that certain words were ignored in capitalize-headings, title case.
Can the lists:
ignoreNames
ignoreShortWords
ignoreAbbreviations
Be moved into settings so they can be easily changed?

this would also help when you have notes in a non-Englisch language, since you can then add some words for that language as well


Create the mergify configuration

I'm definately for good automation, but I've never used mergify. After reading through the configuration file docs, I'm not sure what the line - 'status-success=ci/circleci' is doing.
I'd expect that it would be correct to require all checks pass. But from the docs, that doesn't seem possible, and it looks like each GHA job and other CI step needs to be listed separately(CICD / Style (ubuntu-latest, unix), CICD / Style (macos-latest, unix), ...,  CICD / Build (ubuntu-16.04, x86_64-unknown-linux-gnu, feat_os_unix, use-cross), ..., continuous-integration/appveyor/branch, continuous-integration/appveyor/pr, continuous-integration/travis-ci/pr, continuous-integration/travis-ci/push, stable x86_64-unknown-freebsd-12).
Is that true? And so, do we need to add all the jobs?

@jd Do we need to add every job to have mergify to act? thanks :)

Yes, you do. As explained here: https://doc.mergify.io/conditions.html#validating-all-status-check
There is no such thing as “every status check” in GitHub.
If you are able to programmatically generate the list of status checks that is being reported, you can probably write a little script that keeps that in sync with e.g. your GitHub actions list.

From looking at this bot, I think we should look a bit further for alternate automation before commiting to it.


Error when converting .rm file

Hello:
When running the following I get the following error:
rmc /mnt/c/Temp/TestRM/f57e211c-2fb6-4e8b-838f-74718ba12fc6.rm -o /mnt/c/Temp/test.pdf
rmc /mnt/c/Temp/TestRM/f57e211c-2fb6-4e8b-838f-74718ba12fc6.rm -o /mnt/c/Temp/test.pdf
Unknown block type 8. Skipping 17 bytes.
Unknown block type 8. Skipping 17 bytes.
Traceback (most recent call last):
File "/home/anthony/.local/bin/rmc", line 8, in
sys.exit(cli())
File "/home/anthony/.local/lib/python3.10/site-packages/click/core.py", line 1130, in call
return self.main(*args, **kwargs)
File "/home/anthony/.local/lib/python3.10/site-packages/click/core.py", line 1055, in main
rv = self.invoke(ctx)
File "/home/anthony/.local/lib/python3.10/site-packages/click/core.py", line 1404, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/home/anthony/.local/lib/python3.10/site-packages/click/core.py", line 760, in invoke
return __callback(*args, **kwargs)
File "/home/anthony/.local/lib/python3.10/site-packages/rmc/cli.py", line 37, in cli
convert_rm(Path(fn), to, fout)
File "/home/anthony/.local/lib/python3.10/site-packages/rmc/cli.py", line 91, in convert_rm
svg_to_pdf(buf, fout)
File "/home/anthony/.local/lib/python3.10/site-packages/rmc/exporters/pdf.py", line 36, in svg_to_pdf
check_call(["inkscape", fsvg.name, "--export-filename", fpdf.name])
File "/usr/lib/python3.10/subprocess.py", line 364, in check_call
retcode = call(*popenargs, **kwargs)
File "/usr/lib/python3.10/subprocess.py", line 345, in call
with Popen(*popenargs, **kwargs) as p:
File "/usr/lib/python3.10/subprocess.py", line 969, in init
self._execute_child(args, executable, preexec_fn, close_fds,
File "/usr/lib/python3.10/subprocess.py", line 1845, in _execute_child
raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: 'inkscape'

From the last line and
 check_call(["inkscape", fsvg.name, "--export-filename", fpdf.name])

you can see that the SVG to PDF conversion is done with inkscape. You need to install it to your system first, and check that you can run it by typing inkscape in your terminal.

rmc /mnt/c/Temp/TestRM/f57e211c-2fb6-4e8b-838f-74718ba12fc6.rm -o /mnt/c/Temp/test.pdf
Unknown block type 8. Skipping 17 bytes.

@antmar904 can you share this file f57e211c-2fb6-4e8b-838f-74718ba12fc6.rm and a description of how you made it / what it contains? It looks like it contains a new piece of data that hasn't come up before.
(this is unrelated to your main problem as hersle says)

From the last line and
 check_call(["inkscape", fsvg.name, "--export-filename", fpdf.name])

you can see that the SVG to PDF conversion is done with inkscape. You need to install it to your system first, and check that you can run it by typing inkscape in your terminal.

I'm not a linux person, I think I installed inkscape by using:
sudo add-apt-repository ppa:inkscape.dev/stable
sudo apt update
sudo apt install inkscape
I run the following command:
**rmc /home/User/TestRM/f57e211c-2fb6-4e8b-838f-74718ba12fc6.rm -o /home/User/TestRM/test.pdf
Unknown block type 8. Skipping 17 bytes.
Unknown block type 8. Skipping 17 bytes.
** (inkscape:3367): WARNING : 07:09:23.979: Failed to wrap object of type 'GtkRecentManager'. Hint: this error is commonly caused by failing to call a library init() function.

rmc /mnt/c/Temp/TestRM/f57e211c-2fb6-4e8b-838f-74718ba12fc6.rm -o /mnt/c/Temp/test.pdf
Unknown block type 8. Skipping 17 bytes.

@antmar904 can you share this file f57e211c-2fb6-4e8b-838f-74718ba12fc6.rm and a description of how you made it / what it contains? It looks like it contains a new piece of data that hasn't come up before.
(this is unrelated to your main problem as hersle says)

let me find out which file this is and what it contains before I can share it.  Thank you again for all your help.

any update?


Export of mensa data

A way to export Mensa feed as xml, json or something to use later, needs to include all allergens and prices
Preferably in the openmensa feed format

This Feature Request was implemented with Release 1.0.0


[BUG] error when trying to migrate v1 to v2 vault using the flashloan tool

What happened?
Hi guys, I've finally gotten around to migrating to Alchemix v2. However, I'm encountering an error when trying to migrate my altETH position. I get two different error logs, sometimes the first and sometimes the second. I've copied them below. What should I do to fix this?
Timestamp:
1659957916992
(8/8/2022)
Error Message:
transaction failed (transactionHash="0x28335c2329013179f3216d397ab2396f41568c1176a85cbde6555d0948c40fd2", transaction={"hash":"0x28335c2329013179f3216d397ab2396f41568c1176a85cbde6555d0948c40fd2","type":2,"accessList":null,"blockHash":null,"blockNumber":null,"transactionIndex":null,"confirmations":0,"from":"0x2642E2883BC7344a42334624AC7c9d9254E03D37","gasPrice":{"type":"BigNumber","hex":"0x0197b013c4"},"maxPriorityFeePerGas":{"type":"BigNumber","hex":"0x59682f00"},"maxFeePerGas":{"type":"BigNumber","hex":"0x0197b013c4"},"gasLimit":{"type":"BigNumber","hex":"0x2dc6c0"},"to":"0x0256fC7bA8d1513Be9661c504F36e075942d9A49","value":{"type":"BigNumber","hex":"0x00"},"nonce":54,"data":"0xe5fdddf9000000000000000000000000c4c319e2d4d66cca4464c0c2b32c9bd23ebe784e00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000062bf725dc4cdf947aa79ca2aaccd4f385b13b5c000000000000000000000000a258c4606ca8206d8aa700ce2143d7db854d168c0000000000000000000000000000000000000000000000001ccecea7d218d8a1000000000000000000000000000000000000000000000000382cdfc74016d9940000000000000000000000000000000000000000000000001ba420a76c883947","r":"0x7349d61776ef6d0c26b72c11fdd9b5c30ac97827c93ade2c9a5bbacb69714231","s":"0x44d01abff3f45ee6fff84b6be22440bb65ea852cc5d15eb05d301d332348f56e","v":1,"creates":null,"chainId":0}, receipt={"to":"0x0256fC7bA8d1513Be9661c504F36e075942d9A49","from":"0x2642E2883BC7344a42334624AC7c9d9254E03D37","contractAddress":null,"transactionIndex":247,"gasUsed":{"type":"BigNumber","hex":"0x0ab2a0"},"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","blockHash":"0x72944aa2ac5ee68eede5874dab53208253e6475a39cc9504fd03127e5e4d904e","transactionHash":"0x28335c2329013179f3216d397ab2396f41568c1176a85cbde6555d0948c40fd2","logs":[],"blockNumber":15301275,"confirmations":3,"cumulativeGasUsed":{"type":"BigNumber","hex":"0x01135aee"},"effectiveGasPrice":{"type":"BigNumber","hex":"0x014bfe4f2f"},"status":0,"type":2,"byzantium":true}, code=CALL_EXCEPTION, version=providers/5.5.0)
Timestamp:
1659957948047
(8/8/2022)
Error Message:
cannot estimate gas; transaction may fail or may require manual gas limit (error={"code":-32000,"message":"execution reverted"}, method="estimateGas", transaction={"from":"0x2642E2883BC7344a42334624AC7c9d9254E03D37","to":"0xf8317BD5F48B6fE608a52B48C856D3367540B73B","data":"0x415f12400000000000000000000000000000000000000000000000000000000000000001","accessList":null}, code=UNPREDICTABLE_GAS_LIMIT, version=providers/5.5.0)

Error Message:
cannot estimate gas; transaction may fail or may require manual gas limit (error={"code":-32000,"message":"execution reverted"}, method="estimateGas", transaction={"from":"0x2642E2883BC7344a42334624AC7c9d9254E03D37","to":"0xf8317BD5F48B6fE608a52B48C856D3367540B73B","data":"0x415f12400000000000000000000000000000000000000000000000000000000000000001","accessList":null}, code=UNPREDICTABLE_GAS_LIMIT, version=providers/5.5.0)

When I try to migrate again, a pop up shows up that stops the interaction from happening:
Something went wrong
Error: cannot estimate gas; transaction may fail or may require manual gas limit (error={"code":-32000,"message":"execution reverted"}, method="estimateGas", transaction={"from":"0x2642E2883BC7344a42334624AC7c9d9254E03D37","to":"0xf8317BD5F48B6fE608a52B48C856D3367540B73B","data":"0x415f12400000000000000000000000000000000000000000000000000000000000000001","accessList":null}, code=UNPREDICTABLE_GAS_LIMIT, version=providers/5.5.0)
--
URL of the original failed transaction: https://etherscan.io/tx/0x28335c2329013179f3216d397ab2396f41568c1176a85cbde6555d0948c40fd2
Steps to reproduce

Initiate "migrate legacy alETH position" (using Chrome and Metamask)
Transaction starts but fails: https://etherscan.io/tx/0x28335c2329013179f3216d397ab2396f41568c1176a85cbde6555d0948c40fd2
Try to initiate "migrate legacy alETH position" again
Transaction won't even start. Instead a pop-up appears. See above for details
...

Expected behavior
No response
What browser were you using?
Chrome
If you selected "Other" above, fill in the browser you used here.
No response

Seeing how a new version migrator is just waiting for the AIP to be voted on and passed, I'm closing this.


update README for Aspire.Azure.Security.KeyVault to require package reference to Aspire.Hosting.Azure

INSTALL STEPS

Clean machine: Win11 x64 23h2 ENU
Install VS 17.9 P1 from build main-34219.241
Install latest 8.0 SDK: 8.0.100-rtm.23519.30
Apply NuGet Feeds
Install Aspire workload
Install Docker Desktop

REPRO STEPS

In the VS, create a new project > ASP.NET Core Empty > give a name 'AppWithKv1' > .NET 8.0 > check 'Enlist in Aspire Orchestration' > Create
Build solution
Right click the AppWithKv1 project > Add > Aspire Component > Set Package source to 'All' and check 'Include prerelease' option > install the latest prerelease version of 'Aspire.Azure.Security.KeyVault'
Open Program.cs of the AppWithKv1.AppHost project

ACTUAL
README.md of the Aspire.Azure.Security.KeyVault package has the following lines. But when I try to do builder.AddAzureKeyVault in the Program.cs of AppWithKv1.AppHost project, the method is not available. Even if I add the Aspire.Azure.Security.KeyVault package directly as a component of AppWithKv1.AppHost project, I still cannot get this to work.

From README.md
In your AppHost project, add a Key Vault connection and consume the connection using the following methods:
var keyVault = builder.AddAzureKeyVault("secrets");

var myService = builder.AddProject<Projects.MyService>()
                       .WithReference(keyVault);

The AddAzureKeyVault method will read connection information from the AppHost's configuration (for example, from "user secrets") under the ConnectionStrings:secrets config key. The WithReference method passes that connection information into a connection string named secrets in the MyService project. In the Program.cs file of MyService, the connection can be consumed using:
EXPECTED
We should be able to do AddAzureKeyVault from the AppHost project.

This should apply to all Azure components, not just Key Vault. Reopening to add it to the other READMEs.


Validation issue with 1-225-241-9509 (US)

Please read the "guidelines for contributing" (linked above) and fill in the template below.
Country/region affected (e.g., "US"): US
Example number(s) affected ("+1<PHONE_NUMBER>"): 1-225-241-9509
The phone number range(s) to which the issue applies ("+1 555 555-XXXX"):
The type of the number(s) ("fixed-line", "mobile", "short code", etc.):
The cost, if applicable ("toll-free", "premium rate", "shared cost"):
Supporting evidence (for example, national numbering plan, announcement from mobile carrier, news article): IMPORTANT - anything posted here is made public. Read the guidelines first!
link to demo
Country:

Example number(s) and/or range(s):1
Number type ("fixed-line", "mobile", "short code", etc.):225
For short codes, cost and dialing restrictions:241,9509
Where or whom did you get the number(s) from:Allen Lemoine
Authoritative evidence (e.g. national numbering plan, operator announcement):
Link from demo (http://libphonenumber.appspot.com) showing error

Thank you for taking the time to improve libphonenumber!
This issue is a duplicate of #1992. Closing this issue.


Intermittent timeout errors

Greetings! 👋  we have got a script to monitor our livekit deployment which leverages the livekit-cli and it works in such a way that it periodically connects and create a room in our livekit cluster (v1.2.1, running on gke) and then join the room and publish a tiny audio (ogg) file as follows :
livekit-cli create-room --url https://livekit.something.com/ --api-key XXXXX --api-secret XXXXX --name prasadtest3

livekit-cli join-room --url https://livekit.something.com/ --api-key XXXXX --api-secret XXXXX --room prasadtest3 --identity publisher --publish /tmp/livekit_audio.ogg

This works fine most of the time, but publishing the audio file fails sometimes  with could not connect after timeout message as shown below, once it start failing, the subsequent attempts also fails and the only way to fix this is to restart the livekit deployment
livekit-cli join-room --url https://livekit.something.com/ --api-key XXXXX --api-secret XXXXX --room prasadtest3 --identity publisher --publish /tmp/livekit_audio.ogg
could not connect after timeout

We already have debug logging enabled and below are the messages we get when it fails.
2022-09-29T05:21:05.419Z	INFO	livekit	service/roommanager.go:254	starting RTC session	{"room": "prasadtest3", "nodeID": "ND_yKNKtfJ8", "participant": "publisher", "sdk": "GO", "sdkVersion": "0.10.5", "protocol": 8}
2022-09-29T05:21:05.420Z	INFO	livekit	rtc/room.go:287	new participant joined	{"room": "prasadtest3", "roomID": "RM_hXm4jXmyAmqz", "pID": "PA_HdEcTCqpkDDY", "participant": "publisher", "protocol": 8, "options": {"AutoSubscribe":true}}
2022-09-29T05:21:05.421Z	DEBUG	livekit	rtc/participant.go:1190	updating participant state	{"room": "prasadtest3", "roomID": "RM_hXm4jXmyAmqz", "participant": "publisher", "pID": "PA_HdEcTCqpkDDY", "remote": false, "state": "JOINED"}
2022-09-29T05:21:05.421Z	DEBUG	livekit	rtc/room.go:236	participant state changed	{"room": "prasadtest3", "roomID": "RM_hXm4jXmyAmqz", "state": "JOINED", "participant": "publisher", "pID": "PA_HdEcTCqpkDDY", "oldState": "JOINING"}
2022-09-29T05:21:05.421Z	DEBUG	livekit	rtc/participant.go:779	SetMigrateState	{"room": "prasadtest3", "roomID": "RM_hXm4jXmyAmqz", "participant": "publisher", "pID": "PA_HdEcTCqpkDDY", "remote": false, "state": "MIGRATE_STATE_COMPLETE"}
2022-09-29T05:22:05.422Z	INFO	livekit	rtc/room.go:393	closing participant for removal	{"room": "prasadtest3", "roomID": "RM_hXm4jXmyAmqz", "pID": "PA_HdEcTCqpkDDY", "participant": "publisher"}
2022-09-29T05:22:05.422Z	INFO	livekit	rtc/participant.go:640	try close participant	{"room": "prasadtest3", "roomID": "RM_hXm4jXmyAmqz", "participant": "publisher", "pID": "PA_HdEcTCqpkDDY", "remote": false, "sendLeave": true, "reason": "JOIN_TIMEOUT"}
2022-09-29T05:22:05.422Z	DEBUG	livekit	rtc/participant.go:1190	updating participant state	{"room": "prasadtest3", "roomID": "RM_hXm4jXmyAmqz", "participant": "publisher", "pID": "PA_HdEcTCqpkDDY", "remote": false, "state": "DISCONNECTED"}
2022-09-29T05:22:05.423Z	INFO	livekit	rtc/participant_signal.go:199	closing signal connection	{"room": "prasadtest3", "roomID": "RM_hXm4jXmyAmqz", "participant": "publisher", "pID": "PA_HdEcTCqpkDDY", "remote": false}
2022-09-29T05:22:05.424Z	INFO	livekit	service/roommanager.go:433	RTC session finishing	{"participant": "publisher", "pID": "PA_HdEcTCqpkDDY", "room": "prasadtest3", "roomID": "RM_hXm4jXmyAmqz"}
2022-09-29T05:22:05.424Z	INFO	livekit	rtc/transport.go:1292	leaving events processor	{"room": "prasadtest3", "roomID": "RM_hXm4jXmyAmqz", "participant": "publisher", "pID": "PA_HdEcTCqpkDDY", "remote": false, "transport": "PUBLISHER"}
2022-09-29T05:22:05.424Z	INFO	livekit	rtc/transport.go:486	peer connection state change	{"room": "prasadtest3", "roomID": "RM_hXm4jXmyAmqz", "participant": "publisher", "pID": "PA_HdEcTCqpkDDY", "remote": false, "transport": "PUBLISHER", "state": "closed"}
2022-09-29T05:22:48.349Z	INFO	livekit	rtc/room.go:546	closing room	{"room": "prasadtest3", "roomID": "RM_hXm4jXmyAmqz"}
2022-09-29T05:22:48.350Z	INFO	livekit	service/roommanager.go:107	deleting room state	{"room": "prasadtest3"}
2022-09-29T05:22:48.350Z	INFO	livekit	service/roommanager.go:401	room closed	{"room": "prasadtest3", "roomID": "RM_hXm4jXmyAmqz"}

A restart of the the livekit deployment (kubectl rollout restart deployment livekit-livekit-server) fixes this and it works well for a couple of hours, and then the issue reoccurs 🙁
Any help on fixing this would be much appreciated, thanks! 🙏
Server

Version: v1.2.1
Environment: GKE

Thanks a lot @davidzhao I did see sending offer messages when it is working fine (ref: logs), but it is not there when it fails with the timeout messages.
I will redeploy with development: true and share the dump when this happens next time, thanks! 🙏

Hey @davidzhao The debug/goroutine dumps taken at the time of failure is available at :
coredump2.log
coredump1.log
coredump3.log
and the dump taken when it is working fine is available at :
working.log
I can also confirm that I'm am unable to publish to other rooms as well when it is in the failure state, and everything works fine if I restart the pods (or if I just restart the livekit-server process from the k8s node in which the pod is running by using kill -HUP <pid-of-livekit-server-process>)
I have also checked the cpu/memory consumption of the livekit at the time of failure and it is not much.
PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
2981642 root      20   0 5619480   2.5g  19976 S  35.9  21.3 696:43.81 livekit-server

Appreciate if you could take a look when you get a chance, kindly let me know if you need any further details, thanks again for all your help! 🙏

thank you for providing the logs. that's helpful.
I believe this issue had already been resolved in 1.2.3. The issue was due to certain users on slower TCP connections causing a lock. Underlying fix was in this PR
Could you give it a try and see if that resolves the issue for you?

Hey @davidzhao there were a couple of failures in the weekend and the logs are available at - logs1, logs2, logs3, just in case if this helps to investigate further, thank you! 🙂

@prasadkris Looking at the logs further. It doesn't appear that the upgrade to v1.2.3 took place. Specifically, your logs indicate it's using v2.2.7 of pion/ice. v1.2.3 ships with pion/ice v2.2.9.
Could you reattempt the upgrade?
/go/pkg/mod/github.com/pion/ice/v2@v2.2.7/tcp_mux.go:255 +0x5e

Thanks @davidzhao strange, the update was performed using the latest helm chart and I do see that the livekit-server deployment is using v1.2.3 image 😕 I will reattempt the upgrade and let you know! thanks again 🙏
k describe deployments.apps livekit-livekit-server | grep -i image
    Image:       livekit/livekit-server:v1.2.3

Hello @davidzhao, I attempted an upgrade again and I could see that the the pion/ice is now at  v2.2.9. 👍
github.com/pion/ice/v2.(*candidateBase).recvLoop(0xc00586c5b0, 0xc00143b7b8?)
	/go/pkg/mod/github.com/pion/ice/v2@v2.2.9/candidate_base.go:222 +0x19f
created by github.com/pion/ice/v2.(*candidateBase).start
	/go/pkg/mod/github.com/pion/ice/v2@v2.2.9/candidate_base.go:205 +0x14d

Hopefully this helps to fix the problem,  I will observe for a couple of days and let you know the status, thanks a lot for your help and cooperation! 🙏

hey @davidzhao the cluster works fine after the upgrade and there are no timeout errors so far, thanks again for all your help! 🙏🏿

@prasus thank you for confirming this!
closing the issue.

it seems the issue reappeared with v1.2.5, v1.3.2 livekit-server @davidzhao


TypeScriptModuleResolution 'node'  doesn't follow links in Visual Studio

I'm using typescript 1.7.4 in Visual Studio 2015. Because of our (MSBuild) build system I can not create an actual node_modules folder where my sources reside. Since Visual Studio supports linked files and folders I tried creating links like this:
  <ItemGroup>
    <Content Include="<some location>\node_modules\**\*.d.ts">
      <Link>node_modules\%(RecursiveDir)%(FileName)%(Extension)</Link>
    </Content>
  </ItemGroup>

This nicely links all the files I actually need to compile in my project. However, the typescript compiler doesn't understand these links and only works if I actually have those files physically available in the virtual location... How can I solve this without actually putting those files where my source files are?
Previously, before Angular2 switched entirely to this node-style resolution I was able to link to bundled d.ts files and put them in a virtual "typings" folder. This worked like a charm :)

I am not sure i see what links have to do with node module resolution. what is your configuration options? can you share a project?
Content files are ignored by the TS compiler, only TypeScriptCompile items are honored. also consider using a tsconfig.json with TS 1.8, see  https://github.com/Microsoft/TypeScript/wiki/What's-new-in-TypeScript#improved-support-for-tsconfigjson-in-visual-studio-2015 for more details.

Please reopen with more information.


Removed the use of zeroTangentVector from PinholeCamera

@dan-zheng I've manually implemented the zeroTangentVector functionality for the CameraCalibration object and Cal3_S2 which inherets it. I've run the suite of tests and it works well.
There is still one instance of zeroTangentVector that is being used in the codebase at https://github.com/borglab/SwiftFusion/blob/9eca609c10cdaeb19e34ca047363c183ddad7c3e/Sources/SwiftFusion/Core/LieGroup.swift#L170 that I've had some trouble replacing, but I'll work on it as well. All other uses in the codebase are not being used as Richard Wei mentioned in his issue.
Let me know your thoughts on the current implementation, as well as if you have suggestions on removing the LieGroup zeroTangentVector.

I'll go ahead and merge, assuming that tests pass and correctness is unaffected.

I'll go ahead and merge, assuming that tests pass and correctness is unaffected.

There is still one instance of zeroTangentVector that is being used in the codebase at
https://github.com/borglab/SwiftFusion/blob/9eca609c10cdaeb19e34ca047363c183ddad7c3e/Sources/SwiftFusion/Core/LieGroup.swift#L170
that I've had some trouble replacing, but I'll work on it as well. All other uses in the codebase are not being used as Richard Wei mentioned in his issue.

Thanks for mentioning this. Do you have ideas for fixing this remaining zeroTangentVector usage?
I think it should be possible by adding some conformance requirement on LieGroupCoordinate.LocalCoordinate (protocol requirement inherited from ManifoldCoordinate.LocalCoordinate) to a new protocol like DifferentiableHasInstanceZeroTangentVector (terrible name) defining var zeroTangentVector: TangentVector.
Pinging others in case they have time and see a better solution: @marcrasi @rxwei

There is still one instance of zeroTangentVector that is being used in the codebase at
https://github.com/borglab/SwiftFusion/blob/9eca609c10cdaeb19e34ca047363c183ddad7c3e/Sources/SwiftFusion/Core/LieGroup.swift#L170
that I've had some trouble replacing, but I'll work on it as well. All other uses in the codebase are not being used as Richard Wei mentioned in his issue.

Thanks for mentioning this. Do you have ideas for fixing this remaining zeroTangentVector usage?
I think it should be possible by adding some conformance requirement on LieGroupCoordinate.LocalCoordinate (protocol requirement inherited from ManifoldCoordinate.LocalCoordinate) to a new protocol like DifferentiableHasInstanceZeroTangentVector (terrible name) defining var zeroTangentVector: TangentVector.
Pinging others in case they have time and see a better solution: @marcrasi @rxwei

@dan-zheng I can work on this but it will take a few days given my current to-do list and the added complexity of changing zeroTangentVector for this object. Since this seems to be a blocker for another issue, if anyone has time to fix this in the shorter term I'd defer to them. I'll pick this back up on Sunday if it hasn't been solved by then.

@dan-zheng I can work on this but it will take a few days given my current to-do list and the added complexity of changing zeroTangentVector for this object. Since this seems to be a blocker for another issue, if anyone has time to fix this in the shorter term I'd defer to them. I'll pick this back up on Sunday if it hasn't been solved by then.

Thanks for the quick update Andrew! Unless anyone (@rxwei) has higher urgency, I think fixing the remaining zeroTangentVector usage whenever you have time sounds great.

Thanks for the quick update Andrew! Unless anyone (@rxwei) has higher urgency, I think fixing the remaining zeroTangentVector usage whenever you have time sounds great.


docker build of upstream.Dockerfile fails

docker image build with upstream.Dockerfile fails at https://github.com/k8s-operatorhub/community-operators/blob/03e9cad590cd15922aa4ed2a9a1c2d250741dbec/upstream.Dockerfile#L3
Should it be just COPY operators manifests instead of COPY upstream-community-operators manifests ?

Where are you using it? We just have it there to generate info in operatorhub.io web page


[BUG] IOU threshold does not change results.plot_pr_curve()

Instructions
Thank you for submitting an issue. Please refer to our issue policy for information on what types of issues we address.

Please fill in this template to ensure a timely and thorough response
Place an "x" between the brackets next to an option if it applies. For example:

[x] Selected option

Please delete everything above this line before submitting the issue

System information

OS Platform and Distribution (e.g., Linux Ubuntu 16.04): MACOS Ventura 13.4 (M1 & Linux Skylake)
Python version (python --version): 3.8.17
FiftyOne version (fiftyone --version): 0.22.0
FiftyOne installed from (pip or source):pip

Commands to reproduce
As thoroughly as possible, please provide the Python and/or shell commands used to encounter the issue. Application steps can be described in the next section.
dataset = fo.Dataset.from_dir(
    dataset_dir=dataset_name,
    dataset_type =fo.types.FiftyOneDataset,
)
view = dataset.filter_labels("predictions", F("confidence") > 0.1)
results = view.evaluate_detections(
            "predictions",
            gt_field=gt_field,
            compute_mAP=False,
            iou=0.95
        )
results.plot_pr_curves(classes=classes, )

Describe the problem
Changing the IOU, does not change the graph?
Code to reproduce issue
See above. Switch iou from 0.01 to 0.95 - no change
Other info/logs
Include any logs or source code that would be helpful to diagnose the problem. If including tracebacks, please include the full traceback. Large logs and files should be attached. Please do not use screenshots for sharing text. Code snippets should be used instead when providing tracebacks, logs, etc.
What areas of FiftyOne does this bug affect?

[ ] App: FiftyOne application issue
[x] Core: Core Python library issue
[ ] Server: FiftyOne server issue

Willingness to contribute
The FiftyOne Community encourages bug fix contributions. Would you or another member of your organization be willing to contribute a fix for this bug to the FiftyOne codebase?

[ ] Yes. I can contribute a fix for this bug independently
[ ] Yes. I would be willing to contribute a fix for this bug with guidance from the FiftyOne community
[x] No. I cannot contribute a bug fix at this time, genuinely sorry

Hi @hg6185 👋
The plot_pr_curves() method is only available when you pass compute_mAP=True to evaluate_detections(). And in that case, you can configure what IoU thresholds are used via the optional iou_threshs argument
By default, plot_pr_curves() plots curves averaged over all IoU thresholds, but you can choose a specific threshold by passing the iou_thresh argument:
import fiftyone as fo
import fiftyone.zoo as foz
from fiftyone import ViewField as F

dataset = foz.load_zoo_dataset("quickstart")

view = dataset.filter_labels("predictions", F("confidence") > 0.5)

iou_threshs = [0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95]

results = view.evaluate_detections(
    "predictions",
    gt_field="ground_truth",
    compute_mAP=True,
    iou_threshs=iou_threshs,
    classwise=False,  # allow matches between object classes
)

# By default, data is averaged over all IoUs
plot = results.plot_pr_curves()
plot.show()

# But you can plot curves for a specific one like this
plot = results.plot_pr_curves(iou_thresh=0.5)
plot.show()

Thank you for the example!
That's very niceee


can't save xml in ubuntu 14.04

My system is ubuntu 14.04.   I downloaded the prebuilt binaries, and run it  in terminal as root. but it can't save the xml. There are the tips:
@:~/Desktop/LabelImage/linux_v1.3.0$ sudo ./labelImg
Unable to update the static FcBlanks: 0x0600
Unable to update the static FcBlanks: 0x0601
Unable to update the static FcBlanks: 0x0602
Unable to update the static FcBlanks: 0x0603
Unable to update the static FcBlanks: 0x06dd
Unable to update the static FcBlanks: 0x070f
Unable to update the static FcBlanks: 0x2028
Unable to update the static FcBlanks: 0x2029
Unable to update the static FcBlanks: 0xfff9
Unable to update the static FcBlanks: 0xfffa
Unable to update the static FcBlanks: 0xfffb
Cancel creation.
Traceback (most recent call last):
File "labelImg/labelImg.py", line 1105, in saveFile
File "labelImg/labelImg.py", line 1126, in _saveFile
File "labelImg/labelImg.py", line 717, in saveLabels
UnicodeEncodeError: 'ascii' codec can't encode characters in position 72-75: ordinal not in range(128)
Traceback (most recent call last):
File "labelImg/labelImg.py", line 1105, in saveFile
File "labelImg/labelImg.py", line 1126, in _saveFile
File "labelImg/labelImg.py", line 717, in saveLabels

hello, Do you solve the problem?I meet the problem in ubuntu16.04,thanks

Fix in the latest version


Add CDI College

I am an instructor for the web and mobile development course at CDI college in Canada.
Website: https://www.cdicollege.ca/
Web and mobile development program: https://www.cdicollege.ca/study-online/programs-and-courses/technology/web-and-mobile-application-development/

@pesehr First stage of verification passed, official domain is cdicollege.ca as far as I verified. This is just an informational note. Pull request is still in the review. I appreciate your patience while waiting for the final decision.

@pesehr Pull request merged. Thank you.


Support M1 Mac

Test
curl -L https://raw.githubusercontent.com/ikuwow/dotfiles/master/bootstrap.sh | bash -s -- support-m1-mac

References
https://zenn.dev/ress/articles/069baf1c305523dfca3d
https://note.com/setomits/n/n7c1a72615dc2

Tapping homebrew/cask
Tapping homebrew/cask-versions
Tapping universal-ctags/universal-ctags
Tapping ikuwow/ikuwow-sshrc
Tapping domt4/autoupdate
Error: Cannot install in Homebrew on ARM processor in Intel default prefix (/usr/local)!
Please create a new installation in /opt/homebrew using one of the
"Alternative Installs" from:
  https://docs.brew.sh/Installation
You can migrate your previously installed formula list with:
  brew bundle dump
Installing mas has failed!
Error: Cannot install in Homebrew on ARM processor in Intel default prefix (/usr/local)!
Please create a new installation in /opt/homebrew using one of the
"Alternative Installs" from:
  https://docs.brew.sh/Installation
You can migrate your previously installed formula list with:
  brew bundle dump
Error: Unable to install 1Password 7 app. mas installation failed.

[...]

==> Tapping homebrew/bundle
Cloning into '/opt/homebrew/Library/Taps/homebrew/homebrew-bundle'...
remote: Enumerating objects: 26, done.
remote: Counting objects: 100% (26/26), done.
remote: Compressing objects: 100% (24/24), done.
remote: Total 5415 (delta 9), reused 8 (delta 1), pack-reused 5389
Receiving objects: 100% (5415/5415), 1.22 MiB | 872.00 KiB/s, done.
Resolving deltas: 100% (3166/3166), done.
Tapped 1 command (105 files, 1.6MB).

We do not provide support for this (yet).
Reinstall Homebrew under Rosetta 2 until we support it.
You will encounter build failures with some formulae.
Please create pull requests instead of asking for help on Homebrew's GitHub,
Twitter or any other official channels. You are responsible for resolving
any issues you experience while you are running this
unsupported configuration.

mas: A full installation of Xcode.app 10.2 is required to compile
this software. Installing just the Command Line Tools is not sufficient.

Xcode can be installed from the App Store.
Error: An unsatisfied requirement failed this build.
Installing mas has failed!

We do not provide support for this (yet).
Reinstall Homebrew under Rosetta 2 until we support it.
You will encounter build failures with some formulae.
Please create pull requests instead of asking for help on Homebrew's GitHub,
Twitter or any other official channels. You are responsible for resolving
any issues you experience while you are running this
unsupported configuration.

mas: A full installation of Xcode.app 10.2 is required to compile
this software. Installing just the Command Line Tools is not sufficient.

Xcode can be installed from the App Store.
Error: An unsatisfied requirement failed this build.
Error: Unable to install 1Password 7 app. mas installation failed.

2 failed brew formulae:
==> Caveats
intel-power-gadget requires a kernel extension to work.
If the installation fails, retry after you enable it in:
  System Preferences → Security & Privacy → General

For more information, refer to vendor documentation or this Apple Technical Note:
  https://developer.apple.com/library/content/technotes/tn2459/_index.html

==> Downloading https://software.intel.com/sites/landingpage/powergadget/updates/IntelPowerGadgetMac/b7b1b3e1dffd9b20/Intel%20Power%20Gadget.dmg
==> Installing Cask intel-power-gadget
==> Running installer for intel-power-gadget; your password may be necessary.
==> Package installers may write to any location; options such as --appdir are ignored.
installer: Error - Intel® Power Gadget only supports 2nd generation Intel® Core™ processors and later.
Error: Failure while executing; `/usr/bin/sudo -E -- /usr/bin/env LOGNAME=ikuwow USER=ikuwow USERNAME=ikuwow /usr/sbin/installer -pkg /usr/local/Caskroom/intel-power-gadget/3.7.0,b7b1b3e1dffd9b20/Install\ Intel\ Power\ Gadget.pkg -target /` exited with 1. Here's the output:
installer: Error - Intel® Power Gadget only supports 2nd generation Intel® Core™ processors and later.
==> Purging files for version 3.7.0,b7b1b3e1dffd9b20 of Cask intel-power-gadget
Installing intel-power-gadget has failed!
Installing vanilla
Installing jasper
Error: Cask 'java' is unavailable: No Cask with this name exists.
Installing java has failed!
Installing adoptopenjdk8
Installing zulu7
Installing java6
Installing WiFi Signal
Installing NextDNS
Installing Things3
Installing Dark Reader for Safari
Installing 1Blocker
Installing The Unarchiver
Installing Tweetbot
Installing Bear
Installing Numbers
Installing Keynote
Installing Pages
Installing Save to Pocket
Installing Day One
Installing Habitify
Installing Valentina Studio
Installing Spark
Installing New File Menu
Installing Kindle
Homebrew Bundle failed! 2 Brewfile dependencies failed to install.

Homebrew Bundle complete! 101 Brewfile dependencies now installed.

Requirement already satisfied: pip in /usr/local/lib/python3.9/site-packages (20.3.3)
Requirement already satisfied: neovim in /usr/local/lib/python3.9/site-packages (0.3.1)
Requirement already satisfied: pynvim>=0.3.1 in /usr/local/lib/python3.9/site-packages (from neovim) (0.4.2)
Requirement already satisfied: greenlet in /usr/local/lib/python3.9/site-packages (from pynvim>=0.3.1->neovim) (0.4.17)
Requirement already satisfied: msgpack>=0.5.0 in /usr/local/lib/python3.9/site-packages (from pynvim>=0.3.1->neovim) (1.0.2)
Requirement already satisfied: pynvim in /usr/local/lib/python3.9/site-packages (0.4.2)
Requirement already satisfied: msgpack>=0.5.0 in /usr/local/lib/python3.9/site-packages (from pynvim) (1.0.2)
Requirement already satisfied: greenlet in /usr/local/lib/python3.9/site-packages (from pynvim) (0.4.17)
scripts/initialize.sh: line 9: /usr/local/bin/pip2: No such file or directory

[...]

Using New File Menu
Using Kindle
Homebrew Bundle complete! 101 Brewfile dependencies now installed.

Requirement already satisfied: pip in /usr/local/lib/python3.9/site-packages (20.3.3)
Requirement already satisfied: neovim in /usr/local/lib/python3.9/site-packages (0.3.1)
Requirement already satisfied: pynvim>=0.3.1 in /usr/local/lib/python3.9/site-packages (from neovim) (0.4.2)
Requirement already satisfied: greenlet in /usr/local/lib/python3.9/site-packages (from pynvim>=0.3.1->neovim) (0.4.17)
Requirement already satisfied: msgpack>=0.5.0 in /usr/local/lib/python3.9/site-packages (from pynvim>=0.3.1->neovim) (1.0.2)
Requirement already satisfied: pynvim in /usr/local/lib/python3.9/site-packages (0.4.2)
Requirement already satisfied: msgpack>=0.5.0 in /usr/local/lib/python3.9/site-packages (from pynvim) (1.0.2)
Requirement already satisfied: greenlet in /usr/local/lib/python3.9/site-packages (from pynvim) (0.4.17)
Cloning into '/Users/ikuwow/.local/share/kyrat'...
remote: Enumerating objects: 326, done.
remote: Total 326 (delta 0), reused 0 (delta 0), pack-reused 326
Receiving objects: 100% (326/326), 95.95 KiB | 286.00 KiB/s, done.
Resolving deltas: 100% (118/118), done.

Configuring brew autoupdate...
Homebrew will now automatically update every 24 hours, or on system boot.
Bootstrapping DONE!

iTerm環境はデフォルトシェルを/usr/local/bin/bash (intel) にすることでintelの世界で生きる方針でfinish
localhost: ~$ uname -m
x86_64


UI improvements for dashboard

The following improvements would be a great help to using the dashboard:

[ ] When a commit doesn't have data, show that commit (just with no data). That way we can tell when we've stopped receiving data.

[ ] The benchmark history panel should be position: fixed; top: 0; left: 0; right: 0 (and when it's present, some padding should be added to the main body so that it doesn't overlap the top graphs). This would make going through lots of benchmarks adjusting them MUCH easier.

[ ] A placeholder for the benchmark history panel should survive when we're switching from one to another (so that we can completely stop the bouncing effect).

[ ] Show the goal/baseline as soon as the benchmark history panel is up, before downloading the data itself, so that that can be updated more quickly. (We're now taking literally multiple seconds to download the 100+KB of data for each benchmark when the graph is shown.) The goal/baseline should already be locally available.

[ ] When you click "Update", it should clear the server cache and update the local graph. (The local graph can be updated from the data that's already been downloaded, no need to actually fetch the whole page again from the server.)

[ ] Don't reload the whole page when updating the graphs, just download the new data and inline replace the graphs. The whole-page reload is making it hard to maintain one's place when updating lots of graphs.

Casey can you please take a look at this bug and update/close?

Additional feedback given from team members in October:

[ ] Better authentication UI
[ ] Readable text displayed over benchmark data
[ ] Trend lines
[ ] Enlarge a chart further
[ ] Check older records (more than now)
[ ] Notifications of when issues arise
[ ] Move the time window
[ ] Show commits that caused regressions
[ ] Link benchmarks to Github issues, tracking filed regressions made easier

I am unassigning so anyone can feel free to pick up rewriting the performance dashboard in Flutter.

Triage: closing since the recent improvements seem to have satisfy the requirements.


Set update_type to major in Publishing API tests

Trello card: https://trello.com/c/3S4m5wAJ
Motivation
The publishing-api is being changed to only allow the update_type to be set to major on first publication. The pact tests have been updated to reflect this.

I'd recommend not rolling this in with a release, as if other changes are merged in the mean time, the numbers and changelog might get a bit muddled. I'd keep the note in the changelog though.

@cbaines Ok, I can split the release bump into a separate PR.


hackmacro

Ready to submit your project? Nice job! Hopefully you've read the submission guidelines. If not, make sure to read them first.
If you're unsure about the format, make sure to check out the Orpheuspad example and follow the format there.
If this PR isn't a submission, that's okay too! If there's anything about this PR template that seems confusing, let me know in #hackpad on the slack!

Super neat stuff! Get your hackpad here: https://forms.hackclub.com/hackpad


Generic Type: return type from callback as T incorrect

TypeScript Version: 3.8.2
Code
function Test1<T>( msg, fn:(arg:T)=>void, fnTake:(any)=>T )
function Test1( msg, fn, fnTake ) {}

Test1( 'test', (arg) =>{ arg.ZZ }, m => { ZZ:123 } );
//                 Property 'ZZ' does not exist on type 'unknown'

Expected behavior:
expected it to use the return value from the second callback,
but it seems to point to an unknown type

Inference can only resolve these in left-to-right order.

@RyanCavanaugh okay... got it, thank you for explian 👍


Remove scheduling, catchup, and start-date from OCLC DAGs

Fixes #1419. Removed catchup and start-date because we will be doing manual DAG runs to catchup for past year in FOLIO and avoid exceeding OCLC API usage caps.

I'm almost certain you need to pass schedule=None or else it defaults to everyday at midnight UTC (at least that is what I noticed was happening with 25624de)

Done in the latest commit.


Maximum number of options for Single/Multiple answer Question type

Please write proper description of you issue.

Yes, we can keep maximum 10 options. Once the user has added 10 options, Add Options button will be hidden and a message will be shown that maximum 10 options can be added. Please coordinate with @viharsanghavi and @Krunal-Promact  on this.


[master] Upgrade to latest dependencies

Cron. -knative-prow-robot
/cc knative-sandbox/channel-wg-leads
/assign knative-sandbox/channel-wg-leads
Produced via:
./hack/update-deps.sh --upgrade --release v0.21
./hack/update-codegen.sh

Details:
bumping knative.dev/pkg 6040b3a...0d31134:
  > 0d31134 Fix nil pointer panic in kvstore (# 2002)
bumping knative.dev/eventing 81ce898...ea452b5:
  > ea452b5 go 1.15 in go.mod, drop k8s 1.17 e2e tests (# 4795)
  > ce099cf new cloudevent extension attribute with dispatch error (# 4760)
  > 83ecc7c Set failure policy to ignore for webhook (# 4793)
  > ae17ca3 Adding HPA for eventing-webhook (# 4792)
bumping knative.dev/reconciler-test c46f01f...28c3852:
  > 28c3852 DSL to perform assertions on eventshub store (# 62)
  > fa758f8 Update common github actions (# 75)
  > 57ec0b5 upgrade to latest dependencies (# 76)

/lgtm
/approve

/lgtm
/approve


Sending messages from web hooks on an load balacing setup

Hi,
Are there any recommendations or patterns for sending messages from an ASP.NET/IIS setup in a load balanced network that is using out of proc session state. Some of the implementations/deployments we have uses elasticity and hence runs on multiple nodes. If the processing happens "inproc" with no persistence, then the chance of ensuring guaranteed single-delivery is less. While storage model assumes subscriptions to be persisted, messages does not appear to be. Should this be handled externally or any recommendation/pattern exists?

I am working on making it possible to persist sending messages as well by adding an abstraction on the sender side. It's a bit on the backburner due to other urgencies but  I hope to have it out soon.

@HenrikFrystykNielsen, that's great to know. Looking forward for a drop to try it out.


remove authz grants from header

The RBAC authz grant model is changing from a string to an object to more accurately identify the authorization. Given that the grants are not currently used from the header, this adds significant unnecessary size.
Removing the grants from the header so that only permissions will now be included.

@jphorec @myang-figure @mtps FYI


docs: new schema values

There are merge conflicts above, these need to be resolved.
The below issue from the build and test output:
|** Mixed Case Duplicates: 2
|   "Ethyl tert-butyl ether", "Perfluoroheptanesulfonic Acid"
|** Subset value missing from allowed values: CharacteristicName "12-Chlorodehydroabietic Acid"
|** Subset value missing from allowed values: CharacteristicName "14-Chlorodehydroabietic Acid"
|** Subset value missing from allowed values: CharacteristicName "3-Pyridinecarboxamide, N-(2,4-difluorophenyl)-2-[3-(trifluoromethyl)phenoxy]-"
|** Subset value missing from allowed values: CharacteristicName "8(14)-Abietenic Acid"
|** Subset value missing from allowed values: CharacteristicName "9,10-Dichlorostearic acid"
|** Subset value missing from allowed values: CharacteristicName "cacodylic acid"
|** Subset value missing from allowed values: CharacteristicName "Chlorine, total residual"
|** Subset value missing from allowed values: CharacteristicName "Dehydroabietic Acid"
|** Subset value missing from allowed values: CharacteristicName "Diethylene Glycol"
|** Subset value missing from allowed values: CharacteristicName "Ethylene Glycol"
|** Subset value missing from allowed values: CharacteristicName "Fluazifop-p-butyl"
|** Subset value missing from allowed values: CharacteristicName "Hydrocarbons (C10-C19), Light petroleum"
|** Subset value missing from allowed values: CharacteristicName "Hydrocarbons (C19-C32), Heavy petroleum"
|** Subset value missing from allowed values: CharacteristicName "Hydrogen Peroxide"
|** Subset value missing from allowed values: CharacteristicName "Hydrogen Sulfide"
|** Subset value missing from allowed values: CharacteristicName "Isopimaric Acid"
|** Subset value missing from allowed values: CharacteristicName "Isopimaric Acid mixt. with Palustric Acid"
|** Subset value missing from allowed values: CharacteristicName "Lauric Acid"
|** Subset value missing from allowed values: CharacteristicName "Linoleic Acid"
|** Subset value missing from allowed values: CharacteristicName "m-chlorophenol"
|** Subset value missing from allowed values: CharacteristicName "Methylseleninic acid"
|** Subset value missing from allowed values: CharacteristicName "Neoabietic Acid"
|** Subset value missing from allowed values: CharacteristicName "Nitrogen-15/Nitrogen-14 ratio"
|** Subset value missing from allowed values: CharacteristicName "Oleic Acid"
|** Subset value missing from allowed values: CharacteristicName "p-Chlorophenol"
|** Subset value missing from allowed values: CharacteristicName "Palustric Acid"
|** Subset value missing from allowed values: CharacteristicName "Pimaric Acid"
|** Subset value missing from allowed values: CharacteristicName "Propylene Glycol"
|** Subset value missing from allowed values: CharacteristicName "Sandaracopimaric Acid"
|** Subset value missing from allowed values: CharacteristicName "Settleable Solids"
|** Subset value missing from allowed values: CharacteristicName "Stearic Acid"
|** Subset value missing from allowed values: CharacteristicName "Sulfur Delta 34"
|** Subset value missing from allowed values: CharacteristicName "Triphenyl Phosphate"
|-> Subtracting 334 items
ResultUnit
|** Exact Duplicates: 5
|   "#/day", "#/hr", "#/min", "Bq/L", "kPa"
|** Subset value missing from allowed values: ResultUnit "Bq/l"
|-> Subtracting 7 items
ResultValueType
|-> Subtracting 1 items
ResultDetectionCondition
ResultDetectionQuantitationLimitUnit
|** Exact Duplicates: 18
|   "#/day", "#/hr", "#/min", "1000m3/day", "Bq/L", "fibers/cm3", "kg/day", "kPa", "kPa", "m3/month", "m3/week", "m3/yr", "mg/dm2/month", "Mgal/day", "ML/day", "ug/dm2/day", "ug/dm2/month", "units/m"
|** Subset value missing from allowed values: ResultDetectionQuantitationLimitUnit "Bq/l"

Also I'm seeing:

flow units, are we doing those now?
Why do we need hours?
Is tons a duplicate of T.O.N?
You're using new time units > sec???

How long is a day, week, month -- which month? 84600 seconds, or longer to cover leap year & second?

What is /t in kg/t?
mho/cm? mho is deprecated for S (Siemens)

... This requested change need serious discussion.

flow units, are we doing those now? We have always had flow units (e.g. m3/sec, l/sec). There was an issue with the first pull of the bc ems data where it wasn't removing the media types we wanted to exclude. I will test now to see if the flow units have been removed now that the remover function is working in the etl.
Why do we need hours? See above about remover function. I'll test again to see if hours is removed now. Probably another flow-type variable.
Is tons a duplicate of T.O.N? T.O.N = threshold odour number
You're using new time units > sec??? sec is pretty consistently used in the WQX schema for seconds. already in our schema: m3/sec, l/sec, m/sec.
How long is a day, week, month -- which month? 84600 seconds, or longer to cover leap year & second? Good point. I'll see if these flow units are still needed and if so we can discuss.
What is /t in kg/t? tons. This is a WQX representation.
mho/cm? mho is deprecated for S (Siemens) Ok, can we document this in the repo somewhere so we know for future requests? Also, umho/cm is already in our schema and has been for awhile, since we began the subset list last year.

@willfarrell we made a mistake by making changes to a branch that didn't have the latest version of the schema. Will be re-submitting changes on a new branch.


Verify whether all MQ output protocol handles time zones correctly

Recently it has come to our attention that our Avro output does not handle correctly the situation where the --tz option used in TiCDC is different from the local time zone. We need to verify whether all our protocols can handle time zones correctly, and, if not, under what condition things will go wrong and whether there is any workaround.
Checklist

[ ] Open Protocol
[ ] Canal (Protobuf)
[x] Canal (JSON)
[ ] Maxwell
[x] Avro #1615

The Canal JSON protocol should not have this problem and is tested as follows:

start a tidb cluster
start a ticdc cluster
create a changefeed with canal json protocol
create an table：

create table if not exists test.table_name
(
	column_1 int not null,
	column_2 datetime null,
	column_3 timestamp null,
	constraint table_name_column_1_uindex
		unique (column_1)
);

alter table test.table_name
	add primary key (column_1);

insert 23,2021-11-01 17:43:24,2021-11-01 17:43:33
the kafka puput:

{"id":0,"database":"test","table":"table_name","pkNames":["column_1"],"isDdl":false,"type":"INSERT","es":1635759848635,"ts":0,"sql":"","sqlType":{"column_1":-5,"column_2":93,"column_3":93},"mysqlType":{"column_1":"int","column_2":"datetime","column_3":"timestamp"},"data":[{"column_1":"23","column_2":"2021-11-01 17:43:24","column_3":"2021-11-01 17:43:33"}],"old":[null]}

Technically we are generating the string directly, so if the user's upstream and kafka consumer programs handle the time zone correctly (keeping it consistent), then there is no problem.

@3AceShowHand Could you please take a look at this issue?


Install a integration package into a cluster on Elastic Cloud

I need to install a development version of an integration package into a cluster running on Elastic Cloud.

Reading https://github.com/elastic/elastic-package/blob/main/docs/howto/install_package.md

Build the package using elastic-package and copy the .zip file in a safe place:
elastic-package build

cp ../../build/packages/kubernetes-1.44.0.zip /somewhere/safe/

Set up the required environment variables:
export ELASTIC_PACKAGE_KIBANA_HOST="https://<URL>:9243"
export ELASTIC_PACKAGE_ELASTICSEARCH_USERNAME="elastic"
export ELASTIC_PACKAGE_ELASTICSEARCH_PASSWORD="<REDACTED>"

And finally, and Install the package in .zip file:
$ elastic-package install --zip kubernetes-1.44.0.zip -v
2023/09/05 15:20:57 DEBUG Enable verbose logging
2023/09/05 15:20:58 DEBUG GET https://<KIBANA_HOST>:9243/api/status
2023/09/05 15:20:58 DEBUG Validating built .zip package (path: kubernetes-1.44.0.zip)
2023/09/05 15:20:59 DEBUG Skip validation of the built .zip package
2023/09/05 15:20:59 DEBUG POST https://<KIBANA_HOST>:9243/api/fleet/epm/packages


Fix all problems with the upload button

This should fix #80.

This is embarrassing... I fixed #83 and discovered that the problem was a missing > in the html...

My fix broke multiple file upload. Working on that right now.

I think this is still better to merge than not.


pygments rest integration doesn't work

Context: web pages pushed into github as .rst files following the syntax proposed on the [sphinx site] (http://sphinx.pocoo.org/markup/code.html#code-examples).
For example the [installation-os-debian-6.0-squeeze.rst] (https://github.com/collective/zopeskel.unis/edit/master/docs/installation-os-debian-6.0-squeeze.rst) doesn't display any code block neither using code-block nor sourcecode as mentionned in the commit 2e866d0 for the issue #82.

Hi,
Do you have  this in your configuration?:
https://github.com/hyde/hyde/blob/2e866d0a3770a94992564c624e1d4f718991bb10/hyde/tests/test_jinja2template.py#L224-225

#site.yaml
restructuredtext:
    highlight_source: true

I may misunderstood something as github support drove me to the hyde project when I tried to understand why my rest files are defaced.
Nevertheless you mey support the code-block  and the highlight functions from pygments.


Add additional error logs from the root failure

when we fail to extract a schema decl (e.g. typealias, data, etc.) we propagate errors for any corresponding schema references (i.e. anywhere in the schema we find foo.Failed etc.). this produces errors like "unsupported request/response type" on referencing verbs
We should make it clear that the errors are all related, and highlight the "root" one
//ftl:typealias
type MyCoolRequest struct {
	Params  MyCoolParams
}

🦠


Search modal has area that is not clickable

@hongsudt commented on Tue Nov 01 2016
Choose one of the sop drop-down. When a search is poped up, I can click any column to choose the row except the procedure column (which is a markdown).  We should be able to click anywhere to choose, correct?
https://dev.gpcrconsortium.org/~chirag/chaise/recordedit/#1/experiments:sample

@jrchudy commented on Wed Nov 02 2016
This is caused by a div that is rendered as markdown. When that div is markdown, it has the event propagation applied to that div whether it has a link or not. We should move the $event.stopPropagation() click event to the  tag that is rendered in the markdown. This way it only stops propagation on  tags instead of all markdown tags.
We need to open an issue in ermrestJS for this.

@chiragsanghvi we think that this will involve some work in the markdown engine. Please take a look. However, please don't apply this change for the demo since we won't have time to do manual regression testing on all markdown we use.

This issue was fixed. @chiragsanghvi submitted a PR for chaise to handle this event in the table directive. Closing this issue.


protoc-gen-go: generated Equal method

Is your feature request related to a problem? Please describe.
Although https://godoc.org/google.golang.org/protobuf/testing/protocmp#Transform provides a custom handler for go-cmp, it has to be explicitly specified every time a comparison is performed
Describe the solution you'd like
It would be preferrable if no custom transformer was required to compare protobuf structs.
This can be achieved by implementing the Equal method in the generated code, which would be used by go-cmp automatically.
• Types that have an Equal method may use that method to determine equality. This allows package authors to determine the equality operation for the types that they define.

Describe alternatives you've considered
I've also suggested that go-cmp allow global options https://github.com/google/go-cmp/issues/241
Additional context
n/a

As with almost all other proposals to generate some helper method, the main concerns are binary bloat and increased API surface for generated code.

Putting the question of extra generated code to one side for a moment.
Is there a recommended way to compare protobuf types for value-equality?

In production code, using proto.Equal is recommended for its speed.
In test code, using cmp is recommended with cmp.Comparer(proto.Equal) or protocmp.Transform for its flexibility.

Because go makes no requirement for all methods on a type to be defined in the same file, one can always extend a generated message type with hand-written files in the same package defining any additional methods if you need them.  In this case, because such a method can just delegate to proto.Equal it's not like it's there's a huge maintenance burden associated with doing that.  That said, if you need to do it for a large or changing set of message types it could become more troublesome without support from the generator.

Because go makes no requirement for all methods on a type to be defined in the same file, one can always extend a generated message type with hand-written files in the same package defining any additional methods if you need them.  In this case, because such a method can just delegate to proto.Equal it's not like it's there's a huge maintenance burden associated with doing that.  That said, if you need to do it for a large or changing set of message types it could become more troublesome without support from the generator.

I wrote protoc-gen-go-equal to generate Equal messages for different project. Maybe it will fit you too.


what do you mean with "reference"?

What is the first paramater called 'reference'? What is it used for? Could you possibly explain that please?

This input is the origin and used as outlined below:Convert a given WGS84 position to a Cartesian position using a given WGS84 reference position with Mercator projection: std::array<double, 2> cartesianPosition = wgs84::toCartesian({52.247041, 10.575830} /* reference position /, {52.248091, 10.57417} / position to be converted /));On 26 Jun 2023, at 09:58, Magallo @.**> wrote:
What is the first paramater called 'reference'? What is it used for? Could you possibly explain that please?
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you are subscribed to this thread.Message ID: @.***>

I continue not to understand. What an origin is used for? I expected only one coordinate in WGS84 as input.


Support disabling compression for SSTable based dictionaries

Is your feature request related to a problem? Please describe.
We have a setup where we use a bytes fast field to store serialized data.  As part of querying a collector retrieves this data via BytesCollumn::ord_to_bytes.  We are seeing limited performance that flame graphs show as being dominated (>90%) by this path:
tantivy_sstable::dictionary::Dictionary<TSSTable>::ord_to_term
tantivy_sstable::delta::DeltaReader<TValueReader>::advance
tantivy_sstable::block_reader::BlockReader::read_block
zstd::bulk::decompressor::Decompressor::decompress_to_buffer

From a quick look at the code it appears that random access to the fast field requires decompressing the block holding the term on each ord lookup, which is why the CPU is dominated with decompression activity.  As the number of documents being collected increases the efficiency can drop quickly as the same block is decompressed again and again.
Describe the solution you'd like
Ideally there would be a setting that would disable SSTable compression for a given fast field where the caller is willing to pay for more space to get faster random access time. This could be the default for dictionaries built as part of fast fields where fast random access is the desired outcome but an opt-in would also work.
[Optional] describe alternatives you've considered
We experimented with walking the entire dictionary to only decompress a given block once, but there are simply too many unique terms to make this faster.  Even with range limits on the dictionary stream this is slower than the random access today.
We also considered storing this field and using the doc store where we can control the compression via index settings, but we need the fast field for some range filtering so we're hoping to avoid duplicate storage and the overhead of retrieving the entire document.
Lastly, one final alternative that may help is caching blocks, like what the StoreReader does.  With a fake test where the only field stored is the single BytesColumn we found that going through the store reader was 3x faster than the fast field column, largely because of the cache reducing the amount of decompression needed.

One other option that may help is zstd's skippable frames which could also be used to speed up random access at the cost of (presumably) a worse compression ratio.

sstable block codec already has an 8bit field encoding whether a block is compressed, so it should be a matter of passing a bool to DeltaWriter, and modifying this heuristic. We could also experiment with negative compression level here, this would disable zstd's entropy coding, which likely improve decompression speed, at the cost of less compression


Degenerative disease is wrong

Everything under degenerative disease is not a disease but a feature or a process
http://purl.obolibrary.org/obo/MONDO_0024236

@nicolevasilevsky

Nicole, can you review these? I tackled some in the previous release. Also coordinate with NCIT as they have a similar grouping

Currently, all the children of degenerative disease look okay to me, with the exception of MONDO_0006044 nephrosclerosis- I just removed the superclass from that term in a PR.
Otherwise, I think everything looks okay? @ahamosh would you mind checking?

Hi @nicolevasilevsky, if you want @ahamosh to evaluate do you want to include a screenshot or some kind of table file dump?

@ahamosh you can see the children of degenerative disorder here: https://www.ebi.ac.uk/ols/ontologies/mondo/terms?iri=http%3A%2F%2Fpurl.obolibrary.org%2Fobo%2FMONDO_0024236
Note, I removed nephrosclerosis from this branch.

I think all the direct children of degenerative disorder look okay. Looking more closely at some of the children, these terms may be incorrectly classified as children of neurodegenerative disease:

MONDO_0006497 'cerebral palsy'
MONDO_0009196 'ermine phenotype'

Can you go ahead and make a PR to fix these. Also look at the axiom annotations to determine why the classification was made and report to upstream sources. I did this with the first, see: https://github.com/NCI-Thesaurus/thesaurus-obo-edition/issues/45

Ada sent me an email and said:
"I don't think that degenerative disease is useful.  I agree that what you removed is completely wrong, but atrophy is really degenerative, at least in my mind..."

happy to lose it (but keep more specific classes like ND disease)

Ok - I am going to create PRs to remove the superclass assertions for MONDO_0006497 'cerebral palsy' and MONDO_0009196 'ermine phenotype', and will obsolete the term MONDO_0024236 'degenerative disorder'.

Thanks for removing the incorrect assertions
Re: obsoletions, we should poll a wider group of people, it's not necessarily wrong, one option would be just to exclude it from a core slim

@zoependlington @paolaroncaglia
do you have any objections to obsoleting 'degenerative disorder'? I don think it would be replaced by anything else, just obsoleted.

I think we have to look at the subclasses as well - the PR has some issues as it loses logical axiomatization for subclasses, but many of the subclasses look like they should be phenotypes