Make Remi embeddable, object-ize its javascript

Hello,
this set of changes cleans up a few minor nits and, more importantly, teaches remi.gui to be embeddable into a larger web page, by prefixing the CSS and no longer polluting the window.* namespace.
I'd like to use Remi for my DeFramed project (https://github.com/smurfix/deframed). I already taught my code to embed Remi as an IFRAME, but that approach is much too limiting. After this gets merged (and released ;-) I can change that code to run a Remi GUI object in a simple DIV.

I like your changes, I see you worked hard, Thank you. I need some time to review all the changes. I see the style have problems, the border around the "body>div" is missing, it seems that css selector is not working. The editor style is totally broken. I will try to fix and merge this soon.
Your project seems interesting. I want to give it a try soon.

Thanks for the positive feedback. I'll complete support for "run Remi in a DIV" in DeFramed during the next week or so.
One other improvement I'd like to make is to convert your /res:path resource URLs to /static/remi/path, as it's much easier to teach a front-end webserver or a modular site to serve those.
Also, the client javascript code should be in a resource too, editing it would be much easier and the browser's debugger would have correct and clickable line numbers. ;-)

The URLs structure is defined that way to allow named resource folders. It allows to prevent access to undeclared folders. I'm not incline to change this. Maybe you can override this in your specific application if it causes problems.

Mmh. Why do you think that accessing undeclared folders is conditional on whether the prefix is /static/foo/ or /foo:? I don't plan to teach Remi to have a single /static/ resource handler.
You're correct in that I can override it, but any override I'd need is a precursor for compatibility problems with future releases.

Named resource folder has an additional peculiarity. It obfuscates to the clients the real folder name.
Remi allows to access subfolders of a defined resource folder, but prevents to move up to it.

Fixed merge conflicts. Fixed some style problems. Done some testing. Now I will test all the examples and than push to master.

@smurfix I found a problem, a client disconnection is no more recognized. The blue rotating square does not appear. When the connection is restored, the webpage does not reconnect, requiring a manual refresh. I will further investigate over this.

All seems to be correct. I will now merge to master. Thank you a lot @smurfix !


Retry on failures of replicator replay test

In our tests we encounter every now and then failing tests that fail because of timeouts, Cloudant's eventual consistency or other reasons.
This code change tries to recover from one of these intermittent failures by retrying the affected testcase.
10:10:28  org.apache.openwhisk.core.database.test.ReplicatorTests > Database replication script should replay a database FAILED
10:10:28      org.scalatest.exceptions.TestFailedException: {"offset":0,"rows":[{"doc":{"_id":"_design/snapshotFilters","_rev":"1-9537dd1012a329b18eeee518d0e007d2","filters":{"withoutDeletedAndDesignDocuments":"function(doc, req) {\n    return !doc._deleted && !(doc._id.indexOf(\"_design/\") == 0);\n}"}},"id":"_design/snapshotFilters","key":"_design/snapshotFilters","value":{"rev":"1-9537dd1012a329b18eeee518d0e007d2"}}],"total_rows":1} was not equal to {"offset":0,"rows":[{"doc":{"_id":"_design/snapshotFilters","_rev":"1-9537dd1012a329b18eeee518d0e007d2","filters":{"withoutDeletedAndDesignDocuments":"function(doc, req) {\n    return !doc._deleted && !(doc._id.indexOf(\"_design/\") == 0);\n}"}},"id":"_design/snapshotFilters","key":"_design/snapshotFilters","value":{"rev":"1-9537dd1012a329b18eeee518d0e007d2"}},{"doc":{"_id":"testId","_rev":"1-29eb04529a453588daaf38103d3002bd","testKey":"testValue"},"id":"testId","key":"testId","value":{"rev":"1-29eb04529a453588daaf38103d3002bd"}}],"total_rows":2}
10:10:28          at org.scalatest.MatchersHelper$.indicateFailure(MatchersHelper.scala:343)
10:10:28          at org.scalatest.Matchers$AnyShouldWrapper.shouldBe(Matchers.scala:6919)
10:10:28          at org.apache.openwhisk.core.database.test.ReplicatorTests.compareDatabases(ReplicatorTests.scala:163)
10:10:28          at org.apache.openwhisk.core.database.test.ReplicatorTests.$anonfun$new$31(ReplicatorTests.scala:482)
10:10:28          at org.scalatest.OutcomeOf.outcomeOf(OutcomeOf.scala:85)
10:10:28          at org.scalatest.OutcomeOf.outcomeOf$(OutcomeOf.scala:83)
10:10:28          at org.scalatest.OutcomeOf$.outcomeOf(OutcomeOf.scala:104)
10:10:28          at org.scalatest.Transformer.apply(Transformer.scala:22)
10:10:28          at org.scalatest.Transformer.apply(Transformer.scala:20)
10:10:28          at org.scalatest.FlatSpecLike$$anon$5.apply(FlatSpecLike.scala:1682)
10:10:28          at org.scalatest.TestSuite.withFixture(TestSuite.scala:196)
10:10:28          at org.scalatest.TestSuite.withFixture$(TestSuite.scala:195)
10:10:28          at org.scalatest.FlatSpec.withFixture(FlatSpec.scala:1685)
10:10:28          at org.scalatest.FlatSpecLike.invokeWithFixture$1(FlatSpecLike.scala:1680)
10:10:28          at org.scalatest.FlatSpecLike.$anonfun$runTest$1(FlatSpecLike.scala:1692)
10:10:28          at org.scalatest.SuperEngine.runTestImpl(Engine.scala:286)
10:10:28          at org.scalatest.FlatSpecLike.runTest(FlatSpecLike.scala:1692)
10:10:28          at org.scalatest.FlatSpecLike.runTest$(FlatSpecLike.scala:1674)
10:10:28          at org.scalatest.FlatSpec.runTest(FlatSpec.scala:1685)
10:10:28          at org.scalatest.FlatSpecLike.$anonfun$runTests$1(FlatSpecLike.scala:1750)
10:10:28          at org.scalatest.SuperEngine.$anonfun$runTestsInBranch$1(Engine.scala:393)
10:10:28          at scala.collection.immutable.List.foreach(List.scala:392)
10:10:28          at org.scalatest.SuperEngine.traverseSubNodes$1(Engine.scala:381)
10:10:28          at org.scalatest.SuperEngine.runTestsInBranch(Engine.scala:370)
10:10:28          at org.scalatest.SuperEngine.$anonfun$runTestsInBranch$1(Engine.scala:407)
10:10:28          at scala.collection.immutable.List.foreach(List.scala:392)
10:10:28          at org.scalatest.SuperEngine.traverseSubNodes$1(Engine.scala:381)
10:10:28          at org.scalatest.SuperEngine.runTestsInBranch(Engine.scala:376)
10:10:28          at org.scalatest.SuperEngine.runTestsImpl(Engine.scala:458)
10:10:28          at org.scalatest.FlatSpecLike.runTests(FlatSpecLike.scala:1750)
10:10:28          at org.scalatest.FlatSpecLike.runTests$(FlatSpecLike.scala:1749)
10:10:28          at org.scalatest.FlatSpec.runTests(FlatSpec.scala:1685)
10:10:28          at org.scalatest.Suite.run(Suite.scala:1124)
10:10:28          at org.scalatest.Suite.run$(Suite.scala:1106)
10:10:28          at org.scalatest.FlatSpec.org$scalatest$FlatSpecLike$$super$run(FlatSpec.scala:1685)
10:10:28          at org.scalatest.FlatSpecLike.$anonfun$run$1(FlatSpecLike.scala:1795)
10:10:28          at org.scalatest.SuperEngine.runImpl(Engine.scala:518)
10:10:28          at org.scalatest.FlatSpecLike.run(FlatSpecLike.scala:1795)
10:10:28          at org.scalatest.FlatSpecLike.run$(FlatSpecLike.scala:1793)
10:10:28          at org.apache.openwhisk.core.database.test.ReplicatorTests.org$scalatest$BeforeAndAfterAll$$super$run(ReplicatorTests.scala:42)
10:10:28          at org.scalatest.BeforeAndAfterAll.liftedTree1$1(BeforeAndAfterAll.scala:213)
10:10:28          at org.scalatest.BeforeAndAfterAll.run(BeforeAndAfterAll.scala:210)
10:10:28          at org.scalatest.BeforeAndAfterAll.run$(BeforeAndAfterAll.scala:208)
10:10:28          at org.apache.openwhisk.core.database.test.ReplicatorTests.run(ReplicatorTests.scala:42)

Tested locally on PG2:
./gradlew :bluemix:tests:testArmada --tests org.apache.openwhisk.core.database.test.ReplicatorTests

> Configure project :bluemix:services:billingService
appArgs are not defined

> Task :bluemix:tests:addWhiskCertificate
Certificate was added to keystore

> Task :bluemix:tests:addStageCertificate
Certificate was added to keystore

> Task :bluemix:tests:addProdLondonCertificate
Certificate was added to keystore

> Task :bluemix:tests:addProdCertificate
Certificate was added to keystore

> Task :bluemix:tests:addOpenWhiskCertificate
Certificate was added to keystore

> Task :bluemix:tests:addBluemixUsSouthMultiDomainCertificate
Certificate was added to keystore

> Task :bluemix:tests:addBluemixUsEastMultiDomainCertificate
Certificate was added to keystore

> Task :bluemix:tests:addBluemixStageMultiDomainCertificate
Certificate was added to keystore

> Task :bluemix:tests:addBluemixStageCertificate
Certificate was added to keystore

> Task :bluemix:tests:addBluemixStage0Certificate
Certificate was added to keystore

> Task :bluemix:tests:addBluemixStage01Certificate
Certificate was added to keystore

> Task :bluemix:tests:addBluemixOpenWhiskStage1NgBluemixNetCertificate
Certificate was added to keystore

> Task :bluemix:tests:addBluemixOpenWhiskNgBluemixNetCertificate
Certificate was added to keystore

> Task :bluemix:tests:addBluemixOpenWhiskEuGbBluemixNetCertificate
Certificate was added to keystore

> Task :bluemix:tests:addBluemixOpenWhiskEuDeBluemixNetCertificate
Certificate was added to keystore

> Task :bluemix:tests:addBluemixJpTokMultiDomainCertificate
Certificate was added to keystore

> Task :bluemix:tests:addBluemixEuGbtMultiDomainCertificate
Certificate was added to keystore

> Task :bluemix:tests:addBluemixEuDetMultiDomainCertificate
Certificate was added to keystore

> Task :bluemix:tests:addArmadaUSEastCertificate
Certificate was added to keystore

> Task :bluemix:tests:addArmadaSelfSigned
Certificate was added to keystore

> Task :bluemix:tests:addArmadaLetsEncryptCACertificate
Certificate was added to keystore

> Task :open:tests:buildArtifacts
Test zip artifacts already built, skipping

> Task :bluemix:tests:testArmada

org.apache.openwhisk.core.database.test.ReplicatorTests STANDARD_OUT
    test router? true

