[SUPPORT] Property hoodie.datasource.write.recordkey.field not found during version ONE to TWO migration

Describe the problem you faced
I'm migrating Hudi from 0.8.0 to 0.9.0.
I'm testing it with simple workflow that gets data from s3 and puts to a Hudi table via Spark. This workflow is running fine for 0.8.0 in production.
When I try 0.9.0 and create brand new table then everything works fine, but when I try to add data to existed Hudi table I see the following error Error syncing to metadata table. and Property hoodie.datasource.write.recordkey.field not found (see stacktrace)
The parameter mentioned in the error already set as option when I write the data.
Could you help to identify where else I need to set the parameter?
To Reproduce
Steps to reproduce the behavior:

Create a Hudi Table using 0.8.0
Add data to the table using 0.9.0

Expected behavior
Data should be added & table should be migrated to version 2.
Environment Description

Hudi version : 0.8.0 -> 0.9.0

Spark version : 2.4.4

Hive version : 1.2.1

Hadoop version : 2.8.5

Storage (HDFS/S3/GCS..) : s3

Running on Docker? (yes/no) : yes

Stacktrace
21/10/30 00:00:14 INFO o.a.h.t.u.AbstractUpgradeDowngrade: Attempting to move table from version ONE to TWO
Exception in thread "main" org.apache.hudi.exception.HoodieMetadataException: Error syncing to metadata table.
    at org.apache.hudi.client.SparkRDDWriteClient.syncTableMetadata(SparkRDDWriteClient.java:459)
    at org.apache.hudi.client.AbstractHoodieWriteClient.preWrite(AbstractHoodieWriteClient.java:407)
    at org.apache.hudi.client.SparkRDDWriteClient.upsert(SparkRDDWriteClient.java:156)
    at org.apache.hudi.DataSourceUtils.doWriteOperation(DataSourceUtils.java:214)
    at org.apache.hudi.HoodieSparkSqlWriter$.write(HoodieSparkSqlWriter.scala:265)
    at org.apache.hudi.DefaultSource.createRelation(DefaultSource.scala:164)
    at org.apache.spark.sql.execution.datasources.SaveIntoDataSourceCommand.run(SaveIntoDataSourceCommand.scala:45)
    at org.apache.spark.sql.execution.command.ExecutedCommandExec.sideEffectResult$lzycompute(commands.scala:70)
    at org.apache.spark.sql.execution.command.ExecutedCommandExec.sideEffectResult(commands.scala:68)
    at org.apache.spark.sql.execution.command.ExecutedCommandExec.doExecute(commands.scala:86)
    at org.apache.spark.sql.execution.SparkPlan$$anonfun$execute$1.apply(SparkPlan.scala:131)
    at org.apache.spark.sql.execution.SparkPlan$$anonfun$execute$1.apply(SparkPlan.scala:127)
    at org.apache.spark.sql.execution.SparkPlan$$anonfun$executeQuery$1.apply(SparkPlan.scala:155)
    at org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:151)
    at org.apache.spark.sql.execution.SparkPlan.executeQuery(SparkPlan.scala:152)
    at org.apache.spark.sql.execution.SparkPlan.execute(SparkPlan.scala:127)
    at org.apache.spark.sql.execution.QueryExecution.toRdd$lzycompute(QueryExecution.scala:80)
    at org.apache.spark.sql.execution.QueryExecution.toRdd(QueryExecution.scala:80)
    at org.apache.spark.sql.DataFrameWriter$$anonfun$runCommand$1.apply(DataFrameWriter.scala:676)
    at org.apache.spark.sql.DataFrameWriter$$anonfun$runCommand$1.apply(DataFrameWriter.scala:676)
    at org.apache.spark.sql.execution.SQLExecution$$anonfun$withNewExecutionId$1.apply(SQLExecution.scala:78)
    at org.apache.spark.sql.execution.SQLExecution$.withSQLConfPropagated(SQLExecution.scala:125)
    at org.apache.spark.sql.execution.SQLExecution$.withNewExecutionId(SQLExecution.scala:73)
    at org.apache.spark.sql.DataFrameWriter.runCommand(DataFrameWriter.scala:676)
    at org.apache.spark.sql.DataFrameWriter.saveToV1Source(DataFrameWriter.scala:285)
    at org.apache.spark.sql.DataFrameWriter.save(DataFrameWriter.scala:271)
    at org.apache.spark.sql.DataFrameWriter.save(DataFrameWriter.scala:229)
    ...
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.spark.deploy.JavaMainApplication.start(SparkApplication.scala:52)
    at org.apache.spark.deploy.SparkSubmit.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:845)
    at org.apache.spark.deploy.SparkSubmit.doRunMain$1(SparkSubmit.scala:161)
    at org.apache.spark.deploy.SparkSubmit.submit(SparkSubmit.scala:184)
    at org.apache.spark.deploy.SparkSubmit.doSubmit(SparkSubmit.scala:86)
    at org.apache.spark.deploy.SparkSubmit$$anon$2.doSubmit(SparkSubmit.scala:920)
    at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:929)
    at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
Caused by: java.lang.IllegalArgumentException: Property hoodie.datasource.write.recordkey.field not found
    at org.apache.hudi.common.config.TypedProperties.checkKey(TypedProperties.java:48)
    at org.apache.hudi.common.config.TypedProperties.getString(TypedProperties.java:58)
    at org.apache.hudi.keygen.SimpleKeyGenerator.<init>(SimpleKeyGenerator.java:39)
    at org.apache.hudi.keygen.factory.HoodieSparkKeyGeneratorFactory.createKeyGeneratorByType(HoodieSparkKeyGeneratorFactory.java:78)
    at org.apache.hudi.keygen.factory.HoodieSparkKeyGeneratorFactory.createKeyGenerator(HoodieSparkKeyGeneratorFactory.java:57)
    at org.apache.hudi.HoodieSparkUtils$.getPartitionColumns(HoodieSparkUtils.scala:241)
    at org.apache.hudi.HoodieSparkUtils.getPartitionColumns(HoodieSparkUtils.scala)
    at org.apache.hudi.table.upgrade.OneToTwoUpgradeHandler.getPartitionColumns(OneToTwoUpgradeHandler.java:31)
    at org.apache.hudi.table.upgrade.BaseOneToTwoUpgradeHandler.upgrade(BaseOneToTwoUpgradeHandler.java:35)
    at org.apache.hudi.table.upgrade.SparkUpgradeDowngrade.upgrade(SparkUpgradeDowngrade.java:55)
    at org.apache.hudi.table.upgrade.AbstractUpgradeDowngrade.run(AbstractUpgradeDowngrade.java:123)
    at org.apache.hudi.table.upgrade.SparkUpgradeDowngrade.run(SparkUpgradeDowngrade.java:44)
    at org.apache.hudi.client.SparkRDDWriteClient.getTableAndInitCtx(SparkRDDWriteClient.java:409)
    at org.apache.hudi.client.SparkRDDWriteClient.upsertPreppedRecords(SparkRDDWriteClient.java:167)
    at org.apache.hudi.metadata.SparkHoodieBackedTableMetadataWriter.commit(SparkHoodieBackedTableMetadataWriter.java:106)
    at org.apache.hudi.metadata.HoodieBackedTableMetadataWriter.syncFromInstants(HoodieBackedTableMetadataWriter.java:425)
    at org.apache.hudi.metadata.HoodieBackedTableMetadataWriter.<init>(HoodieBackedTableMetadataWriter.java:121)
    at org.apache.hudi.metadata.SparkHoodieBackedTableMetadataWriter.<init>(SparkHoodieBackedTableMetadataWriter.java:62)
    at org.apache.hudi.metadata.SparkHoodieBackedTableMetadataWriter.create(SparkHoodieBackedTableMetadataWriter.java:58)
    at org.apache.hudi.client.SparkRDDWriteClient.syncTableMetadata(SparkRDDWriteClient.java:456)
    ... 41 more

Can you disable metadata and give it a try.
hoodie.metadata.enable = false.

Would you mind following this up @prashantwason please.

Looking into this.

thank you @nsivabalan @prashantwason for looking into this.
it works with hoodie.metadata.enable = false, but what will be the downside of setting it false?

@nsivabalan @vinothchandar  The issue here is that metadata table does not define the required properties hoodie.datasource.write.recordkey.field and hoodie.datasource.write.partitionpath.field in its WriteConfig. These properties are not required since the records are manually created to be written to the metadata table. So essentially the upgrade of HUDI with metadata table enabled from 0.8 -> 0.9 is broken.
Do we plan to backport a fix to the 0.9 branch or should I fix it for 0.10 on master?

@prashantwason : we haven't done any backporting so far. We can ask the user to disable metadata for now. but let's get it fixed in master.

with 0.10.0, as part of upgrade, we delete the metadata table (if exists) and re-bootstrap. hence, should not be an issue. for now, suggest to disable metadata and try upgrading.

Feel free to re-open or create another issue if you need more info.

Hi,
I recently upgraded Apache Hudi version to 0.10.0 and realized that redshift spectrum is not able to read data. Found couple of other links related to same issue but no solution yet. Only option right now is downgrade to earlier version. I tried downgrade command but received same error (java.lang.IllegalArgumentException: Property hoodie.datasource.write.recordkey.field not found) even after setting Hudi.metadata.enable to false in Hudi.properties. But I tried downgrade to version one and it ran fine however when I ran job it is still giving error unknown version code 3.
I am using AWS EMR 6.6.0 with Hudi cli 0.10. Please suggest.


Support all UIView attributes in UITextView

Make NUITextViewRenderer inherit from NUIViewRenderer.
Call super implementation in render: withClass: to support all UIView attributes.

@timbodeit Would be great if you could include some unit tests to cover this change. Other than that it looks good to me. I'll leave it to you to merge.

@Stunner This would be test coverage for UIView. Will try to find the time for it.

You and me both ;) #48.


Change runtime to provide access to deployed TriggerAuthentication CRDs

Change runtime to provide access to deployed TriggerAuthentication CRDs so that scalers can access them for retrieving authentication information.
This allows scalers to just use the parameters rather than having to lookup all the CRDs themselves.
This is a follow-up action for #307

If I remember correctly you were going to work on this @patnaikshekhar, is that correct?

Yes, @tomkerkhove I'll create a pull request for it this week


Rework the release process

Now that we use some of the Vox Pupuli tooling, we want to update the way
we prepare a release: the release:prepare rake tasks from Vox Pupuli
is not unsable with our current setup, so update he prep_version rake
tasks to update the version in both the .ddl and the .json files, and
also write some boilerplate in the CHANGELOG.md file.  The call
sequence is the same as used before to release a module:
$ bundle exec rake prep_version VERSION=5.5.0

When the changes are ready, a release is done from the main branch of
the repository by tagging the code and pushing the tag to GitHub where a
GitHub action will do the actual release:
$ git tag 5.5.0
$ git push --tags

