[Unexpected error] Could not initialize keyring

Task List

[ ] Steps to reproduce provided
[ ] Stacktrace (if present) provided
[ ] Example that reproduces the problem (link to git repository is ideal)
[ ] Full description of the issue provided (see below)

Steps to Reproduce

check out https://github.com/alttpj/emu2api/
run jreleaser full-release

Expected Behaviour
release
Actual Behaviour
✔ ~/git/alttpj/emu2api [main|✔]
09:02 $ jreleaser full-release
[INFO]  JReleaser 0.3.0
[INFO]  Configuring with jreleaser.yml
[INFO]    - basedir set to /home/user/git/alttpj/emu2api
[INFO]  Reading configuration
[INFO]  Loading properties from /home/user/.jreleaser/config.properties
[INFO]  Validating configuration
[INFO]  Project version set to 1.0.0-SNAPSHOT
[INFO]  Release is snapshot
[INFO]  Timestamp is 2021-05-10T09:02:19.79443+02:00
[INFO]  HEAD is at 450e3fe
[INFO]  dryrun set to false
[INFO]  Generating changelog: out/jreleaser/release/CHANGELOG.md
[INFO]  Calculating checksums
[INFO]  Signing files
[INFO]  Writing output properties to out/jreleaser/output.properties
[ERROR] JReleaser failed after 0.258 s
Unexpected error when signing release.
Could not initialize keyring

Trace
[ERROR] JReleaser failed after 0.271 s
org.jreleaser.model.JReleaserException: Unexpected error when signing release.
        at org.jreleaser.workflow.SignWorkflowItem.invoke(SignWorkflowItem.java:35)
        at org.jreleaser.workflow.WorkflowImpl.execute(WorkflowImpl.java:51)
        at org.jreleaser.cli.Sign.doExecute(Sign.java:34)
        at org.jreleaser.cli.AbstractModelCommand.execute(AbstractModelCommand.java:64)
        at org.jreleaser.cli.AbstractCommand.call(AbstractCommand.java:72)
        at org.jreleaser.cli.AbstractModelCommand.call(AbstractModelCommand.java:38)
        at org.jreleaser.cli.AbstractCommand.call(AbstractCommand.java:37)
        at picocli.CommandLine.executeUserObject(CommandLine.java:1953)
        at picocli.CommandLine.access$1300(CommandLine.java:145)
        at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2352)
        at picocli.CommandLine$RunLast.handle(CommandLine.java:2346)
        at picocli.CommandLine$RunLast.handle(CommandLine.java:2311)
        at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2179)
        at picocli.CommandLine.execute(CommandLine.java:2078)
        at org.jreleaser.cli.Main.execute(Main.java:73)
        at org.jreleaser.cli.Main.run(Main.java:59)
        at org.jreleaser.cli.Main.main(Main.java:51)
Caused by: org.jreleaser.util.signing.SigningException: Could not initialize keyring
        at org.jreleaser.engine.sign.Signer.createInMemoryKeyring(Signer.java:118)
        at org.jreleaser.engine.sign.Signer.sign(Signer.java:83)
        at org.jreleaser.workflow.SignWorkflowItem.invoke(SignWorkflowItem.java:33)
        ... 16 more
Caused by: java.io.IOException: public key ring doesn't start with public key tag: tag 0xffffffff
        at org.bouncycastle.openpgp.PGPPublicKeyRing.<init>(Unknown Source)
        at org.jreleaser.util.signing.InMemoryKeyring.addPublicKey(InMemoryKeyring.java:58)
        at org.jreleaser.engine.sign.Signer.createInMemoryKeyring(Signer.java:114)
        ... 18 more

Environment Information

Operating System: Ubuntu 20.04
JReleaser Version: 0.3.0
JDK Version:
tried both:

openjdk version "11.0.11" 2021-04-20
OpenJDK Runtime Environment AdoptOpenJDK-11.0.11+9 (build 11.0.11+9)
OpenJDK 64-Bit Server VM AdoptOpenJDK-11.0.11+9 (build 11.0.11+9, mixed mode)
# and
openjdk version "11.0.11" 2021-04-20
OpenJDK Runtime Environment AdoptOpenJDK-11.0.11+9 (build 11.0.11+9)
Eclipse OpenJ9 VM AdoptOpenJDK-11.0.11+9 (build openj9-0.26.0, JRE 11 Linux amd64-64-Bit Compressed References 20210421_975 (JIT enabled, AOT enabled)
OpenJ9   - b4cc246d9
OMR      - 162e6f729
JCL      - 7796c80419 based on jdk-11.0.11+9)

Shouldn't this be testeable via the maven-invoker-plugin and a generated gpg key?

Yes, it would. But I'll need a key that does not work. Have to figure out the conditions that made yours to replicate a similar key.

I have a similar issue.
After setting JRELEASER_GPG_SECRET_KEY and JRELEASER_GPG_PUBLIC_KEY in my config.properties,
When trying to release I get the same error:
[INFO] Signing files
[INFO] Writing output properties to target\jreleaser\output.properties
[ERROR] JReleaser failed after 0.190 s
...
Could not initialize keyring: public key ring doesn't start with public key tag: tag 0xffffffff

I'm working on a maven project.
To get around this error,
I've copied the content of both keys to the signing.publicKey and signing.secretKey in my pom.xml respectively.
Now it seems that the keys content gets picked up correctly.
It worth mentioning that JRELEASER_GITHUB_TOKEN and JRELEASER_GPG_PASSPHRASE are only set in my config.properties,
while  JRELEASER_GPG_SECRET_KEY and JRELEASER_GPG_PUBLIC_KEY are also set as pom.xml configuration elements.
So I both configurations get picked up,
and maven's elements override the global configruation.
I am now getting a different error though:
[INFO]  Signing files
[INFO]   [sign] target\distributions\app\jreleaser-playground-0.1.0-SNAPSHOT.jar
[INFO]   [sign] target\jreleaser\checksums\checksums.txt
[INFO] Uploading is not enabled. Skipping.
[INFO] Releasing to https://github.com/tomerfi/jreleaser-playground
[INFO] Writing output properties to target\jreleaser\output.properties
[ERROR] JReleaser failed after 2.028 s
...
java.io.IOException: Could not create tag early-access: Signing service is not available

It seems like the signing was successful,
so maybe there is an issue with long multiline strings inside a .properties file.

I've setup locally using both environment variables and ~/.jreleaser/config.toml as the latter has better support for multi-line strings. The other format that supports multi-line is YAML. There are two additional options: JSON and properties however they require special handling of multi-line strings, for example:
JRELEASER_GPG_SECRET_KEY=-----BEGIN PGP PUBLIC KEY BLOCK-----\
\
abc...\

Basically each line must escape the break line. I don't think this would make it work 100% though. For JSON you must us ea single line like this
{
  "JRELEASER_GPG_SECRET_KEY": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nabc..."
}

Works but it may be hard for edits. For this reason a new mode for dealing with PGP keys has been added #143

I'm working on a maven project.
To get around this error,
I've copied the content of both keys to the signing.publicKey and signing.secretKey in my pom.xml respectively.

This is OK as a temporary workaround but it's certainly not recommended as it puts the keys in clear text. Could you do me a favor and post the stacktrace found at target/jreleaser/trace.log? Please edit out any private information that may be found.

Definitely just a temporary workaround.
It's a private "playground" repo I'm using to figure out how to start using jreleaser for my other projects.
BTW, Thank you very much @aalmiray, for this amazing tool, it really looks and feels great.
I'll post the trace.log next.

As I'm working on a "playground" project,
I didn't found any risky private information in the trace.log,
So I'll just paste the whole content.
I'll sum up the scenarios as well:

Scenario 1
I have the following keys set in my ~/.jreleaser/config.properties:

JRELEASER_GITHUB_TOKEN
JRELEASER_GPG_PUBLIC_KEY
JRELEASER_GPG_SECRET_KEY
JRELEASER_GPG_PASSPHRASE

And I'm executing:
mvn clean package jreleaser:release

The process fails while trying to sign the files and the error message states:
Unexpected error when signing release.: Could not initialize keyring: public key ring doesn't start with public key tag: tag 0xffffffff

The full trace.log content for this scenario can be found here here (pastebin).

Scenario 2
I've added the following elements to my pom.xml on top and with the same exact content of their config.properties counterparts:

jreleaser.signing.publicKey
jreleaser.signing.secretKey

Again, I'm executing:
mvn clean package jreleaser:release

The process successfully signs the files but fails when trying to create the release,
The error message states a failure while trying to tag the repository:
Unexpected error when creating release.: java.io.IOException: Could not create tag early-access: Signing service is not available

The full trace.log content for this scenario can be found here here (pastebin).

Scenario 3

I've reverted my pom.xml to not contain the signing elements so it will be picked up from my global configuration.
I've converted my config.properties global configuration file to a config.yml file with the following content:

release:
  github:
    token: <reducted>

signing:
  publicKey: |
    -----BEGIN PGP PUBLIC KEY BLOCK-----

    <reducted>
    -----END PGP PUBLIC KEY BLOCK-----

  secretKey: |
    -----BEGIN PGP PRIVATE KEY BLOCK-----

    <reducted>
    -----END PGP PRIVATE KEY BLOCK-----

  passphrase: <reducted>

Now the error message states that the required keys (github.token, signing.secretKey, etc.) are not found at all.
By the looks of the trace.log, it would seem the config.yml file is not getting picked up.
The full trace.log content for this scenario can be found here here (pastebin).
On a side note,
I think there is a typo in the code part that validates the configuration required,
I think that the literal: signing.secretKey must not be blank. outputs for both secretKey and passphrase.

Scenario 4
I've converted my config.yml configuration file to a config.toml file with the following content:
[release]
[release.github]
token = "<reducted>"

[signing]
publicKey = '''
-----BEGIN PGP PUBLIC KEY BLOCK-----

<reducted>
-----END PGP PUBLIC KEY BLOCK-----'''

secretKey = '''
-----BEGIN PGP PRIVATE KEY BLOCK-----

<reducted>
-----END PGP PRIVATE KEY BLOCK-----'''

passphrase = "<reducted>"

It would seem that the config.toml doesn't get picked up as well.
The full trace.log content for this scenario can be found here (pastebin).

@TomerFi thank you for the detailed report, they will be very useful to find a solution. FWIW scenarios 3 & 4 need a slight fix. The config.* files must define key/values without any structure or nesting elements, thus for scenario 3 you'll have t switch config.yml to
JRELEASER_GITHUB_TOKEN: <redacted>

JRELEASER_GPG_PUBLICKEY: |
    -----BEGIN PGP PUBLIC KEY BLOCK-----

    <redacted>
    -----END PGP PUBLIC KEY BLOCK-----

JRELEASER_GPG_SECRET_KEY: |
    -----BEGIN PGP PRIVATE KEY BLOCK-----

    <redacted>
    -----END PGP PRIVATE KEY BLOCK-----

JRELEASER_GPG_PASSPHRASE: <redacted>

And for scenario 4 the config.toml file should look like
JRELEASER_GITHUB_TOKEN="<redacted>"

JRELEASER_GPG_PUBLICKEY="""-----BEGIN PGP PUBLIC KEY BLOCK-----

<redacted>
-----END PGP PUBLIC KEY BLOCK-----"""