org.apache.openwhisk.core.database.test.ReplicatorTests > Database replication script should replicate a database (snapshot) STANDARD_OUT
    Removing database: replicatortest_fn-dev-pg2_database_for_single_replication
    Removing database: replicatortest_fn-dev-pg2_database_for_single_replication returned left: Left(404 Not Found (details: {"error":"not_found","reason":"Database does not exist."}
    ))
    Creating database: replicatortest_fn-dev-pg2_database_for_single_replication
    Creating testdocument
    Running replicator: https://bmwhisk002.cloudant.com:443, https://bmwhisk002.cloudant.com:443, replicatortest_fn-dev-pg2_, 10 minutes, false, List(), List()
    JUnit version is: 4.12
    Created: List(backup_1593604234_replicatortest_fn-dev-pg2_database_for_single_replication)
    DeletedDocs: List()
    Deleted: List()
    Waiting for replication, state: None
    Waiting for replication, state: None
    Waiting for replication, state: Some("completed")
    Removing database: backup_1593604234_replicatortest_fn-dev-pg2_database_for_single_replication
    Removing replication doc: backup_1593604234_replicatortest_fn-dev-pg2_database_for_single_replication
    Removing database: replicatortest_fn-dev-pg2_database_for_single_replication

org.apache.openwhisk.core.database.test.ReplicatorTests > Database replication script should replicate a database (snapshot) PASSED

org.apache.openwhisk.core.database.test.ReplicatorTests > Database replication script should do not replicate a database that is excluded STANDARD_OUT
    Removing database: replicatortest_fn-dev-pg2_database_for_single_replication_with_exclude
    Removing database: replicatortest_fn-dev-pg2_database_for_single_replication_with_exclude returned left: Left(404 Not Found (details: {"error":"not_found","reason":"Database does not exist."}
    ))
    Creating database: replicatortest_fn-dev-pg2_database_for_single_replication_with_exclude
    Removing database: replicatortest_fn-dev-pg2_some_excluded_name
    Removing database: replicatortest_fn-dev-pg2_some_excluded_name returned left: Left(404 Not Found (details: {"error":"not_found","reason":"Database does not exist."}
    ))
    Creating database: replicatortest_fn-dev-pg2_some_excluded_name
    Running replicator: https://bmwhisk002.cloudant.com:443, https://bmwhisk002.cloudant.com:443, replicatortest_fn-dev-pg2_, 10 minutes, false, List(some_excluded_name), List()
    Created: List(backup_1593604243_replicatortest_fn-dev-pg2_database_for_single_replication_with_exclude)
    DeletedDocs: List()
    Deleted: List()
    Waiting for replication, state: Some("triggered")
    Waiting for replication, state: Some("completed")
    Removing database: backup_1593604243_replicatortest_fn-dev-pg2_database_for_single_replication_with_exclude
    Removing replication doc: backup_1593604243_replicatortest_fn-dev-pg2_database_for_single_replication_with_exclude
    Removing database: replicatortest_fn-dev-pg2_database_for_single_replication_with_exclude
    Removing database: replicatortest_fn-dev-pg2_some_excluded_name

org.apache.openwhisk.core.database.test.ReplicatorTests > Database replication script should do not replicate a database that is excluded PASSED

org.apache.openwhisk.core.database.test.ReplicatorTests > Database replication script should not replicate a database that basename is excluded STANDARD_OUT
    Removing database: replicatortest_fn-dev-pg2_database_for_single_replication_with_exclude_basename
    Removing database: replicatortest_fn-dev-pg2_database_for_single_replication_with_exclude_basename returned left: Left(404 Not Found (details: {"error":"not_found","reason":"Database does not exist."}
    ))
    Creating database: replicatortest_fn-dev-pg2_database_for_single_replication_with_exclude_basename
    Removing database: replicatortest_fn-dev-pg2_some_excluded_name-postfix123
    Removing database: replicatortest_fn-dev-pg2_some_excluded_name-postfix123 returned left: Left(404 Not Found (details: {"error":"not_found","reason":"Database does not exist."}
    ))
    Creating database: replicatortest_fn-dev-pg2_some_excluded_name-postfix123
    Running replicator: https://bmwhisk002.cloudant.com:443, https://bmwhisk002.cloudant.com:443, replicatortest_fn-dev-pg2_, 10 minutes, false, List(), List(some_excluded_name)
    Created: List(backup_1593604251_replicatortest_fn-dev-pg2_database_for_single_replication_with_exclude_basename)
    DeletedDocs: List()
    Deleted: List()
    Waiting for replication, state: Some("triggered")
    Waiting for replication, state: Some("triggered")
    Waiting for replication, state: Some("triggered")
    Waiting for replication, state: Some("completed")
    Removing database: backup_1593604251_replicatortest_fn-dev-pg2_database_for_single_replication_with_exclude_basename
    Removing replication doc: backup_1593604251_replicatortest_fn-dev-pg2_database_for_single_replication_with_exclude_basename
    Removing database: replicatortest_fn-dev-pg2_database_for_single_replication_with_exclude_basename
    Removing database: replicatortest_fn-dev-pg2_some_excluded_name-postfix123

org.apache.openwhisk.core.database.test.ReplicatorTests > Database replication script should not replicate a database that basename is excluded PASSED

org.apache.openwhisk.core.database.test.ReplicatorTests > Database replication script should replicate a database (snapshot) even if the filter is not available STANDARD_OUT
    Removing database: replicatortest_fn-dev-pg2_database_for_snapshout_without_filter
    Removing database: replicatortest_fn-dev-pg2_database_for_snapshout_without_filter returned left: Left(404 Not Found (details: {"error":"not_found","reason":"Database does not exist."}
    ))
    Creating database: replicatortest_fn-dev-pg2_database_for_snapshout_without_filter
    Creating testdocuments
    Running replicator: https://bmwhisk002.cloudant.com:443, https://bmwhisk002.cloudant.com:443, replicatortest_fn-dev-pg2_, 10 minutes, false, List(), List()
    Created: List(backup_1593604261_replicatortest_fn-dev-pg2_database_for_snapshout_without_filter)
    DeletedDocs: List()
    Deleted: List()
    Waiting for replication, state: Some("completed")
    Removing database: backup_1593604261_replicatortest_fn-dev-pg2_database_for_snapshout_without_filter
    Removing replication doc: backup_1593604261_replicatortest_fn-dev-pg2_database_for_snapshout_without_filter
    Removing database: replicatortest_fn-dev-pg2_database_for_snapshout_without_filter

org.apache.openwhisk.core.database.test.ReplicatorTests > Database replication script should replicate a database (snapshot) even if the filter is not available PASSED

org.apache.openwhisk.core.database.test.ReplicatorTests > Database replication script should replicate a database (snapshot) and deleted documents and design documents should not be in the snapshot STANDARD_OUT
    Removing database: replicatortest_fn-dev-pg2_database_for_single_replication_design_and_deleted_docs
    Removing database: replicatortest_fn-dev-pg2_database_for_single_replication_design_and_deleted_docs returned left: Left(404 Not Found (details: {"error":"not_found","reason":"Database does not exist."}
    ))
    Creating database: replicatortest_fn-dev-pg2_database_for_single_replication_design_and_deleted_docs
    Creating testdocument
    Running replicator: https://bmwhisk002.cloudant.com:443, https://bmwhisk002.cloudant.com:443, replicatortest_fn-dev-pg2_, 10 minutes, false, List(), List()
    Created: List(backup_1593604267_replicatortest_fn-dev-pg2_database_for_single_replication_design_and_deleted_docs)
    DeletedDocs: List()
    Deleted: List()
    Waiting for replication, state: Some("triggered")
    Waiting for replication, state: Some("completed")
    Removing database: backup_1593604267_replicatortest_fn-dev-pg2_database_for_single_replication_design_and_deleted_docs
    Removing replication doc: backup_1593604267_replicatortest_fn-dev-pg2_database_for_single_replication_design_and_deleted_docs
    Removing database: replicatortest_fn-dev-pg2_database_for_single_replication_design_and_deleted_docs

org.apache.openwhisk.core.database.test.ReplicatorTests > Database replication script should replicate a database (snapshot) and deleted documents and design documents should not be in the snapshot PASSED

org.apache.openwhisk.core.database.test.ReplicatorTests > Database replication script should continuously update a database STANDARD_OUT
    Removing database: continuous_replicatortest_fn-dev-pg2_database_for_continous_replication
    Removing replication doc: continuous_replicatortest_fn-dev-pg2_database_for_continous_replication
    Removing database: replicatortest_fn-dev-pg2_database_for_continous_replication
    Removing database: replicatortest_fn-dev-pg2_database_for_continous_replication returned left: Left(404 Not Found (details: {"error":"not_found","reason":"Database does not exist."}
    ))
    Creating database: replicatortest_fn-dev-pg2_database_for_continous_replication
    Running replicator: https://bmwhisk002.cloudant.com:443, https://bmwhisk002.cloudant.com:443, replicatortest_fn-dev-pg2_, 10 minutes, true, List(), List()
    Created: List(continuous_replicatortest_fn-dev-pg2_database_for_continous_replication)
    DeletedDocs: List()
    Deleted: List()
    Creating testdocument
    Removing database: continuous_replicatortest_fn-dev-pg2_database_for_continous_replication
    Removing replication doc: continuous_replicatortest_fn-dev-pg2_database_for_continous_replication
    Removing database: replicatortest_fn-dev-pg2_database_for_continous_replication

org.apache.openwhisk.core.database.test.ReplicatorTests > Database replication script should continuously update a database PASSED

org.apache.openwhisk.core.database.test.ReplicatorTests > Database replication script should remove outdated databases and replicationDocs STANDARD_OUT
    Now is:<PHONE_NUMBER>
    Removing database: backup_1593603383_replicatortest_fn-dev-pg2_expired_backup
    Removing database: backup_1593603383_replicatortest_fn-dev-pg2_expired_backup returned left: Left(404 Not Found (details: {"error":"not_found","reason":"Database does not exist."}
    ))
    Creating database: backup_1593603383_replicatortest_fn-dev-pg2_expired_backup
    Removing database: backup_1593604583_replicatortest_fn-dev-pg2_notexpired_backup
    Removing database: backup_1593604583_replicatortest_fn-dev-pg2_notexpired_backup returned left: Left(404 Not Found (details: {"error":"not_found","reason":"Database does not exist."}
    ))
    Creating database: backup_1593604583_replicatortest_fn-dev-pg2_notexpired_backup
    Running replicator: https://bmwhisk002.cloudant.com:443, https://bmwhisk002.cloudant.com:443, replicatortest_fn-dev-pg2_, 10 minutes, false, List(), List()
    Created: List()
    DeletedDocs: List(backup_1593603383_replicatortest_fn-dev-pg2_expired_backup)
    Deleted: List(backup_1593603383_replicatortest_fn-dev-pg2_expired_backup)
    Removing replication doc: backup_1593604583_replicatortest_fn-dev-pg2_notexpired_backup
    Removing database: backup_1593604583_replicatortest_fn-dev-pg2_notexpired_backup

org.apache.openwhisk.core.database.test.ReplicatorTests > Database replication script should remove outdated databases and replicationDocs PASSED