To test these changes with modulesync:
$ bundle exec msync update --noop

(A diff of each change is shown, the files in modules/... are updated and can be inspected)

These changes can also be reviewed from the PR directly: the Run msync --noop against all modules test has a Run msync --noop tasks that basically run this command direct link.
Without --noop, modulesync will commit the changes in each repo and push the branch to GitHub.  Providing a custom commit message can be great:
$ bundle exec msync update --message "Rework the release process"

I like to use the gh command to open Pull-Requests when the changes are ready, I usually go with:
$ bundle exec msync execute -- gh pr create --fill --draft


"h" format throws exception causing blank date during conversion

If you use "h" formatting on an hour > 12 the value is actually an integer and throws an exception if you try to substr it. This results in no result at all. I've fixed it by checking it's a string before calling substr(). Attached below.
case "h":
	if (format.charAt(i + 1) == "h") {
		break;
	}
	/* time.hour is "00" as string == is used instead of === */
	var hour = (time.hour == 0 ? 12 : time.hour < 13 ? time.hour : time.hour - 12);
	if (typeof hour == 'string' && hour < 10) {
		hour = hour.substr(1, 1);
	}
	retValue += hour;
	pattern = "";
	break;

Tks @gwilson2151. I added you code. Could you test it?

I can't verify the fix. The "h" formatting now shows what I expect "hh" would show (the 0 before 1-9 hours) and the "d" on the date doesn't get converted. I can't deploy this.

I created a test
https://github.com/phstc/jquery-dateFormat/blob/master/Test.html
testShortHour: function() { with(this) {
	assertEqual('5', $.format.date('Mon Feb 28 2011 17:45:00 GMT-0400 (Eastern Daylight Time)', 'h'));
	assertEqual('5', $.format.date('Mon Feb 28 20112 17:45:00 GMT-0400 (Eastern Daylight Time)', 'h'));
	assertEqual('13.01.10 10', $.format.date('Wed Jan 13 10:43:41 CET 2010', 'dd.MM.yy h'));
}}

It's passing in my test.
Could you create a failing test?

I apologize for the delay in replying to this. Frankly I forgot about it. The issue as originally reported has been fixed.

I'm sorry, I was incorrect. It has not been fixed.
Add something like the following to your unit test:
testShortHour: function() { with(this) {
    assertEqual('6', $.format.date('Wed Jan 25 06:23:38 PST 2012', 'h'); // check that leading zeros are dropped
    assertEqual('5', $.format.date('Mon Feb 28 2011 17:45:00 GMT-0400 (Eastern Daylight Time)', 'h'));
    assertEqual('5', $.format.date('Mon Feb 28 20112 17:45:00 GMT-0400 (Eastern Daylight Time)', 'h'));
    assertEqual('13.01.10 10', $.format.date('Wed Jan 13 10:43:41 CET 2010', 'dd.MM.yy h'));
}},

could you test it again?

Looks good. Thanks Pablo.


WIP: fix: failure related block devices check by upgrading dependencies

What this PR does / why we need it:
New installs are failing after April 14. See: https://testgrid.kurl.sh/

Which issue(s) this PR fixes:

Fixes # [sc-74865]
Special notes for your reviewer:

Steps to reproduce

Does this PR introduce a user-facing change?

Does this PR require documentation?

Should be resolved by https://github.com/replicatedhq/kURL/pull/4395


Issue with Creating a Public DID using an Endorser's DID

Dear Aries Framework JavaScript Team,
I hope this message finds you well.
Recently, I've been working on creating a decentralized identifier (DID) on the http://test.bcovrin.vonx.io/ network. I've successfully created an endorser's DID HDHBV2AyvefsjTnLkEYXFa that you can view on the following URL:
http://test.bcovrin.vonx.io/browse/domain?page=1&query=HDHBV2AyvefsjTnLkEYXFa&txn_type=1
Following this, I attempted to generate a public DID using the aforementioned endorser's DID, employing the provided code snippet:
  const createdDid = async () => {
    await agent!.dids
      .create<IndyVdrDidCreateOptions>({
        method: 'indy',
        secret: {
          seed: TypedArrayEncoder.fromString('some seed'),
        },
        options: {
          role: 'ENDORSER',
          endorserDid: 'did:indy:bcovrin:test:HDHBV2AyvefsjTnLkEYXFa',
          endorserMode: 'internal',
        },
      })
      .then(x => console.log('did:', x));
  };

Unfortunately, I encountered the following error during this process:
unknownError: Could not resolve did did:indy:bcovrin:test:HDHBV2AyvefsjTnLkEYXFa. notFound resolver_error: Unable to resolve did 'did:indy:bcovrin:test:HDHBV2AyvefsjTnLkEYXFa': IndyVdrError: Error: Request failed: client request invalid: InvalidClientRequest('LibindyDid111111111111',<PHONE_NUMBER>554161000, 'validation error [ClientGetAttribOperation]: not a valid hash (needs to be in hex too) (hash=endpoint)')

You may also find the following screenshot illustrative of the encountered error:

For further clarity, here is my agent configuration:
export const initializeAgent = async () => {
  const agent = new Agent({
    config,
    dependencies: agentDependencies,
    modules: {
      connections: new ConnectionsModule({
        autoAcceptConnections: true,
      }),
      indyVdr: new IndyVdrModule({
        indyVdr,
        networks: [
          {
            isProduction: false,
            indyNamespace: 'bcovrin:test',
            genesisTransactions: appConfig.GENESIS,
            connectOnStartup: true,
          },
        ],
      }),
      anoncredsRs: new AnonCredsRsModule({
        anoncreds,
      }),
      anoncreds: new AnonCredsModule({
        registries: [new IndyVdrAnonCredsRegistry()],
      }),
      askar: new AskarModule({
        ariesAskar,
      }),
      dids: new DidsModule({
        registrars: [new IndyVdrIndyDidRegistrar()],
        resolvers: [new IndyVdrIndyDidResolver()],
      }),
      credentials: new CredentialsModule({
        credentialProtocols: [
          new V2CredentialProtocol({
            credentialFormats: [
              new LegacyIndyCredentialFormatService(),
              new AnonCredsCredentialFormatService(),
            ],
          }),
        ],
      }),
    },
  });

  agent.registerOutboundTransport(new HttpOutboundTransport());
  agent.registerOutboundTransport(new WsOutboundTransport());

  await agent.initialize();

  console.log('agent initialized');

  return agent;
};

I would appreciate your expert guidance on how I could resolve this issue. Is there a specific procedure or any additional steps that I'm missing to establish the public DID successfully?
Looking forward to your support and feedback.
Kind regards, Yurii

Hello @TimoGlastra, could someone from your team participate, please

@2mau Is this something you have knowledge of?

@djleonskennedy I'm not 100% sure what the error is. I suspect it is because you did not import the endorser did you created into the agent's wallet. Also, when you create a new did, you can't set the Endorser role because you are not creating an Endorser did but a did with more restrictive permissions, and the secret field does not necessarily need to be set.
I included a snippet that works for me. I hope that helps.
    const name = 'someName'
    const config = {
      label: name,
      walletConfig: {
        id: name,
        key: name,
      },
      endpoints: [`http://localhost:${this.port}`],
    } satisfies InitConfig

    const initializeAgent = async () => {
      const agent = new Agent({
        config,
        dependencies: agentDependencies,
        modules: {
          connections: new ConnectionsModule({
            autoAcceptConnections: true,
          }),
          indyVdr: new IndyVdrModule({
            indyVdr,
            networks: [
              {
                isProduction: false,
                indyNamespace: 'bcovrin:test',
                genesisTransactions: `{"reqSignature":{},"txn":{"data":{"data":{"alias":"Node1","blskey":"4N8aUNHSgjQVgkpm8nhNEfDf6txHznoYREg9kirmJrkivgL4oSEimFF6nsQ6M41QvhM2Z33nves5vfSn9n1UwNFJBYtWVnHYMATn76vLuL3zU88KyeAYcHfsih3He6UHcXDxcaecHVz6jhCYz1P2UZn2bDVruL5wXpehgBfBaLKm3Ba","blskey_pop":"RahHYiCvoNCtPTrVtP7nMC5eTYrsUA8WjXbdhNc8debh1agE9bGiJxWBXYNFbnJXoXhWFMvyqhqhRoq737YQemH5ik9oL7R4NTTCz2LEZhkgLJzB3QRQqJyBNyv7acbdHrAT8nQ9UkLbaVL9NBpnWXBTw4LEMePaSHEw66RzPNdAX1","client_ip":"<IP_ADDRESS>","client_port":9702,"node_ip":"<IP_ADDRESS>","node_port":9701,"services":["VALIDATOR"]},"dest":"Gw6pDLhcBcoQesN72qfotTgFa7cbuqZpkX3Xo6pLhPhv"},"metadata":{"from":"Th7MpTaRZVRYnPiabds81Y"},"type":"0"},"txnMetadata":{"seqNo":1,"txnId":"fea82e10e894419fe2bea7d96296a6d46f50f93f9eeda954ec461b2ed2950b62"},"ver":"1"}
{"reqSignature":{},"txn":{"data":{"data":{"alias":"Node2","blskey":"37rAPpXVoxzKhz7d9gkUe52XuXryuLXoM6P6LbWDB7LSbG62Lsb33sfG7zqS8TK1MXwuCHj1FKNzVpsnafmqLG1vXN88rt38mNFs9TENzm4QHdBzsvCuoBnPH7rpYYDo9DZNJePaDvRvqJKByCabubJz3XXKbEeshzpz4Ma5QYpJqjk","blskey_pop":"Qr658mWZ2YC8JXGXwMDQTzuZCWF7NK9EwxphGmcBvCh6ybUuLxbG65nsX4JvD4SPNtkJ2w9ug1yLTj6fgmuDg41TgECXjLCij3RMsV8CwewBVgVN67wsA45DFWvqvLtu4rjNnE9JbdFTc1Z4WCPA3Xan44K1HoHAq9EVeaRYs8zoF5","client_ip":"<IP_ADDRESS>","client_port":9704,"node_ip":"<IP_ADDRESS>","node_port":9703,"services":["VALIDATOR"]},"dest":"8ECVSk179mjsjKRLWiQtssMLgp6EPhWXtaYyStWPSGAb"},"metadata":{"from":"EbP4aYNeTHL6q385GuVpRV"},"type":"0"},"txnMetadata":{"seqNo":2,"txnId":"1ac8aece2a18ced660fef8694b61aac3af08ba875ce3026a160acbc3a3af35fc"},"ver":"1"}
{"reqSignature":{},"txn":{"data":{"data":{"alias":"Node3","blskey":"3WFpdbg7C5cnLYZwFZevJqhubkFALBfCBBok15GdrKMUhUjGsk3jV6QKj6MZgEubF7oqCafxNdkm7eswgA4sdKTRc82tLGzZBd6vNqU8dupzup6uYUf32KTHTPQbuUM8Yk4QFXjEf2Usu2TJcNkdgpyeUSX42u5LqdDDpNSWUK5deC5","blskey_pop":"QwDeb2CkNSx6r8QC8vGQK3GRv7Yndn84TGNijX8YXHPiagXajyfTjoR87rXUu4G4QLk2cF8NNyqWiYMus1623dELWwx57rLCFqGh7N4ZRbGDRP4fnVcaKg1BcUxQ866Ven4gw8y4N56S5HzxXNBZtLYmhGHvDtk6PFkFwCvxYrNYjh","client_ip":"<IP_ADDRESS>","client_port":9706,"node_ip":"<IP_ADDRESS>","node_port":9705,"services":["VALIDATOR"]},"dest":"DKVxG2fXXTU8yT5N7hGEbXB3dfdAnYv1JczDUHpmDxya"},"metadata":{"from":"4cU41vWW82ArfxJxHkzXPG"},"type":"0"},"txnMetadata":{"seqNo":3,"txnId":"7e9f355dffa78ed24668f0e0e369fd8c224076571c51e2ea8be5f26479edebe4"},"ver":"1"}
{"reqSignature":{},"txn":{"data":{"data":{"alias":"Node4","blskey":"2zN3bHM1m4rLz54MJHYSwvqzPchYp8jkHswveCLAEJVcX6Mm1wHQD1SkPYMzUDTZvWvhuE6VNAkK3KxVeEmsanSmvjVkReDeBEMxeDaayjcZjFGPydyey1qxBHmTvAnBKoPydvuTAqx5f7YNNRAdeLmUi99gERUU7TD8KfAa6MpQ9bw","blskey_pop":"RPLagxaR5xdimFzwmzYnz4ZhWtYQEj8iR5ZU53T2gitPCyCHQneUn2Huc4oeLd2B2HzkGnjAff4hWTJT6C7qHYB1Mv2wU5iHHGFWkhnTX9WsEAbunJCV2qcaXScKj4tTfvdDKfLiVuU2av6hbsMztirRze7LvYBkRHV3tGwyCptsrP","client_ip":"<IP_ADDRESS>","client_port":9708,"node_ip":"<IP_ADDRESS>","node_port":9707,"services":["VALIDATOR"]},"dest":"4PS3EDQ3dW1tci1Bp6543CfuuebjFrg36kLAUcskGfaA"},"metadata":{"from":"TWwCRQRZ2ZHMJFn9TzLp7W"},"type":"0"},"txnMetadata":{"seqNo":4,"txnId":"aa5e817d7cc626170eca175822029339a444eb0ee8f0bd20d3b0b76e566fb008"},"ver":"1"}`,
                connectOnStartup: true,
              },
            ],
          }),
          anoncredsRs: new AnonCredsRsModule({
            anoncreds,
          }),
          anoncreds: new AnonCredsModule({
            registries: [new IndyVdrAnonCredsRegistry()],
          }),
          askar: new AskarModule({
            ariesAskar,
          }),
          dids: new DidsModule({
            registrars: [new IndyVdrIndyDidRegistrar()],
            resolvers: [new IndyVdrIndyDidResolver()],
          }),
          credentials: new CredentialsModule({
            credentialProtocols: [
              new V2CredentialProtocol({
                credentialFormats: [new LegacyIndyCredentialFormatService(), new AnonCredsCredentialFormatService()],
              }),
            ],
          }),
        },
      })

      agent.registerOutboundTransport(new HttpOutboundTransport())
      agent.registerOutboundTransport(new WsOutboundTransport())
      await agent.initialize()

      // import the did in the wallet so it can be used
      const key = await agent.wallet.createKey({
        keyType: KeyType.Ed25519,
        // This is the seed you get when registering a DID ON http://test.bcovrin.vonx.io/
       // TODO!: do not use this seed. Create your own
        privateKey: TypedArrayEncoder.fromString('99250145374183211255492751371483'),
      })

      // did is first 16 bytes of public key encoded as base58
      const unqualifiedIndyDid = TypedArrayEncoder.toBase58(key.publicKey.slice(0, 16))
      const newEndorserDid = `did:indy:bcovrin:test:${unqualifiedIndyDid}`

      // import the did in the wallet so it can be used
      await agent.dids.import({ did: newEndorserDid })

      return { agent, newEndorserDid }
    }

    const { agent, newEndorserDid } = await initializeAgent()

    const didRegistrationResult = await agent.dids.create<IndyVdrDidCreateOptions>({
      method: 'indy',
      options: {
        endorserDid: newEndorserDid,
        endorserMode: 'internal',
      },
    })

    const newDid = didRegistrationResult.didState.did

    await agent.shutdown()
    await agent.wallet.delete()

@2mau Thank you a lot, I'll try to do it asap

Hello @ 2mau, I would like to know the purpose of this part.
// did is first 16 bytes of public key encoded as base58
const unqualifiedIndyDid = TypedArrayEncoder.toBase58(key.publicKey.slice(0, 16))
const newEndorserDid = `did:indy:bcovrin:test:${unqualifiedIndyDid}`

@djleonskennedy If you create the key from a seed, you can essentially get the unqualified Indy Did with this process. It is the same Did that you will see when you register an let's say endorser on bcovrin Test.

@2mau copy that, thank you for your help! Appreciated


Better License?

The intention of using CC-BY was that it's simple but official.
Some have pointed out, though, that it's not generally a good fit for code, and mixing with other licences.

CC not good for code. If you ask to whether MIT or BSD, It'd say, take MIT because it's more clear about what the terms are IMHO.


Document "Who can add users to streams" setting

We should document the "Who can add users to streams" setting in Settings > Organization permissions. Known pages to be updated:

[ ] https://zulip.com/help/add-or-remove-users-from-a-stream. Can be a new section above "Configure who can remove users".
[ ] https://zulip.com/help/stream-permissions

@drrosa Are you up for taking care of this one?


Bug

Give a brief about the bug ✍

There's a spacing issue  in the heading.
Unnecessary use of ':'.
And the font family looks off. I would like to make it more attractive.

What is the expected behavior? 🤔
Description
Provide step by step information reproduce the bug 📄
Description
Select program in which you are contributing
No response
Code of Conduct

[X] I follow CONTRIBUTING GUIDELINE of this project.

@manyahegde I have assigned you this issue but just correcting the spacing wont give you points for the contribution, improve the overall user interface.

okayy

@manyahegde I have assigned you this issue but just correcting the spacing wont give you points for the contribution, improve the overall user interface.

okayy

@thevirengarg okayy

@thevirengarg I have created the PR, please add label and accept it. I have changed the ui other than spacing and punctuation issues.


Update known-issues.md

Contributions: We are not currently taking public contributions - see our contributions policy. However, we are accepting issues and we do want your feedback.

Description
Updated the known-issues document with an issue: schema generation doesn't support non-alphanumeric characters.
Primary reviewers
@oblm @improbable-valentyn

I've created a bug in Jira nad updated the description.


fix: export GioIconsModule

Description
GioIconsModule was not exported in public-api, therefore we couldn't import it in our app 🙈

Gravitee.io Automatic Deployment
A prerelease version of this package has been published! 🚀
To use it in your project run the following lines:
npm install<EMAIL_ADDRESS># or
yarn add<EMAIL_ADDRESS>

Gravitee.io Automatic Deployment
A prerelease version of this package has been published! 🚀
To use it in your project run the following lines:
npm install<EMAIL_ADDRESS># or
yarn add<EMAIL_ADDRESS>

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

npm package (@latest dist-tag)
npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Not an Issue but thank you

I can finally use Firefox.
I got really attached to the custom typing sounds I set. Since the Manifest V3 thing Is happening and all, and I always liked Firefox anyway, I wanted to switch from Opera GX. I couldn't because this customization mattered a lot to me
I was honest to god going to ( attempt to... ) make a typing sounds extension myself because I couldn't find one that existed
Apparently not? This gem was just hiding from me? Allows Importing real GX mods and all?
I'm ecstatic, Typing this and hearing my sounds despite not being In GX
Thank you. Wholeheartedly. It works flawlessly, besides the little address bar quirk
Sorry If this "Issue" Is... an Issue. I just wanted to show my gratitude and this was the most convenient way for me

Wait literally this Is what firefox reviews are for. Guess I got too excited about It
oh well, still : ) I'll be sure to leave one though