JRELEASER_GPG_SECRET_KE="""-----BEGIN PGP PRIVATE KEY BLOCK-----

<redacted>
-----END PGP PRIVATE KEY BLOCK-----"""

JRELEASER_GPG_PASSPHRASE="<redacted>"

@aalmiray
Ohh I'm sorry, I don't know why I automatically assumed the file structures.
Nevertheless, that's weird...
I've flattened both my toml and yml file to look exactly like the examples you supplied,
and still, it doesn't look like they're getting picked up.
[INFO]  Loading properties from C:\Users\tomer\.jreleaser\config.properties
[WARN]  Properties source C:\Users\tomer\.jreleaser\config.properties does not exist
[INFO]  Validating configuration
[DEBUG] adjusting distributions with assemblies
[DEBUG]   [validation] project
...
[DEBUG]   [validation] project
[ERROR] == JReleaser ==
[ERROR] github.token must not be blank. Alternatively define a JRELEASER_GITHUB_TOKEN environment variable.
[ERROR] signing.secretKey must not be blank. Alternatively define a JRELEASER_GPG_PASSPHRASE environment variable.
[ERROR] signing.publicKey must not be blank. Alternatively define a JRELEASER_GPG_PUBLIC_KEY environment variable.
[ERROR] signing.secretKey must not be blank. Alternatively define a JRELEASER_GPG_SECRET_KEY environment variable.
[ERROR] github.token must not be blank. Alternatively define a JRELEASER_GITHUB_TOKEN environment variable.

It may be the case that the config files are not in the expected location, which is shown at the beginning of the trace log
Properties source C:\Users\tomer\.jreleaser\config.properties does not exist

The config files must be placed at %JRELEASER_HOME% which defaults to %USER_HOME%\.jreleaser, in your case it should be C:\Users\tomer\.jreleaser\.

Hmm...
I'm sorry, I'm not sure I'm following this correctly.
C:\Users\tomer\.jreleaser\
Is where the configuration files are stored.

But when (in the same path) I'm replacing it with a config.yml or a config.toml files,
The file doesn't get picked up.
Is there a different path to save the yml/toml files?

Ah I see. I think this is due to precedence order that I may have forgotten to make explicit in the documentation. .properties is the preferred format and will be picked up first of found. If that's the case then the other formats will be completely ignored, as the assumption is that there's a config.[ext] file. That is, multiple config.[ext] won't be merged.
I'd suggest sticking with either config.yml or config.toml and remove config.properties. I'll make sure the docs make this situation clearer.

Yeah, I figured that much. :-)
I always kept just one file present for my various scenarios.
Even when I have only one file present,
It gets picked up only if its a .properties file,
My .yml and my .toml files are ignored even though for each attempt I had only one of them present on C:\Users\tomer\.jreleaser\ path.

Indeed. I can see that in the trace logs for scenarios 3 & 4. It's always config.properties. This might be an issue on Windows as I do have it working on OSX. Likely related Paths are handled though nothing pops immediately
https://github.com/jreleaser/jreleaser/blob/main/core/jreleaser-model/src/main/java/org/jreleaser/model/Environment.java#L96-L149

Hmm...
That's weird.
I'm trying to accomplish the same using docker to simulate a non-windows environment with the following command:
docker run --rm -i -v ${PWD}:/usr/src/mymaven -v ${HOME}/.m2:/root/.m2 -v ${HOME}/.jreleaser:/root/.jreleaser -w /usr/src/mymaven maven:3.8.1-openjdk-16 mvn clean package jreleaser:release

Oddly, I get a similar error, with a path this time, as expected, a unix-like path inside the container:
[WARNING] Properties source /root/.jreleaser/config.properties does not exist

Maybe it has something to do with the fact I'm using the maven plugin.
I'll extract the configuration from my pom.xml to a jreleaser.yml and try to accomplish the same tasks using the jbang deployment and return here.

Ok.
We're making progress here.
I've converted the maven configuration to a jreleaser.yml created with the init command:
project:
  name: app
  version: 1.0.0-SNAPSHOT
  description: Awesome App
  java:
    groupId: com.example
    version: 16
    mainClass: com.example.App

release:
  github:
    owner: tomerfi
    overwrite: true

distributions:
  app:
    artifacts:
      - path: target\distributions\app\jreleaser-playground-0.1.0-SNAPSHOT.jar

signing:
  active: ALWAYS

I've executed using:
jbang jreleaser@jreleaser release

In the trace.log file, you can see that the yml configuration does infact gets picked:
[INFO]  Loading properties from C:\Users\tomer\.jreleaser\config.yml

And the files get signed successfully:
[INFO]  Signing files
[INFO]    [sign] target\distributions\app\jreleaser-playground-0.1.0-SNAPSHOT.jar
[INFO]    [sign] out\jreleaser\checksums\checksums.txt

So I can explicitly say the when using the maven plugin,
Configuration files in formats other than properties (tested with yml and toml) aren't getting picked up by jreleaser.
While using jbang the yml file type gets picked up successfully.
I encountered another exception though,
But I'll address this in the next comment to keep this one on-point.

@TomerFi Thanks for the follow up. I can confirm that using the Maven plugin does not pick up config.yml nor config.toml.
https://github.com/jreleaser/jreleaser/issues/145

Thank you! :-)
Now, as the config.yml gets picked up,
I am able to set my gpg info in it, my files are signed, and all is good in the world again.
But I now get the same exception mentioned in https://github.com/jreleaser/jreleaser/issues/136#issuecomment-840406526 in scenario 2.
An IOException is thrown:
[INFO]  Releasing to https://github.com/tomerfi/jreleaser-playground
[INFO]  Writing output properties to out\jreleaser\output.properties
[ERROR] JReleaser failed after 2.326 s
Unexpected error when creating release.
java.io.IOException: Could not create tag early-access

The full trace.log content for this scenario can be found here (pastebin).
I can open another issue if it is no longer related to this one.
My initial thought was that there might be something missing with github's token permission.
But according to the trace.log file, the exception is thrown while attempting the tag the local repository.

Yup, this seems to be a different error. Setting release.github.signing = 'never' as a workaround will let you continue for the time being. Could you file a ticket for this one? Thank you!

FWIW @bmarwell I think #145 fixes the problem you have. the only way to be sure is if you were to build a local SNAPSHOT and test it

git clone https://github.com/jreleaser/jreleaser.git
cd jreleaser
./gradlew publishToMavenLocal
configure version 0.4.0-SNAPSHOT in your pom.xml

Java 11 is required for building JReleaser.

Will do.
Thank you very much!
:-)

FWIW @bmarwell I think #145 fixes the problem you have. the only way to be sure is if you were to build a local SNAPSHOT and test it

git clone https://github.com/jreleaser/jreleaser.git
cd jreleaser
./gradlew publishToMavenLocal
configure version 0.4.0-SNAPSHOT in your pom.xml

Java 11 is required for building JReleaser.

The config.toml was always picked up, running into the same error:
$ java -jar $HOME/git/jreleaser/apps/jreleaser-tool-provider/build/libs/jreleaser-tool-provider-0.4.0-SNAPSHOT.jar full-release -y --debug
[INFO]  Project version set to 1.0.0-SNAPSHOT
[INFO]  Release is snapshot
[INFO]  Timestamp is 2021-05-13T21:06:57.304147685+02:00
[INFO]  HEAD is at 7a20fe9
[INFO]  dryrun set to true
[DEBUG] resolving commits
[DEBUG] looking for tag that matches 'early-access'
[DEBUG] found tag early-access
[DEBUG] sorting commits DESC
[INFO]  Generating changelog: out/jreleaser/release/CHANGELOG.md
[DEBUG] ## Changelog

7a20fe9 add jreleaser config.
6704f9f disable signing for now.
[INFO]  Calculating checksums
[DEBUG]   [checksum] reading out/jreleaser/checksums/emu2api-server-meecrowave/emu2api-server-meecrowave-1.0.0-SNAPSHOT-app.zip.sha256
[INFO]  Signing files
[INFO]  Writing output properties to out/jreleaser/output.properties
[ERROR] JReleaser failed after 0.111 s
Unexpected error when signing release.
Could not initialize keyring

Trace-log:
[INFO]  Signing files
[INFO]  Writing output properties to out/jreleaser/output.properties
[ERROR] JReleaser failed after 0.111 s
jreleaser.shadow.org.jreleaser.model.JReleaserException: Unexpected error when signing release.
        at jreleaser.shadow.org.jreleaser.workflow.SignWorkflowItem.invoke(SignWorkflowItem.java:35)
        at jreleaser.shadow.org.jreleaser.workflow.WorkflowImpl.execute(WorkflowImpl.java:51)
        at jreleaser.shadow.org.jreleaser.cli.FullRelease.doExecute(FullRelease.java:38)
        at jreleaser.shadow.org.jreleaser.cli.AbstractModelCommand.execute(AbstractModelCommand.java:64)
        at jreleaser.shadow.org.jreleaser.cli.AbstractCommand.call(AbstractCommand.java:72)
        at jreleaser.shadow.org.jreleaser.cli.AbstractModelCommand.call(AbstractModelCommand.java:38)
        at jreleaser.shadow.org.jreleaser.cli.AbstractCommand.call(AbstractCommand.java:37)
        at jreleaser.shadow.picocli.CommandLine.executeUserObject(CommandLine.java:1953)
        at jreleaser.shadow.picocli.CommandLine.access$1300(CommandLine.java:145)
        at jreleaser.shadow.picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2352)
        at jreleaser.shadow.picocli.CommandLine$RunLast.handle(CommandLine.java:2346)
        at jreleaser.shadow.picocli.CommandLine$RunLast.handle(CommandLine.java:2311)
        at jreleaser.shadow.picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2179)
        at jreleaser.shadow.picocli.CommandLine.execute(CommandLine.java:2078)
        at jreleaser.shadow.org.jreleaser.cli.Main.execute(Main.java:73)
        at jreleaser.shadow.org.jreleaser.cli.Main.run(Main.java:69)
        at org.jreleaser.tool.JReleaser.main(JReleaser.java:45)
Caused by: jreleaser.shadow.org.jreleaser.util.signing.SigningException: Could not initialize keyring
        at jreleaser.shadow.org.jreleaser.model.JReleaserContext.createKeyring(JReleaserContext.java:354)
        at jreleaser.shadow.org.jreleaser.engine.sign.Signer.sign(Signer.java:83)
        at jreleaser.shadow.org.jreleaser.workflow.SignWorkflowItem.invoke(SignWorkflowItem.java:33)
        ... 16 more
Caused by: java.io.IOException: public key ring doesn't start with public key tag: tag 0xffffffff
        at jreleaser.shadow.org.bouncycastle.openpgp.PGPPublicKeyRing.<init>(Unknown Source)
        at jreleaser.shadow.org.jreleaser.util.signing.Keyring.addPublicKey(Keyring.java:72)
        at jreleaser.shadow.org.jreleaser.util.signing.Keyring.initialize(Keyring.java:55)
        at jreleaser.shadow.org.jreleaser.model.JReleaserContext.createKeyring(JReleaserContext.java:352)
        ... 18 more