org.apache.openwhisk.core.database.test.ReplicatorTests > Database replication script should not remove outdated databases with other prefix STANDARD_OUT
    Now is:<PHONE_NUMBER>
    Removing database: backup_1593603389_replicatortest_fn-dev-pg2_expired_backup_correct_prefix
    Removing database: backup_1593603389_replicatortest_fn-dev-pg2_expired_backup_correct_prefix returned left: Left(404 Not Found (details: {"error":"not_found","reason":"Database does not exist."}
    ))
    Creating database: backup_1593603389_replicatortest_fn-dev-pg2_expired_backup_correct_prefix
    Removing database: backup_1593603389_replicatortest_wrongprefix_fn-dev-pg2_expired_backup_wrong_prefix
    Removing database: backup_1593603389_replicatortest_wrongprefix_fn-dev-pg2_expired_backup_wrong_prefix returned left: Left(404 Not Found (details: {"error":"not_found","reason":"Database does not exist."}
    ))
    Creating database: backup_1593603389_replicatortest_wrongprefix_fn-dev-pg2_expired_backup_wrong_prefix
    Running replicator: https://bmwhisk002.cloudant.com:443, https://bmwhisk002.cloudant.com:443, replicatortest_fn-dev-pg2_, 10 minutes, false, List(), List()
    Created: List()
    DeletedDocs: List(backup_1593603389_replicatortest_fn-dev-pg2_expired_backup_correct_prefix)
    Deleted: List(backup_1593603389_replicatortest_fn-dev-pg2_expired_backup_correct_prefix)
    Removing replication doc: backup_1593603389_replicatortest_wrongprefix_fn-dev-pg2_expired_backup_wrong_prefix
    Removing database: backup_1593603389_replicatortest_wrongprefix_fn-dev-pg2_expired_backup_wrong_prefix

org.apache.openwhisk.core.database.test.ReplicatorTests > Database replication script should not remove outdated databases with other prefix PASSED

org.apache.openwhisk.core.database.test.ReplicatorTests > Database replication script should replay a database STANDARD_OUT
    Removing database: backup_(1593591021)_replicatortest_fn-dev-pg2_database_to_be_restored
    Removing database: backup_(1593591021)_replicatortest_fn-dev-pg2_database_to_be_restored returned left: Left(404 Not Found (details: {"error":"not_found","reason":"Database does not exist."}
    ))
    Creating database: backup_(1593591021)_replicatortest_fn-dev-pg2_database_to_be_restored
    Creating testdocument
    Running replay: https://bmwhisk002.cloudant.com:443, https://bmwhisk002.cloudant.com:443, backup_(1593591021)_
    Replays created: List((_replicatortest_fn-dev-pg2_database_to_be_restored,replicatortest_fn-dev-pg2_database_to_be_restored,feda22430af4f9f2dc711692a20c5574))
    Waiting for replication, state: Some("triggered")
    Waiting for replication, state: Some("triggered")
    Waiting for replication, state: Some("triggered")
    Waiting for replication, state: Some("triggered")
    Waiting for replication, state: Some("completed")
    Removing replication doc: feda22430af4f9f2dc711692a20c5574
    Removing database: backup_(1593591021)_replicatortest_fn-dev-pg2_database_to_be_restored
    Removing database: replicatortest_fn-dev-pg2_database_to_be_restored

org.apache.openwhisk.core.database.test.ReplicatorTests > Database replication script should replay a database PASSED

BUILD SUCCESSFUL in 1m 37s
61 actionable tasks: 25 executed, 36 up-to-date

359 tests completed, 22 failed, 4 skipped
> Task :tests:testCoverageLean FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':tests:testCoverageLean'.
> There were failing tests. See the report at: file:///home/travis/build/ibm-functions/openwhisk/tests/build/reports/tests/testCoverageLean/index.html


How to use ssh-copy-id on PowerShell?

type $env:USERPROFILE\.ssh\id_rsa.pub | ssh <host> "cat >> .ssh/authorized_keys"


c parameter in reverse Huber loss

Hi, I am implementing the loss described in your paper, in equation (5) (reverse Huber Loss). Would it be possible to know what value are you using for the c parameter in equation (4)?

Just for the record, in the cited paper Deeper Depth Prediction with Fully Convolutional Residual Networks I found c defined as 0.2*max(absolute_diff)


one question about of drain hp (LUA)

how make drain hp when enemy sings (only in lua)

i wait you reply..
Just i wants know how make drain hp. only lua!

if it possible


Cannot press Enter in Settings Editor

Open Settings on Windows
Try to press Enter:
It does not work:

Adding the following to my keybindings.json has unblocked me:
{
	"key": "enter",
	"command": "-settings.action.editFocusedSetting",
	"when": "inSettingsEditor"
}

@alexandrudima dupe of #52942 ?

Duplicate of #52973


Segfault if SecretBox pubkey is null

See https://github.com/ysangkok/NaclTest/blob/master/src/main/java/com/mycompany/nacltest/NaclTest.java
If I change the public key parameter to null (public key shouldn't be needed for decryption, right?), the JVM crashes.
Even if a public key is needed, it should not segfault, it could throw an exception.
Why are annotations such as @Nullable not used?
Thanks for you efforts however, the library is useful.

I recall that the recipients public key is required for decryption of a sealed box (as the code suggests) as it's used for building the box's nonce. Secret box (as the title suggests) uses a symmetric key and is required.
From the libsodium documentation: The format of a sealed box is
ephemeral_pk || box(m, recipient_pk, ephemeral_sk, nonce=blake2b(ephemeral_pk || recipient_pk))
This means that to decrypt construction looks like box_open(c, recipient_sk, ephemeral_pk, nonce=blake2b(ephemeral_pk || recipient_pk))
On the note of nullable, I can't think of any of the Kalium API's that would allow for null value. I do agree that a runtime exception would be much better than a full segfault.
I just added the SealedBox API, I crammed the encrypt and decrypt interfaces together into one class with two constructors for the different purposes. Do you think there should be separate classes since the encrypt and decrypt operations are not symmetric in terms of how the instance is constructed like both Box and SecretBox are? Maybe hide the constructors and provide static instantiators making their purpose clear?

When you say symmetric, what exactly do you mean? Do you mean non-bijective?
Preventing misuse of the API is good, of course it is an advantage if the type system prevents errors.
However, this is not too important. Why are objects used at all anyway? I am not convinced that most people need to decrypt or encrypt multiple things with the same key. Static methods would also suffice. The abstraction makes little sense because there is no way I would, using my intuition, figure out that the keys are part of the "box".
I think it is most important to prevent crashing the JVM though, that should not be needed. That is the whole purpose of a wrapper library: to conveniently wrap the native code. Since the native code implements the actual functionality, this amounts to nothing but catching errors.

@ysangkok @bendoerr I believe this change https://github.com/abstractj/kalium/pull/60 fixes the issue, right? Just let me know and we get it merged.

@abstractj Yes, works.

Landed here: https://github.com/abstractj/kalium/commit/481dc82c0f662d7841394925de12d45eca09931a


Using messaging_service_sid with Twilio API integration

We should be able to use messaging_service_sid instead of :from to send the messages. Is there already a way to do it?

I think we could accommodate this with new setting that overrides from when used with Twilio delivery. The point is for texters to stay reusable across services that depend on from instead of sid.

I'm happy to take a look into this if you want?

:+1: It would consist of same steps as media_urls, ie. adding new texter/message field which I'd propose to prefix with service name if it's just for Twilio (so twilio_messaging_service_sid or twilio_sid if you think it describes it enough), tests, mail/log delivery and README.

Any update on this?  We need to use messaging_service_sid's for our app.

Hey @kmanzana, I intended to try and do this, but I have not had the opportunity just yet. I can't promise a particular time that I will be able to get to it either.
You've got a couple of options with this.

You can either take a crack at updating the library yourself, it should be relatively similar to adding media_urls as in this pull request, but you'd need to affect number checking in the Textris::Message class
You could forget Textris for now and use the twilio-ruby gem directly
You could wait for me to finish it up 🙂

Thanks for the info @philnash.  I'm going to go ahead and take care of it now.  I assume you haven't started this yet.

I have not started this yet, so go for it!


Add mobile fullscreen

Try adding full-screen icon to both portrait and landscape modes of mobile. Consider removing the landscape/serverless/card mode options and the zoom to make more space available and putting the full-screen icon in the header.

The landscape orientation does not provide any space to remove, could you point what exactly you would like to hide here ?

With a portrait orientation, I see how I can remove the switch itself:

In both cases, I want to remove the headers (including the landscape and CNCF logos) and have the un-fullscreen button sit on top of "ment" in "App Definition and Development".


Update to latest library version

Update to the latest library versions.
Signed-off-by: Prarit Bhargava<EMAIL_ADDRESS>

@rsteube , there are some caraspace changes here that could use your review.


iOS 10 Support & Fix Transparency

Fixes the iOS 10 permission crash in the Example project
Fixes the iOS 10 crash caused by trying accessing an empty array
Sets the transparency to work let Apple's default transparency
Added new customization options to better provide support similar to Apple toolbar / navigation bars.
Removed the default tint / background colors to match Apple's default of nil.
Fixed an additional issue where the album view's header did not have a background so the text would just overlap the top of whatever was under it while scrolling.

Was tested on iOS 9.3 iPhone 6 & iPod touch, iOS 10 beta 3 iPhone 6s, and iOS 10 public beta 1 iPad Air

Fixes #54

Can we get this merged?

For anyone else who needs the fix right now:
pod 'GMImagePicker', git: 'https://github.com/TechSmith/GMImagePicker.git', branch: 'iOS10-Support'

@guillermomuntaner can you merge this?

@AnumQ what error are you getting?
Are you getting it in this branch?
What version of iOS are you running on?
Do you mean this line here? https://github.com/guillermomuntaner/GMImagePicker/pull/56/files#diff-ba450c653d6226d8f605ae81b636f289L88
And does it work if you run the example project?
I didn't change this line so curious on what is happening for you.

This bug occurred last week and it was gone when I checked again on Friday.
I have been testing on ios 10.


is_whitespace for loop incrementing wrong variable

Without this fix is_whitespace only ever checks the first character. Called when the first token is text content; If that token has leading whitespace the whole token is ignored (content loss). Bug not present in python implementation.

Thanks!


Add use_gles3 option

I had some trouble getting my sokol-zig-based project to run on my AArch64 Chromebook - and the sokol-zig examples as well. Turned out the solution was to force ES3, turn on EGL, and turn off MSAA. This change adds an option to force ES3, since I couldn't currently find another way to do that.
Not sure if there are reasons that ES3 should imply EGL or anything like that, so I figure I should probably make the minimal change that fixes my problem? But if something different would be better let me know.

I think your solution is good (e.g. separately activating egl and gles3). Good to know that Chromebooks don't support the GLCORE backend though. Also that MSAA doesn't work.
Anyway, thanks for the PR :)

Oh, right, that would be good info!

without ES3: runtime crash on context creation, LINUX_{GLX,EGL}_CREATE_CONTEXT_FAILED
with ES3, without EGL: many linker errors, all for undefined EGL symbols: eglSwapBuffers etc.
with MSAA: black screen


Feature request: for FunctionDeclaration nodes (etc) optionally include snippet of js that produced it

How hard would it be to include the string snippet of js exactly as it was that the interpreter parsed (including comments) that produced a FunctionDeclaration, FunctionExpression, MethodDefinition, node in the AST and tie it to that node?

Sorry, this can be deduced from loc option.


Results are not reproducible with seed option