haha, no worries about the issue, i've done the same before :p
i'm glad that i was able to help and make your day better! ^^


Outdated documentation for ImageWriter

ImageWriter second argument is image mode, not dpi.
https://github.com/WhyNotHugo/python-barcode/blob/main/docs/writers.rst

Hmmm. Yeah, these docs should likely be merged into the docstrings so they stay in sync.


[BEAM-14448] add datastore test

Please add a meaningful description for your change here

Thank you for your contribution! Follow this checklist to help us incorporate your contribution quickly and easily:

[ ] Choose reviewer(s) and mention them in a comment (R: @username).
[ ] Format the pull request title like [BEAM-XXX] Fixes bug in ApproximateQuantiles, where you replace BEAM-XXX with the appropriate JIRA issue, if applicable. This will automatically link the pull request to the issue.
[ ] Update CHANGES.md with noteworthy changes.
[ ] If this contribution is large, please file an Apache Individual Contributor License Agreement.

See the Contributor Guide for more tips on how to make review process smoother.
To check the build health, please visit https://github.com/apache/beam/blob/master/.test-infra/BUILD_STATUS.md
GitHub Actions Tests Status (on master branch)

See CI.md for more information about GitHub Actions CI.

R: @pabloem

LGTM. Thanks @johnjcasey ! I think this shoul;d be enough for datastream : )


Branch for support for typst  0.12

I will be happy to help with  potentially adjusting the template for  typst 0.12, I see there is a branch dev,  I  can create fork and submit my changes  later via PR but those should be against potential new branch, not the current one with typst 0.11.(1)

I would appreciate a PR, thank you. I have been waiting for release support for typst .12 in Quarto before getting on this; so would consider making sure that things are stable on the Quarto side before doing a lot of work.

This is also related to https://github.com/mvuorre/quarto-preprint/issues/24
I think in long  is a good idea to adding some info to README about compatibility of the template version with specific version of quarto, I am running the latest version of Rstudio/quarto, but I remember that some of my collaborators working in the hospital had the  older version 2 or 3 releases back, and they were blocked from updating it, also in educational departments there might some sort of policy to update the software only once per year
Again this is just my comment,  I don't know what is the purpose of this template (to serve primarily inside your organization) or to be  a more universal template;  having releases is really good idea, but if you want to support multiple version of quarto/typst at the same time, having separate branches tied with typst/quarto version might be even a better  idea (with main is the latest development version), this way it will be easier to back-port bugfixes to older version, but this might introduce too much additional work for you to maintain those branches
For example mne is having branches for each  0.x release https://github.com/mne-tools/mne-python
typst 0.12 coming 1.7 will introduce at least a few deprecation and 1 settings stops working, separating template code working with  0.11 and 0.12 might be a good idea in future (while still supporting  quarto 1.5 and 1.6)