FWIW if the exported keys are not armored then I get
[ERROR] JReleaser failed after 0.199 s
org.jreleaser.model.JReleaserException: Unexpected error when signing release.
	at org.jreleaser.workflow.SignWorkflowItem.invoke(SignWorkflowItem.java:35)
	at org.jreleaser.workflow.WorkflowImpl.execute(WorkflowImpl.java:51)
	at org.jreleaser.cli.Sign.doExecute(Sign.java:34)
	at org.jreleaser.cli.AbstractModelCommand.execute(AbstractModelCommand.java:64)
	at org.jreleaser.cli.AbstractCommand.call(AbstractCommand.java:72)
	at org.jreleaser.cli.AbstractModelCommand.call(AbstractModelCommand.java:38)
	at org.jreleaser.cli.AbstractCommand.call(AbstractCommand.java:37)
	at picocli.CommandLine.executeUserObject(CommandLine.java:1953)
	at picocli.CommandLine.access$1300(CommandLine.java:145)
	at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2352)
	at picocli.CommandLine$RunLast.handle(CommandLine.java:2346)
	at picocli.CommandLine$RunLast.handle(CommandLine.java:2311)
	at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2179)
	at picocli.CommandLine.execute(CommandLine.java:2078)
	at org.jreleaser.cli.Main.execute(Main.java:73)
	at org.jreleaser.cli.Main.run(Main.java:59)
	at org.jreleaser.cli.Main.main(Main.java:51)
Caused by: org.jreleaser.util.signing.SigningException: Could not initialize keyring
	at org.jreleaser.model.JReleaserContext.createKeyring(JReleaserContext.java:354)
	at org.jreleaser.engine.sign.Signer.sign(Signer.java:83)
	at org.jreleaser.workflow.SignWorkflowItem.invoke(SignWorkflowItem.java:33)
	... 16 more
Caused by: java.io.IOException: secret key ring doesn't start with secret key tag: tag 0x6
	at org.bouncycastle.openpgp.PGPSecretKeyRing.<init>(Unknown Source)
	at org.jreleaser.util.signing.Keyring.addSecretKey(Keyring.java:78)
	at org.jreleaser.util.signing.Keyring.initialize(Keyring.java:56)
	at org.jreleaser.model.JReleaserContext.createKeyring(JReleaserContext.java:346)

Alright, I think I've got it. Judging by your setup I see that armored: is not specified, in which case it's set to false  however the Keyring attempted to decode the key anyway instead of reading the value as is.
If the keys were exported as ASCII armored then you must set armored: true. If not then JReleaser will now read the keys "as is" without decoding from armored.

then you must set armored: true

Ah, I see. I just wonder: this would go into the project's jreleaser config, while the keys are going into the user's config. Imagine one project would handle unarmored keys, the other one handles armored keys. Then the user constantly had to switch his keys in his $HOME/.jreleaser/jreleaser.conf.
The setting armored: true|false should rather sit next to the keys in the user config (or via env var).

OK, updated my branch, PTAL at the server/meecrowave/pom.xml file.  armored is set to true, but I still get the same error.
[ERROR] Failed to execute goal org.jreleaser:jreleaser-maven-plugin:0.4.0-SNAPSHOT:full-release (default-cli) on project emu2api-server-meecrowave: Execution default-cli of goal org.jreleaser:jreleaser-maven-plugin:0.4.0-SNAPSHOT:full-release failed: Unexpected error when signing release.: Could not initialize keyring: public key ring doesn't start with public key tag: tag 0xffffffff -> [Help 1]

trace.log:
jreleaser.shadow.org.jreleaser.model.JReleaserException: Unexpected error when signing release.
        at jreleaser.shadow.org.jreleaser.workflow.SignWorkflowItem.invoke(SignWorkflowItem.java:35)
        at jreleaser.shadow.org.jreleaser.workflow.WorkflowImpl.execute(WorkflowImpl.java:51)
        at jreleaser.shadow.org.jreleaser.cli.FullRelease.doExecute(FullRelease.java:38)
        at jreleaser.shadow.org.jreleaser.cli.AbstractModelCommand.execute(AbstractModelCommand.java:64)
        at jreleaser.shadow.org.jreleaser.cli.AbstractCommand.call(AbstractCommand.java:72)
        at jreleaser.shadow.org.jreleaser.cli.AbstractModelCommand.call(AbstractModelCommand.java:38)
        at jreleaser.shadow.org.jreleaser.cli.AbstractCommand.call(AbstractCommand.java:37)
        at jreleaser.shadow.picocli.CommandLine.executeUserObject(CommandLine.java:1953)
        at jreleaser.shadow.picocli.CommandLine.access$1300(CommandLine.java:145)
        at jreleaser.shadow.picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2352)
        at jreleaser.shadow.picocli.CommandLine$RunLast.handle(CommandLine.java:2346)
        at jreleaser.shadow.picocli.CommandLine$RunLast.handle(CommandLine.java:2311)
        at jreleaser.shadow.picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2179)
        at jreleaser.shadow.picocli.CommandLine.execute(CommandLine.java:2078)
        at jreleaser.shadow.org.jreleaser.cli.Main.execute(Main.java:73)
        at jreleaser.shadow.org.jreleaser.cli.Main.run(Main.java:69)
        at org.jreleaser.tool.JReleaser.main(JReleaser.java:45)
Caused by: jreleaser.shadow.org.jreleaser.util.signing.SigningException: Could not initialize keyring
        at jreleaser.shadow.org.jreleaser.model.JReleaserContext.createKeyring(JReleaserContext.java:354)
        at jreleaser.shadow.org.jreleaser.engine.sign.Signer.sign(Signer.java:83)
        at jreleaser.shadow.org.jreleaser.workflow.SignWorkflowItem.invoke(SignWorkflowItem.java:33)
        ... 16 more
Caused by: java.io.IOException: public key ring doesn't start with public key tag: tag 0xffffffff
        at jreleaser.shadow.org.bouncycastle.openpgp.PGPPublicKeyRing.<init>(Unknown Source)
        at jreleaser.shadow.org.jreleaser.util.signing.Keyring.addPublicKey(Keyring.java:72)
        at jreleaser.shadow.org.jreleaser.util.signing.Keyring.initialize(Keyring.java:55)
        at jreleaser.shadow.org.jreleaser.model.JReleaserContext.createKeyring(JReleaserContext.java:352)

… using the latest repository commit.

then you must set armored: true

Ah, I see. I just wonder: this would go into the project's jreleaser config, while the keys are going into the user's config. Imagine one project would handle unarmored keys, the other one handles armored keys. Then the user constantly had to switch his keys in his $HOME/.jreleaser/jreleaser.conf.
The setting armored: true|false should rather sit next to the keys in the user config (or via env var).

Which is why <environment><variables> exist, so that you can change the location of the config.[ext] files depending on the project. Think of using different settings.xml per project. BTW JReleaser now supports reading properties set by profiles on settings.xml.

@bmarwell I've downloaded your public key and I've got further. Of course the build fails because there's no matching secret key on my side. This means I can read your public key just fine. Tried setting the key in config.yml and as a separate file, both work.
After a few trials and errors I now know what's wrong: it's the formatting applied to the key value. In your config.toml you have 2 spaces at the beginning of each line. Those need to be removed. Also the empty line between the open block and the first encoded bytes must be present, that is, the following will cause errors:
2 leading spaces
JRELEASER_GPG_PUBLIC_KEY="""
  -----BEGIN PGP PUBLIC KEY BLOCK----

  mQGiBEYVIwERBACndCqn1kKjVD8r2YjYAsqzNQet/U7wn6pIrvKd+23W+LH04tRY
  ...
  -----END PGP PUBLIC KEY BLOCK-----"""

Missing empty line
JRELEASER_GPG_PUBLIC_KEY="""
-----BEGIN PGP PUBLIC KEY BLOCK----
mQGiBEYVIwERBACndCqn1kKjVD8r2YjYAsqzNQet/U7wn6pIrvKd+23W+LH04tRY
...
-----END PGP PUBLIC KEY BLOCK-----"""