Using -s option to specify seed does not reproduce results (when applied to pizza.py)
To reproduce:
python3 main.py --nsspec pizza:score:solve example_pizza
python3 main.py --nsspec pizza:score:solve -s  example_pizza

Thanks for catching this. Found the error, the seed is taken as an int when generated and a string when given from arguments -s 100. Fixed in 2fe106309cec654289c73a217df904a509264b59 :)


Fix Compile Without UI Feature

I tried to compile without default features and it failed because of a missing feature check. This fixes it.

Good find, thank you!


Convolution kernel wrappers now accept nullptr bias tensors.

This solves https://github.com/tensorflow/tflite-micro/issues/706

Time for review soon ?

Hi @kjeir the team discussed this issue today and preferred to go with this approach instead: https://github.com/tensorflow/tflite-micro/pull/1114. We think that using GetOptionalTensorData introduced in that PR will make it more explicit about what behavior is intended and hence more readable. Let me know if we can close this or if there's any other issue.

I agree that #1114 is a better solution.
I will close this PR

Solved by #1114


Fixed error of writing to SPI registers with memcpy

This seems to have broken 16-bit transfers and I'm guessing 32-bit transfers as well.  spi_transfer_16(1, 0x8000) on scope results in 0x8080.

I reverted this commit, but without it we have another issue.
Seems memcpy() incorrectly working when copying 3 bytes to hardware registers.
May be this is related with unaligned read from SPI flash.

Where does this leave the state of the code, and any ideas on how to move forward?
The older aligned memcpy versions appear to use word sizes operations and also a memw after each access to the spi buffer. Are either or both needed, and would that resolve the problem? Would the fix be to bring back memcpy_unaligned_src and memcpy_unaligned_dst and add them to the core code now?
Looking at the code, in spi_transfer there is a call to _rearm_extras_bit in the following that looks like dead code and might this point to a problem too?
    for (size_t i = 0; i < blocks; i++)
    {
        size_t offset = i * _SPI_BUF_SIZE;
        _spi_buf_transfer(bus, (const uint8_t *)out_data + offset,
            in_data ? (uint8_t *)in_data + offset : NULL, buf_size, e, word_size);
        if (blocks) _rearm_extras_bit(bus, false);
    }

This is a very strange bug in memcpy(): when copying three (exactly three!) bytes into the register area, for example SPI(1).W, the third byte is repeated three times:
const uint8_t data[] = {
	0x01, 0x02, 0x03
};
const size_t data_size = sizeof(data);
...
memset((void *)SPI(BUS).W, 0, sizeof(SPI(BUS).W));
dump("ZERO", (uint8_t *)SPI(BUS).W, data_size);
memcpy((void *)SPI(BUS).W, data, data_size);
dump("SRC", data, data_size);
dump("DST", (uint8_t *)SPI(BUS).W, data_size);

Output:
ZERO: 0x00 0x00 0x00
SRC:  0x01 0x02 0x03
DST:  0x03 0x03 0x03

4 bytes output:
ZERO: 0x00 0x00 0x00 0x00
SRC:  0x01 0x02 0x03 0x04
DST:  0x01 0x02 0x03 0x04

Just tried memw before and/or after copying bytes, and nothing changes.

I believe that all esp8266 registers are 32-bit and require aligned access, i.e. using memcpy() to write (or read) anything to a register isn't correct as it doesn't provide such guarantees.

Most likely SPI registers don't process "byte enable" signal of system bus (AHB?) at all, therefore, subsequent byte writes still write the full 32 bit word which contains remains of a previous transaction.


feat: block sync

Description
Sync blocks.
Motivation and Context
How Has This Been Tested?
What process can a PR reviewer use to test or verify this change?
Breaking Changes

[x] None
[ ] Requires data directory to be deleted
[ ] Other - Please specify

Closing in favour of @sdbondi's block sync pr


Silabs

work on packaging.
work on templates.
work on UI.

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.3 out of 4 committers have signed the CLA.:white_check_mark: thuctran289:white_check_mark: jingteng25742:white_check_mark: tecimovic:x: wehaleYou have signed the CLA already but the status is still pending? Let us recheck it.


Unable to remove element from carousellist

Hi @AndreiMisiukevich,
I've been trying to use the CarouselView. In my app, I remove an element of my container which is bound to my carousel view. I am expecting only for existing elements to be visible, yet I see an empty slot when I browse through my carousel view, can you please advise?

Hi, sure
But I need a reproduction sample project, if it's possible.

CardsSample 2.zip

Hi @AndreiMisiukevich,
Thank you very much. I have attached the sample to the ticket. I have added a toolbar item to call the delete function directly, it seems that this issue happens only if you use the swipe down animation to delete. If you get a chance, please take a look and advise. If you press the button, it seems to delete it properly and the gesture doesn't have a problem either, so I'm a bit puzzled here.

@nawidy sure, i will check it on this week.
Unfortunately, now I have no a lot of time.

Thanks again for your hard work. Looking forward to seeing what you find, and if I figure it out I’ll make a post.
Thanks,

Nawid

On Aug 26, 2018, at 11:26 PM, Andrei<EMAIL_ADDRESS>wrote:
@nawidy sure, i will check it on this week.
Unfortunately, now I have no a lot of time.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.

@nawidy deal =)


manifest.json: touch the file in the end of the build only

Description
I use a complex build over a legacy PHP site and I use it for development also (npx vite build --watch).
When the build is complete I inject the path of the index.js/index.css (and more) from manifest.json into Twig templates.
For that I have the gulp watching for changes in manifest.json.
The problem when the build is started manifest.json is changed and it's empty.
So I have the gulp task wasted (I have some error catching to ensure the gulp pipeline is OK).
Suggested solution
Generate manifest.json in the end of the build (do not change it ahead).
So generation of manifest.json would be a clear event of the build's completition.
Alternative
No response
Additional context
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 request the same feature to avoid creating a duplicate.

You may use programmatic API to achieve the goal:
import { build } from 'vite'
const watcher = (await build({
  build: {
    watch: {},
  },
})) as RollupWatcher
watcher.on('event', ({ code }) => {
  if (code === 'BUNDLE_END') {
    // stuff
  }
})

You may use programmatic API to achieve the goal:
import { build } from 'vite'
const watcher = (await build({
  build: {
    watch: {},
  },
})) as RollupWatcher
watcher.on('event', ({ code }) => {
  if (code === 'BUNDLE_END') {
    // stuff
  }
})

thanks! i'll try that, seems more valid/elegant approach than brute-force watching manifest.json

You may use programmatic API to achieve the goal:
import { build } from 'vite'
const watcher = (await build({
  build: {
    watch: {},
  },
})) as RollupWatcher
watcher.on('event', ({ code }) => {
  if (code === 'BUNDLE_END') {
    // stuff
  }
})

for some reason that caused the build go into an endless loop.
Seems writing a rollup plugin is simpler solution:
function watcher() {
    return {
        async buildEnd() {
            console.log('BUILD ___________________ END')
        },
    }
}

A rollup plugin will be easier to implement. However, programmatic should work too, you can provide a minimal reproduction if you believe it's Vite's bug.

not a bug, just a peculiarity.
I'm ok with the closeBundle() rollup hook. But I dont like it doesnt report errors.
But that's about the rollup, I'll post my concern there.


Switch from electron-prebuilt to electron

Fixes #794.

Sweet! Thanks for the contribution, @JaKXz! Hope you stick around to contribute some more 👍
Let me know if I can help you find your way around the codebase or issue tracker 😸

@feross no worries, happy to help :) I will try to work my way up to the interesting stuff!


frontend-homework<13>

Screen Shots:

Metric
Value

alert_status
:white_check_mark: OK

bugs
0

code_smells
5

reliability_rating
A (0 Bugs)Note: A being best, E being worst

security_rating
A (0 Vulnerabilities)Note: A being best, E being worst

vulnerabilities
0


proxy exception request

I can not re-open the issue, so I made new issue.
https://github.com/microsoft/vscode/issues/137404
I was disappointed a bit about your unconsidible reply.
I said we need all lists when download the vsix from marketplace.
we are done proxy execption request of all the url lists that you said.
but it doesn't work.
https://code.visualstudio.com/docs/editor/extension-marketplace#_install-an-extension
our security team said dc.services.visualstudio.com, default.exp-tas.com are still blocked.

what are dc.services.visualstudio.com, default.exp-tas.com for ?
we have to provide the reason when proxy execption request
all the lists when download from marketplace

I can not re-open the issue, so I made new issue.

You don't need to re-open the issue to still comment on it. Moving the discussion to the original issue.


[FIX] Catch illegal argument exception

To avoid recurrent IllegalArgumentException, as mentioned in https://github.com/Diolor/Swipecards/issues/24, this branch implements the solution provided by @wtttc.

Thanks for this @adgeg. Will merge this as soon as I will find some additional time to upload it to the repo.

@adgeg How can I include your lib version?

@Diolor could you help me on this one?

@adgeg  How to use this modification, @Diolor  please update the library...

@Diolor Do you know if you'll be able to merge this PR and release a new version? I'm getting a number of crashes due to this particular issue.
Thanks


Typescript Error with mock function calls

Describe the bug
There's a bug with the typings for the jest integration of tinyspy, that causes typescript to complain about what should be a valid use of a mock function - it looks like the calls array on the mock function uses the type of the return value for the mocked function rather than the arguments.
The error message I get in VSCode:

It looks like the error comes from the definition for JestMockCompatContext - the generics are the wrong way round:
export interface JestMockCompatContext<T, Y> {
  calls: Y[] // <- this should be T[]
  instances: T[]
  // TODO: doesn't work
  invocationCallOrder: number[]
  results: MockResult<T>[] // <- this should be Y[]
}

I'm happy to open a PR with the change if that's ok
Reproduction

Create a new Vite app pnpm init vite@latest bug-demo (then cd bug-demo && pnpm install)
Install vitest pnpm add -D vitest
Add the following code to a new file src/main.spec.ts:

import { expect, it, vi } from "vitest";

const myObj = { f(_x: unknown): void {} };

it("replicate mock calls bug with vitest", () => {
  const spy = vi.spyOn(myObj, "f");

  myObj.f(1);

  expect(spy.mock.calls).toStrictEqual([[1]]);
  expect(spy.mock.calls[0][0]).toBe(1);
});

Typescript will report the error automatically in VSCode, or you can run pnpm tsc

System Info
System:
    OS: macOS 12.0.1
    CPU: (8) arm64 Apple M1
    Memory: 1.15 GB / 16.00 GB
    Shell: 5.8 - /bin/zsh
  Binaries:
    Node: 17.0.1 - /opt/homebrew/bin/node
    npm: 8.1.0 - /opt/homebrew/bin/npm
  Browsers:
    Chrome: 96.0.4664.110
    Firefox: 96.0
    Safari: 15.1
  npmPackages:
    vite: ^2.7.2 => 2.7.10
    vitest: ^0.0.133 => 0.0.133

Used Package Manager
pnpm
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] 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.

Pending fix: https://github.com/vitest-dev/vitest/pull/447


IsPointInMesh: wish to add to RhinoScript library

This is here to track the wish to add IsPointInMesh to Rhino.Python
https://mcneel.apo.io/conversations/362625
This is a possible implementation.
def RhinoScriptIsPointInMesh(mesh, point, strict=False, tolerance=0.01):
    mesh = rs.coercemesh(mesh)
    if not mesh: return
    point = rs.coerce3dpoint(point)
    if not point: return
    return mesh.IsPointInside(point, tolerance, strict)