on the other hand "only three numbers matter: zero, one, and more-than-one" http://agileinaflash.blogspot.com/2012/06/simplify-design-with-zero-one-many.html this can be overshooting, I asked simple question in typst community related to this issue https://github.com/typst/typst/discussions/5369

Thanks. I am not going to support multiple versions but just the latest releases of quarto/typst whatever--with the exception that it is a wild west currently as things are kind of experimental at the moment. (The purpose of this template is to "just work" which, obv, is impossible because YMMV depending on for example if you are allowed to update things...)

I will open PRs with smaller changes (starting from https://github.com/mvuorre/quarto-preprint/pull/26), please let me know if should open it against main or dev branch, I  am closing  this issue


XOXO Comics not loading

Source information
XOXO Comics 1.4.5
Source language
English
Steps to reproduce

Install or Update XOXO Comics
Search for Comic or Click on the Extensions to see Popular Comics
See that nothing loads

Expected behavior
Comics load when I use search or click on the Extension
Actual behavior
Nothing loads
Tachiyomi version
0.15.2
Android version
Android 13
Other details
Webview works without an issue
Acknowledgements

[X] I have searched the existing issues and this is a new ticket, NOT a duplicate or related to another open or closed issue.
[X] I have written a short but informative title.
[X] I have updated the app to version 0.15.1.
[X] I have updated all installed extensions.
[X] I have tried the troubleshooting guide.
[X] If this is an issue with the app itself, I should be opening an issue in the app repository.
[X] I will fill out all of the requested information in this form.

Yup they changed the domain from .com to .net I think, was gonna try to fix it but I cant even find the extension in the source code lol

Does it load anything for you after updating the extension? I've updated it to 1.4.5 and I still don't see anything loading. I can see the site and everything just fine with Webview, but I can't actually search for/look at anything through the app.


contextual version 3.0.0 prints interpolated text during compile

Very minor issue, but I think there may be some debugging statements left in. For example, with my interpolator:
scala> import org.phenoscape.sparql.SPARQLInterpolation._
import org.phenoscape.sparql.SPARQLInterpolation._

scala> val s = sparql"hello"
Literals: 'List(hello)'
s: org.phenoscape.sparql.SPARQLInterpolation.QueryText = QueryText(hello)

I don't expect to see Literals: 'List(hello)'.

Looks like I must have left a println in there... I'll sort this out and publish 3.0.1 asap.

@propensive, thanks—I see 3.0.1 but Prefix seems to have disappeared again in that release. Is that expected?

I'll have a look at what I just published... I guess I've made a mistake with the branch I published, but for now: hold on for 3.0.2. :/

Any news on 3.0.2?


Strict parsing (moment(dateString, format)) is failing

moment('moldovka2', 'YYYY-MM-DDTHH:mm:ss.SSSZ').toDate()
// Tue Jan 01    2 00:00:00 GMT+0200 (EET)
moment('moldovka2', 'YYYY-MM-DDTHH:mm:ss.SSSZ').isValid()
// true

How to reproduce:

Go to http://momentjs.com/ (Chrome Version 52.0.2743.116 (64-bit) in Ubuntu 16.04)
Open dev console
Enter code from example above

(Time and date when this was run is Wed Aug 31 2016 14:48:48 GMT+0300 (EEST))
console.log( (new Date()).toString())
console.log((new Date()).toLocaleString())
console.log( (new Date()).getTimezoneOffset())
console.log( navigator.userAgent)
console.log(moment.version)
VM83:1 Wed Aug 31 2016 14:49:18 GMT+0300 (EEST)
VM83:2 8/31/2016, 2:49:18 PM
VM83:3 -180
VM83:4 Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36
VM83:5 2.14.1

That is not strict parsing.  The default is non-strict.  You have to pass true as a third parameter to turn on strict parsing.

Thank you for explanation, indeed, having read complete section I found this. But could you please consider adding (changing) it to section menu (right sidebar), something like "String + Format + Strictness", or probably adding some warning (note) here, at String+Format subsection, since it's very easy to miss that during brief read.


Behavior of eta if x, y = 0 in TLorenzVector

Hi,
I'm wondering if we want to reproduce the behavior of ROOT.TLorentzVector for eta in the case that x, y = 0 (See https://root.cern.ch/doc/master/TVector3_8cxx_source.html#l00320). That is, ROOT returns sign(z)*10e10.
Currently, uproot-methods throws a ZeroDivisionError:
import uproot_methods
lv = uproot_methods.TLorentzVector(0,0,0,0)
lv.eta # throws ZeroDivisionError

But maybe this behavior is desired?
Thanks,
Javier

Hrmmm I think it would be best if we returned sign(z)*np.inf. I think that's better than returning some ridiculous number.
@jpivarski Your thoughts?

We never claimed that these Lorentz vectors would have the same behavior as ROOT TLorentzVectors, except inasmuch as they approximate the same mathematical system.
We should think about the limit points. Special floating point values like nan and inf are better than raising exceptions for datasets that are large enough to almost certainly contain pathologies. (It's also possible that arrays of Lorentz vectors have different special cases than individual objects, and that's something that we should synchronize.) But 10e10 for such a case is not something to emulate. Such a thing would stick out as an artificial feature in a histogram and must have been rediscovered by many students. (Especially consider the case of converting data from these eta values into x and y—there would be a strange ring...)
Also worth considering is that these Lorentz vectors are planned to be replaced with the vector package. @henryiii might have something to add about that, although I understand that schedules are in flux at the moment.

I agree with @lgray. That fixed 10r10 can only harm you down the line in a non-trivial way …
Note that we can do better in these limits for rapidity, which you can still calculate from tanh^{-1}(p_z/E) for a particle with non-zero mass.


Fix the issue the column name is not right

Column name is wrong when the column is followed with a direct '--' comment, this commit fix the issue by correctly set the column_start pointer during the identifier search.
Task: BABEL-5139
Check List

[ ] Commits are signed per the DCO using --signoff

By submitting this pull request, I confirm that my contribution is under the terms of the Apache 2.0 and PostgreSQL licenses, and grant any person obtaining a copy of the contribution permission to relicense all or a portion of my contribution to the PostgreSQL License solely to contribute all or a portion of my contribution to the PostgreSQL open source project.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

Pull Request Test Coverage Report for Build<PHONE_NUMBER>2
Details

2 of 2 (100.0%)  changed or added relevant lines in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.001%) to 73.674%

Totals

Change from base Build<PHONE_NUMBER>6:
0.001%

Covered Lines:
44178

Relevant Lines:
59964

💛  - Coveralls


build issue with --release flag - Assertion failed: getOrCreateRegularScope

I am not sure this is LLVM issue or related to amber.
When I tried to build with --release flag, I got following error.
It is ok without --release flag though. Any idea what could be the issue?
% crystal build --release src/hello.cr
[warn] kq_init: detected broken kqueue; not using.: Undefined error: 0
Assertion failed: (cast<DISubprogram>(Scope)->describes(MF->getFunction())), function getOrCreateRegularScope, file /var/cache/omnibus/src/llvm/llvm-3.9.1.src/lib/CodeGen/LexicalScopes.cpp, line 159.
/opt/crystal/bin/crystal: line 102: 63272 Abort trap: 6           "$INSTALL_DIR/embedded/bin/crystal" "$@"

% crystal -v
[warn] kq_init: detected broken kqueue; not using.: Undefined error: 0
Crystal 0.24.1 [80a975c] (2017-12-22)

LLVM: 3.9.1
Default target: x86_64-apple-macosx
% amber -v
Amber CLI (amberframework.org) - v0.6.0

Looks similar to #4719 though the LLVM error is slightly different.
The broken kqueue warning seems unrelated (but maybe a different issue?)

Looks like #4719 to me. Please install with home brew, its using llvm 5 there and the problem is fixed.


Support includes in Swift templates

This PR implements #243
It introduces the custom tag <%- include("relative_path_to_template") %> which will add the code from the referenced template (inspired from the EJS implementation).
The features supported by this tag:

inclusion of templates relative to the including template
ability to omit the swifttemplate extension in the tag
include cycles detection (templates including each other) to show user friendly error instead of some stack overflow error

I hope you'll like this! 😃
Unrelated side note:
When generating the docs I noticed a lot of changes across the html files. I've only added the changes related to my updates but maybe all these changes should be integrated to the repository.

👍 awesome!


Draw manipulation arrows on entities

Draw the 3 x,y,z arrows at the source of an entity.
https://github.com/CedricGuillemet/ImGuizmo

Closed by c630b5249e6135c2635771ce37662a60a3528859


Sync error in iphone and need fix configuration all the time

Abstract
When I use iphone to sync as second device, It always error ,need me to fix the error in "check database configuration", and then recyle the process. Even the ipyhon vault is void.
 And I sync almost 50 pluggin configuration use custom sycn with 5 device version. I don't know how to delete existed device custom hidden file version

maybe it is because the vault in win is too big ? And I sync almost 50 pluggin configuration use custom sycn with 5 device version. I don't know how to delete existed device custom hidden file version

Sorry for the delay!
If you are using fly.io, have you enabled the swap?
Maybe it is the same as #225. Would you mind if I ask you to check #225, and the colab note that has been referred from the issue once, please?


Help with parallel request