Note that the leading spaces must be present if you use the YAML format
JRELEASER_GPG_PUBLIC_KEY: |
  -----BEGIN PGP PUBLIC KEY BLOCK----

  mQGiBEYVIwERBACndCqn1kKjVD8r2YjYAsqzNQet/U7wn6pIrvKd+23W+LH04tRY
  ...
  -----END PGP PUBLIC KEY BLOCK-----"""

I would have used XML if it were available 😉😜 because... Schema!
Thanks for verifying! Maybe add some hints to the exception? I can create a PR if you like.

XML is available if you configure secrets inside a <properties> block in settings.xml ;-)

Closing. The good news is that in the process of figuring this one one we found 2 additional issues that needed to be resolved as well. 🥳


fixed JSON schema id

is part  to #83

removed duplicate $id definitions
removed all $id markers that were just json-pointers prefixed with # (self-shadowing)

hm, CI is breaking.
any idea why?

The build was relying on an old SNAPSHOT of CycloneDX Core Java which was used at the time of the release of the v1.3 spec. The build needed to be updated to a released version of Core Java, which I have just done. Future builds should pass.

thanks, @stevespringett .
rebased onto latest master; build passed as expected.

@stevespringett could you revisit this PR?

@jkowalleck We're currently working on the v1.4-dev branch and already have 1 PR submitted. I'll likely have another one this weekend. But I'd like to include all of these fixes in the v1.4-dev branch when everything is merged into that branch prior to merging to master.

need to give tis one a review. wait a minute

Fixed in 1.4. Core Working Group has not made a decision on whether to backport.

related to #123

Closing in favor of #125


Add support for memory-efficient and faster optimizers

Maybe GaLore (#1192) should be changed from GaloreArgs to OptimizerArgs after all. Then we can also more easily consider other variants such as BAdam (BAdam: A Memory Efficient Full Parameter Training Method for Large Language Models, https://arxiv.org/abs/2404.02827).
The experiments from here look very compelling. And it only adds 1 hyperparameter:

Agreed


grey colored code after vs code crash

Type: Bug

Im using vs code for my work. It got crashed because of out of memory and when i restarted it, the color theme is not working properly. I tried changing theme but for all themes including default one the string color is grey and not any other color. This happened with me in the past also but on restart it worked. Im using latest version of vs-code.
I tried restrting many times also tried changing themes to check if the problem with the extension. but for all themes the same issue is there
VS Code version: Code 1.86.2 (903b1e9d8990623e3d7da1df3d33db3e42d80eda, 2024-02-13T19:40:56.878Z)
OS version: Windows_NT x64 10.0.19045
Modes:
Remote OS version: Linux x64 <IP_ADDRESS>-microsoft-standard-WSL2

System Info

Item
Value

CPUs
Intel(R) Core(TM) i5-6300U CPU @ 2.40GHz (4 x 2496)

GPU Status
2d_canvas: enabledcanvas_oop_rasterization: enabled_ondirect_rendering_display_compositor: disabled_off_okgpu_compositing: enabledmultiple_raster_threads: enabled_onopengl: enabled_onrasterization: enabledraw_draw: disabled_off_okskia_graphite: disabled_offvideo_decode: enabledvideo_encode: enabledvulkan: disabled_offwebgl: enabledwebgl2: enabledwebgpu: enabled

Load (avg)
undefined

Memory (System)
15.88GB (7.54GB free)

Process Argv
--crash-reporter-id ed3cd6e3-f6cf-4fca-b84f-9a2565e2c591

Screen Reader
no

VM
0%

Item
Value

Remote
WSL: Ubuntu

OS
Linux x64 <IP_ADDRESS>-microsoft-standard-WSL2

CPUs
Intel(R) Core(TM) i5-6300U CPU @ 2.40GHz (2 x 2495)

Memory (System)
7.76GB (6.49GB free)

VM
0%

Extensions (16)

Extension
Author (truncated)
Version

cypress-snippets
and
1.2.0

remote-wsl
ms-
0.86.0

javascriptsnippets
nat
0.4.0

material-theme
zhu
3.16.2

path-intellisense
chr
2.8.5

dbclient-jdbc
cwe
1.3.4

vscode-office
cwe
3.1.8

vscode-postgresql-client2
cwe
7.0.5

vscode-terminal-for-ubuntu
Doc
0.0.2

gitlens
eam
14.8.2

prettier-vscode
esb
10.1.0

vscode-github-actions
git
0.26.2

ts-debug
kak
0.0.6

vscode-postgresql
ms-
0.3.0

vscode-typescript-next
ms-
5.4.20240218

javascriptsnippets
nat
0.4.0

(1 theme extensions excluded)

A/B Experiments
vsliv368:30146709
vspor879:30202332
vspor708:30202333
vspor363:30204092
vscod805cf:30301675
binariesv615:30325510
vsaa593cf:30376535
py29gd2263:30899288
vscaat:30438848
c4g48928:30535728
azure-dev_surveyone:30548225
962ge761:30959799
pythongtdpath:30769146
welcomedialogc:30910334
pythonidxpt:30866567
pythonnoceb:30805159
asynctok:30898717
pythontestfixt:30902429
pythonregdiag2:30936856
pyreplss1:30897532
pythonmypyd1:30879173
pythoncet0:30885854
pythontbext0:30879054
dsvsc016:30899300
dsvsc017:30899301
dsvsc018:30899302
bf62j303:30959262
a89i1917:30961429
7j2b6412:30967274
e3gdj431:30958358

### Tasks

If you set the theme to Default Modern (the VS Code default), all string literals should be red. Can you see that?
If not, set the cursor in a string and run command Developer: Inspect Editor Tokens and Scopes. That hover should shwo where the color comes from. Maybe you redefined it in the settings?

When i switch to theme vs code default dark all text is grey

kindly reply, because of this issue im not able to focus on  my work
I have reinstalled vs code and still this issue persists

the issue is not with the theme
but with the typescript syntax extension
what's does extension > @builtin typescript show?
also Help > ToggleDevTools

the issue is not with the theme but with the typescript syntax extension
are the extensions under extension > @builtin typescript showing any errors? also Help > ToggleDevTools

Im seeing this error inside dev console

Looks like the the grammar provided by the ms-vscode.vscode-typescript-next extension can not be loaded (see error in the log).
I tried to reproduce with the latest version of that extension (v5.4.20240219), but all works.
Can you make sure you have that latest version, and remove the extension, the restart VS Code and reinstall the extension (if you really need it)

FYI @mjbvz

Thanks @aeschli . The linked issue is pretty old. Everything seems fine in the latest releases although I didn't test every single nightly release

This issue has been closed automatically because it needs more information and has not had recent activity. See also our issue reporting guidelines.
Happy Coding!


Add writeEncryptedCopyToPath:key:error:

This makes it possible to change the encryption key of an existing Realm file as follows:
// RLMRealm instances are autoreleased and we must ensure the old file is
// closed before we try to overwrite it
@autoreleasepool {
    // Write a copy with the new encryption key
    [RLMRealm.defaultRealm<EMAIL_ADDRESS>                                                key:newKey
                                              error:&error];
}
// Overwrite the original file with the new copy
[NSFileManager.defaultManager<EMAIL_ADDRESS>                                      toPath:RLMRealm.defaultRealmPath
                                       error:&error];
// Update the encryption key to use for the default Realm (if using the key caching)
[RLMRealm setEncryptionKey:newKey forRealmsAtPath:RLMRealm.defaultRealmPath];

// Open the new file
RLMRealm *realm = [RLMRealm defaultRealm];

@alazier

I didn't realize you could put emoji in commit messages.

We should probably leave the old method which doesn't take a key for the majority of encryption users. Right now it looks like you break everyone's code who uses the existing method.
Might want to have a test for if you try to make a copy to an existing path.

The old method does still exist.

We should also add support for opening encrypted realms in the browser.
On Tue, Jan 6, 2015 at 7:38 PM, Thomas Goyne<EMAIL_ADDRESS>wrote:

The old method does still exist.
—
Reply to this email directly or view it on GitHub
https://github.com/realm/realm-cocoa/pull/1299#issuecomment-68910247.

@astigsen I'm not sure that is related to this pr. That being said we should still do this, so opened a new issue #1300

I was confused by the diff. I see now the old method is still there.
I know we are following convention with our naming (using the term encryptedRealm, but looking back at our other apis I think I might prefer having the api names be the same with the addition of an parameter encryptionKey rather than key. Did we ever consider this naming? If we are to ever change it now would probably be the time before adding more methods following the existing convention. Otherwise :+1:

That was what I originally had when I first added the encryption stuff, and someone objected to it and wanted the encryptedRealm naming.

I think this naming is pretty bad - this sounds worse than the other methods to me. Lets discuss renaming before pushing a release. Do you know who had the previous objections? Hopefully it wasn't me.


Masking breaks render to rendertexture

As seen in following example you cannot render to a texture when a mask is set:
var app = new PIXI.Application(800, 600, {backgroundColor: 0x1099bb});
document.body.appendChild(app.view);

var basicText = new PIXI.Text('Basic text in pixi is very long');
basicText.x = 30;
basicText.y = 90;

var mask = new PIXI.Graphics();
mask.drawRect(0,90,500,20);

basicText.mask = mask; // turn on or off

  var renderTexture = PIXI.RenderTexture.create(app.screen.width, app.screen.height);

  app.renderer.render(basicText, renderTexture);

  let sprite1 = new PIXI.Sprite(renderTexture);

//app.stage.addChild(basicText); // turn on or off
app.stage.addChild(sprite1); // turn on or off

dev or v4.x?
i think i fixed that already in both

ok, its graphics:
mask.beginFill(0xffffff, 1)
mask.drawRect(0,90,500,20);

masking works with fills.

Thanks, works now. Is this intended behavior or workaround? Seems like workaround to me?

@ivanpopelyshev I still have a big problem with this. If you define a mask before rendering a texture, there is a BIG memory leak. Without a mask there is no problem.
var app = new PIXI.Application(800, 600, {backgroundColor: 0x1099bb});
document.body.appendChild(app.view);
for(var i=0;i<1000;i++){
    var basicText = new PIXI.Text('Basic text in pixi is very long');
    basicText.x = 30;
    basicText.y = 90;

    var mask = new PIXI.Graphics();
    mask.drawRect(0,90,500,20);
    mask.beginFill(0xffffff, 1)
    basicText.mask = mask; // turn on or off

    var renderTexture = PIXI.RenderTexture.create(app.screen.width, app.screen.height);

    app.renderer.render(basicText, renderTexture);

    let sprite1 = new PIXI.Sprite(renderTexture);

    app.stage.addChild(sprite1); // turn on or off
    sprite1.destroy({ children: true, texture: true, baseTexture: true });
}

You didnt mention which version and which browser do you use.
Itested it on 4.8.4 (release) and yes, i see consumed GPU memory, however pixi calls deleteTexture and deleteFramebuffer for all those elements, so its not our fault.

Chrome
Version 66.0.3359.181 (Official Build) (64-bit)
The difference between with and without masking is so high my program is unusable....

I have encountered a lot of resource-consuming masks, you should limit the use of masks because it takes a lot of resources for rendering. In some cases I use another way to create masks and reduce a lot of memory compared to when using masks.
You can refer to:
https://pixijs.io/examples/#/demos/mask-render-texture.js
Hope it will be helpful.
Read more about mask perfomance in:
https://github.com/pixijs/pixi.js/wiki/v4-Performance-Tips

ok, so, basically, renderTexture that uses masks costs more. In your case there are many renderTextures, i dont know why aren't they destroyed, pixi calls destroyTexture for sure, so it consumes more memory.
@GoodBoyDigital ideas?

@jdelrue try this build please: https://pixijs.download/dev-renderbuffer-destroy/pixi.js


Joken.Config.validate has an arity of 2, but is marked overrideable with arity 1

It currently isn't possible to override the Joken.Config.validate callback, I think because defoverridable has the wrong arity for validate. This PR attempts to fix that.
I haven't added or updated any tests -- please let me know if there's an appropriate place to add one.
Currently, if you attempt to specify two arguments like so:
@impl true
def validate(claims, context) do
   ... etc ...
end

You get a compiler warning that a previous clause always matches.
If you specify with only one argument:
@impl true
def validate(claims) do
   ... etc ...
end

You get a compiler error that validate/1 conflicts with defaults from validate/2.

Awesome! Thanks a lot!


Release tags outdated

The release tags for the newest versions seem to be missing. This is a problem when having a policy of using only released versions.

Juuuuuust made a new release!  Thanks for pointing this out; I'd really let this go.


Update htr2hpc-train to support recognition training

towards implementing #27

generate recognition training data; adapts eScriptorium approach and compiles straight to binary pyarrow format
start and monitor slurm job to run ketos train command

@cmroughan thanks as always for the careful testing and finding these flaws! I've revised how the code retrieves the next page of results from the api and tested the api methods locally before pushing the code. I started the training script on della with the document and transcription ids you noted in your comments above, and successfully downloaded all 60 pages and the transcription lines without errors, and the slurm job is running now.

❌ Running the train task "from scratch" failed, I think because the script did not correctly grab blla.mlmodel.

Thanks for finding this - when I revised to only supply a default model for segmentation I wrote the training mode check incorrectly. I've corrected that now.

@cmroughan thanks for finding! I've added handling for  when line.region is None. I tested the data export locally with the command you provide, I was able to duplicate your error before this change, and successfully compiled the binary data after making this change.

Excellent! Ran tests on my end to confirm that orphan lines are being handled correctly, both for segmentation and transcription, and both tests were successful.
✅ htr2hpc-train segmentation https://test-htr.lib.princeton.edu/ segtest_doc33 -d 33 -w 3 --model-name segtest-scratch40 --no-clean
✅ htr2hpc-train transcription -t 40 https://test-htr.lib.princeton.edu/ recog_doc33_t40 -d 33 -w 3 --model-name recogtest-scratch40 --no-clean
I inspected the XML download for segmentation and confirmed that the orphan lines are correctly being input into that format.

Also tested some odd cases, and nothing broke! Just some comments about better handling we might want later, but not a priority.

🟡 Running recognition training on pages with segmentation data but no transcription data:

slurm job submitted but failed (because there was no valid training data).
Not a requirement right now, but we might consider adding code to catch when there is no valid training data in the parts/transcription submitted.

🟡 Running recognition training on pages with no segmentation data (& therefore no transcription data):

slurm job submitted but failed (because there was no valid training data).
Same comment as above.

🟢 Running recognition training on mixed pages, some with seg+trans data, some with no data:

slurm job submitted, ran successfully using the training data that does exist

🟡 Running segmentation training on pages with no segmentation data:

slurm job submitted, ran... technically successfully, I guess? The model learned that there are indeed no regions to recognize!
Really there should be some error handling to catch when seg training data has 0 lines AND 0 regions, since that's useless and we don't need to spend cluster time on that.

🟢 Running segmentation training on mixed pages, some with seg data and some without:

slurm job submitted, ran successfully. This is desired behavior (there may be training data with pages where the model should learn that there are no regions/lines!)

@cmroughan Thanks again for the thorough and thoughtful testing.
I've added a link to your most recent comment on our issue for adding error handling. #36
I'll go ahead and merge this and mark the issue as complete.


⚠ Samsung has degraded performance

In 62b623b, Samsung (https://samsung.com) experienced degraded performance:

HTTP code: 200
Response time: 2700 ms

Resolved: Samsung performance has improved in 46d1f1e.


Syntax for polymorphic values.

This is another attempt at convenient syntax for polymorphic values. This PR addresses #37 and supersedes #44.
The syntax
ν[T].m[A, B[_], ...](e)

is rewritten to
new T { def m[A, B[_], ...] = e }

(The symbol "ν" is the Greek lowercase letter "Nu" (/njuː/) and stands for new.)
In case m has just one *-kinded type parameter which is not referenced from e, it can be omitted:
ν[T].m(e)

is rewritten to
new T { def m[A] = e }

where A is a fresh name.
If the method name is apply, it can be omitted:
ν[T][A, B[_], ...](e)

is rewritten to
new T { def apply[A, B[_], ...] = e }

The previous two shortcuts can be combined:
ν[T](e)

is rewritten to
new T { def apply[A] = e }

where A is a fresh name.
There is also an alternative syntax using Λ (Greek uppercase letter Lambda)
Λ[A, B[_], ...](e): T

which is equivalent to
ν[T][A, B[_], ...](e)

i.e.
new T { def apply[A, B[_], ...] = e }

When using Λ-syntax, type parameters cannot be omitted, and method name is (currently) assumed to be apply. Note also that the type T of the whole Λ-expression has to be specified (cannot be inferred, since kind-projector runs before typer).
See the test cases in polyval.scala for some examples.

I fixed the 2.10 build failure and made the new functionality opt-in via scalac option
-P:kind-projector:forall=true

I changed the name from ∀ to ν (Greek lowercase letter Nu, pronounced "new"), since it better fits the order of arguments.
I also added alternative Λ-syntax which resembles System-F syntax for universal quantification.
I updated the description above to reflect these changes.

I published this functionality as a separate plugin: P∀scal.
I consider polymorphic values (including existing polymorphic lambdas) a separate concern from kind-projector's type lambdas through type projections. Nevertheless, I'm leaving this open for a while in case people want to see this in kind-projector anyway.

can you support the plain English spellings too? In Emacs I have a prettify-greek mode which will render these things as UTF-8 but save as ASCII to disk. It also makes it a lot easier for me to type...

I could do Nu, but Lambda in term position is already reserved by kind-projector for polymorphic lambdas.
For typing, I have just installed Greek keyboard layout.

I think it would need to be the lowercase versions for prettify-greek to work (it'll use capitals)

For kind-projector, Lambda and λ are already synonyms. It would be confusing to make lambda and Λ synonyms.

I'm going to close this for the following reasons:

With the addition of self-referencing polymorphic values, P∀ascal has by now diverged from this PR.
New features add maintenance cost, which I don't mean to incur on kind-projector.
kind-projector already claims the identifier λ from the name space. P∀scal claims another two, ν and Λ. Rather than having configuration options for what features of the plugin to turn on (and thus what identifiers will be reserved), the user may just add separate plugins à la carte.


Failed to find run

return-dispatch is successfully finding my Run ID using the distinct ID.
However, I'm immediately attempting to run await-remote-run per your documentation using the run_id returned from return-dispatch and it is failing to fund the run based on this ID. I know the ID is correct though, because when I click the outputed URL from return-dispatch it takes me to my other repositories run and it is running as expected. Here are the outputs / log from both return-dispatch and then followed by await-remote-run. Notice the error getWorkflowRunState: An unexpected error has occurred: Not found

I should add that my token does have the following permissions set:

Never mind! I figured out my issue. It was a boneheaded mistake. For anyone wondering, I had an extra $ in my reference to my owner input. Just a simple typo.
Works great and accomplishes exactly what my workflow needs. Thanks for this and keep up the good work!


[Misc]: a question about chunked-prefill in flash-attn backends

Anything you want to discuss about vllm.
https://github.com/vllm-project/vllm/blob/99caa4910651754f3f68de518ca42349c8c424d1/vllm/attention/backends/flash_attn.py#L282
I noticed that in flash-attn backends. forward_prefix and forward_decode seem to be executed serially. Does forward_decode wait for forward_prefix to finish before running? Can this take advantage of the performance provided by chunked-prefill? I mean the tokens of prefill are in the same batch as the tokens of decode.
if prefill_meta := attn_metadata.prefill_metadata:
    output[:num_prefill_tokens] = PagedAttention.forward_prefix(...)

if decode_meta := attn_metadata.decode_metadata:
    output[num_prefill_tokens:] = PagedAttention.forward_decode(...)

I noticed that in flash-attn backends. forward_prefix and forward_decode seem to be executed serially. Does forward_decode wait for forward_prefix to finish before running? Can this take advantage of the performance provided by chunked-prefill? I mean the tokens of prefill are in the same batch as the tokens of decode.

Yeah right now, it is running serially. I think after https://github.com/vllm-project/vllm/pull/4681, it should be possible to run them in the same attn kernel, but based on our past internal benchmark, it didn't make much difference (we can definitely try to see how much perf improvement it will have).
Note that this should be done after we re-revert https://github.com/vllm-project/vllm/pull/4820 because we should use prefix kernel to run both in the same attn kernel, and existing prefix kernel is too slow (flash attn varlen has at least 3X faster than this kernel)

I noticed that in flash-attn backends. forward_prefix and forward_decode seem to be executed serially. Does forward_decode wait for forward_prefix to finish before running? Can this take advantage of the performance provided by chunked-prefill? I mean the tokens of prefill are in the same batch as the tokens of decode.

Yeah right now, it is running serially. I think after #4681, it should be possible to run them in the same attn kernel, but based on our past internal benchmark before, it didn't make much difference (we can definitely try to see how much perf improvement it will have). But this could be different now.
Note that this should be done after we re-revert #4820 because we should use prefix kernel to run both in the same attn kernel, and existing prefix kernel is too slow (flash attn varlen has at least 3X faster than this kernel)

Is there a Issue/PR to "re-revert #4820 " for us to track?


If add exports field in package.json, the project will be crashed

Describe the bug
The project runs error, when the package.json includes exports field...
Reproduction
https://github.com/Realzzz1874/vite-bug-report
Steps to reproduce
No response
System Info
System:
    OS: macOS 12.2
    CPU: (8) x64 Intel(R) Core(TM) i7-4770HQ CPU @ 2.20GHz
    Memory: 5.34 GB / 16.00 GB
    Shell: 5.8 - /bin/zsh
  Binaries:
    Node: 16.13.1 - /usr/local/bin/node
    Yarn: 1.7.0 - /usr/local/bin/yarn
    npm: 8.1.2 - /usr/local/bin/npm
    Watchman: 4.9.0 - /usr/local/bin/watchman
  Browsers:
    Chrome: 108.0.5359.94
    Safari: 15.3

Used Package Manager
npm
Logs
No response
Validations

[X] Follow our Code of Conduct
[X] Read the Contributing Guidelines.
[X] Read the docs.
[X] Check that there isn't already an issue that reports the same bug to avoid creating a duplicate.
[X] Make sure this is a Vite issue and not a framework-specific issue. For example, if it's a Vue SFC related bug, it should likely be reported to vuejs/core instead.
[X] Check that this is a concrete bug. For Q&A open a GitHub Discussion or join our Discord Chat Server.
[X] The provided reproduction is a minimal reproducible example of the bug.

@Realzzz1874 The url you provided appears to be invalid


Need Accept cookies widget on the pages

Move this as well from the old site. We might need some styling, but let's try to find something in the site template to apply instead of what was on the old site.

Implemented in<PHONE_NUMBER>3769087c2324e5caeaea1b5c1ae961


Clinical Result

Summary
New components needed to display results in flowsheets, detail views, etc.
List includes:

_Observation base template
Clinical Result
Blood Pressure Result
Flowsheet Cell (multiple results)
Result Time Header Cell
Result Name Header Cell

In Development - including the new components as they are stable and ready for review, still need to add tests.

We would appreciate a PR for the lowlight theme before this merges.

@neilpfeiffer  where is this PR at? Is it still in development or is it ready for review?


How to start from different port than 843?

Is it easy to change the port it listens to? I don't want to run sudo to start this server up if possible.

If the question is "How to let web-socket-js to talk to a specific WebSocket port", then you can do it by e.g.,:
var ws = new WebSocket("ws://example.com:12345");

If the question is "How to run WebSocket server at a specific port", then it depends on what WebSocket server you are using. (em-websocket? pywebsocket?)

Cool! I will give this a try later.


Rescan after pre-generating addresses does not find all transactions

In the faucet wallet, that contains many transactions and addresses, I pre-generated all internal and external addresses up to date by using these commands on a new instance of hw:
fw newkeyring ...
fw newacc faucet
fw genaddrs faucet {internal_count} -i
fw genaddrs faucet {external_count}
fw rescan 0

Note: The previous instructions should not not make sense to anyone but @plaprade and myself, but it is made public in case the issue affects somebody else.

Fixed in #120


WIP: Add support for record pause and resume

Description
Allow users to pause and resume call recording.
Ref: https://github.com/signalwire/cloud-product/issues/7799
Type of change

[ ] Internal refactoring
[ ] Bug fix (bugfix - non-breaking)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)

Code snippets
call.on('recording.started', (recording) => {})

call.on('recording.updated', (recording) => {})

call.on('recording.ended', (recording) => {})

call.on('recording.failed', (recording) => {})

// Start the recording
const recording = await call.recordAudio({
  initialTimeout: 0,
  direction: 'both',
  terminators: '#',
})
...
await recording.pause({ behavior: "skip" }) // Optional parameters
...
await recording.resume()
...
await recording.stop()

Testing is needed when server implementation is completed.
Ref: https://github.com/signalwire/cloud-product/issues/7033


Tox21 predict example with pickle

Please merge after #139
I confirmed that I can save/load pickle model file and predict in python 3.5 env.
Note that since this PR breaks the example code not to work on library on PyPI (version 0.2.0). New version should be released ASAP after this PR merged.

Codecov Report

Merging #141 into master will increase coverage by 0.32%.
The diff coverage is 90.56%.

@@            Coverage Diff             @@
##           master     #141      +/-   ##
==========================================
+ Coverage   74.59%   74.92%   +0.32%
==========================================
  Files          75       76       +1
  Lines        3098     3150      +52
==========================================
+ Hits         2311     2360      +49
- Misses        787      790       +3

add model-filename option, apply flake8

Please add predict_tox21_with_classifier.py to the example test scripts (example_test_cpu.sh and example_test_gpu.sh)

I'd like to add test shell script in another PR.

As #139 is merged, could you merge or rebase the latest master branch?

resolved conflict


Test: terminal options color

Refs #128228

[x] macOS @sandy081
[ ] linux @deepak1556
[ ] windows @paulacamargo25

Complexity: 3
Authors: @meganrogge, @tyriar
Create Issue

With proposed API enabled, use the extension-terminal-sample to test that you can:

set color in createTerminal to a ThemeColor

This color should appear in:

the TerminalQuickPick via Ctrl P
the terminal tabs list if it's in a group
the editor tab if it's in the editor area
as you switch active terminals in the single tab terminal view action item
anything else you can think of

@meganrogge I am sorry that I could understand the locations you mentioned, for eg., I am not sure where TerminalQuickPick is and ctrl+p/cmd+p opens normal quick pick for me. Also did not understand what you mean by as you switch active terminals in the single tab terminal view action item ? Can you please give more context about these locations.
Irrespective of that, tested following:

Tested the theme color is shown when the terminal is in the panel and in the editor.
When in the editor also tested in file quick pick, recently opened list and in opened editors view in the explorer.

Hope this is good enough.

@sandy081 terminal quick pick above means ctrl/cmd+p "term ":


Can't get bot to respond to any commands (Webhook).

I have been at it for a few hours searching through posts and I have yet to find a solution as to why my bot is not replying back.
--I have a valid https:// on my domain and the ssl shows a rating of A- (not self-generated)
--Webhook does work and will throw an error at api.telegram.com/bot if you try to "getUpdates"
--hook.php is not generating any errors (blank white screen) and no log files are being created (even  when I had the option uncommitted). If the log options are uncommitted, the server throws an error 500. There is no "Input is empty" error either when accessed directly via the browser.
--Permissions are wide open right now for testing and apache is the owner of every file.
--PHP 5.6.24 (cli)
--centos-release-6-7.el6.centos.12.3.x86_64
Here are my files:
set.php
<?php
// Load composer
require __DIR__ . '/vendor/autoload.php';

$API_KEY  = 'MYAPIKEY';
$BOT_NAME = 'MYBOTNAME';
$hook_url = 'https://MYDOMAIN.com/telegrambots/VB/hook.php';

try {
    // Create Telegram API object
    $telegram = new Longman\TelegramBot\Telegram($API_KEY, $BOT_NAME);

    // Set webhook
    $result = $telegram->setWebHook($hook_url);
    if ($result->isOk()) {
        echo $result->getDescription();
    }
} catch (Longman\TelegramBot\Exception\TelegramException $e) {
    echo $e;
}

hook.php
<?php

// Load composer
require __DIR__ . '/vendor/autoload.php';

$API_KEY = 'MYAPIKEY';
$BOT_NAME = 'MYBOTNAME';
$commands_path = __DIR__ . '/Commands/';

try {
    // Create Telegram API object
    $telegram = new Longman\TelegramBot\Telegram($API_KEY, $BOT_NAME);

    // Handle telegram webhook request
    $telegram->handle();
} catch (Longman\TelegramBot\Exception\TelegramException $e) {
    // Silence is gold!
    // echo $e;
    // log telegram errors
    \Longman\TelegramBot\TelegramLog::error($e);
} catch (Longman\TelegramBot\Exception\TelegramLogException $e) {
    // Silence is gold! Uncomment this to catch log initilization errors
    echo $e;
}

After all these hours I know I must be looking right at the error and not noticing.

Hi @jamesdcampbell
The logging isn't active in your hook.php file. I assume you removed it to post here but have it enabled, yes?
getUpdates won't work without a database, so you would need a MySQL instance for that!
Also, "Input is empty!" message isn't output, because the echo $e; is commented in the catch (TelegramException $e) block.
What version are you using?
May I suggest you check out the readme again to make sure that all steps have been done correctly.

My apologies, I had posted this at the end of the night and the code reflected was after some testing. I looked over the readme once more and followed it precisely in order to get a better environment. However, I am still getting the same issue as last night.
My version is 0.35.
Here are the steps I completed this morning:
-Grabbed a copy of version 0.35 and extracted it into a new directory
-Changed the composer.json file and ran an update (which ran without issue and fetched the vendor folder)
-Grabbed a copy of set.php, hook.php, and unset.php from the examples directory.
-Changed the $API_KEY and $BOT_NAME for each file and changed the $hook_url for set.php as well.
-Ran set.php via browser and was given the message "Webhook was set"
-Navigated to "https://api.telegram.org/botBOTNAME:BOTTOKEN/getUpdates" which returned "{"ok":false,"error_code":409,"description":"Conflict: can't use getUpdates method while webhook is active"}" which means that the webhook is active and was set. (Not actually trying to use getUpdates, but this is a good method of seeing if telegram sees the hook)
-At this point, bot still will not respond to commands via client
-I checked hook.php and allowed for $e to print out the errors via browser (which this time it did print out the "Input is empty!" message via browser).
-I opened up the entire directory as 777 and set the ownership to apache.
-I uncommented out logging in hook.php which lead to a HTTP Error 500.
-I tested each line one by one and it turns out that the line "\Longman\TelegramBot\TelegramLog::initUpdateLog($path . '/' . $BOT_NAME . '_update.log');" is the one causing the http error.
-Even with the previous line commented, none of the logging is taking place as there are no files being generated for any of the lines, the update line seems to be the only one causing the http error though.
Here is my code:
Hook.php
<?php
//README
//This configuration file is intended to run the bot with the webhook method.
//Uncommented parameters must be filled
//Please notice that if you open this file with your browser you'll get the "Input is empty!" Exception.
//This is a normal behaviour because this address has to be reached only by Telegram server.

// Load composer
require __DIR__ . '/vendor/autoload.php';

$API_KEY = 'MYAPIKEY';
$BOT_NAME = 'MYBOTNAME';
$commands_path = __DIR__ . '/Commands/';
//$mysql_credentials = [
//    'host'     => 'localhost',
//    'user'     => 'dbuser',
//    'password' => 'dbpass',
//    'database' => 'dbname',
//];

try {
    // Create Telegram API object
    $telegram = new Longman\TelegramBot\Telegram($API_KEY, $BOT_NAME);

    //// Enable MySQL
    //$telegram->enableMySQL($mysql_credentials);

    //// Enable MySQL with table prefix
    //$telegram->enableMySQL($mysql_credentials, $BOT_NAME . '_');

    //// Add an additional commands path
    //$telegram->addCommandsPath($commands_path);

    //// Here you can enable admin interface for the channel you want to manage
    //$telegram->enableAdmins(['your_telegram_id']);
    //$telegram->setCommandConfig('sendtochannel', ['your_channel' => '@type_here_your_channel']);

    //// Here you can set some command specific parameters,
    //// for example, google geocode/timezone api key for date command:
    //$telegram->setCommandConfig('date', ['google_api_key' => 'your_google_api_key_here']);

    //// Logging
    \Longman\TelegramBot\TelegramLog::initialize($your_external_monolog_instance);
    \Longman\TelegramBot\TelegramLog::initErrorLog($path . '/' . $BOT_NAME . '_error.log');
    \Longman\TelegramBot\TelegramLog::initDebugLog($path . '/' . $BOT_NAME . '_debug.log');
    \Longman\TelegramBot\TelegramLog::initUpdateLog($path . '/' . $BOT_NAME . '_update.log');

    //// Set custom Upload and Download path
    //$telegram->setDownloadPath('../Download');
    //$telegram->setUploadPath('../Upload');

    //// Botan.io integration
    //$telegram->enableBotan('your_token');

    // Handle telegram webhook request
    $telegram->handle();
} catch (Longman\TelegramBot\Exception\TelegramException $e) {
    // Silence is gold!
     echo $e;
    // log telegram errors
    \Longman\TelegramBot\TelegramLog::error($e);
} catch (Longman\TelegramBot\Exception\TelegramLogException $e) {
    // Silence is gold! Uncomment this to catch log initilization errors
    echo $e;
}

Set.php
<?php
// Load composer
require __DIR__ . '/vendor/autoload.php';

$API_KEY = 'MYBOTAPIKEY';
$BOT_NAME = 'MYBOTNAME';
$hook_url = 'https://MYDOMAIN.com/VB/hook.php';
try {
    // Create Telegram API object
    $telegram = new Longman\TelegramBot\Telegram($API_KEY, $BOT_NAME);

    // Set webhook
    $result = $telegram->setWebHook($hook_url);

    // Uncomment to use certificate
    //$result = $telegram->setWebHook($hook_url, $path_certificate);

    if ($result->isOk()) {
        echo $result->getDescription();
    }
} catch (Longman\TelegramBot\Exception\TelegramException $e) {
    echo $e;

Composer.json
{
    "name": "myproject/VB",
    "type": "project",
    "require": {
        "php": ">=5.5.0",
        "longman/telegram-bot": "*"
    }
}

Ok, it's a little mistake here.
When you're setting the loggers, the $path variable isn't set, so the path is interpreted as '/' . $BOT_NAME . '_error.log', which is obviously a location that the Apache has no access to (I SURE HOPE SO! 😉 ). Also, you have no external monolog instance, so the first line should be commented.
Try this:
// Logging
\Longman\TelegramBot\TelegramLog::initErrorLog(__DIR__ . '/' . $BOT_NAME . '_error.log');
\Longman\TelegramBot\TelegramLog::initDebugLog(__DIR__ . '/' . $BOT_NAME . '_debug.log');
\Longman\TelegramBot\TelegramLog::initUpdateLog(__DIR__ . '/' . $BOT_NAME . '_update.log');

(or alternatively set the $path variable to a valid location)

Viola! Now I am starting to get some errors:
Notice: Undefined variable: path in /var/www/html/telegrambots/VB/hook.php on line 43
Notice: Undefined variable: path in /var/www/html/telegrambots/VB/hook.php on line 44
Notice: Undefined variable: path in /var/www/html/telegrambots/VB/hook.php on line 45
are all new ones, and then I am getting a permissions problem that starts with:
Uncaught exception 'UnexpectedValueException' with message 'The stream or file "/mybot_update.log" could not be opened: failed to open stream: Permission denied' in /var/www/html/telegrambots/VB/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php:107
which is odd because all files have open permissions and apache owns the entire directory. This issue was referenced and solved in https://github.com/akalongman/php-telegram-bot/issues/217 at the end of the discussion, but the user never posted the specific permissions needed to get it to work.

Hi @jamesdcampbell
Read the error message 😉

Undefined variable: path

Like I wrote in my previous comment, the $path variable you are using isn't set, so it tries to write the logfile to the root of you system! (The stream or file "/mybot_update.log" could not be opened: failed to open stream: Permission denied)
If you check my example, I use __DIR__ instead of $path. __DIR__ is a shortcut to the current folder, a place where Apache has permissions.
Hope this clears things up 👍

I am so sorry, I totally misread that, I just removed the one line without looking to see your changes. The bot is now seeing the commands in the _update.log so I think everything is good :) thank you so much for your prompt help and for putting up with the noobie mistakes!

You're so welcome, great to hear that it's working now.
More often than not it's the little things 😊
If you have any other problems, don't hesitate to open a new issue.


Repo tag not working

Hello,
I have been trying to do inference on any video by using .zip and .pth files in the tag of the repo. I generated appropriate paths for the bdd100k dataset images and annotations and created results folder to save results. I cannot understand why I need informations about bdd100k dataset while trying to do inference on any video. I have got the followign error message: Could you please help me resolve this issue?
`Heads are Predefined in YOLOX!
Length of the video: 1800 frames
Using GPU: 0
Using CUDA device0 _CudaDeviceProperties(name='NVIDIA GeForce RTX 3090', total_memory=24265MB)
Creating model...
Loading Model from /home/fatih/phd/fairmot-x-model/FairMOT-X-M.pth
loaded /home/fatih/phd/fairmot-x-model/FairMOT-X-M.pth, epoch 20
No param head.id_classifiers.8.weight.
No param head.id_classifiers.8.bias.
No param head.id_classifiers.9.weight.
No param head.id_classifiers.9.bias.
Detection Loss Weight:  Parameter containing:
tensor([0.95408], requires_grad=True)
ID Loss Weight:  Parameter containing:
tensor([-3.06940], requires_grad=True)
Traceback (most recent call last):
File "/home/fatih/phd/fairmot-x-model/FairMOT-X-Weights/./src/demo.py", line 123, in
run_demo(opt)
File "/home/fatih/phd/fairmot-x-model/FairMOT-X-Weights/./src/demo.py", line 89, in run_demo
eval_seq(opt=opt,
File "/home/fatih/phd/fairmot-x-model/FairMOT-X-Weights/src/track.py", line 171, in eval_seq
for path, img, img0, (dw, dh) in data_loader:
ValueError: not enough values to unpack (expected 4, got 3)`

Hi @fesimsekasel, the issue appears to be in the LoadImages class, I believe the for loop is calling getitem when it was intended to call next. If you include (dw, dh) to be returned in getitem, the problem should be solved. Or, you can simply remove (dw, dh) in the eval_seq() function.
Btw, this (dw, dh) is the padding that has been done on the input image (since the model takes a fixed resolution / aspect ratio). It is used to transform the bounding box coordinates so that they can be visualised nicely on the original image.

Hello @supperted825 , I fed .jpg images instead of.mp4 video and it just worked! I got the point and will change the variables as you described. Thank you for your support!
Sincerely

@fesimsekasel I see, if you feed a .mp4 video, it may be more appropriate to use the LoadVideo class that is located in the same file. However, I did not use it since all the BDD sequences are in image format, so you may need some adjustments to get it working.


App versions above 5.0 not fully supported

Testing versions 5.0 are crashing when trying to open About window. Not crucial if patch works (in educational purposes of course) but I'm not sure and don't know how to check that.

Testing versions 5.0 are crashing when trying to open About window. Not crucial if patch works (in educational purposes of course) but I'm not sure and don't know how to check that.

This version is still in beta the problem is due to the LicenseType, They changed from int to string as the return type.

The issue was fixed. Please try the latest release. If you still got the same issue, re-open the issue.

Everything seems working perfect now, thx!


added try-catch for _init

Added try catch inside MomentumRoot's _init() for logging the stackTrace

I will decline this for now. It seems this line: _momentumEvent = MomentumEvent<RouterSignal>(this); is not present in this file. And this line debugPrintStack(stackTrace: stackTrace); is not compatible with dart 2.5. I am using momentum in our company apps with old versions of flutter.

I will set up this branch to run CI automatically to check errors during PRs. This PR also failed a test. I'll just do this fix on my own for now.


bump smallrye rest client to 1.2.2

[X] Have you followed the guidelines in our Contributing document?
[ ] [v2] Have you created a JIRA and used it in the commit message?
[ ] [v4] Have you created a GitHub Issue and used it in the commit message?
[X] Have you checked to ensure there aren't other open Pull Requests for the same issue?
[ ] Have you built the project locally prior to submission with mvn clean install?

retest this please


Added some tricky methods to restart error tasks

I was using aria2 to download Baidu Yun, but It had many many download-error tasks, I don't want to click restart manually , because it had hundreds tasks.
So I added a new feature to restart error tasks.
Restart related methods were defined in main.js, but I need them in another module, so I copied some tor rhelpers service

I think that been discussed earlier, and this may cause more problem than solve.
The function itself is meaningless and I suggest to use python or something better for check if it should restart even if failed.


Custom classes and thread safe variables

Issue is I am trying to use parallelization to add a generated object, which is a custom object, to a threadsafe variable. Is this supported?
My custom class is
class Foo{
[string]$AuditArea
[string]$FooName
[String]$FooId
Foo () {}
}
$Records =  [System.Collections.Concurrent.Concurrentbag[Foo]]::new()
$bar = [Foo]::New()
$Records.tryadd($bar)
MethodException: Cannot convert argument "item", with value: "", for "TryAdd" to type "Foo": "Cannot convert the "Foo" value of type "Foo" to type "Foo"."

PowerShell Version is is 7.0.2 on Windows 10

@montereyharris your repro steps work fine as is, but I assume you're redefining the class in each runspace yeah?
If so that won't work, they will have completely different type identities.  That said even if you do copy the Type object over, classes are tied to their origin runspace.  Using them in another runspace can cause some major issues (see #12801).

I was able to reproduce your issue by running by redefining the class a second time.

@SeeminglyScience Yes to make it work I trying to do that. Ok so basically because it is a custom class that doesn't exist across run spaces and I have to redefine it every time it won't work and the practice in of itself is a bad idea. Is this is a limitation of PowerShell classes.

@montereyharris yeah.  In short, using PowerShell classes in any capacity across runspaces isn't supported at the moment (or for the foreseeable future judging by the lack of momentum in #12801).


chore(devDependencies): update<EMAIL_ADDRESS>from template

chore(devDependencies): update<EMAIL_ADDRESS>from template
chore(devDependencies): add<EMAIL_ADDRESS>from template
chore(devDependencies): add<EMAIL_ADDRESS>from template

Codecov Report

Merging #59 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master      #59   +/-   ##
=======================================
  Coverage   89.47%   89.47%
=======================================
  Files           1        1
  Lines          19       19
=======================================
  Hits           17       17
  Misses          2        2

Continue to review full report at Codecov.

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


Chart panel not working in Sketch 51.1

When I open the chart panel I just get a blank window, as seen below.

Also get this error in the console.
ReferenceError: Can't find variable: dynamicFunction
line: 145
sourceURL: /Users/username/Library/Application Support/com.bohemiancoding.sketch3/Plugins/chart-master/Chart.sketchplugin/Contents/Sketch/panel.js
column: 24

Yup. Same for me :( Just shows a blank window in Sketch 51 also.

@camlowe @marcusandrew it is known issue, but I don't know how to fix it for now...

Thanks for the swift reply Pavel. Is it required? You can still make adjustments using the other Menu options right?

Same problem here

Same problem here.

+1, but can also confirm that charts can still be generated from the menu regular items.

Status of the plugin as of Sketch Version 51.1:

[ ] Chart Panel
[x] Line Chart
[x] Area Chart
[x] Stacked Area chart
[x] Vertical Bar chart
[x] Horizontal Bar chart
[ ] Scatter plot
[ ] Pie chart
[ ] Donut chart
[ ] Stream Graph
[ ] Sparkline
[ ] Progress bar
[]
[]
[]

@pavelkuligin any updates here ? 🤤
FYI the workaround can be like this one 🙌

Download a previous version of sketch eg. 50.2 https://download.sketchapp.com/sketch-50.2-55047.zip ⬅
Unzip and rename the .app eg. sketch-50.2-55047 -> sketch-50.2-55047.app 🤓
Drag the app to application folder 📁
Run 50.2 along with the current version of the sketch 😲 They can work together 😎
Create a chart in 50.2 📈
Copy it directly to the current version 🎉
Happiness 🤤

Thanks ❤

@pavelkuligin这里有什么更新？🤤
仅供参考，_解决方法_可以像这样🙌

下载_以前_版本的草图，例如。50.2 https://download.sketchapp.com/sketch-50.2-55047.zip ⬅
解压缩和_重新命名_的.app如。sketch-50.2-55047- >sketch-50.2-55047.app 🤓
将应用程序拖到application文件夹中📁
50.2与_当前_版本的草图一起运行😲他们可以一起工作**** 😎
创建一个_图表_中50.2 📈
将其直接复制到_当前_版本🎉
幸福 🤤

谢谢 ❤

useful！

https://youtu.be/ye4PwQ8YY5A
Hi guys! I created a video to help you understand Chart's features.

Gyus! I spent a week to figure out how to fix Panel, but nothing helps. So I decided to remove this feature in Chart 4.0.
I will try to fix it in future, sorry...

@pavelkuligin, I just installed version 4.0 and nothing works. I am running Sketch 51.3 on macOS Mojave Version 10.14 (18A391)
Also worth mentioning inserting a Progress Bar is absolutely killed. It When I have a 300 width box, then I go to create the Progress Bar, the length of it came out as 3,062,571.15 pixels long.
Not to be rude or anything, but what does 4.0 actually bring?
Thank you.

Appreciate the effort you've put in @pavelkuligin!


Add preload attribute for important resources

Feature Description
Add preloading functionality to the plugin to improve loading time.
As an example, this story URL performance report lists an opportunity to preload the image to improve the LCP time, which the plugin can add the preload attribute to improve this.
Alternatives Considered

Additional Context
Related support topic: https://wordpress.org/support/topic/about-page-speed-insights-tests/

Do not alter or remove anything below. The following sections will be managed by moderators only.
Acceptance Criteria

Implementation Brief

@choumx @newmuis are there any recommendations for preloading resources for stories? Does this fall under the preload hero images category and we should be preloading the first page's bg image or something?

The AMP cache has a transform that preloads AMP scripts and the first page's background image/video via the Link header, which I believe was found to be slightly faster than link[rel=preload].
For example, this story on cache has:
Link:
  <https://cdn.ampproject.org/rtv/012103020156005/v0.mjs>; rel=preload; as=script; crossorigin=anonymous,
  <https://cdn.ampproject.org/rtv/012103020156005/v0/amp-viewer-integration-0.1.mjs>; rel=preload; as=script; crossorigin=anonymous,
  <https://cdn.ampproject.org/rtv/012103020156005/v0/amp-story-1.0.mjs>; rel=preload; as=script; crossorigin=anonymous,
  <https://travel-usnews-com.cdn.ampproject.org/i/s/travel.usnews.com/dims4/USNEWS/c689138/2147483647/resize/1000x1000>/quality/85/?url=https://travel.usnews.com/images/new_york_story.jpeg>; rel=preload; as=image

That's good to know, thanks!
Preloading the AMP scripts like this would be easy enough. For the background media we'd probably have to mark it as such during output generation for easier detection on the PHP side. Nothing too complicated though.

+1 to adding a link[rel=preload] with the first page main asset. We'll try to make this automatic from the AMP cache but for any Story that might be served from its origin, it should speed up the LCP. We'll run benchmarks and share our findings.

Proof-of-concept for preloading the first page's background media: #7505

Looks like stories generated with Newsroom AI are adding preload headers to output. See this example.
https://www.refinery29.com/stories/how-stuff-is-made-money/


It's better for Clearbacklog have a dialog

Clearbacklog is a dangerous operation. I think have a dialog to confirm will be better

add confirm dialog in #3


 I'll see if I can figure out how to patch these.
Remote Server returned '550 5.1.1 RESOLVER.ADR.RecipNotFound; not found'

host xxx.xxx[<IP_ADDRESS>] said: 550 5.1.1<EMAIL_ADDRESS>User unknown (in reply to RCPT TO command)

host xxx.xxx[<IP_ADDRESS>] said: 553 5.3.0<EMAIL_ADDRESS>No such user here (in reply to RCPT TO command)

550 5.1.1<EMAIL_ADDRESS>User unknown 503 5.0.0 Need RCPT (recipient)

550 5.1.1 RESOLVER.ADR.RecipNotFound; not found

550 5.1.10 RESOLVER.ADR.RecipientNotFound; Recipient not found by SMTP address lookup

550 unknown user 503-All RCPT commands were rejected with this error: 503-unknown user 503 Valid RCPT command must precede DATA

5.1.0 - Unknown address error 550-'5.1.1<EMAIL_ADDRESS>Recipient address rejected: xxx.xxx' (delivery attempts: 0)

5.1.0 - Unknown address error 550-'5.1.1 Mailbox<EMAIL_ADDRESS>does not exist' (delivery attempts: 0)

I see many of these do have correct reason "userunknown", but why are they marked as softbounce: 1 then?

@hekeli Thanks for the report. Almost all of these values of diagnosticcode above should be softbounce=0. We will try to parse if you post some bounce mails including all the email headers as a sample to us.

I haven't saved the original messages, but I will start saving new ones. But there's clearly some logic bug somewhere if reason == "unknownuser" and action == "failed", yet softbounce stays.

Thank you :-) I'm waiting for you to post bounce mails as a  sample.

Very sorry I made embarassing mistake grepping with "jq" tool. I've updated first post with correct diagnosticcode strings. We simply need to fix the reason to "unknownuser" for these. There is no other softbounce logic bug. :)


Add ADR

Architecture Decision Records

Fixed by https://github.com/open-education-polito/fare-invenio/commit/c9f11801cbc1249ecf5f602de6b532cc5e1a20a9


Make quotes really random

RQ is currently not really random since it first randoms the years, then the month etc.

they are now.


Fix #44: TypeError: Cannot read property 'length' of null

Fixed code in lib folder
Builded dist
Bumping package.json and bower.json to patch v0.6.6 to v0.6.7
Tagged v0.6.7
Pushed to sirap-group/angular-color-picker master
Created pull requiest to ruhley/angular-color-picker master

For a raison I didnt understand, when I cloned the project to make my fix for #44, the tagged version I get back was v0.6.6 ....
I just inspected conflicts of my previous merge request and discovered what happened..
So I merged tag 0.7.1 then resolved last conflicts, bumped package.json and bower.json to 0.7.2 and commited again.
So my new pull request is clean and ready to merge.

You can tag v0.7.2 now as I did on my fork


CloudWatch Synthetics Without Waiters

Describe the issue
Based on the documentation CloudWatch Synthetics should have waiters, but it doesn't have any when using the waiter_names method:
synthetics = boto3.client('synthetics')
print(synthetics.waiter_names) # Output = []

I don't know if it's expected or if the documentation is wrong, however in the meantime if someone face this issue I created a custom waiter for GetCanaryRuns API, hopefully is useful for anyone:
synthetics = boto3.client('synthetics')
waiter_name = 'GetLastCanaryStatus'

{
    'version': 2,
    'waiters': {
        'GetLastCanaryStatus': {
            'delay': 10,
            'operation': 'GetCanaryRuns',
            'maxAttempts': 10,
            'acceptors': [
                {
                    'expected': 'RUNNING',
                    'matcher': 'path',
                    'state': 'retry',
                    'argument': "CanaryRuns[0].Status.State"
                },
                {
                    'expected': 'PASSED',
                    'matcher': 'path',
                    'state': 'success',
                    'argument': "CanaryRuns[0].Status.State"
                },
                {
                    'expected': 'FAILED',
                    'matcher': 'path',
                    'state': 'failure',
                    'argument': 'CanaryRuns[0].Status.State'
                }
            ]
        }
    }
}

waiter_model = WaiterModel(waiter_config)
custom_waiter = create_waiter_with_client(waiter_name, waiter_model, synthetics)
custom_waiter.wait(Name="MyCanary")

Links
https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/synthetics.html#Synthetics.Client.get_waiter

Hi @niCSan thanks for reaching out. The get_waiter command is available for every service by default, but it won't return any waiters if there aren't any to return. There would be a waiters .json file in this directory if waiters existed for this service and a corresponding waiters section in the boto3 documentation (for example see CloudWatch waiters).
Thanks for sharing that custom waiter definition. Are there any other waiters you were hoping to use with the Synthetics service? Waiter model definitions are owned and implemented by service teams and shared across SDKs. We recommend submitting feature requests for new waiters through AWS Support but we can also redirect those requests internally.

Thanks @tim-finnigan I will create the feature request with the AWS Support.

Thanks for following up - if you have any other questions regarding this please let us know.


Remove the tf.cond and tf.control_dependencies in the codebase.

Describe the feature and the current behavior/state.
With tf.function, and more precisely autograph, tf.cond and tf.control_dependencies are not needed anymore. One can take a look at the the RFC for reference. TensorFlow Addons should aim to be an example for contributors who want to know how to make custom keras objects in TF2 in a clean way. It will also help us by making the code easier to read.
Relevant information

Are you willing to contribute it (yes/no): Some of it
Are you willing to maintain it going forward? (yes/no): Some of it
Is there a relevant academic paper? (if so, where): the RFC but it's not academic :p
Is there already an implementation in another framework? (if so, where): no
Was it part of tf.contrib? (if so, where): no

Which API type would this fall under (layer, metric, optimizer, etc.)
All
Who will benefit with this feature?
devs who read the code, so some users, contributors and maintainers.
Any other info.
I left tf.while_loop out of this proposal because there are some extra arguments that we might need to give to the while_loop function, and that's not possible with autograph.
Feel free to comment if you think it's a good/bad idea.

I left tf.while_loop out of this proposal because there are some extra arguments that we might need to give to the while_loop function, and that's not possible with autograph.

Is it only in the seq2seq decoder?

Yes, it's the only place where there is a tf.cond.
El jue., 7 may. 2020 21:38, bhack<EMAIL_ADDRESS>escribió:

I left tf.while_loop out of this proposal because there are some extra
arguments that we might need to give to the while_loop function, and that's
not possible with autograph.
Is it only in the seq2seq decoder
https://github.com/tensorflow/addons/blob/master/tensorflow_addons/seq2seq/decoder.py
?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/tensorflow/addons/issues/1794#issuecomment-625456119,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ADCLMK2NRQPZIGS3IMB5RI3RQMEZ3ANCNFSM4M3TDSUQ
.

I think tf.control_dependencies are still required for assert ops. For example the documentation of tf.debugging.assert_equal states:

Returns:
Op that raises InvalidArgumentError if x == y is False. This can be used with tf.control_dependencies inside of tf.functions to block followup computation until the check has executed.

Are they missing this case in the main doc reference?

Note: In TensorFlow 2 with eager and/or Autograph, you should not require this method, as code executes in the expected order. Only use tf.control_dependencies when working with v1-style code or in a graph context such as inside Dataset.map.

@guillaumekln  @bhack thanks for the pointers!
For user checks in call methods, I think we're going to go with this anyway: https://github.com/tensorflow/addons/issues/1417 which will allow us to do more checks and debugging at runtime. Since it's only in eager mode, we wouldn't have to use tf.control_dependencies.

It seems tf.control_dependencies may not be needed for assert ops, contrary to what the documentation says. Consider the following example:
import tensorflow as tf

@tf.function
def test(x):
    tf.debugging.assert_greater(x, 0)
    tf.print(x)
    return x

test(tf.constant(1))
test(tf.constant(-1))

It correctly raises an exception on the second call.

@guillaumekln I've already opened https://github.com/tensorflow/tensorflow/issues/39305 to try to make the docs homogeneous.

This can be closed :)


fixed use of configId to allow proper server config settings for uplo…

Set default value of 'var configID = null' to fix invalid storage credentials and proper server config settings for upload and download. Removed redundant commenting.

I created a new branch and cut and paste the changes so there was no history of keys in the commit.


Fix: Nanodbc exception when execute()-ing a SQL command or stored procedure that doesn't return data

This issue was moved to nanodbc/nanodbc#29


Feature Request: Append content to body tag attributes via Helmet

When using react Helmet, I would like a way to append content into my attributes onto my  tag.
For example this code will set my body class ...
JSX
<Helmet>

</Helmet>

Output

And when I have a component deeper in my application call helmet like such the body class is overwritten...
JSX
<Helmet>

</Helmet>

Output

Desired Output

Currently the fix for this in my application is to call the following which is not sustainable as we now have to maintain many body classes throughout our application...
JSX
<Helmet>

</Helmet>

Potential Solution
In order to set this up correctly you cannot call class but maybe using something like the following would be an appropriate way to append an item to helmet as calling class directly should still overwrite class so that a breaking change is not introduced to helmet?
JSX
<Helmet>

</Helmet>

Isn't this creeping beyond the scope of react-helmet? Helmet i.e. head?

+1

While react-helmet does not support appending classes, you can simply add new attributes to your body tag. Then use those attributes as selectors.
E.g.:
<App>
  <Helmet>

  </Helmet>
  <Helmet>

  </Helmet>
</App>

The output will be:

Then use attribute selectors:
body[data-first] {
  color: blue;
}

body[data-second] {
  color: red;
}

We have a 3rd party script adding classes to the body tag, but Helmet is overwriting them . Why is appending classes not supported?

The typical and recommended approach is to not wrap the entire body but to use helmet as a sibling to the body.
ie

    <Helmet>
        <meta charSet="utf-8" />
    </Helmet>
    .....

https://github.com/nfl/react-helmet#as-react-components
I could be misunderstanding the issue, let me know if that helps.

@tmbtech We're using react strictly client side, and Helmet to add some data attributes and update className='...' to an existing body tag.
If I understand correctly, your example applies to server side render, which is a different use case.

@Noyabronok can you provide an example via https://codesandbox.io

bump!!!
@Noyabronok example please.
@jeffredodd @tmbtech were you able to achieve this?

This task was for a former project but I heard they made quite a bit of progress with this in our UI platform by using https://github.com/staylor/react-helmet-async .

@jeffredodd Ah ok... https://github.com/staylor/react-helmet-async is this package for SSR only or client-side rendering as well?

Hello all, I am looking for placing a noscript snippet within body. Is there a way to achieve this with react-helmet? Thank you in advance

Closing as React has changed a ton in 4 years and this is not a good proposed solution. Plus this repo hasn't received updates in a while.


Expand on features

This pull request expands on features of different parsers.

This is a good example of why I ask for issues first.  There is a lot of detail to hash out related to this that I prefer not to be in PRs as they are more ephemeral (I regularly see a couple of PRs being opened for the same discussion).
My biggest concerns are

Clarity
Is it hitting on the right points

I do not feel this is very clear (requiring a key to interpret the columns is a bad sign) and I feel there are enough use cases that I'm not sure these are covering the right care abouts
I lean towards closing this in favor of further discussion in an issue.  If there is any concern over this, let me know!

I guess the question is how do you see the purpose of this project. The way I see it is to show what's available out there and to show the difference between projects.
Currently both clap_lex and pico_args are described as "No help generation" which is true but not really helpful - pico_args is more sketchy when it comes to correctness for example.
Or support for common command line shell conventions (-v -v -v -> -vvv), less common (-o file.txt -> -ofile.txt) or more obscure things like parsers a-la dd if=file of=out, find -exec {} ;, windows-like options /help, etc.
If all of this goes into a table then there should be a key describing columns. Benefits of having a table is that any newly added parser will have more accurate description instead of leaving a blank cell.

A discussion on requirements, aims, and goals is best left to an issue.  Let's leave PR discussions for the implementation