http://mcneel.myjetbrains.com/youtrack/issue/RH-30069


Add a link to the readme referencing the Drizzle ORM documentation

Note : This issue will only be assigned to beginners.
If you have previously contributed to open source, or have experience, please filter out the issues tagged with "good first issue" and "beginner friendly".
Context
Drizzle is the object relational mapping tool used in the project.
What is an ORM?
Currently it is not referenced in the readme, so we would like to add a link to the drizzle docs.
Expected Behavior
Add another bullet point to the Code Contributions list, including a link to the Drizzle documentation.
Screenshots

Additional info
Drizzle website
Any questions feel free to ask.

I would love to work on this as a beginner! Can I be assigned to it?

I would love to work on this as a beginner! Can I be assigned to it?

Absolutely leslyclopez11.
I have assigned you the task.
If you need an help , just let us know.

Hello, I added drizzle to the README.md file. Here is the link to the pull request: https://github.com/codu-code/codu/pull/1033


Implement install --all

This patch tries to implement cargo install --all for installing all
"bin" crates from a workspace project.
Signed-off-by: Matthias Beyer<EMAIL_ADDRESS>
I doubt that it is this simple, but I guess this is the first step.
Closes #4101

My cargo test fails, but I guess that's not because of my changes but rather because I cannot crosscompile:
test linker_and_ar ... FAILED

failures:

---- linker_and_ar stdout ----
	thread 'linker_and_ar' panicked at 'Cannot cross compile to i686-unknown-linux-gnu.

This failure can be safely ignored. If you would prefer to not see this
failure, you can set the environment variable CFG_DISABLE_CROSS_TESTS to "1".
', tests/cargotest/support/cross_compile.rs:88:4
note: Run with `RUST_BACKTRACE=1` for a backtrace.

failures:
    linker_and_ar

test result: FAILED. 18 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out

error: test failed, to rerun pass '--test cross-compile'

Thanks for the pull request, and welcome! The Rust team is excited to review your changes, and you should hear from @alexcrichton (or someone else) soon.
If any changes to this PR are deemed necessary, please add them as extra commits. This ensures that the reviewer can see what has changed since they last reviewed the code. Due to the way GitHub handles out-of-date commits, this should also make it reasonably obvious what issues have or haven't been addressed. Large or tricky changes may require several passes of review and changes.
Please see the contribution instructions for more information.

cc https://github.com/rust-lang/cargo/pull/4943#issuecomment-363268607, @withoutboats

Thanks! Could you be sure to add a test for this as well?
@matklad this may end up being somewhat orthogonal to that as "install the package/workspace at cwd" I think may just become a flag rather than being implicit

I am also unsure how this should interact with --bins and --examples...
For example, I believe that if you have a crate which contains an example, but does not contain a binary, than cargo install --all --examples will not install this example, which does seem surprising.
My gut feeling (which might be totally wrong! :) ) is that we should try do use the same semantics for --all which we use for all other commands. That is, to add an --exclude flag as well, and do something like this: https://github.com/rust-lang/cargo/blob/ed8dfce4c119dca307c428e879a075bd24ab51b8/src/bin/build.rs#L103-L105.

Hm true yeah! I agree we should add --exclude for consistency if we add --all, but it's a good point about --bins and --examples... I dunno how to rationalize that without adding this though :(

:umbrella: The latest upstream changes (presumably #5152) made this pull request unmergeable. Please resolve the merge conflicts.

I'm gonna close this for now as it's pretty out of date at this point, but it can of course be resubmitted!


researcher profile has access to change solr settings (!)

Hi, I posted about this on the main Omeka forum and Patrick suggested I post here instead. When I create a researcher profile the Solr plug-in is the only plug-in that still allows this profile to make changes to any settings, including "Clear and Reindex." I need to change this as a "researcher" shouldn't have any access to change these settings. Patrick suggested changing/adding the define_acl hook, but when I add it to:
protected $_hooks = array(
'install',
'uninstall',
'upgrade',
'initialize',
'define_routes',
'after_save_record',
'after_save_item',
'after_save_element',
'before_delete_record',
'before_delete_item',
'before_delete_element'
);
I get a list of errors with the message that: Exception 'Omeka_Plugin_Exception' with message 'Hook callback "hookDefineAcl" does not exist.' in  [domain]/omeka/application/libraries/Omeka/Plugin/AbstractPlugin.php:162
According to patrick, "After adding that to the list of hooks, Omeka will expect there to be a function called hookDefineAcl that does the actual job of setting up the permissions. Without knowing the inner workings of the plugin, it's hard to guess exactly what should go in there."
I'm not sure what to change at this point. Any ideas?

I submitted a pull request that was merged to the develop branch to fix this issue:
https://github.com/scholarslab/SolrSearch/pull/126
I do not know why the project has not packaged a new release with this change. I would recommend downloading a copy of the develop branch to use as the plugin from: https://github.com/scholarslab/SolrSearch/archive/develop.zip


Add sub_crossover controls

Adds support for subwoofer crossover controls. As of now, I believe this only applies to Amp devices.
Connect:Amp devices have a non-adjustable crossover at 80hz. I assume this will report it properly and that attempts to change will have no effect. Unfortunately I do not have a Connect:Amp (or Amp) to test with.

Briefly tested this on a variety of devices:
Living Room (Amp): Crossover Freq. = 60
Living Room (Amp): Set Crossover Freq. to 80 ... OK

Main Bedroom (Connect:Amp): Crossover Freq. = None
Main Bedroom (Connect:Amp): Set Crossover Freq. to 80 ... not supported

Diner (One): Crossover Freq. = None
Diner (One): Set Crossover Freq. to 80 ... not supported

Note that neither my Amp nor my Connect:Amp actually has a subwoofer attached.
Setting the Amp's crossover via the SoCo.sub_crossover = frequency sets it to 60Hz regardless of what frequency is supplied, whereas setting it via the (S1) iOS app does change the crossover in the app and this change is also visible via the getter.
So, I'm not sure the setter is working; I'd expect it to be consistent with the iOS app.

Connect:Amp devices have a non-adjustable crossover at 80hz. I assume this will report it properly and that attempts to change will have no effect. Unfortunately I do not have a Connect:Amp (or Amp) to test with.

I'm not sure why this is a concern, as there's an explicit test for an 'Amp' in both the getter and the setter?

Hmm, another user implied the setter worked, so perhaps actually having a sub attached is needed for the system to accept the change.
As I don't have a sub myself, it's been a bit difficult to figure out how this is determined by the Sonos system. We've been using the channel layout to infer the existence of a subwoofer, but perhaps there's a better method. For example, this doesn't seem to show external 3rd party subs connected to an Amp.

I'm not sure why this is a concern, as there's an explicit test for an 'Amp' in both the getter and the setter?

This comment was about there being a difference in behavior between the older Connect:Amp model vs the newer Amp devices. Only the newer ones support an adjustable crossover point.

Let's release this into the wild to obtain additional empirical data.


Should we hide interconnectors with 0 capacity from hourly electricity price chart

For a new II3050 National governance scenario on PRO, the merit_order_price_curve chart looks like this for a randomly selected week:

In this scenario, only interconnector 1 has installed capacity. The other interconnectors do have a standard price, which is why they show up in this chart, but they are otherwise inactive because they have no installed capacity. I think that showing their prices in the chart may be confusing for users, as it suggests that the other interconnectors play a role in the scenario. My preference would be to hide the interconnector prices when they have no installed capacity.
@michieldenhaan what do you think?

Yes I agree! Would make the chart much more readable. @antw is this something that can be done easily?

As this isn't directly related to the flex project, I've done this on the master branches for ETModel and ETSource. They can be cherry-picked to the price-sensitive-flex branches if you need them.


sqlalchemy: 1.2.12 -> 1.2.13

Motivation for this change
Things done

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS)
Built on platform(s)

[x] NixOS
[ ] macOS
[x] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nox --run "nox-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Fits CONTRIBUTING.md.

1.2.14 is out now, FWIW.

Can re-open if useful, but python updates are handled in bulk no reason to specifically bump this.


Enable LLDP

This is worthless. https://docs.microsoft.com/en-us/answers/questions/378477/how-to-configure-microsoft-lldp-protocol-driver.html


manpages inside the container

With the docker-entry I find it's easy and handy to access container to peek log files and check/tweak some configuration parameters. Sometimes I need to check options or other help information for the installed packages within container. Hence I try to access manpages for that packages within container, but 'man' command isn't available :(
I can imagine, that it's not installed to keep image smaller, but then - the whole bunch of manpages in /usr/share/man/* are actually there, together with /usr/share/doc/*. So, if the priority is saving space, taken by the image its worth deleting content of those directories(together with /etc/alternatives/).
Otherwise, if they are there already it's handy to be able to access those manpages and add 'man-db'  package to the image.
Actually, it's possibly better to add this to the parent image, sameersbn/ubuntu and/or sameersbn/debian, as those alreasy have some manpages.

I don't think you should install user tools.  It's trivial for people to base an image on yours and add stuff if they want it, or to look at the man pages in another environment.


some questions about "Quick Try"

Hi,It's a great project!
I have some questions about "Quick Try". I installed the whole process according to the "README", but when I run 'python demo/quick_try.py demo/src.png -- style toonify' I get the following problem:
Traceback (most recent call last):
  File "demo/quick_try.py", line 253, in <module>
    main()
  File "demo/quick_try.py", line 240, in main
    transfer_ckpt=os.path.join(args.ckpt_path, transfer_ckpt_name))
  File "demo/quick_try.py", line 118, in __init__
    device='cpu').eval()
  File "/home/abel/program/mmgeneration/mmgen/apis/inference.py", line 36, in init_model
    config.model, train_cfg=config.train_cfg, test_cfg=config.test_cfg)
  File "/home/abel/program/mmgeneration/mmgen/models/builder.py", line 32, in build_model
    return build(cfg, MODELS, dict(train_cfg=train_cfg, test_cfg=test_cfg))
  File "/home/abel/program/mmgeneration/mmgen/models/builder.py", line 27, in build
    return build_from_cfg(cfg, registry, default_args)
  File "/home/abel/anaconda3/envs/soul/lib/python3.7/site-packages/mmcv/utils/registry.py", line 55, in build_from_cfg
    raise type(e)(f'{obj_cls.__name__}: {e}')
urllib.error.URLError: <urlopen error PSPEncoderDecoder: <urlopen error [Errno 111] Connection refused>>

I finished in CUDA 10.2.
What is the problem？

I have also encountered the same problem. Have you resolved it？


Proposal - remove PAC files from repo (and thus tarball/zipball of actions) and install via nuget

Github's autogenerated "Set up job" step seems to be flakey, specifically for jobs containing our actions here.  It usually succeeds, but when it does not, it fails due to timeouts downloading the Action's tarball/zipball corresponding to the selected commitish.
If we do not get a resolution from the GitHub side, our only real option is to reduce the size of the tarball/zipball by removing the largest chunk of it -- the PAC CLI executable and ancillaries.
This PR