Any idea in how to handle Mixpanel::HTTPError: too many export requests in progress for this project while making parallel requests?
I'm using the last version of mix panel_client
Backtrace
	from /Users/ruben/.rvm/gems/ruby-1.9.3-p547/gems/mixpanel_client-4.1.6/lib/mixpanel/client.rb:130:in `block in prepare_parallel_request'
	from /Users/ruben/.rvm/gems/ruby-1.9.3-p547/gems/typhoeus-0.6.7/lib/typhoeus/request/callbacks.rb:129:in `call'
	from /Users/ruben/.rvm/gems/ruby-1.9.3-p547/gems/typhoeus-0.6.7/lib/typhoeus/request/callbacks.rb:129:in `block in execute_callbacks'
	from /Users/ruben/.rvm/gems/ruby-1.9.3-p547/gems/typhoeus-0.6.7/lib/typhoeus/request/callbacks.rb:128:in `map'
	from /Users/ruben/.rvm/gems/ruby-1.9.3-p547/gems/typhoeus-0.6.7/lib/typhoeus/request/callbacks.rb:128:in `execute_callbacks'
	from /Users/ruben/.rvm/gems/ruby-1.9.3-p547/gems/typhoeus-0.6.7/lib/typhoeus/request/operations.rb:35:in `finish'
	from /Users/ruben/.rvm/gems/ruby-1.9.3-p547/gems/typhoeus-0.6.7/lib/typhoeus/easy_factory.rb:105:in `block in set_callback'
	from /Users/ruben/.rvm/gems/ruby-1.9.3-p547/gems/ethon-0.6.3/lib/ethon/easy/response_callbacks.rb:65:in `call'
	from /Users/ruben/.rvm/gems/ruby-1.9.3-p547/gems/ethon-0.6.3/lib/ethon/easy/response_callbacks.rb:65:in `block in complete'
	from /Users/ruben/.rvm/gems/ruby-1.9.3-p547/gems/ethon-0.6.3/lib/ethon/easy/response_callbacks.rb:65:in `each'
	from /Users/ruben/.rvm/gems/ruby-1.9.3-p547/gems/ethon-0.6.3/lib/ethon/easy/response_callbacks.rb:65:in `complete'
	from /Users/ruben/.rvm/gems/ruby-1.9.3-p547/gems/ethon-0.6.3/lib/ethon/multi/operations.rb:148:in `check'
	from /Users/ruben/.rvm/gems/ruby-1.9.3-p547/gems/ethon-0.6.3/lib/ethon/multi/operations.rb:161:in `run'
	from /Users/ruben/.rvm/gems/ruby-1.9.3-p547/gems/ethon-0.6.3/lib/ethon/multi/operations.rb:43:in `perform'
	from /Users/ruben/.rvm/gems/ruby-1.9.3-p547/gems/typhoeus-0.6.7/lib/typhoeus/hydra/runnable.rb:21:in `run'
	from /Users/ruben/.rvm/gems/ruby-1.9.3-p547/gems/typhoeus-0.6.7/lib/typhoeus/hydra/memoizable.rb:51:in `run'
	from /Users/ruben/.rvm/gems/ruby-1.9.3-p547/gems/mixpanel_client-4.1.6/lib/mixpanel/client.rb:139:in `run_parallel_requests'

Sounds like there's some export data api limit. Maybe you could throttle the number of requests you're sending at a time or use a background job with exponential backoff (to retry failed requests)?


Change the Gitter badge to link the Lobby room

We need to update the Mainnet explorer and Corgi explorer.


aarch64 Docker Support

Is your feature request related to a problem? Please describe.
Oracle free ARM Ampere A1 instance is a aarch64 cpu. Which the current docker image does not support.
Describe the solution you'd like
Docker image with aarch64 support.
Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
Additional context
Add any other context or screenshots about the feature request here.

You should be using the linux/arm64 one. There isn't a difference between aarch64 and arm64

I get this error when running it on arm64
/bin/sh: /home/threadfin/bin/threadfin: not found


Deployment with capistrano  - Rake Task fails

I am trying to deploy using the asset pipeline. I am receiving the following message:

Tasks: TOP => deploy:assets:precompile
(See full trace by running task with --trace)
The deploy has failed with an error: Exception while executing as xxxx : rake exit status: 1
rake aborted!
NoMethodError: undefined method []' for nil:NilClass [...]/shared/bundle/ruby/2.6.0/gems/critical-path-css-rails-4.0.1/lib/critical_path_css/rails/config_loader.rb:36:in validate_css_paths'
[...]/shared/bundle/ruby/2.6.0/gems/critical-path-css-rails-4.0.1/lib/critical_path_css/rails/config_loader.rb:7:in initialize' [...]/shared/bundle/ruby/2.6.0/gems/critical-path-css-rails-4.0.1/lib/critical-path-css-rails.rb:35:in new'
[...]/shared/bundle/ruby/2.6.0/gems/critical-path-css-rails-4.0.1/lib/critical-path-css-rails.rb:35:in config_loader' [...]/shared/bundle/ruby/2.6.0/gems/critical-path-css-rails-4.0.1/lib/critical-path-css-rails.rb:31:in fetcher'
[...]/shared/bundle/ruby/2.6.0/gems/critical-path-css-rails-4.0.1/lib/critical-path-css-rails.rb:13:in generate_all' [...]/releases/20190823144812/lib/tasks/critical_path_css.rake:6:in block (2 levels) in <top (required)>'
[...]/releases/20190823144812/lib/tasks/critical_path_css.rake:18:in block in <top (required)>' [...]/shared/bundle/ruby/2.6.0/gems/rake-12.3.3/exe/rake:27:in <top (required)>'
[...]shared/bundle/ruby/2.6.0/bin/ruby_executable_hooks:24:in eval' [...]/shared/bundle/ruby/2.6.0/bin/ruby_executable_hooks:24:in '

What am I doing wrong? Iam using ruby 2.6.3 and rails 5.2.3

@ck2000 I'm pretty sure we don't have a test case for manifest_name, which is what you are using. I think the OP fixed this in his fork, but I'll need to write a test for this, duplicate the error, and then push the fix.

Okay, please let me know if I can give you a helping hand. Having this fixed in the master branch makes sense.


Showing compile errors in browser

Would it be possible to get the page that says "The application isn't built" to also show the compile time error if one occurred and is preventing a reload? This would be useful for when I make small changes that I don't expect to cause compile-time errors. Sometimes, they do cause errors, and it would be nice to have the browser notify me.

Yes, this is what it was doing a while back before we changed to that page because it seems "more interactive".

If it ever comes up for reconsideration, know that I am an example of someone who would prefer the other behavior. Thanks for letting me know why the decision was made.

Oh no, you shoudn't have closed this issue. This is a feature request and I will work on it and give feedback.

Fixed.


If docker already installed with an old version of docker, we should override it

First of all, when installing dinghy, it's asking for:
brew link docker

Then, if we link an old version of docker, it'll fail.
Moreover, when running the installation a second time after uninstalling docker, it'll think dinghy is installed and then won't install docker again that makes it fail again.

Not relevant anymore because of Dinghy removal.


Error: runSync finished async. Use run instead

Hello thank you for this package.
Trying to use it as such; doing server side rendering in nextjs:
import fs from 'fs';
import ReactMarkdown from 'react-markdown';
import matter from 'gray-matter';
import get_post_metadata from '@helpers/get_post_metadata';

import rehypePrettyCode from 'rehype-pretty-code';

import remarkGfm from 'remark-gfm'; // allows github flavored markdown
import rehypeRaw from "rehype-raw"; // allows raw html in markdown
import rehypeSlug from 'rehype-slug'; // adds id to headings
import remarkUnwrapImages from 'remark-unwrap-images'; // removes p tag around images
import remarkExternalLinks from 'remark-external-links'; // manage external links
import remarkToc from 'remark-toc'

const get_post_content = (slug: string) => {
    const folder = 'blog/';
    const file = `${folder}${slug}.md`;
    const content = fs.readFileSync(file, 'utf8');
    return matter(content);
}

// a next function to generate static paths for the dynamic pages
export const generateStaticParams = (): Array<{ slug: string }> => {
    const posts = get_post_metadata();
    return posts.map((post: PostMetadata) => {
        return { slug: post.slug }
    });
}

const PostPage = (props: any) => {
    const slug = props.params.slug;
    const post = get_post_content(slug);

    return (
        <>
            <ReactMarkdown
                remarkPlugins={[remarkGfm, remarkUnwrapImages, remarkExternalLinks, remarkToc]}
                rehypePlugins={[rehypeRaw, rehypeSlug, rehypePrettyCode]}
            >
                {post.content}
            </ReactMarkdown>
        </>
    )
}

export default PostPage;

I'm getting this error:

1 of 1 unhandled error
Next.js is up to date
Unhandled Runtime Error

Error: `runSync` finished async. Use `run` instead
Call Stack
assertDone
node_modules/unified/lib/index.js (566:10)
assertDone
node_modules/unified/lib/index.js (352:4)
runSync
node_modules/react-markdown/lib/react-markdown.js (106:29)
type
node_modules/next/dist/compiled/react-server-dom-webpack/cjs/react-server-dom-webpack-server.edge.development.js (1399:17)
attemptResolveElement
node_modules/next/dist/compiled/react-server-dom-webpack/cjs/react-server-dom-webpack-server.edge.development.js (1736:20)
resolveModelToJSON
node_modules/next/dist/compiled/react-server-dom-webpack/cjs/react-server-dom-webpack-server.edge.development.js (1201:13)
stringify
<anonymous>
stringify
node_modules/next/dist/compiled/react-server-dom-webpack/cjs/react-server-dom-webpack-server.edge.development.js (2348:13)
processModelChunk
node_modules/next/dist/compiled/react-server-dom-webpack/cjs/react-server-dom-webpack-server.edge.development.js (2054:25)
retryTask
node_modules/next/dist/compiled/react-server-dom-webpack/cjs/react-server-dom-webpack-server.edge.development.js (2101:6)
performWork
node_modules/next/dist/compiled/react-server-dom-webpack/cjs/react-server-dom-webpack-server.edge.development.js (1496:13)
listOnTimeout
node:internal/timers (569:17)
process.processTimers
node:internal/timers (512:7)

I checked the source code and I found runSync being used. What can I do, I'm rather new to Next so I'm thinking it has to do with async vs sync code? I'm a little lost please help.
I'm interested in a highlighter that supports the R language or at least the possibility of extending it which I believe this library does.

It looks like react-markdown only supports sync plugins, but this plugin is async.
Info https://github.com/orgs/remarkjs/discussions/742#discussioncomment-860350


Connection refused

Describe the bug
After a power outage modbus connection is refused. Does anyone have any tips on how to fix the problem? MySolarEdge app is running fine. 3-phase SE9K-RW0TEBEN4 , DSP2 Version | 2.20.1103, Communication Board (CPU) Version | 4.17.221, DSP1 Version | 1.20.1517.
Logs
2023-07-04 20:51:47.264 WARNING (SyncWorker_1) [homeassistant.loader] We found a custom integration solaredge_modbus_multi which has not been tested by Home Assistant. This component might cause stability problems, be sure to disable it if you experience issues with Home Assistant
2023-07-04 20:51:47.265 WARNING (SyncWorker_1) [homeassistant.loader] We found a custom integration hacs which has not been tested by Home Assistant.  Probably it has a new/other IP address? Also, check if the Modbus is still enabled and check the port in the inverter.

This is absolutely not an issue with the integration.

Thanks i checked this earlier. My fixed local ip is still correctly assigned and the default port is turned on on the inverter. If I find a problem I report it here.


[stable/pomerium] refactor TLS secrets

What this PR does / why we need it:
Refactors intra-pomerium TLS secret handling.
What:

Shift default secret layout to standalone type: kubernetes.io/tls style
Update generation to use new layout and utilize a helm hook to prevent regeneration during upgrades
Support upgrade path with a flag for using existing legacy Secret layout

Why:

Using independent type: kubernetes.io/tls Secrets allows for better integration with externally provided certs (eg coming from cert-manager or kubernetes)
Switching to a hook should prevent needless regeneration of the certificate chain (and service restart) during every helm upgrade

Special notes for your reviewer:
Checklist
[Place an '[x]' (no spaces) in all applicable fields. Please remove unrelated fields.]

[x] DCO signed
[x] Chart Version bumped
[x] Variables are documented in the README.md
[x] Title of the PR starts with chart name (e.g. [stable/chart])

maybe it would be easier if all the code for backward compatibility was clearly separated from the rest (same with the corresponding values if there are some).

Most of the backwards compat is in the named templates switching out values.  Just thinking on the fly, I don't believe it is possible to swap the template set out entirely without adding more complexity.  The deployments do contain two blocks that vary with legacy values but I'm not sure moving those into templates is much clearer than the if blocks.  I can evaluate if there's something to be done, though.  If you have specific ideas, LMK.
We should probably deprecate the legacy flag/logic in the future to prevent carrying the logic forward perpetually, but my intent was to give users an upgrade path and some time first (maybe 1-2 releases).  I assume most deployments will want to get off the legacy format at some point.

@victornoel I'm not seeing a good way of isolating the legacy logic.  I think the best way is to mark the blocks with comments so they can be identified and removed easily in the future.

@travisgroth thx for the changes, there is just that small typo in the README that I noted above, but I think it should be alright now. Sadly I haven't had the time to test it but I may find some today, I will get back to you on that

Thanks for all the feedback @victornoel!
@desimone found a GKE/GKE-Ingress regression related to NodePort that needs to be addressed from 2.0.0.  I'm going to work up a fix in a 2.x release and rebase this onto it.
/hold

@travisgroth so I tested this after rebasing on the 2.0.2 branch.
Apart from the small config inconsistency, here my remarks:

it's not needed to comment generateTLS once the upgrade has been done with forceGenerateTLS and the later has then been commented, since we won't enter the branch where secrets are templated (because of the .Release.IsInstall test).
I think generateTLS should be named generatedTLS because it reflects so expected state of the deployment, not an instruction…
just after the upgrade, when I tried to access a protected app, I got the following error in the logs (and a 500 error in the browser): {"level":"error","fwd_ip":"<IP_ADDRESS>","ip":"<IP_ADDRESS>","user_agent":"Mozilla/5.0 (X11; Linux x86_64; rv:69.0) Gecko/20100101 Firefox/69.0","req_id":"55031828-29d4-a710-c959-5659105b8f96","error":"rpc error: code = DeadlineExceeded desc = context deadline exceeded","http-message":"rpc error: code = DeadlineExceeded desc = context deadline exceeded","http-code":500,"time":"2019-09-28T09:15:19Z","message":"http-error"}
I wonder, if it wouldn't be cleaner to:

remove generateTLS and only keep forceGenerateTLS
do not check for .Release.IsInstall to decide if the certificate should be generated, only forceGenerateTLS
set the value of helm.sh/hook based on .Release.IsInstall or .Release.IsUpgrade
this especially makes sense to me because I will be setting forceGenerateTLS to false after generating the certificates to avoid the diffs, but maybe for someone using pure helm, there wouldn't be any advantage to that? Not sure

The user experience is not great with helm(file) diff, because even if I comment forceGenerateTLS, the first time I get a diff where the secrets are deleted (but in practice, they are not since helm ignore them), then the following diffs, are ok…

Going to review the rest of your comment, but wanted to make sure we're on the same page with behavior.  I'm guilty of optimizing for both plain helm and helm diff at the same time.  My observations and the reason for the double gatekeeping (both flag and IsRelease driven):

helm will not install hook based resources if you're in a different part of the lifecycle.  Eg, if you're upgrading, it won't try to push install hook objects into the cluster and visa versa.  However it will generate the objects regardless of the lifecycle phase.  I guess tiller filters them out but I'm not positive of the internals.
helm diff ignores the hook annotations and simply looks at the generated objects in their entirety, then compares to the cluster.  Anything generated that is a hook (which technically stops existing as far as helm is concerned) will be considered a difference.  To prevent diffs from being seen, you need to prevent the hook template from being executed.

just after the upgrade, when I tried to access a protected app, I got the following error in the logs (and a 500 error in the browser):

Hm.  That shouldn't be from certs.  Would need to more on that one.  I'm hoping that was environmental....
A third behavior I forgot to define: hooks do not update/patch when their object exists already.  The install/upgrade will just fail.

I think generateTLS should be named generatedTLS because it reflects so expected state of the deployment, not an instruction…

Internally the behavior of that flag is actually to generate it during the install so I think the tense is correct.  After initial install it does become an implicit "use generated cert" but I think retaining the flag name as is would be a better upgrade path.

it's not needed to comment generateTLS once the upgrade has been done with forceGenerateTLS and the later has then been commented, since we won't enter the branch where secrets are templated (because of the .Release.IsInstall test).

🤔 That sounds/looks correct.  I must have done something wrong while testing.  Good call.

I wonder, if it wouldn't be cleaner to...remove generateTLS and only keep forceGenerateTLS...[etc]

I did consider that.  My thought here is that a casual user would be able to use the chart default and never have a real issue.  The forceGenerateTLS flag is to allow someone already on the chart to churn the certificate chain for whatever reason.  Since keeping the value in place is an error (you'd be creating objects that already exist), I thought making the cert generation an explicit decision - if you're not doing a fresh install - was the best idea.
If we generate certificates regardless of the lifecycle phase - just based on a single flag - the user experience will require that the flag is set to false after the first install.  Otherwise, the user will get a failed helm deployment.  To me, that sounds like we should then default generateTLS to false, though that makes the chart a bit harder to use out of the box.  From an adoption standpoint, having it 'just work' without thinking about certificates is very helpful.
With the two flags, the hard helm release failures are limited to (a) reinstall an existing chart without cleaning up (b) Leaving the forceGenerateTLS flag enabled if you're regenerating your certs.
If we collapse to a single flag, case (b) is now encountered by everyone using the chart for the first time unless they bring their own certs.
Thoughts?  There's a lot of logic paths here and I might be missing something.

just after the upgrade, when I tried to access a protected app, I got the following error in the logs (and a 500 error in the browser)

Hm. That shouldn't be from certs. Would need to more on that one. I'm hoping that was environmental....

It doesn't happen when I use the old way of specifying the certificates (I've tried), maybe there is a link with the way the certificates are loaded at startup?

Internally the behavior of that flag is actually to generate it during the install so I think the tense is correct. After initial install it does become an implicit "use generated cert" but I think retaining the flag name as is would be a better upgrade path.

yep it makes sense, you are right :)
As for the rest of the discussion, I think I was underthinking all of this, there was logical errors in my proposed solution too... :)
I've added one more comment to improve the template syntactically too.

It doesn't happen when I use the old way of specifying the certificates (I've tried), maybe there is a link with the way the certificates are loaded at startup?

🤔 Did the condition clear or persist?  We jam the certs into the same data structure regardless of load method, and I know I've always used files when doing local dev.  It sounds like maybe you caught a pod restarting but that shouldn't be different with new certs.
Qs:

What was your exact upgrade path/method?
Number of pods of Authenticate and Authorize?
Any pods crash looping?
Any log messages in either AuthN or AuthZ pods?
What is your service.type?
Are you setting proxy.authenticateInternalUrl?

Seems good now :)
Here are some answers for the problem I noticed, but I think it's out of scope of the PR, so maybe we shouldn't bother too much with it :)

What was your exact upgrade path/method?

I did

1.3.2 -> 2.0.2 without problem
2.0.2 -> 3.0.0 and I saw the problem
3.0.0 -> 2.0.2 and no problem
2.0.2 -> 3.0.0 and I saw the problem again
3.0.0 -> 1.3.2 and no problem

Number of pods of Authenticate and Authorize?

1

Any pods crash looping?

nope

Any log messages in either AuthN or AuthZ pods?

not sure, I haven't access to the env right now

What is your service.type?

The default set in the chart

Are you setting proxy.authenticateInternalUrl?

I think not, the chart is taking care of all of that for me, but I would have to double-check (no access to the env right now).

Here are some answers for the problem I noticed, but I think it's out of scope of the PR, so maybe we shouldn't bother too much with it :)

👍

Thanks for working through this PR with me @victornoel!

@travisgroth my pleasure, glad to be of help

/hold cancel

/lgtm


fix: revert proxy url changes

close https://github.com/ChatGPTNextWeb/ChatGPT-Next-Web/issues/4795
issue mentioned here would appear again: https://github.com/ChatGPTNextWeb/ChatGPT-Next-Web/pull/1738

Summary by CodeRabbit

Chores

Updated Docker configuration to change the HOSTNAME environment variable to "<IP_ADDRESS>" for improved accessibility.
Simplified the CMD instruction by removing redundant --host <IP_ADDRESS> argument.

@fred-bf Hello,
I am the submitter of PR #4902 (Export sync config). I noticed that my PR encountered some issues during the checks, especially the Vercel deployment preview requiring authorization. I have a few questions:

I see the prompt "Authorization required to deploy". Is this normal? As an external contributor, what do I need to do to resolve this issue?

Apart from this authorization issue, do you see any other aspects of my PR that need modification or improvement?

As a new contributor, are there any specific points I should pay attention to when submitting PRs?

I greatly appreciate your time and guidance. If you need me to make any changes or provide more information, please let me know, and I will address it promptly.
Thank you again for your help!


SparqlStore and arbitrary SPARQL (SELECT) queries

Hi,
as far as I saw, the current SparqlStore implementation does not allow to execute arbitrary SPARQL queries at the moment. It would be useful though if rdf-ext's SparqlStore implementation supports executing arbitrary SPARQL queries given as query string on the remote SPARQL endpoint. I think that rdf-ext should support at least arbitrary SELECT queries.
What do you think about this idea? cc @bergos
Kind regards,
Chris

There is already a private method for update requests, but the method signature isn't suitable for a public interface. So let's collect parameters/options for such a method:

query string (parameter)
HTTP method (option, default: GET)
addition headers (options, default: {})

Something else? Maybe something that could will be translated into a header field, but looks nicer as an own option?
Method name? .customQuery, .customUpdateQuery?

Is there a need for differentiating between SPARQL SELECT/ASK/CONSTRUCT and SPARQL Update queries? What about store.executeQuery(queryString, [queryParams={}], [requestOptions={}]) and store.executeUpdateQuery(queryString, [queryParams={}], [requestOptions={}]) where queryString is the actual query string, queryParams are parameters that are replaced in queryString (cf. Parameterized-SPARQL-Strings-Jena) and requestOptions are options passed for the request (method, headers, etc.).

Your method names + signature looks good. The update method is required, because the endpoint URL is different (options.endpointUrl vs. options.updateUrl).

Added both methods with this commit.

I moved the code to the sparql-http-client package, because it's not related to RDF-Ext. The rdf-sparql-store is built on top of this library. If you have already a store, you can access the client with store.client.


attrs 17.3 raises AttributeError when using attribs overriding abstract properties

from abc import ABCMeta, abstractproperty

import attr

@attr.s
class Base(object):
    __metaclass__ = ABCMeta

    @abstractproperty
    def implement_me(self):
        pass

@attr.s
class Derived(Base):
    implement_me = attr.ib()

Derived("yo")

Works in attrs==17.2, breaks with AttributeError: cannot set attribute in attrs>=17.3.
Not sure what the correct behavior is, but this is a breaking change for a moderately straightforward use-case (implementing abstract interfaces using fields).

This is…interesting and it used to by accident.  First, your code is equivalent to the following:
>>> class C(Base):
...     def __init__(self):
...         self.implement_me = 42

>>> C()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 3, in __init__
AttributeError: can't set attribute
can't set attribute

So you can’t set an @abstractproperty to a value.
It did work before, because implement_me got overwritten in the class body which for some reason worked, and then it could just happily assign values.  Now that attrs cleans up behind itself, it’s not masking the property anymore and it explodes.

I’m very sorry this broke, but to my understanding, it is the correct behavior.  Now, you’ll have to do something along the lines of:
>>> @attr.s
... class Derived(Base):
...     _implement_me = attr.ib()
...
...     @property
...     def implement_me(self):
...         return self._implement_me

>>> Derived("ypo")
Derived(_implement_me='yo')

I’m not sure how feasible/possible it would be to equip attrs with first class property helpers.


Shape mismatch with sklearn.cross_decomposition.PLSRegression

Describe the bug
When using sklearn.cross_decomposition.PLSRegression as the regressor, the MapieRegressor.fit method raises a shape mismatch error. The problem is that even when y has one feature, PLSRegression makes predictions of shape (n, 1), and MAPIE does not handle this case.
Traceback (with personal path info removed):
File [site-packages/mapie/estimator/estimator.py:364], in EnsembleRegressor.predict_calib(self, X)
    [358] pred_matrix = np.full(
    [359] shape=(n_samples, cv.get_n_splits(X)),
    [360] fill_value=np.nan,
    [361] dtype=float,
    [362] )
    [363] for i, ind in enumerate(indices):
--> [364]   pred_matrix[ind, i] = np.array(
    [365]      predictions[i], dtype=float
    [366]  )
    [367]  self.k_[ind, i] = 1
    [368] check_nan_in_aposteriori_prediction(pred_matrix)

ValueError: shape mismatch: value array of shape (50,1) could not be broadcast to indexing result of shape (50,)

To Reproduce
This code, closely based on the "Quick Start with MAPIE" in the documentation but using PLSRegression, will reproduce the error.
import numpy as np
from sklearn.cross_decomposition import PLSRegression
from sklearn.datasets import make_regression
from sklearn.model_selection import train_test_split
from mapie.regression import MapieRegressor

regressor = PLSRegression()
X, y = make_regression(n_samples=500, n_features=20, noise=20, random_state=59)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.5)
mapie_regressor = MapieRegressor(regressor)
mapie_regressor.fit(X_train, y_train)

Expected behavior
I expect MAPIE to handle cases where an extra dimension is appended to the predictions. I am able to work around this by subclassing the PLSRegression class and overriding the predict method, but this is not ideal. Perhaps most scikit learn methods for univariate regression are more consistent but in my experience there are going to be methods that use an extra dimension in the output for various reasons so it should be handled internally by MAPIE.

Hello, @natalieklein229
Thank you for your issue.
A similar one has been raised on scikit-learn (https://github.com/scikit-learn/scikit-learn/issues/26549) and a modification was made such that PLSRegression returns an array of shape (n_samples, ) if y is one-dimensional. To have access to this modification, you have to upgrade your scikit-learn version to 1.3.2.
As sklearn changed its behavior, we will continue to require a 1D prediction for the moment but we might consider changing our behavior if other sklearn models acte the same way.
Best,
Vincent

Thank you!


Invoker isn't sending errors correctly

2021/01/23 15:57:42 * esthar ERROR: in Invoke stage: while decoding updates: invalid character 't' in literal false (expecting 'l')

This is a recurring problem (and is masking another bug I need to fix!), and is annoying the Chipping Sodbury out of me.  I'm not entirely sure how to fix it.

This is happening when the invoker panics.  We maybe ought to install a panic recover.

This is happening when the invoker panics.  We maybe ought to install a panic recover.


Set FSharp.Core version to 4.7.

Resolves https://github.com/nrkno/json-quibble/issues/4

You've done this already, closing.


Display Threads Completely and in Correct Sequence

Opened a thread but Fritter displayed only two tweets from it.
App Version: 2.0.0
Android: 11
Repo: F-droid

Can only see the thread in this manner (see pic). But the way Twitter shows it is more convenient.

Yes, this is a big one. I need to examine the tweet metadata a bit deeper to figure out how to detect and display threads 🤔

@jonjomckay I wonder if we can kill two birds (this one and #24) with one stone: hiding replies in a feed.
This is how a thread appears in a group's feed or if you check the user's profile directly. Replies after replies.

And this is how the same thread is shown after you tap on one of the tweets in that thread. IIRC, this is similar to how Twitter displays threads. So, if the users opts to hide replies, then they'll only see the first tweet of a thread, which is what we want.

The one small issue with the second method of viewing a thread is that there's no way go back directly to the feed timeline. You can only go back one tweet at a time.

Sorry for the long wait on this one - it should be implemented and will go out in v2.11.0!


Initialize the L10n-instance as soon as possible in Firefox (PR 17115 follow-up)

Given that there's now a bit more asynchronicity in the l10n-initialization in the Firefox PDF Viewer, after PR #17115, try to limit the impact of that by moving it to occur a tiny bit earlier in the default viewer initialization.

/botio xfatest


filepond.supported not working as expected

The following code:
if(!FilePond.supported()){
    window.location = window.location.origin + "/not-supported.php";
};

does NOT result in the user being taken to the file "not-supported.php"
when the page is opened in Safari 7 or 8, or in Android 5.

Need more details on which which Android 5 browser is used.
Detection of Safari 7 / 8 is improved in release 4.19, will close for now.


Support OS page granularity of lazy memory initialization w/ uffd+pooling

Right now, when using the pooling instance allocator with the uffd feature, we always copy data segments into linear memory with a granularity of a wasm page. We should also support the granularity of an OS page.
(Motivation: for wizened modules that pointer chase through the heap, bringing in whole wasm pages is effectively pulling in a bunch of unrelated stuff.)
cc @peterhuene @alexcrichton

uffd has since been removed, so I'm going to close this


Combined multiple create() methods into a bulk_create() method

@janghyukjin Would you like to check other places where we can use bulk_create()? IMO it is not worth to add a separate commit for each test method or even class.

Thanks for your feedback! I checked all multiple create() in lookup/tests.py, and then combined them to bulk_create()!!


I should be able to list my consumption for a given day

An endpoint for listing the logged water consumption
Given a date (default to the current date) should return the water consumption logged for that date.
Return;
DateTimeConsumed
AmountConsumed
Endpoint; /api/consumption/logs?date={date}

Should remove "feature flag" and switch out mock data for API call


When used in a flake: error: attribute 'currentSystem' missing

Hi, I'm a newbie, so I apologize if this question is in the wrong place.  I'm trying to use mach-nix in this flake.nix
{
  outputs = {self, nixpkgs}:
    let
      mach-nix = import (builtins.fetchGit {
        url = "https://github.com/DavHau/mach-nix";
        ref = "refs/tags/3.5.0";
        rev = "7e14360bde07dcae32e5e24f366c83272f52923f";
      }) { };
    in
    {
      defaultPackage.x86_64-linux = mach-nix.mkPython rec {
        requirements =  ''
          numpy
          '';
        };
    };
}

But when I run nix shell .  I get this error:
error: attribute 'currentSystem' missing

       at /nix/store/5n402azp0s9vza4rziv4z5y88v2cv1mq-nixpkgs/pkgs/top-level/impure.nix:17:43:

           16|   # (build, in GNU Autotools parlance) platform.
           17|   localSystem ? { system = args.system or builtins.currentSystem; }
             |                                           ^
           18|

I was reading a blog about this  which said:

You may get an error like this:
error: attribute 'currentSystem' missing
This happens because in the context of flakes, builtins.currentSystem does not exist (it is, after all, an impurity). If you come across this, try to refactor your legacy-nix portion so the system is always an argument, and provide that argument from your flake, as above.

From that I get the feeling that I need to provide x86_64-linux as a parameter somehow.  But where do I put it?

You should follow the example described here: https://github.com/DavHau/mach-nix/blob/master/examples.md#use-mach-nix-from-a-flake -  generally you want to use flake inputs to "import" remote nix packages/code.

You could try (untested):
{
  outputs = {self, nixpkgs}:
    let
      mach-nix = import (builtins.fetchGit {
        url = "https://github.com/DavHau/mach-nix";
        ref = "refs/tags/3.5.0";
        rev = "7e14360bde07dcae32e5e24f366c83272f52923f";
      }) {  inherit system; };
    in
    {
      defaultPackage.x86_64-linux = mach-nix.mkPython rec {
        requirements =  ''
          numpy
          '';
        };
    };
}

{  inherit system; } is not working.
What you can do as a workaround is to build your configuration with the --impure option.


How to handle pull refresh?

Hi! Thank you for the question.
Right now, I'm handling pull to refresh with ref.refresh(easyExampleProvider) which, applied to a notifier that extends PagedNotifier will call load function with the initial page.
In this way:
@override
  Widget build(BuildContext  context){
    return Scaffold(
      appBar: AppBar(),
      body: RefreshIndicator(
        onRefresh: () async { return ref.refresh(communityRecentsProvider); },
        child: RiverPagedBuilder<int, Post>(
          firstPageKey: 0,
          provider: easyExampleProvider,
          itemBuilder: (context, item, index) => ListTile(
            leading: Image.network(item.image),
            title: Text(item.title),
        ),
        pagedBuilder: (controller, builder) => PagedListView(pagingController: controller, builderDelegate: builder),
      ),
    );
  }

But It could be a good idea to integrate the RefreshIndicator directly into RiverPagedBuilder because it already know how to refresh the list. I will add this to the todo list, thanks!

Please have a look at this commit d4d6ff0bb73b9f575afd31335d712893633299bf
It adds pull to refresh directly into RiverPagedBuilder

Thanks for the quick response!
Looks great! When are you planning to release it?
Btw, it would be helpful if you could add the Github repo in pub.

Thanks to you! The version 1.0.2 is already on pub.dev, and I also added the GitHub repo.
Let me know if you find easy to use this package!


Method parameter in iMath('PropagateLabelsThroughMask')

I am using iMath('PropagateLabelsThroughMask') and seem to be working well. Looks like there is a parameter one can choose there, which sets the propagation method. The code seem to accept values < 3, but I can't seem to find any documentation what the methods are.
@jeffduda  or @cookpa , any idea on this? Wasn't this the function Phil added some months ago? Can't find his email though.
Thanks

Wrong repository


Invariant Violation: Tried to register two views with the same name RNCWebView

Bug description:
To implement the OAuth dance flow for a Twitter login I made use of react-native-webview and it's onNavigationChange however, there is a react-native-linkedin dependency in my project for LinkedIn login which also seems to be using react-native-webview. This is resulting in the mentioned error. Tried installing same versions or react-native-webview, cleaned cache, reinstalled dependencies but nothing worked.
There is a similar issue which was closed due to inactivity https://github.com/react-native-webview/react-native-webview/issues/1083. Please suggest.
And matching the versions across all dependencies that use react-native-webview could get impossible as the dependency number goes up.
To Reproduce:
Install react-native-linkedin and react-native-webview in the same project
I tried installing the react-native-linkedin: 2.1.0with react-native-webview: 7.0.5 since 7.0.5 is the webview version in react-native-linkedin's 2.1.0 package
https://github.com/xcarpentier/react-native-linkedin/blob/v2.1.0/package.json
Screenshots/Videos:
https://user-images.githubusercontent.com/4492228/109238798-2db25000-77a2-11eb-9647-2aa608bae153.png
Environment:

OS: iOS, Expo
react-native version: https://github.com/expo/react-native/archive/sdk-37.0.1.tar.gz
react-native-webview version: 7.0.5

This is still happening with:
"eas-cli": "^3.8.1",
"expo": "~48.0.9",
ERROR  Invariant Violation: Tried to register two views with the same name RNCWebView, js engine: hermes
ERROR  Invariant Violation: "main" has not been registered. This can happen if:

Metro (the local dev server) is run from the wrong folder. Check if Metro is running, stop it and restart it in the current project.
A module failed to load due to an error and AppRegistry.registerComponent wasn't called., js engine: hermes
› Stopped server

npm ls react-native-webview
├─┬<EMAIL_ADDRESS>│ └──<EMAIL_ADDRESS>└─┬<EMAIL_ADDRESS>

Any Definite solution for something like this?


Liftable stdChannel

In this PR, stdChannels become liftable. A liftable channel has three extra methods:

liftable.lift(lifter): lifter is a function that accepts the original put, and return a new put. The new put will replace the original put of the channel. Method lift is used to handle monkey-patching of channel.put.
liftable._clone(): lift(fn) mutates channel object in-place. Calling  _clone() will return a cloned liftable, and lifts to the cloned will not affect the original.
liftable._connect(dispatch): connect channel to external I/O. This method return a connected-channel. dispatch will be used as the put handler for the connected-channel.

env.dispatch is removed in this PR, and all input/output of running saga is done via  env.channel. This makes sagas a little purer (requires less knowledge about the outer world).
Public changes:

stdChannel has a new public method lift. Users could use this method to lift/enhance a stdChannel.

options.emitter of sagaMiddlewareFactory is removed. Instead, options.channel is added, users could create a stdChannel and lift it with the emitter to achieve the same goal of the old options.emitter. This make sagaMiddlewareFactory() and runSaga() more consistent in options: runSaga#options only has two more fields (dispatch / getState) than sagaMiddlewareFactory#options.

ok for me. @Andarist ?

Do u have any resources about the lifting concept explained or with just with other examples of this technique? Would like to understand the idea and how it's used better before moving with this forward.

Not much resources/examples...  I found we were monkey-patching stdChannel.put somehow, so I just came up with lift as a unified way to monkey-patch stdChannel.put.
Here lift is just a simple mechanism like reducer-enhancer in redux, accepts the old put and returns the new put.  By lifting the stdChannel, we can move some logic/complexity into the env.channel, which makes sagaMiddlewareFactory more consistent with runSaga.

I only read about lifting concept from Haskell, but seems that's a bit different (unwrap value, apply function, wrap).
https://stackoverflow.com/questions/2395697/what-is-lifting-in-haskell
in js it similar to something to
const boxA = {value: 1}
const boxB = {value: 2}
const lift = (f, ...args) => ({
   value: f(...args.map(i => i.value))
})
const sum = (x, y) => x + y

const sumBox = lift (sum, boxA, boxB)

lift in ramda (a popular javascript functional programming library) is much like lifting in Haskell.   lift in RxJS also has a similar meaning too.
In this PR, lift has different meaning and may not be a good name. What about change it to enhance or enhancePut?  I'm quite insensitive between lift and enhance, they have the same meaning when translated to Chinese.

👍 for enhancePut

See #1528.


Werid behaviour of BuildError

Expected Behaviour
I register a route to serve avatar image directly on app:
@app.route('/avatar/<filename>/<size>')
def avatar(filename, size='m'):
    path = current_app.config['AVATARS_UPLOAD_PATH']
    filename = '%s_%s.png' % (filename, size)
    return send_from_directory(path, filename)

Then I use this in template to get avatar:
{{ url_for('avatar', filename=user.avatar, size='l') }}

Actual Behaviour
I have four templates use this code, but only one template got the image, others got the error below:
BuildError: Could not build url for endpoint 'avatar' with values ['size']. Did you forget to specify values ['filename']?
...
File "C:\Users\Administrator\projects\moments-dev\moments\templates\home\index.html", line 16, in block "page_content"
src="{{ url_for('avatar', filename=photo.author.avatar, size='s') }}">
File "c:\users\administrator\projects\moments-dev\venv\lib\site-packages\flask\helpers.py", line 333, in url_for
return appctx.app.handle_url_build_error(error, endpoint, values)
File "c:\users\administrator\projects\moments-dev\venv\lib\site-packages\flask\app.py", line 1805, in handle_url_build_error
reraise(exc_type, exc_value, tb)
File "c:\users\administrator\projects\moments-dev\venv\lib\site-packages\flask\helpers.py", line 323, in url_for
force_external=external)
File "c:\users\administrator\projects\moments-dev\venv\lib\site-packages\werkzeug\routing.py", line 1768, in build
raise BuildError(endpoint, values, method, self)

However, I actually did specify the filename, you can see it in error output.
Here is the templates structure:
templates/
    home/
        - photo.html ---- error
        - index.html ---- error
    user/
        - index.html ---- ok
    macros.html ---- error

I tried to request the URL, such as http://<IP_ADDRESS>:5000/avatar/<filename>/<size>, it works fine on every size.
Environment

Python version: 2.7
Flask version: 0.12.2
Werkzeug version: 0.12.2
OS: Windows 7

is user.avatar None?

Oh, there are some  user.avatar on these three templates was None! Thanks!

I have encountered the same problem:
The endpoint value has one is None, so I got this problem.
Thank you.


Add more debug logging to JiraFeatureCollector

This was stuff that I added while trying to figure out why the JiraFeatureCollector wasn't working for me last night.
Cc: @sudarkoff, @aconrad

More debug logging in the JiraFeatureCollector would be very nice.  I'm trying to configure it myself and getting Forbidden errors - it would be nice to see exactly what api call was being attempted so I could try to replicate it from the command line, etc.


Add default keymap

Fixes #597
SideNote: What does ctrl-k mean?

ctrl-k means you press both your Control and K keys on your keyboard in one stroke. /s

ctrl /= cmd on mac, how to have the compatibility?

I just copy/pasted it from the old one, I think we should modify the keys. Matching the old ones are not really necessary.

Um. Looks a little bit weird? Why is it (essentially) ctrl-alt-l and ctrl-alt-e on OSX and a sequence of keystrokes for everything else?

ctrl-n is already used for opening a new file, do we really need a key binding for the next error, can't we just jump?

ctrl-l is already used to select current/next line by core.

@steelbrain Look on README.md with #598 I added.
'atom-workspace':
  'linter:next-error': 'ctrl-alt-e'
  'linter:next-warning': 'ctrl-alt-w'
  'linter:toggle': 'ctrl-alt-t'
  'linter:set-bubble-transparent': 'alt'

And I'm not convinced linter:lint should have a default shortcut at all, that's not a very common use-case, I don't think.

So here's my solution, we only add the peek default keymap and leave the others to those who want to use them, 'cause not everyone uses those features.

I suppose next-message something like that could be useful as well -- that's something many would use, I think. Thoughts?

@lierdakil suggested key please?

IDK. alt-./cmd-.? Not sure if cmd-. is taken on OSX or not though.
. because it's "lowercase" >

Okay, scratch that about cmd-., it could be ctrl-. on OSX.

I guess it would be better to actually ask OSX user if such shortcut makes sense or not though.

OS X user here, what doesn't make sense?

@k2b6s9j, ctrl-. as a shortcut for linter:next-error.
(. because on PC keyboard, shifted it's >)

For me alt-shift-, and alt-shift-. make sense for previous and next error.

. on my MacBook Pro shifted is still >

Well, that makes sense on PC as well. @steelbrain ^

It evens works on Chromebooks!

Sounds good to me

:shipit:?


Youtube shorts black screen after latest update.

Script version
5.5
Describe the bug
Opening a youtube short results in the audio being played but the screen being black, so the video is running but its like just black you cant see it, when I disable the script the video shows. Please fix, thanks devs!
Expected behavior
youtube shorts working and video showing as without this script
Screenshots

Desktop (please complete the following information):

OS: [MacOS]
Browser edge

        //
        // Get the url
        //

        let videoID = '';
        const baseVideoURL = 'https://www.youtube.com/watch?v=';
        const baseShortsURL = 'https://www.youtube.com/shorts/';

        let startIndex = currentUrl.indexOf(baseVideoURL);

        if (startIndex !== -1) {
            // Extract the part of the URL after the base URL
            const videoIDStart = startIndex + baseVideoURL.length;
            videoID = currentUrl.substring(videoIDStart);

            const ampersandIndex = videoID.indexOf('&');
            if (ampersandIndex !== -1) {
                videoID = videoID.substring(0, ampersandIndex);
            }
        } else {
            startIndex = currentUrl.indexOf(baseShortsURL);
            if (startIndex !== -1) {
                // Extract the part of the URL after the base URL
                const videoIDStart = startIndex + baseShortsURL.length;
                videoID = currentUrl.substring(videoIDStart);

                const slashIndex = videoID.indexOf('/');
                if (slashIndex !== -1) {
                    videoID = videoID.substring(0, slashIndex);
                }
            } else {
                log("YouTube video URL not found.", "e")
                return null;
            }
        }

Im working on it , its because the url isnt properly parsed for shorts, but for some reason im getting double audio

PR #505 505 Up to help solve this