removes the Windows and Linux copies of PAC from the dist folder,
adds a new action actions-install to install the net48 version of PAC from nuget for Windows hosts or net6.0 dotnet tool version of PAC for Linux hosts, and
adds checks to throw errors if an action runs which requires pac when the actions-install step has not yet been run.

This would be a BREAKING CHANGE as no current jobs contain the not-yet-existant actions-install action, and thus we should have a major version change to signify that.

Example of a job running actions-install followed by Who Am I:

Example of a job which runs actions-install more than once:

Example of a job failing to run who-am-i, as it did not run actions-install first:

Are you planning to add Nuget package version to be able to customize packageVersion for new install action? Maybe be default to latest and let customers override it

Are you planning to add Nuget package version to be able to customize packageVersion for new install action? Maybe be default to latest and let customers override it

Yep, added an override argument.


Anchor hrefs inside SVG elements not getting handled properly by router

Describe the bug
Anchor tags inside SVG elements cause a TypeError in the router, and fall through to browser navigation.  This results in a full page load.  The issue seems to be that SVG elements are SVGAnimatedStrings, and the href attribute is returned as an object.  I have resolved this issue locally by checking if the element is an SVG, and if so, accessing a.href.baseVal, and including document.baseURI in the URL constructor.  This has to be done inside the "click" event handler and the trigger_prefetch function.
I'm happy to submit a PR if this solution is acceptable.
Reproduction

Initialize Demo App
Add SVG inline with anchor tag to index.svelte
Click on SVG element

Logs
No response
System Info
System:
    OS: Windows 10 10.0.19042
    CPU: (8) x64 Intel(R) Core(TM) i7-8705G CPU @ 3.10GHz
    Memory: 2.08 GB / 15.82 GB
  Binaries:
    Node: 14.17.0 - C:\Program Files\nodejs\node.EXE
    npm: 7.14.0 - C:\Program Files\nodejs\npm.CMD
  Browsers:
    Chrome: 92.0.4515.131
    Edge: Spartan (44.19041.1023.0), Chromium (92.0.902.73)
    Internet Explorer: 11.0.19041.906
  npmPackages:
    @sveltejs/kit: next => 1.0.0-next.154
    svelte: ^3.34.0 => 3.42.1

Severity
serious, but I can work around it
Additional Information
No response

Hey, thanks for digging into this. I'm not super familiar with this part of the code or how SVGs might be handled differently. I do see a few references to SVGs in the router code already, but I wouldn't be terribly surprised if there's a case that got missed somehow.
I'd say go ahead and send a PR so I can better see what exactly the issue is you're talking about and what you're proposing to change.

I ran into the same problem, a 'decent' workaround is to hijack the clickevent and use goto to navigate the correct page, this will keep you inside the SvelteKit 'context', while still allowing navigating if javascript is disabled.
 goto(href)>

@ptizzy Will you be sending a pr to fix this? I can take a look at it soon and make a fix as well (or anyone else).
To clarify the reason for this ambiguity, given:

<svg>

</svg>

document.getElementById('a').href         // logs "http://localhost:3000/foo"
document.getElementById('b').href.baseVal // logs "/foo" <--- not full url

Because b isn't giving us the full url path, new URL(href) fails.

I gave it a shot.  In my testing, it handled absolute and relative paths correctly.  Let me know if you notice any issues, or feel I should take a different approach.


Improving config for MUSDB18

Description
training spleeter on MUSDB18 using the provided configuration file does produce very poor results. This is probably because the config was designed for evaluation only.
When using the provided config, I get the following results with museval
vocals          ==> SDR:   1.058  SIR:  -5.229  ISR:   2.040  SAR:  12.087
drums           ==> SDR:   1.205  SIR:  -3.945  ISR:   1.987  SAR:  12.087
bass            ==> SDR:   0.680  SIR:  -6.822  ISR:   1.964  SAR:  12.087
other           ==> SDR:   1.063  SIR:  -5.320  ISR:   1.984  SAR:  12.087

Step to reproduce
python -m spleeter train -p configs/musdb_config.json -d MUSDB18-WAV

Questions
To improve the config, I think the following things would need to be addressed:

n_chunks_per_song is set to 1. Shouldn't this be larger for full tracks like in MUSDB?
random_time_crop is using a fixed seed which is not updated during training. That means the chunks are deterministic and therefore only a very small fraction of the MUSDB18 dataset is actually used in training.
train_max_steps is set to 100000. Was this tested on MUSDB18? Should this be increased?
No early stopping is configures. On such a small dataset the model will suffer from significant overfitting

Desired behavior is to update the config/docs to be able to train using MUSDB18.

@faroit How long did it take you to train on musdb-18, with the default config file?
(I'm trying to do the same and the training seems to get over surprisingly quickly!)

@faroit, as you figured out, the provided musdb config file must be tweaked to get a proper training. It was just provided as a quick way to run a toy training on musdb.

n_chunks_per_song is set to 1. Shouldn't this be larger for full tracks like in MUSDB?

Yes, it should be set to something bigger for musdb. This is the total number of 20s (could be set by parameter chunk_duration) audio chunk used for training (a sub 12s segment is then randomly crop within these chunks). Chunking is used to ensure efficient spectrogram caching while keeping some randomness in the selected segments.
For musdb, I would recommend setting to a value between 20 and 30 to have a good span of each track, otherwise you only train the model on 20s of each track which is very small.

random_time_crop is using a fixed seed which is not updated during training. That means the chunks are deterministic and therefore only a very small fraction of the MUSDB18 dataset is actually used in training.

I don't think so. As random_time_crop is called several times in the same tensorflow session (the one used for training), each call should lead to a different random crop. Seeding just ensure, that the sequence of cropping value is the same in a session. Feel free to correct me if I'm wrong :).

train_max_steps is set to 100000. Was this tested on MUSDB18? Should this be increased?

This was not tested on musdb so a different value may be better. This could heavily depends on the other training parameters, so training/validation metrics should be monitored during training.

No early stopping is configures. On such a small dataset the model will suffer from significant overfitting.

We unfortunately don't provide an implementation of an early stopping mechanism implemented so far. An easy workaround is to increase the number of saved checkpoints and to select model afterward based on validation metrics.

@romi1502 Thanks, I will try to some parameters. Since @mmoussallam already noted that you don't want to release pre-trained weights on MUSDB18, are you ok with maintaining a fork on sigsep? Once we found a good config we could add that via PR.

I don't think so. As random_time_crop is called several times in the same tensorflow session (the one used for training), each call should lead to a different random crop. Seeding just ensure, that the sequence of cropping value is the same in a session. Feel free to correct me if I'm wrong :).

I guess you are right. At least when it comes to randomness within a session. This short example should mimic the behavior:
import tensorflow as tf

def add_random_int(sample):
    r = tf.random.uniform([1], minval=2, maxval=100, dtype=tf.int64, seed=42)
    return sample + r[0]

dataset = tf.data.Dataset.range(3)
dataset = dataset.repeat(3)
dataset = dataset.map(add_random_int)

print([x.numpy() for x in dataset])
print([x.numpy() for x in dataset])

out:
[50, 17, 26, 30, 44, 98, 65, 62, 35]
[50, 17, 26, 30, 44, 98, 65, 62, 35]

so as long as the repeat is infinite the crops are random.

Hi @faroit, the code of spleeter is still moving quite a lot. So it may be a bit premature to put a maintanable fork of Spleeter in sigsep. But we may consider it in the near future.

@romi1502 I encounter the same problem as you. The training is so quickly done.

Hi @rohitma38 , I encounter the same thing as you. The training is quickly done. Did you find out the reason ?

Hey @syxu828
It is probably because the training didn't go through at all, at least that's how it was in my case. Can you try running the spleeter train command with '--verbose' added as an argument and look at the log messages at the end?
I get something like this -
WARNING:tensorflow:Training with estimator made no steps. Perhaps input is empty or misspecified.
I suspect that the audio isn't getting loaded, but I haven't yet been able to fix it.

@rohitma38 Your comment made me realize that is the same issue I am having when trying to train. I am getting separation outputs that were no different than the original audio, and mine also says that the estimator made no steps.

Hi @faroit, the code of spleeter is still moving quite a lot. So it may be a bit premature to put a maintanable fork of Spleeter in sigsep. But we may consider it in the near future.

@romi1502 okay, just keep me updated. I will leave this issue open till then

I want to reproduce results in paper. Can you share your config files used in paper?

It would nice of this issue could be addressed as part of the JOSS review. A reproducible MUSDB18 configuration could show how spleeters model and training pipeline would compare against other models when only trained on MUSDB18.

Hi @faroit,
I pushed a modified musdb_config.json config that trains properly on musdb and provide decent results:

SDR
SAR
SIR
ISR

Vocals
4.69
4.94
12.24
9.64

Drums
4.59
4.79
9.21
8.60

Bass
3.71
5.02
6.44
9.31

Other
3.10
3.93
5.23
7.91

These results should be rougly reproducible using the command:
spleeter train -p configs/musdb_config.json -d <path to musdb>

Note that you might not get the exact same results as I'm not sure that there is any guarantee of ordering preservation in the data pipeline, but it should not change much.
Nothing was optimized in anyway (using data augmentation, hyper-parameter tuning...) to guarantee optimal performances of the model on musdb though, but it give an idea of what it can do when trained only on musdb.

Erratum
There was an error in the separation pipeline related to this issue which is in the process of being fixed.
Here is the actual table of results for the model trained on musdb with the musdb_config.json config:

SDR
SAR
SIR
ISR

Vocals
5.10
5.44
12.45
9.58

Drums
5.15
5.25
10.68
8.89

Bass
4.27
5.42
7.23
9.38

Other
3.21
3.89
5.37
7.80

That's great!

嘿@ syxu828
可能是因为培训完全没有完成，至少在我看来就是这样。您可以尝试运行带有“ -verbose”作为参数的spleeter train命令并查看末尾的日志消息吗？
我得到这样的东西-
WARNING:tensorflow:Training with estimator made no steps. Perhaps input is empty or misspecified.
我怀疑音频没有被加载，但是我还不能修复它。

Hey @syxu828
It is probably because the training didn't go through at all, at least that's how it was in my case. Can you try running the spleeter train command with '--verbose' added as an argument and look at the log messages at the end?
I get something like this -
WARNING:tensorflow:Training with estimator made no steps. Perhaps input is empty or misspecified.
I suspect that the audio isn't getting loaded, but I haven't yet been able to fix it.

I encountered the same problem, did you fix it?

I think the issue is fixed now in the currently available version of spleeter. I have since been able to successfully train on musdb.

嘿@ syxu828
可能是因为培训完全没有完成，至少在我看来就是这样。您可以尝试运行带有“ -verbose”作为参数的spleeter train命令并查看末尾的日志消息吗？
我得到这样的东西-
WARNING:tensorflow:Training with estimator made no steps. Perhaps input is empty or misspecified.
我怀疑音频没有被加载，但是我还不能修复它。

Hey @syxu828
It is probably because the training didn't go through at all, at least that's how it was in my case. Can you try running the spleeter train command with '--verbose' added as an argument and look at the log messages at the end?
I get something like this -
WARNING:tensorflow:Training with estimator made no steps. Perhaps input is empty or misspecified.
I suspect that the audio isn't getting loaded, but I haven't yet been able to fix it.

I encountered the same problem, did you fix it?

I think the issue is fixed now in the currently available version. I have since been able to train successfully on musdb.

I'm trying to reproduce the results for training MUSDB with the above config file, however it takes an unreasonable amount of time to load all the audio files with a chunk size of 40, running on an NVIDIA Tesla M60. Is this normal? How long do you expect the audio loading to take? Is there a way to speed up this process, perhaps saving the spectrograms as a tfRecord instead of caching?
The caching mechanism from tensorflow doesn't seem to work well with large datasets.

Hi, we are training the spleeter for two classes. For training, we feed three classes, One is machine class, second one is noise class and third one is mix of the both classes. We have 360 voices in each class. The performance is much worse. We conducted eight experiment but no change.


Using access groups not possible

I am currently trying to use the iOS Keychain feature for within an Unity App.
The ultimate goal is to store data between apps.
I have set up the communication and followed tutorials online about keychain.
Using this GitHub I wrote the following code:
 ` let keychain = KeychainSwift()
    keychain.accessGroup = "MyTeamPrefix.myKeychainGroup1"
    // MyTeamPrefix is the actual 10 char string from Apple Developer

    if keychain.set("hello world", forKey: "my key") {
        // Keychain item is saved successfully
    } else {
        print(keychain.lastResultCode)
    }

`
Unfortunately it does not set a new Keychain Item,
but instead prints -25243
This is referring to the access group I set to the keychain object.
It says that I am not authorised to set new keychain items.
When I do it without setting the keychain it works fine.
What I did
In my eyes I did everything right to the following tutorial:
https://evgenii.com/blog/sharing-keychain-in-ios/
I created a keychain group (entitlements says: $(AppIdentifierPrefix)myKeychainGroup1)
I got the prefix for Apple Developer for this right bundle id (same prefix as for my other apps anyways)
Then I wrote the code, but it does not work.
I don't know what to do at this point.
I went through a lot of online post, but no solution.
Every help is well appreciated.
Cheers
PS: The code runs on a real device.
Similar post that didn't help as far as I tested:
https://stackoverflow.com/questions/7989258/ios-keychain-secitemadd-returns-25243

Hi @ConcapptPrakti, thanks for reporting the issue. It looks like you did everything correctly. I would try to isolate the case and create two simple apps in Xcode: one that writes a shared key, and another that reads it. Here is the code for the two apps.
Writer app
import UIKit

class ViewController: UIViewController {

  override func viewDidLoad() {
    super.viewDidLoad()

    // Create a keychain item

    let itemKey = "My key"
    let itemValue = "My secretive bee 🐝"
    let keychainAccessGroupName = "ENTER_YOUR_TEAM_ID_HERE.myKeychainGroup1234564321"

    let queryDelete: [String: AnyObject] = [
      kSecClass as String: kSecClassGenericPassword,
      kSecAttrAccount as String: itemKey as AnyObject,
      kSecAttrAccessGroup as String: keychainAccessGroupName as AnyObject
    ]

    let resultCodeDelete = SecItemDelete(queryDelete as CFDictionary)

    if resultCodeDelete != noErr {
      print("Error deleting from Keychain: \(resultCodeDelete)")
    }

    guard let valueData = itemValue.data(using: String.Encoding.utf8) else {
      print("Error saving text to Keychain")
      return
    }

    let queryAdd: [String: AnyObject] = [
      kSecClass as String: kSecClassGenericPassword,
      kSecAttrAccount as String: itemKey as AnyObject,
      kSecValueData as String: valueData as AnyObject,
      kSecAttrAccessible as String: kSecAttrAccessibleWhenUnlocked,
      kSecAttrAccessGroup as String: keychainAccessGroupName as AnyObject
    ]

    let resultCode = SecItemAdd(queryAdd as CFDictionary, nil)

    if resultCode != noErr {
      print("Error saving to Keychain: \(resultCode)")
    }
  }
}

Reader app
import UIKit

class ViewController: UIViewController {

  override func viewDidLoad() {
    super.viewDidLoad()

    let itemKey = "My key"
    let keychainAccessGroupName = "ENTER_YOUR_TEAM_ID_HERE.myKeychainGroup1234564321"

    // Read the keychain
    let queryLoad: [String: AnyObject] = [
      kSecClass as String: kSecClassGenericPassword,
      kSecAttrAccount as String: itemKey as AnyObject,
      kSecReturnData as String: kCFBooleanTrue,
      kSecMatchLimit as String: kSecMatchLimitOne,
      kSecAttrAccessGroup as String: keychainAccessGroupName as AnyObject
    ]

    var result: AnyObject?

    let resultCodeLoad = withUnsafeMutablePointer(to: &result) {
      SecItemCopyMatching(queryLoad as CFDictionary, UnsafeMutablePointer($0))
    }

    if resultCodeLoad == noErr {
      if let result = result as? Data,
        let keyValue = NSString(data: result,
                                encoding: String.Encoding.utf8.rawValue) as? String {

        // Found successfully
        print(keyValue)
      }
    } else {
      print("Error loading from Keychain: \(resultCodeLoad)")
    }
  }
}

Replace the team ID and the group

Replace ENTER_YOUR_TEAM_ID_HERE with your actual team ID from the Apple Developer web site.

Replace myKeychainGroup1234564321 with your keychain group that you set in the Keychain Sharing settings, as described in this blog post.

The key

I just tested this code again and it worked in Xcode 10.2.1. Let me know how it goes.

@evgenyneu Thank you for the quick reply.
I went through your very good answer and got some good and some bad results.
The good news is that the script is working perfectly fine on the simulator.
On the real device it is an other story.
After calling SecItemAdd,
resultCode is 25243.
Meaning it prints: "Error saving to Keychain: -25243"
I hope it comes down to some hardware differences on my device.
It is an iPad (3rd generation) Model: A1416 (iOS 9.3.5).
So quit a bit outdated (no software updates officially available anymore)
Maybe someone has the knowledge,
why keychain would't work on my device.
Thanks for everyone helping.

I'm sorry you are having this issue on a device. Does it show the same error if you delete the lines with kSecAttrAccessGroup from queryDelete' , queryAdd and 'queryLoad'?

@evgenyneu
Without kSecAttrAccessGroup in the queries it is working fine on the device.

Thanks for having a look. The keychain sharing should definitely work on iOS 9 on a device. It could be a bug. I would submit a bug report to Apple.


⚠ ESPN has degraded performance

In 78e0116, ESPN (https://espn.com) experienced degraded performance:

HTTP code: 200
Response time: 887 ms

Resolved: ESPN performance has improved in 4312e73.


Added functionality to compute coverage stats from sparse MT (needed …

…e.g. for browser)

Back to you @ch-kr


Any number about the performance (i.e. EER) that WeSpeaker can achieve?

Hi,
WeSpeaker implements many useful training and test tools in speaker verfication. It's awesome! However, in the repo, it seems that there is no information about how is the performance (EER, minDCF, etc.) on VoxCeleb and VoxConverse.
It would be very helpful if this information can be provided. The developers can use this information to check whether they use WeSpeaker in the correct way. The researchers can use this number to compare with the SOTA system.
Please inform me if I miss something. 😄

Hi, this information can be found in the example/xxx/README.md. :blush:

Oh, just miss that... Sorry for the convenience...
One more question: is the result reported here stable if you train the model multiple times?

Oh, just miss that... Sorry for the convenience...
One more question: is the result reported here stable if you train the model multiple times?

Yes, I think it is stable. We don't deliberately tune the hyper-params many times for better results.
Besides, the training configs of Voxceleb and Cnceleb recipes are almost the same (see conf/xxx.yaml for details), which also proves the generalization ability of our systems in different datasets using different models.

Oh, just miss that... Sorry for the convenience...
One more question: is the result reported here stable if you train the model multiple times?

Thank you for your recommendation. We will add Voxceleb results in the main README.md.

Thank you for the reply!


Interface test for ingress v1 failed.

Tests for interface ingress v1 failed.
Provider

traefik-k8s: False

See the workflow https://github.com/canonical/charm-relation-interfaces/actions/runs/11713777734 for more detail.
@mmkay, @Abuelodelanada, @simskij, @dstathis, @PietroPasotti, @michaeldmitry, @lucabello, @ca-scribner, @IbraAoad, @sed-i, @MichaelThamm

Tests for interface ingress v1 failed.
Provider

traefik-k8s: False

See the workflow https://github.com/canonical/charm-relation-interfaces/actions/runs/11769735758 for more detail.
@mmkay, @Abuelodelanada, @simskij, @dstathis, @PietroPasotti, @michaeldmitry, @lucabello, @ca-scribner, @IbraAoad, @sed-i, @MichaelThamm


[BUG] pip install not working while installing packages defined in setup.py

setuptools version
setuptools==58.1.0
Python version
3.9.19
OS
Linux(Ubuntu 22.04)
Additional environment information
facing this issue while running my devops pipeline in Azure , it is using a Linux agent pool with Ubuntu 22.04 image.
Description
This issue is happening since today morning and our CI pipelines are failing because of this .  We are trying to install python packages which are defined in our setup.py file using the below command -
python -m pip install wheel setuptools --index-url <some Url>
python -m pip install '.[testing_req]' --index-url <some Url>

"testing_req" is defined under extras_require argument  of setup() . Here is how the setup.py file looks like -
 setup(
  name="some package",
    ...,
    install_requires=[
       list of python package to be installed
    ],
  extras_require={
        "testing_req": [list of python package to be installed for testing],
    }
)

I have observed that if I use the above pip install command it is only installing the packages which are present under "install_requires" but it is ignoring all the packages which are mentioned under "extras_require" .  It should also install the additional packages apart from the required packages. Currently as a workaround I had to provide the path to the requirements.txt file to install the packages.
Please find the versions used below

Python version 3.9.19
pip version 21.3.1
wheel version 0.44.0/ 0.43.0 (tested with both same issue)
setuptools version 58.1.0

Expected behavior
While using the below command -
python -m pip install '.[testing_req]' --index-url <some Url>
It should also install the additional packages apart from the required packages. But  it is only installing the packages which are present under "install_requires" but it is ignoring all the packages which are mentioned under "extras_require"
How to Reproduce

Create setup.py file using the above structure mentioned.
Run the below commands to install wheel,setuptools and the python packages -

python -m pip install wheel setuptools --index-url <some Url>
python -m pip install '.[testing_req]' --index-url <some Url>

Output
Observe that additional packages mentioned under "extras_require"  are not installed . Only the packages under "install_requires" are getting installed.

Hi @Niladri24dutta, please note that v58.1.0 is quite old and therefore does not receive active support. Could you please try the newest version?
I also recommend using pip install --use-pep517 to force pip packages to handle old packages using the upcoming non-deprecated default mechanism.

@abravalheri there are some constraints in upgrading the version of pip to 24 and setuptools to latest version as it is not managed by me. As this was working till last friday, I am curious to know has anything changed recently which is causing this issue.

Hi @Niladri24dutta, you can start by checking which versions of which packages installed in your environment have changed since Friday. Maybe that helps.
Since you have constraints that you can not update and the version of setuptools that you are using is no longer officially supported, I will go ahead and close this issue.

@abravalheri I am able to reproduce this issue locally with latest version of setuptools as well, and I also checked that no other package versions were upgraded after friday except the wheel . But I have tried with both latest and previous version of wheel it is the same issue.
I used the below version
pip : 23.0.1
setuptools: 72.1.0

I am able to reproduce this issue locally with latest version of setuptools as well, and I also checked that no other package versions were upgraded after friday except the wheel . But I have tried with both latest and previous version of wheel it is the same issue.

Thank you very much for confirming @Niladri24dutta.
Could you please provide a complete minimal reproducer including a "mock" version of the package that you are trying to install as a source code? Please also make sure to use either a brand new virtual environment and/or docker container to avoid external factors influencing in the reproducer.
Can you also describe what happens when you add the --use-pep517 flag together with pip install?

no other package versions were upgraded after friday except the wheel

wheel is pretty important, I would not discard a possibility it is involved in the project, it might be worthy to investigate more.

@abravalheri No change even after using  --use-pep517 flag together with pip install.
I just noticed that there was a new version released for "wheel" yesterday which the below changes -
Canonicalized requirements in METADATA file
Deprecated the bdist_wheel module, as the code was migrated to setuptools itself
Here is the release https://github.com/pypa/wheel/releases/tag/0.44.0 . Could there be any conflict due to this?

When you say you tested against the latest version of setuptools do you mean you wrote setuptools>="72.2.0" in the [build-system] requires session of pyproject.toml? I think that is the only way to guarantee that pip is actually using the latest version of setuptools and not something different...

Here is the release https://github.com/pypa/wheel/releases/tag/0.44.0 . Could there be any conflict due to this?

There is a report of lack of compatibility https://github.com/pypa/wheel/pull/631#issuecomment-2269269265.
To investigate this more I believe it would be important to have a complete minimal reproducible example.

@abravalheri I have figured out a work around for this . I am not sure if this is expected way of installing the extra packages or not in the new version. This could also be due to the latest version of wheel (0.44.0).
Here is what worked for me -
Instead of using this command
python -m pip install '.[testing_req]' --index-url <some Url>
It works if I use this command
python -m pip install '<my package name in setup.py>[testing_req]' --index-url <some Url>
So it works if I use the package name instead of only . .  Can we keep this issue open to see if others are also facing the same issue? may be this work around will be useful until we know the root cause.

Thanks for the feedback @Niladri24dutta.

Can we keep this issue open to see if others are also facing the same issue? may be this work around will be useful until we know the root cause.

We can, if we have a complete reproducer for the problem that help us to identify the root cause of the problem and it is related to setuptools. Without a reproducer or indication of a clear connection between setuptools and the problem I think this issue should be closed. Users will still be able find it by searching even if the issue is closed.
For now I will close the issue, if anyone has a complete reproducer, please feel free to post here and I will re-open the issue.


charm fails to pack if rpds-py>=0.19 because apt does not provide rustc>=1.76 on ubuntu 24.04

Bug Description
We inherit a dependency on jsonschema from the traefik libs.  jsonschema has a dependency on rpds-py, which requires rust 1.76 to build.  apt currently only has rust 1.75 for ubuntu 24.04, leading to this error during charmcraft pack:
2024-07-31 11:25:16.019 :: 2024-07-31 11:25:15.623 ::    ::   error: subprocess-exited-with-error
2024-07-31 11:25:16.019 :: 2024-07-31 11:25:15.624 ::    ::
2024-07-31 11:25:16.019 :: 2024-07-31 11:25:15.624 ::    ::   × Building wheel for rpds-py (pyproject.toml) did not run successfully.
2024-07-31 11:25:16.019 :: 2024-07-31 11:25:15.624 ::    ::   │ exit code: 1
2024-07-31 11:25:16.019 :: 2024-07-31 11:25:15.624 ::    ::   ╰─> [13 lines of output]
2024-07-31 11:25:16.019 :: 2024-07-31 11:25:15.624 ::    ::       Running `maturin pep517 build-wheel -i /root/parts/charm/build/staging-venv/bin/python3 --compatibility off`
2024-07-31 11:25:16.019 :: 2024-07-31 11:25:15.624 ::    ::       📦 Including license file "/tmp/pip-install-15qfk8rf/rpds-py_31ac9b7efe164090a930b02aa8b56272/LICENSE"
2024-07-31 11:25:16.019 :: 2024-07-31 11:25:15.624 ::    ::       🔗 Found pyo3 bindings
2024-07-31 11:25:16.019 :: 2024-07-31 11:25:15.624 ::    ::       🐍 Found CPython 3.10 at /root/parts/charm/build/staging-venv/bin/python3
2024-07-31 11:25:16.019 :: 2024-07-31 11:25:15.624 ::    ::       📡 Using build options features from pyproject.toml
2024-07-31 11:25:16.019 :: 2024-07-31 11:25:15.624 ::    ::       error: package `triomphe v0.1.13` cannot be built because it requires rustc 1.76 or newer, while the currently active rustc version is 1.75.0
2024-07-31 11:25:16.019 :: 2024-07-31 11:25:15.624 ::    ::       Either upgrade to rustc 1.76 or newer, or use
2024-07-31 11:25:16.019 :: 2024-07-31 11:25:15.625 ::    ::       cargo update<EMAIL_ADDRESS>--precise ver
2024-07-31 11:25:16.019 :: 2024-07-31 11:25:15.625 ::    ::       where `ver` is the latest version of `triomphe` supporting rustc 1.75.0
2024-07-31 11:25:16.019 :: 2024-07-31 11:25:15.625 ::    ::       💥 maturin failed
2024-07-31 11:25:16.019 :: 2024-07-31 11:25:15.625 ::    ::         Caused by: Failed to build a native library through cargo
2024-07-31 11:25:16.019 :: 2024-07-31 11:25:15.625 ::    ::         Caused by: Cargo build finished with "exit status: 101": `env -u CARGO PYO3_ENVIRONMENT_SIGNATURE="cpython-3.10-64bit" PYO3_PYTHON="/root/parts/charm/build/staging-venv/bin/python3" PYTHON_SYS_EXECUTABLE="/root/parts/charm/build/staging-venv/bin/python3" "cargo" "rustc" "--features" "pyo3/extension-module" "--message-format" "json-render-diagnostics" "--manifest-path" "/tmp/pip-install-15qfk8rf/rpds-py_31ac9b7efe164090a930b02aa8b56272/Cargo.toml" "--release" "--lib"`

To work around this, we can add parts: charm: charm-binary-python-packages: ["rpds-py"] in our charmcraft.yaml file so we pull a built binary from pypi.  Once we have rustc>=1.76, we can remove rpds-py from that list and built it ourselves.
To Reproduce
charmcraft pack

There's a snap for rustup, but a binary python package is probably good enough for now.


Fix wrong endpoint for tei embedding gaudi wrapper

Description
access to embedding wrapper should use /v1/embeddings with {"input", "xxx"}
access to / should use {"inputs": "xxx"} but return are not openai compatible
>>> TEI_EMBEDDING_ENDPOINT
'http://localhost:8090/v1/embeddings'
>>> client = AsyncInferenceClient(model=TEI_EMBEDDING_ENDPOINT, token=HUGGINGFACEHUB_API_TOKEN)
>>> rr=asyncio.run(client.post(json={"input": "Explain the OPEA project"}))
>>> rr
b'{"object":"list","data":[{"object":"embedding","embedding":[-0.0006848863,-0.015310476,-0.037823148,0.011144044,0.042748522,0.0222726,-0.0041277106,0.052072655,-0.011957196,-0.010230217,0.006164461,-0.004530414,-0.07267249,0.036800902,-0.00455364

Issues
https://github.com/opea-project/GenAIExamples/issues/1263
Type of change
List the type of change like below. Please delete options that are not relevant.

[x] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds new functionality)
[ ] Breaking change (fix or feature that would break existing design and interface)
[ ] Others (enhancement, documentation, validation, etc.)

Dependencies
None
Tests
UT

@chensuyue this pr should fix the two failures in https://github.com/opea-project/GenAIExamples/issues/1263.


Standardise files with files in sous-chefs/repo-management

Signed-off-by: Dan Webb<EMAIL_ADDRESS>

Released as: 6.3.3


Something strange with the Todoist Sync plugin

Every task is on a new/separate line, or I don't know how to actually explain it. Strange things are happening.

This is normal behavior, or what I expect:

Is this related to any snippets? I am not able to reproduce


[Deloitte] - Serverless Test Automation: Synchronous Approach

Issue #, if available: NA
Description of changes:  Prioritizing reliability, our Spring Boot application leverages DynamoDB & SQS for CRUD operations built on Fargate, backed by robust serverless integration testing and thorough load testing for a rock-solid experience.
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

@dancfox @brnkrygs - FYI

Thank you for this submission. I will escalate here to move this review along.


Tool Mode: netexec

#45
The tool mode netexec can execute the command with same the network namespace with a specific process or pod. By default, you will get an interactive shell, but user can specify the command.
basic usage
# Run a shell with the same network namespace with a pod
kdebug -t netexec --pod=<pod-name>

# Run a shell with the same network namespace with a process
kdebug -t netexec --pid=<process-pid>

BTW, could you help update the README?


🐛 [FIREBASE_MESSAGING] onBackgroundMessage is not working in iOS.

[FIREBASE_MESSAGING] onBackgroundMessage is not working in iOS when app is terminated and another app is opened.
Hi. I used Flutter 2.2.1 and firebase_messaging: ^10.0.1. I can receive notifications with Android and onBackgroundMessage is working perfectly.
For iOS., I can receive notifications but onBackgroundMessage is not working if the app is closed & removed from the App switcher and Another is opened.
Steps to reproduce
flutter run on device
Quit / close the app & Open any other app(games, videos)
Send FCM to the app
Background notification appears but on onBackgroundMessage didnt work.
Expected behavior
Even if the app is terminated and another app is opened, onBackgroundMessage should work after notification is received.
{
"to" : "firebase_id",
"mutable_content" : true,
"content_available": true,
"priority": "high",
"notification": {
"title": "Good Morning hannah",
"body": "Morning walks are good for health",
"sound": "default",
"type": 1,
"click_action": "FLUTTER_NOTIFICATION_CLICK",
"icon": "notification_icon",
"priority": "high",
"ttl": 10000,
"android_channel_id": "notification_01"
},
"data" : {
"content": {
"id": 101,
"channelKey": "good_morning_message_channel",
"title": "Good Morning hannah",
"body": "Morning walks are good for health"
}
}
}

Hi @MaheshKumarM-SCE
Background messages will stop working on iOS once the app is terminated. This is a native limitation and is also documented at
https://firebase.flutter.dev/docs/messaging/usage#receiving-messages

On iOS, if the user swipes away the application from app Switcher, it must be manually reopened again for background messages to start working again.

Thank you

Hi @markusaksli-nc,  Please check the description. onBackgroundMessage is working for me in iOS even if the app is terminated.
I also added details when it fails to work for me - when the app is terminated and another app is opened, onBackgroundMessage is not working.

Hi @markusaksli-nc, Please check the description. onBackgroundMessage is working for me in iOS even if the app is terminated.
I also added details when it fails to work for me - when the app is terminated and another app is opened, onBackgroundMessage is not working.

@karthikveluchamy-12121991 Did you find any solution for this?

No, still trying to figure out the solution or workaround

I have also posted bug on same topic. These should not closed its a genuine bug in firebase_messaging