DispatchError::Other is swallowed

Dispatch::Other(#[codec(skip)] &'static str) is not logged anywhere and not sent to the client.
It would also be good to impl std::error::Error for DispatchError {}.
cc @4meta5

It is logged to log.
Run with -lruntime=debug.

Sorry I can't see it.
test frame::balances::tests::test_transfer ... FAILED

failures:

---- frame::balances::tests::test_transfer stdout ----
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Events(Dispatch(WrapDispatchError(DispatchError::Other(""))))', src/lib.rs:1:1
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

target/release/substrate --dev -lruntime=debug
2020-05-04 21:24:19.829 main WARN sc_cli::commands::runcmd  Running in --dev mode, RPC CORS has been disabled.
2020-05-04 21:24:19.829 main INFO sc_cli::runner  Substrate Node
2020-05-04 21:24:19.829 main INFO sc_cli::runner  ✌  version 2.0.0-dev-9441e4404-x86_64-linux-gnu
2020-05-04 21:24:19.830 main INFO sc_cli::runner  ❤  by Parity Technologies<EMAIL_ADDRESS>2017-2020
2020-05-04 21:24:19.830 main INFO sc_cli::runner  📋 Chain specification: Development
2020-05-04 21:24:19.830 main INFO sc_cli::runner  🏷  Node name: abaft-learning-8972
2020-05-04 21:24:19.830 main INFO sc_cli::runner  👤 Role: AUTHORITY
2020-05-04 21:24:19.830 main INFO sc_cli::runner  ⛓  Native runtime: node-244 (substrate-node-2.tx1.au10)
2020-05-04 21:24:21.369 main INFO staking  💸 new validator set of size 1 has been elected via ElectionCompute::OnChain for era 0
2020-05-04 21:24:21.418 main INFO sc_service::client::client  🔨 Initializing Genesis block/state (state: 0xfa37…ac58, header-hash: 0x8eb4…e54a)
2020-05-04 21:24:21.454 main INFO afg  👴 Loading GRANDPA authority set from genesis on what appears to be first startup.
2020-05-04 21:24:22.522 main INFO sc_consensus_slots  ⏱  Loaded block-time = BabeGenesisConfiguration { slot_duration: 3000, epoch_length: 200, c: (1, 4), genesis_authorities: [(Public(d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...)), 1)], randomness: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], allowed_slots: AllowedSlots::PrimaryAndSecondaryPlainSlots } milliseconds from genesis on first-launch
2020-05-04 21:24:22.522 main INFO babe  👶 Creating empty BABE epoch changes on what appears to be first startup.
2020-05-04 21:24:22.703 main INFO sc_service::builder  📦 Highest known block at #0
2020-05-04 21:24:22.703 main WARN sc_service::builder  Using default protocol ID "sup" because none is configured in the chain specs
2020-05-04 21:24:22.703 main INFO sub-libp2p  🏷  Local node identity is: QmYd2LTzXNU1eoosN3iuRGMDhur8Jm38c1bJ7oV8ttoWSE
2020-05-04 21:24:22.726 tokio-runtime-worker INFO substrate_prometheus_endpoint::known_os  〽 Prometheus server started at <IP_ADDRESS>:9615
2020-05-04 21:24:22.730 main INFO babe  👶 Starting BABE Authorship worker
2020-05-04 21:24:24.75 tokio-runtime-worker INFO sc_basic_authorship::basic_authorship  🙌 Starting consensus session on top of parent 0x8eb4e8b0415c0e312bb0f83b72d5475aa7aa6515121530b5ccd408c89540e54a
2020-05-04 21:24:24.385 tokio-blocking-driver INFO sc_basic_authorship::basic_authorship  🎁 Prepared block for proposing at 1 [hash: 0xa6e0b55b167a025c501f62135fc5bd44181a4885de1286ec2fa77b2486386bfe; parent_hash: 0x8eb4…e54a; extrinsics (1): [0x5a53…182d]]
2020-05-04 21:24:24.386 tokio-runtime-worker INFO sc_consensus_slots  🔖 Pre-sealed block for proposal at 1. Hash now 0x3e379f9f16f77920216fe747c9da529357eff1964caca52da916b0e2ac08e608, previously 0xa6e0b55b167a025c501f62135fc5bd44181a4885de1286ec2fa77b2486386bfe.
2020-05-04 21:24:24.386 tokio-runtime-worker INFO babe  👶 New epoch 0 launching at block 0x3e37…e608 (block slot 529540088 >= start slot 529540088).
2020-05-04 21:24:24.387 tokio-runtime-worker INFO babe  👶 Next epoch starts at slot 529540288
2020-05-04 21:24:24.388 tokio-runtime-worker INFO substrate  ✨ Imported #1 (0x3e37…e608)
2020-05-04 21:24:27.66 tokio-runtime-worker INFO sc_basic_authorship::basic_authorship  🙌 Starting consensus session on top of parent 0x3e379f9f16f77920216fe747c9da529357eff1964caca52da916b0e2ac08e608
2020-05-04 21:24:27.72 tokio-blocking-driver INFO sc_basic_authorship::basic_authorship  🎁 Prepared block for proposing at 2 [hash: 0x5a868081b90972531a7225aabdf70cb81814bb7f49b0c9bd065ae3b1a38a429f; parent_hash: 0x3e37…e608; extrinsics (1): [0xa126…39af]]
2020-05-04 21:24:27.73 tokio-runtime-worker INFO sc_consensus_slots  🔖 Pre-sealed block for proposal at 2. Hash now 0xe104992cac1d89860cff9b4742fffef87838c29c6c80b313cd17394b85771e8e, previously 0x5a868081b90972531a7225aabdf70cb81814bb7f49b0c9bd065ae3b1a38a429f.
2020-05-04 21:24:27.74 tokio-runtime-worker INFO substrate  ✨ Imported #2 (0xe104…1e8e)
2020-05-04 21:24:27.791 tokio-runtime-worker INFO substrate  💤 Idle (0 peers), best: #2 (0xe104…1e8e), finalized #0 (0x8eb4…e54a), ⬇ 0 ⬆ 0
2020-05-04 21:24:30.22 tokio-runtime-worker INFO sc_basic_authorship::basic_authorship  🙌 Starting consensus session on top of parent 0xe104992cac1d89860cff9b4742fffef87838c29c6c80b313cd17394b85771e8e
2020-05-04 21:24:30.26 tokio-blocking-driver INFO sc_basic_authorship::basic_authorship  🎁 Prepared block for proposing at 3 [hash: 0x0c4d246929d410e70f22a61a07adf2681c26e2e839bf9143a0d010c9705ad420; parent_hash: 0xe104…1e8e; extrinsics (1): [0x5a8f…a26b]]
2020-05-04 21:24:30.27 tokio-runtime-worker INFO sc_consensus_slots  🔖 Pre-sealed block for proposal at 3. Hash now 0x090f38b70f5e1ee64bf6592cc8b7372500c14753fe949e4890497187b1afda8b, previously 0x0c4d246929d410e70f22a61a07adf2681c26e2e839bf9143a0d010c9705ad420.
2020-05-04 21:24:30.28 tokio-runtime-worker INFO substrate  ✨ Imported #3 (0x090f…da8b)
2020-05-04 21:24:32.792 tokio-runtime-worker INFO substrate  💤 Idle (0 peers), best: #3 (0x090f…da8b), finalized #1 (0x3e37…e608), ⬇ 0 ⬆ 0
2020-05-04 21:24:33.66 tokio-runtime-worker INFO sc_basic_authorship::basic_authorship  🙌 Starting consensus session on top of parent 0x090f38b70f5e1ee64bf6592cc8b7372500c14753fe949e4890497187b1afda8b
2020-05-04 21:24:33.72 tokio-blocking-driver INFO sc_basic_authorship::basic_authorship  🎁 Prepared block for proposing at 4 [hash: 0xdfc1b3de16192c72596aad6e768497d45b93e926d257227e523233a582f5eaf1; parent_hash: 0x090f…da8b; extrinsics (2): [0xd3f3…4915, 0x74b5…6401]]
2020-05-04 21:24:33.73 tokio-runtime-worker INFO sc_consensus_slots  🔖 Pre-sealed block for proposal at 4. Hash now 0xab10faab4dc2f0679256c6456a3aa16417fa43f823e2c868ac8269bcfd8afd22, previously 0xdfc1b3de16192c72596aad6e768497d45b93e926d257227e523233a582f5eaf1.
2020-05-04 21:24:33.74 tokio-runtime-worker INFO substrate  ✨ Imported #4 (0xab10…fd22)
2020-05-04 21:24:36.22 tokio-runtime-worker INFO sc_basic_authorship::basic_authorship  🙌 Starting consensus session on top of parent 0xab10faab4dc2f0679256c6456a3aa16417fa43f823e2c868ac8269bcfd8afd22
2020-05-04 21:24:36.28 tokio-blocking-driver INFO sc_basic_authorship::basic_authorship  🎁 Prepared block for proposing at 5 [hash: 0x3f32f86e6ff56618e98ffb6e4cab58f281791c8e1f7a0c76f6a234e9b9afa133; parent_hash: 0xab10…fd22; extrinsics (3): [0xd787…7e95, 0x0584…6a9f, 0x4e3e…8dda]]
2020-05-04 21:24:36.29 tokio-runtime-worker INFO sc_consensus_slots  🔖 Pre-sealed block for proposal at 5. Hash now 0xe4fd1f8524d3b705366435ba6eb4d266a4d4ece8a6d863d63f9ee3115da14105, previously 0x3f32f86e6ff56618e98ffb6e4cab58f281791c8e1f7a0c76f6a234e9b9afa133.
2020-05-04 21:24:36.30 tokio-runtime-worker INFO substrate  ✨ Imported #5 (0xe4fd…4105)
2020-05-04 21:24:37.792 tokio-runtime-worker INFO substrate  💤 Idle (0 peers), best: #5 (0xe4fd…4105), finalized #3 (0x090f…da8b), ⬇ 0 ⬆ 0
2020-05-04 21:24:39.74 tokio-runtime-worker INFO sc_basic_authorship::basic_authorship  🙌 Starting consensus session on top of parent 0xe4fd1f8524d3b705366435ba6eb4d266a4d4ece8a6d863d63f9ee3115da14105
2020-05-04 21:24:39.81 tokio-blocking-driver INFO sc_basic_authorship::basic_authorship  🎁 Prepared block for proposing at 6 [hash: 0x8d750f28e2a62866aec2163fb37344b948647840fd6f90f48b08142a70fd2f53; parent_hash: 0xe4fd…4105; extrinsics (2): [0x1caf…dfd9, 0xffb8…6c71]]
2020-05-04 21:24:39.82 tokio-runtime-worker INFO sc_consensus_slots  🔖 Pre-sealed block for proposal at 6. Hash now 0xa98ab4128e167652d5f2a6ec3108fbfd9909b22c8863b19c17561e7705efa77b, previously 0x8d750f28e2a62866aec2163fb37344b948647840fd6f90f48b08142a70fd2f53.
2020-05-04 21:24:39.84 tokio-runtime-worker INFO substrate  ✨ Imported #6 (0xa98a…a77b)

Not sure what your output should show me?
How is your test related to the node running?

The test connects to the node, the node returns a DispatchError. Maybe I'm parsing it wrong.

So this test sends a Balance::transfer transaction and that fails? And you want to parse the events to get the error?

Yes, exactly. If it really is a DispatchError::Other and I'm not mistakenly parsing some other bytes, I can't find the error in the logs.

Did you tried to inspect the events with polkadot-js?


License?

Hello, what is the license of this project?

Oops, meant to be MIT, but had forgotten to add it. Now added :D
Are there any dev boards with RISCV processors available today with rvv - at that time we could not find one?

Thanks!
I have very little experience with RISCV. I was interested from the perspective of https://github.com/simd-everywhere/simde

Came accross a few dev boards when I checked last year- for instance https://www.aliexpress.com/item/1005002856721588.html?gatewayAdapt=glo2deu. But I did not end up buying one, as I was not sure how reliable those are also I had concerns about the state of the toolchains.

Yeah, according to https://doi.org/10.48550/arXiv.2210.08882 the XuanTie 910 core is RVV version 0.7.1; so I would guess that the XuanTie C906 is also not RVV 1.0;

https://www.analoglamb.com/product/kendryte-k230-risc-v-development-board-canmv-k230/ claims RVV 1.0 for the 1st CPU

CPU: core1 - 64bit, RISC-V processor, 1.6GHz, supports RISC-V Vector Extension 1.0 specification with FPU, VPU; core0 - 64bit, RISC-V processor, 800MHz, supports RISC-V 64GCB instruction set;

Discussion at https://www.reddit.com/r/RISCV/comments/17b10y6/kendryte_k230_riscv_development_board_canmvk230/

Seems like it is pre-order, not sure if it is already built or not.
There are a few boards with rvv 0.7 on aliexpress when I checked some time ago, but given rvv1.0 is coming, might be better to wait.

Seems like it is pre-order, not sure if it is already built or not.

I ordered one and according to the tracker, it should leave Beijing soon 🙏

ahh let me know if it comes, I can order one too if it is legit :D


Changes For Issue 536

This PR add updates for Issue 536. Changes are as follows:

All operations have been integrated into one class
All operations handle both dask and pandas dataframe properly.
All the unit tests have been updated to include tests for dask datafame too
All tests are updated to use new operations class
Changes have been made to main code to use services of new operations class

To test run unit tests

Implemented by: https://github.com/cdisc-org/cdisc-rules-engine/pull/615


Questions about complete sequence in the paper

Thanks a lot for sharing the great paper and the code.
While I read  "The above operations generate attention weights using the input time-
series windows and the complete sequence to capture temporal
trends within the input sequences"  in the paper, does it mean to use entire time series up to current timestamp?
Also, I didn't manage to find the implementation in the code, could you elaborate complete sequence, and thanks in advance for help.

Yes. Complete series in the abtract model in the paper means the series from timestamp 0 onwards. This can be truncated for data efficiency if not affecting performance. In the code, we use the complete window as the series.


Updated MSFT_SPSearchFIleType.schema.mof to make ServiceAppName a Key

#542
Updated the MOF schema of this resource to make serviceappName a key, instead of just required. Should resolve the issue that I had earlier.

[x] Change details added to Unreleased section of changelog.md?
[x] Added/updated documentation and descriptions in .schema.mof files where appropriate?
[x] Examples updated for both the single server and small farm templates in the examples folder?
[x] New/changed code adheres to Style Guidelines?
[x] Unit and Integration tests created/updated where possible?

This change is

@mrpullen,
Thanks for having already signed the Contribution License Agreement. Your agreement was validated by Microsoft. We will now review your pull request.
Thanks,
Microsoft Pull Request Bot

I think that should be all there is to it.

Codecov Report

Merging #543 into dev will not change coverage.
The diff coverage is n/a.

@@         Coverage Diff         @@
##            dev   #543   +/-   ##
===================================
  Coverage    88%    88%
===================================
  Files        82     82
  Lines      7763   7763
  Branches      3      3
===================================
  Hits       6882   6882
  Misses      878    878
  Partials      3      3

Continue to review full report at Codecov.

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

Reviewed 2 of 2 files at r1.
Review status: all files reviewed at latest revision, 1 unresolved discussion, some commit checks failed.

CHANGELOG.md, line 5 at r1 (raw file):

## Unreleased

* Bugfix 542 in SPSearchFileType for ServiceAppName schema changing setting to Key.

Don't quote the bug numbers in the change log - when it ships to the powershell gallery and the release notes in the product there is no context. Just explain "Fixed a bug with a key property of SPSearchFileType"

Comments from Reviewable

Reviewed 1 of 1 files at r2.
Review status: all files reviewed at latest revision, all discussions resolved.

Comments from Reviewable


Test send message to l1 syscall

Codecov Report

Merging #554 (1beedbc) into main (142b120) will increase coverage by 0.39%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##             main     #554      +/-   ##
==========================================
+ Coverage   90.18%   90.58%   +0.39%
==========================================
  Files          53       53
  Lines        9925     9926       +1
==========================================
+ Hits         8951     8991      +40
+ Misses        974      935      -39

Impacted Files
Coverage Δ

src/core/syscalls/syscall_info.rs
90.32% <100.00%> (+0.32%)
:arrow_up:

... and 2 files with indirect coverage changes


Make dynamoDBClient val public

Can you please make the dynamoDBClient val in ConcurrentBatchWriter.scala public, like in SingleThreadedBatchWriter.scala
I'd like to be able to configure the DynamoDB client specifically for my use case.
Thanks!

@domenkosir
I have forked this repo and published it under version 0.9.2
https://github.com/mingchuno/aws-wrap
This repo seems dead. I will impl the change and publish again. Stay tuned.

@domenkosir I have make chages in master of my repo: https://github.com/mingchuno/aws-wrap/commit/052ff810261df92437fcf8a8115285252e5031fc
Instead of making both client in ConcurrentBatchWriter & SingleThreadedBatchWriter, I change the constructor to incorporate client supplied ClientConfiguration so that client can have their config without leaking out internal client.

@domenkosir done publish to jcenter with version 0.9.3


Firebase Checkpoint Saver

As recommended by @benjamincburns , the goal is to implement a Firebase Checkpoint Saver as a child of the abstract BaseCheckpointSaver class.
Currently, there are 3 such implementations in the langgraph code base for SQLite, PostGres, and MongoDB. Adding another checkpoint saver type for Firebase would add to the redundancy needed for an essential task within agent workflow, in case the other databases become offline. Also, this implementation would make it easier for developers who are more familiar with Firebase to ascertain the inner workings of CheckpointSaver in case they come across bugs within their own code or langgraph source code.
The reason for implementing this checkpoint saver in Firebase in particular is that Firebase is a popular database choice for developers, on par with SQLite and Mongo.
Should this issue be accepted, me and a team of developers at the University of Toronto plan to do the following:
-Implement FirebaseDBSaver as a class within ./libs, following the example set by SqliteSaver and MongoDBSaver
-Implement and use a rigorous test structure following the example of the same classes as above to ensure that the code passes all expected use cases.
If there are any questions about our implementation, let me know. I'm happy for the opportunity to be working on such an interesting and expansive team.

I'd recommend using the GCloud test container for testing this. Note that you'll need to skip tests on arm64 mac builds in CI, however, as GH Actions don't yet support docker on arm64 mac. Here's an example of how I've done this in the checkpoint-validation test suite.
I'd also recommend using the checkpoint-validation package to validate the functionality of your new checkpointer. You can follow the test setup pattern shown here for the existing validators, and use that to validate consistency with the other checkpointers. You'll still want to add tests to your new package however if there are code paths that are specific to your particular implementation that you need to exercise (e.g. things like setting up the firebase store), as these things won't be covered by the checkpoint-validation test suite.

Should this issue be accepted...

I think I said as much elsewhere, but if you check any other issue/PR in this repository, the LangGraph team don't appear to accept/reject things ahead of time like you seem to be assuming in this comment. It's much less formal than that. If you're waiting for them to respond before you begin work on this, you may find yourself waiting for a while. My recommendation would be to just get to work on it, and if for some reason the team doesn't wish to accept the PR into this repo, you can always make a new repo that houses just your checkpointer implementation, and publish it to NPM yourselves under your own package name. It won't live under the @langchain/* namespace, but you'll still be able to publish it for others to consume.
Hope this helps!

Thank you for the suggestions! @benjamincburns
We are currently working on the test suite for our implementation, but we're having some problems and some confusion on the current structure of the test suite.
I've gone through the documentation for langgraph, and haven't seen any developer notes for how to test a Memory Saver implementation. All of what we've seen have been examples from other test implementations.
For example, here is the MongoSaver initializer, which is the main problem we're having.

We are trying to implement a container for Firebase, but we are confused on how to reference that from our testing code.

Within the MongoDB tester, a connection is opened to the initialized container using an environment variable, but within the initializer, a container is opened via a port on line 25, however the port is unknown, so how does the tester code know the exact URL to open for the container?
If this doesn't perform what we believe it does, that being the initializer starting all the container/environments needed to test, and the testing code running those tests given that environment, then what is the point of that initializer?
Apologies if these questions are trivial or are answered in the documentation. I am not experienced with testing via containers. Point me towards any documentation that answers any of the questions I have if they exist
Thank you for your time,
Casper

Apologies if these questions are trivial or are answered in the documentation. I am not experienced with testing via containers.

No worries, and no need to apologize! The TestContainer project makes testing with container-based infrastructure relatively easy. I'll explain more below.

If this doesn't perform what we believe it does, that being the initializer starting all the container/environments needed to test, and the testing code running those tests given that environment, then what is the point of that initializer?

Yes, that's the intended purpose of CheckpointTestInitializer.
If you haven't seen it yet, I'd recommend starting off by looking to the README to learn about the design intent and usage of @langchain/langgraph-checkpoint-validation. Here's a direct quote from the first paragraph under the Writing a CheckpointTestInitializer heading:

The CheckpointerTestInitializer interface (example) is used by the test harness to create instances of your custom checkpointer, and any infrastructure that it requires for testing purposes.

Within the MongoDB tester, a connection is opened to the initialized container using an environment variable, but within the initializer, a container is opened via a port on line 25, however the port is unknown, so how does the tester code know the exact URL to open for the container?

I'm not sure that I follow. Specifically, I'm not sure where that const client = new MongoClient(getEnvironmentVariable("MONGODB_URL")!); line came from, but it's not related to the initialization of MongoDBSaver as used by the @langchain/langgraph-checkpoint-validation validation suite.
Perhaps that came from the tests in the libs/checkpoint-mongo directory? If so, those tests are unrelated to the validation suite. They're implementation-specific tests that run as part of the LangGraph integration test suite, which uses another mechanism for managing test infrastructure. That is, when you check out a local copy of the repo and do yarn test, those tests don't run by default - they're meant to run in GitHub actions.
Instead, the MongoDBSaver test initializer uses the MongoDB TestContainer implementation to spin up and connect to a new instance of MongoDB.
In the initializer code, the connection string for the MongoDB client is built from details retrieved from the started test container on these lines. That connection string is passed to a new instance of the mongo client.
That mongo client instance is passed to new instances of MongoDBSaver that are used for testing here, and that client instance is also used for destroying and recreating databases between tests here.
To map this over to firebase, you likely want to be making use of the GCloud TestContainer implementation in a fashion to how the MongoDB TestContainer is used. There are examples of how to set it up to emulate firestore, however I'm not familiar enough with the firebase client or how your implementation works to say specifically how you'd wire it up in a test initializer.
Give that a try, and if you still can't figure out how to wire it up, feel free to ping me again or via the LangChain community slack with some more details about your checkpointer implementation, the firebase client lib you're using, etc.

Thanks for the quick response @benjamincburns ,
We are currently working on getting our initializer to pass validation tests, and are noticing that when running the validation test, we are getting an infinite loop:
`[import { FirebaseSaver } from "@langchain/langgraph-checkpoint-firebase";
import { initializeApp } from "firebase/app";
import { getDatabase, Database } from "firebase/database";
import type { CheckpointerTestInitializer } from "../types.js";
let database: Database;
export const initializer: CheckpointerTestInitializer = {
checkpointerName: "@langchain/langgraph-checkpoint-firebase",
async beforeAll() {
const firebaseConfig = {
  authDomain: "localhost",
  projectId: "initialize-Firebase",
  databaseURL: "http://localhost:9000",
};
// process.env.FIREBASE_URL = process.env.FIREBASEURL || "http://localhost:9000"

const app = initializeApp(firebaseConfig);

database = getDatabase(app);

console.log("Connected to Firebase Realtime Database Emulator");

},
beforeAllTimeout: 300_000, // Allow up to 5 minutes for emulator setup
async createCheckpointer() {
// Create a new instance of FirebaseSaver with the initialized database
return new FirebaseSaver(database);
},
async afterAll() {
console.log("Cleaning up Firebase Realtime Database Emulator");
// Optionally, you can implement cleanup logic here if necessary
},
};
export default initializer;](url)`
Above is our code that we are trying. I know it's not a problem with the beforeAll function since the final console.log() is called.
I've also read the README that was helpfully included, however nothing in there discussed the destination or source files we may have to add, if that were to be the problem, and there were no applicable troubleshooting tips for such an error.
Regarding the recommended use of the GCloud test container, only the implementation of Firestore is allowed. From our experience, confusingly enough Firebase and Firestore are 2 different database types, so our implementation would not work on the test containers that GCloud would allow us to implement. Our main strategy at the moment is to open up a local database on the tester's local machine to run those tests. (At least for now, as a proof of concept to check out our understanding of the checkpoint-validation)
If this implementation wouldn't work, I am confused as to why we are entering an infinite loop, instead of outright failing tests due to environment problems.
Has anything you've encountered ever given you such a problem?
Thanks again for being so helpful and timely!

Regarding firebase vs firestore, my apologies for that. I haven't worked with firebase much. This project has published a firebase emulator container that you might be able to try.
Since the interface is simple (just port mappings) you likely can spin it up with the core TestContainers project, as shown in this example.

FWIW, I'd also suggest that you want to be using firestore for this, not the firebase rtdb. See this article. Firestore is orders of magnitude cheaper, and offers more robust query mechanisms for e.g. the list method.


about sample or not when training

Hello again! In BBB method, you sample the weight no_samples times and average the loss when training (bbp_homo.ipynb def fit(self, x, y, no_samples)), but in MC dropout method, you don't sample and just get one loss as the final loss of training (mc_dropout_heteroscedastic.ipynb def fit(self, x, y)). But when testing, losses are both sampled. I think the only difference between BBB and MC dropout is that the approximate posterior is assumed as Gaussian by BBB and Bernoulli by MC dropout, so why don't you sample in MC dropout method when training? Thanks!

Yes, and thank you for bringing this up.
In MC Dropout we apply dropout every time we make a .forward() call, and we compute a MC estimate of the loss using one MC sample (i.e. one forward pass). You are right that the equivalent of BBB for MC Dropout should contain a variable number of samples, and the MC loss should be the average of the sampled losses. Instead, we implicitly (and probably not very transparently) assume no_samples=1 for MC Dropout.
For reference, we did not observe a significant dependence on the quality of our solutions by increasing the number of samples up to ~10 samples. We will modify MC Dropout to be more general, as soon as we get the time.


Remove Alert

Hello, thanks for your great work
I want to ask if there is any script that I can automatically delete alerts besides adding them.

You can remove all alerts in tradingview

Did you just want to remove just some alerts? How do you think that should work?

Thanks, that would work. Actually, there is an expiration time for alert now in tradingview, so after all the old alerts are expired, I want to automatically remove them and add them again with the new expiration time (using crontab or something like that).
So that would be great if the code has a script to remove them all instead of doing it manually.

Wow, awesome work!
@mlake can you add functionality to update/delete/disable alert ? So the script would not only add alerts, but keep configuration synced. So it's kind of extension from bulk-add script to control system. All modern control systems keep configuration and reality synchronized, so all you need is to update config and run the script. I use such systems daily in my work e.g. terraform, puppet, ansible, etc.

It would be great if we could also remove alerts by name with the script

You can remove all alerts in tradingview

Did you just want to remove just some alerts? How do you think that should work?

Could you add a command that would delete all alerts, so we can run it before we run add alerts one.
I made a bash script that is changing config and looping adding alerts for my coins on different time frame, I planned to run it in cron but atm before I add alerts I need to manually delete the old ones.

Try signing up as a beta tester at alertzmanager.io which has more comprehensive alert management


Connection persistence and container tracking

If the lobby server goes down for some reason, connections should not be dropped when the server is restarted. The game instances behind the lobby server will still be running, so no game state will be lost. All that needs to be done to restore connections is to persist the connection map into a database of some kind.

While we're at it, we should persist the connection IDs so we can stop containers with no players.

While we could leave empty containers running to reduce startup times, that would also prevent us from reloading addons without restarting the entire setup.

Redis should be configured with RDB+AOF because we don't want any data loss to happen at all. Connections can be opened and closed within a few minutes, and we don't want recent joiners to not have their connections restored.

One half of this is done https://github.com/karashiiro/kartlobby/commit/29054eab9174f9cdff5f2e086a261e5435eb98e8, now the actual connections need to be persisted.

https://github.com/karashiiro/kartlobby/commit/9e20406a4625e6746c13f88154f33d0758f38dcf
The container connection is now persisted, so that complete rejoining can occur; in-game reconnection is next.

https://github.com/karashiiro/kartlobby/commit/32582beb784cdfb50ff91c6081519b7ae134d13a closing.


Fix: multicluster component revision location

Description of your changes

In envbinding, the component revisions are placed at the namespace where Application locates in hub cluster. However, it is not necessary for child cluster to have that namespace if user choose to deploy at a different namespace. This PR lets the overrideNamespace works for ComponentRevisions as well.
Fixes #2546
How has this code been tested

Special notes for your reviewer

Solve it now after EnvBinding is reworked.


Native TextEdit cannot be used in AndroidView

Because my app needs a lot of text editing, the text box of FLUENT is not very easy to use，Please tell me how to use Android native textedit. AndroidView is not good. Keys like copy, paste and delete cannot be used

Hi @jlcool
This platform is not met for assistance on personal code.
Please see https://flutter.dev/community for resources for asking questions like this,
you may also get some help if you post it on Stack Overflow.
Closing, as this isn't an issue with Flutter itself,
if you disagree please write in the comments and I will reopen it
Thank you


<IP_ADDRESS> doesn't allow free ID choice

It looks like it includes the pack the ID came from as one of the 1s.

Could not reproduce. Created a deck with Andromeda, 1x Cortez Chip, 1x Crescentus. The deck is <IP_ADDRESS> compliant.


Workflow to authorize VM

Enhancement Request
Description
Add means to authorize VMs to regular users. Create on hold, and do not allow release by user but by its groupadmin.
Use attribute NEEDS_APPROVAL=yes
Use case
To fit OpenNebula in organizations where preapproval is not possible
Interface Changes
Small changes in Sunstone to add NEEDS_APPROVAL

This could be implemented by leveraging the hold state, and force the deployment on hold so authorized users needs to release the VM (so effectively approving it)


kairos privacy

option to not store images
option for api key without ability to fetch images

no option to get images


Update README.md

A small typing error.
Reference: https://www.grammarly.com/blog/separate-seperate/

Thanks will fix it


Depiction validation taking too much time on some cases

So far discovered on Orthoptera project in sandcastle. Reproducible on dev machine using the following script on rails console:
otu = Otu.find(84)
otu.taxon_name

$project_id = 2
$user_id = 1

9.times do |i|
	otu = Otu.find(84) # Important: Having this outside the loop won't trigger the problem.
	puts "[#{Time.now}] CREATING DEPICTION #{(i+1).to_s}"
	Benchmark.bm do |x|
		File.open('./public/images/missing.jpg') do |file|
			# Using depiction_object_id and setting type manually also triggers the problem.
			x.report { Depiction.create! image_attributes: { image_file: file }, depiction_object: otu }
		end
	end
end

(test_case.rb)
The problem is that with every new Depiction created for a given Otu, each one takes longer and longer to create! (presumably stuck at validation).
Example output on dev machine (stdout only):
rake db:drop && rake db:create && pg_restore --format=custom --username=taxonworks_development --dbname=taxonworks_development --no-acl --disable-triggers ../taxonworks_data/import_checkpoints/citations_create_otu_cites.dump && rake db:migrate && rails c < test_case.rb | tee output.txt
Loading development environment (Rails 5.2.2)
Switch to inspect mode.
irb: warn: can't alias context from irb_context.
otu = Otu.find(84)
#<Otu id: 84, name: nil, created_at: "2019-01-26 04:18:22", updated_at: "2019-01-26 04:18:22", created_by_id: 5, updated_by_id: 5, project_id: 2, taxon_name_id: 128>
otu.taxon_name
#<Protonym id: 128, name: "biloba", parent_id: 127, cached_html: "<i>Mirhipipteryx biloba biloba</i>", cached_author_year: "(Hebard, 1928)", cached_higher_classification: nil, created_at: "2013-02-12 18:23:00", updated_at: "2019-01-26 04:18:22", year_of_publication: nil, verbatim_author: nil, rank_class: "NomenclaturalRank::Iczn::SpeciesGroup::Subspecies", type: "Protonym", created_by_id: 5, updated_by_id: 5, project_id: 2, cached_original_combination_html: "<i>Ripipteryx </i>[SPECIES NOT SPECIFIED] <i>bilob...", cached_secondary_homonym: "Mirhipipteryx biloba", cached_primary_homonym: "Ripipteryx biloba", cached_secondary_homonym_alternative_spelling: "Mirhipipteryx biloba", cached_primary_homonym_alternative_spelling: "Ripipteryx biloba", cached_misspelling: nil, masculine_name: nil, feminine_name: nil, neuter_name: nil, cached_classified_as: nil, cached: "Mirhipipteryx biloba biloba", verbatim_name: nil, cached_valid_taxon_name_id: 128, etymology: nil, cached_original_combination: "Ripipteryx [SPECIES NOT SPECIFIED] biloba">

$project_id = 2
2
$user_id = 1
1

9.times do |i|
	otu = Otu.find(84) # Important: Having this outside the loop won't trigger the problem.
	puts "[#{Time.now}] CREATING DEPICTION #{(i+1).to_s}"
	Benchmark.bm do |x|
		File.open('./public/images/missing.jpg') do |file|
			# Using depiction_object_id and setting type manually also triggers the problem.
			x.report { Depiction.create! image_attributes: { image_file: file }, depiction_object: otu }
		end
	end
end
[2019-01-30 14:36:15 -0300] CREATING DEPICTION 1
       user     system      total        real
   0.140972   0.070768   0.346870 (  0.400344)
[2019-01-30 14:36:15 -0300] CREATING DEPICTION 2
       user     system      total        real
   0.040017   0.027008   0.201147 (  0.227124)
[2019-01-30 14:36:16 -0300] CREATING DEPICTION 3
       user     system      total        real
   0.048299   0.028695   0.211436 (  0.239366)
[2019-01-30 14:36:16 -0300] CREATING DEPICTION 4
       user     system      total        real
   0.069881   0.029991   0.234926 (  0.260481)
[2019-01-30 14:36:16 -0300] CREATING DEPICTION 5
       user     system      total        real
   0.198630   0.037301   0.370774 (  0.397854)
[2019-01-30 14:36:16 -0300] CREATING DEPICTION 6
       user     system      total        real
   1.091137   0.066668   1.291739 (  1.319259)
[2019-01-30 14:36:18 -0300] CREATING DEPICTION 7
       user     system      total        real
   7.502627   0.079058   7.720568 (  7.746726)
[2019-01-30 14:36:26 -0300] CREATING DEPICTION 8
       user     system      total        real
  63.614160   0.165716  63.911439 ( 63.979282)
[2019-01-30 14:37:30 -0300] CREATING DEPICTION 9
       user     system      total        real
 597.459559   0.840084 598.431064 (598.609815)
9

(Last one took almost ten minutes)
logs/development.log

@mjy I've changed the test. Comment out https://github.com/SpeciesFileGroup/taxonworks/blob/8c85736956cca510497a80d261461c51a19bb7ee/spec/models/depiction_spec.rb#L24 to see the test pass again (just to confirm the expectation works).
Now I noticed you had an expect in the loop. Is that safe? In that case the ratio expectation can be moved in and simplified a bit.

I just left the expect in there for spec purposes, it's not necessary.

Nice modification to the test, that makes more sense.  We can remove the other expectation.

But if it is safe to repeatedly call expect then we can move the ratio test inside the loop and avoid using break. Cleaner, but unsure if it is OK.

Typically you'd want only one expectation per test, but we do use loops
in some cases.  This is an exceptional case, so I think it's OK either way,
whaterver is cleaner and get's the idea across.
On Fri, Feb 1, 2019 at 10:48 AM Hernán Lucas Pereira <
<EMAIL_ADDRESS>wrote:

But if it is safe to repeatedly call expect then we can move the ratio
test inside the loop and avoid using break. Cleaner, but unsure if it is
OK.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/SpeciesFileGroup/taxonworks/issues/770#issuecomment-459787842,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AABYSFzXYbOQv28i7iQCIGuPNkpaM-6mks5vJG_RgaJpZM4aavYd
.

There is a warning in here, however in our case there is no infinite recursion as it eventually completes the validation and couldn't fine validates_associated on both ends either (though I might not be looking for it right). BTW, the actual complexity is more like O(n!) than O(b^n) since b^n/b^(n-1) = b but in the test bm.utime/last_utime always increase (like n!/(n-1)! = n would do).
I would imagine it is brute forcing all paths (i.e. depiction_0 > otu > depiction_1 > otu > ..., depiction_0 > otu > depiction_2 > otu > ..., etc.), or something like that to have such complexity, but I don't know why it does this. Do you @mjy?

Found the problem:

https://apidock.com/rails/ActiveModel/Validations/ClassMethods/validates_associated

As implemented here:

https://github.com/SpeciesFileGroup/taxonworks/blob/development/app/models/concerns/shared/depictions.rb#L16
https://github.com/SpeciesFileGroup/taxonworks/blob/development/app/models/depiction.rb#L36

Looks like we need to check validates_associated throughout.


3D graph of toe reachability

We want a way to 3D graph all the valid points that a toe on a given leg can reach to help us visualize and simulate a model of the leg movements.

Doug has been investigating Octave for this.


Fix heap-buffer-overflow of JsonOutput::tuple_to_str

Similar to https://github.com/iovisor/bpftrace/pull/1326#discussion_r426317843. AddressSanitizer detects it.
I think it's a good idea to build with AddressSanitizer in CI. Memory leak detector (LeakSanitizer) does not abort when finding leaks by default, so runtime tests will pass even they have a memory leak (heap-buffer-overflow results in abort). It is also possible to disable memory leak detection using  ASAN_OPTIONS=detect_leaks=0 if necessary.

I think it's a good idea to build with AddressSanitizer in CI.

Yeah, agree with that.


We need a more clear error log when Redis is not up and running.

Here is what I get when I run the queue with Redis down:
15:13:29 [p=3196, t=140273372366592, CRITICAL, pulsar.tasks] Stopping
Traceback (most recent call last):
  File "/home/dejan/.local/lib/python3.4/site-packages/pulsar/apps/__init__.py", line 127, in monitor_start
    yield from coro
  File "/usr/lib/python3.4/asyncio/futures.py", line 386, in __iter__
    yield self  # This tells Task to wait for completion.
  File "/usr/lib/python3.4/asyncio/tasks.py", line 287, in _wakeup
    value = future.result()
  File "/usr/lib/python3.4/asyncio/futures.py", line 275, in result
    raise self._exception
  File "/usr/lib/python3.4/asyncio/tasks.py", line 234, in _step
    result = coro.throw(exc)
  File "/home/dejan/.local/lib/python3.4/site-packages/pulsar/apps/data/redis/pubsub.py", line 91, in _subscribe
    self._connection = yield from self.store.connect(protocol_factory)
  File "/home/dejan/.local/lib/python3.4/site-packages/pulsar/apps/data/redis/store.py", line 102, in connect
    protocol_factory, host, port)
  File "/usr/lib/python3.4/asyncio/base_events.py", line 625, in create_connection
    raise exceptions[0]
  File "/usr/lib/python3.4/asyncio/base_events.py", line 612, in create_connection
    yield from self.sock_connect(sock, address)
  File "/usr/lib/python3.4/asyncio/futures.py", line 386, in __iter__
    yield self  # This tells Task to wait for completion.
  File "/usr/lib/python3.4/asyncio/tasks.py", line 287, in _wakeup
    value = future.result()
  File "/usr/lib/python3.4/asyncio/futures.py", line 275, in result
    raise self._exception
  File "/usr/lib/python3.4/asyncio/selector_events.py", line 438, in _sock_connect_cb
    raise OSError(err, 'Connect call failed %s' % (address,))
ConnectionRefusedError: [Errno 111] Connect call failed ('<IP_ADDRESS>', 6379)

I believe it would be much better if we get a clear error message saying something like Critical error, Redis is not up and running." or even better Critical error! TASK_BACKEND is not accessible!`
Perhaps a good idea is to show this message, and then retry to connect to the backend again using some re-try strategy. Reason why this is good is that in the case we are restarting the backend for some reason, queue will start working soon after the backend is up.

Indeed, but this is covered by #2 too.


Updated a missing option

Update the mission option "All users (All connected organizations + any new external users)" for users that are not in the directory.

@AlbertMichaelis : Thanks for your contribution! The author(s) have been notified to review your proposed change.

Please also update the screenshot in the article.

#sign-off


docs(azure-iot-device): Updating samples to support running as IoT Edge modules

Description of the problem
Running any sample under azure-iot-device that prompts for user input from stdin directly as modules in IoT Edge will throw an EOF error. Since these modules are executed as non-interactive containers, stdin will not be attached which causes the input method to throw an EOF error and the module to exit prematurely.
Description of the solution
Placing a try except around the input method for the EOF error and forcing the stdin_listener method to sleep instead fixes this issue. Please let me know if there is a better way to get around this issue or if I should make any updates to this PR.

@cartertinney is this something we should add to the samples or should we just close this out?


Check if the key is present and not if the key ref is valid, before exporting the key

While trying to read the Pskc or networkkey, we check if the keyref is valid. We instead need to check if the key is present. There is a possibility that the persistent data was erased before trying to read the key, which might result in asserts.

@abtink @jwhui can you please have a look at this PR?


[Performance] Calculate height of the textarea instead of letting the browser do it

I like using the text editor for tags, but I noticed it was a bit slow to render.
Using the performance trace tool in Chrome, you can see a forced reflow when the height is unset and the browser reflows the page to calculate the new height:

If we calculate the height ourselves, we can save a nice chunk of time:

There are two modes for the text area, this is the result of letting the browser calculate the height:

And this is when we supply the height ourselves:

In the worst case I saw a savings of 60ms in the onClick handler on my machine, which is a noticeable improvement.

@bjornstar Wow, that's a handy improvement. Thanks a lot! Especially for the trace and previews. Welcome to the project 👍


Binary packages

Fixed variable name so we can use a custom RUBY_PACKAGE_REPO.

Invalid, the good one is #84


New release workflow

Hi @durandj,
I simplified the release workflows for all semantic-release plugins. We now use the goreleaser hooks plugin. 🎉
Best,
Chris

Awesome, looks much simpler, thanks @christophwitzko!


Post Process material support?

Hi Nikola!
Do you have any update on implementing post process material?
I see that EasySynth is using the default render settings from UE (UMovieRenderPipelineProjectSettings):
After a render with EasySynth, if I open the Movie Render Queue, I can see that in the "settings" tab that a temp file called "MoviePipelineMasterConfig_0" was created.
This temporary setting file seems to be the default settings file used by EasySynth to render.
Would it be possible for EasySynth to use a custom setting file instead of the default one?
A custom settings file in which we could turn on the Anti-aliasing and add any custom post process material? Or maybe overwrite the default one with custom settings...?
That would be awesome!
Thanks!
Noel.

Hi @noelhumane,
To achieve all of its functionality, EasySynth dynamically plays with these config files (objects).
It loads a base config file that is a part of plugin content (located in Plugins/EasySynth/Content). Then it modifies the needed properties in the PrepareJobQueue method inside the Source/EasySynth/Private/SequenceRenderer.cpp file. It also plays with different camera post-process materials throughout the rendering, such as in the PrepareSequence method inside the Source/EasySynth/Private/RendererTargets/SemanticImageTarget.cpp file.
Since this is all done dynamically, changing those properties manually may cause unexpected behavior. All of the general functionality is still there and can be utilized, but currently requires modifying the plugin to achieve the desired effect.
We currently don't have the resources to continue actively developing and testing features such as that, but I am available if any help is needed regarding the plugin code base.
Nikola

Hi Nikola,
Thank you very much for explaining this process.
I'm wondering if this base config file (located in Plugins/EasySynth/Content) could be modified "manually" (or via script) to reflect the settings/features I'd like to turn on?


Allow sortable field to start in descending

Mostly when ordering a table by a column/field, intention by clicking the table header is to start ascending.
In some occasions (e.g. amount of user using a product), it is preferred to sort descending  first.
Currently, we work around the issue by checking the incoming order_by parameter during handle_param and after comparing with the state from meta decide to potentially flip the direction for the given column/field. This is ... well ... a work-around and quite fragile/frustrating way, as also LiveView rerender runs into issues.
A good solution could be to modify the derive sortable in a way like below to indicate the intented initial order direction
  @derive {Flop.Schema,
           ...
           sortable: [:title, user_count: :desc],
           ...
  }

Thanks for opening the issue. Flop.push_order/3 already allowed to modify the directions that are used. I just made a small change in #432 that allows you to use a descending sort order as an initial direction.
You can use this in the table component like this:
<Flop.Phoenix.table items={@pets} meta={@meta} path={~p"/pets"}>
  <:col :let={pet} label="Name" field={:name} directions={{:desc, :asc}}>
    <%= pet.name %>
  </:col>
</Flop.Phoenix.table>

This also allows you to control whether to sort with null values first or last. For more examples, refer to https://hexdocs.pm/flop/Flop.html#push_order/3.

This is amazing - we basically already  upgraded to Flop 0.24.1 and have the needed changes on staging. Thank you!


PHP Format Doubt

Hi, in my coding usually I like to use the following pattern:
<?php
    namespace App\Classes;

    use App\Classes\{Password};
    use App\Models\{Model};

    class Auth{

        private $email;
        private $password;

        public function __construct($email, $password){
            $this -> email = $email;
            $this -> password = $password;
        }
?>

After I've installed codeformatter and phpfmt
after I save the script, come of the spaces are removed, like above:
<?php
namespace App\Classes;

use App\Classes\Password;

use App\Models\Model;

class Auth {

	private $email;
	private $password;

	public function __construct($email, $password) {
		$this->email = $email;
		$this->password = $password;
	}
?>

Is there a way to use this packet control addon and still keep my configuration pattern?
Regards

Should be fixed via https://github.com/akalongman/sublimetext-codeformatter/issues/355#issuecomment-381722577


Fix docker image

The docker image doesn't always work - this needs to be fixed.

This appears to be fixed. Closing the issue.


Failed job with multiple firewatch tickets does not create the tickets in chronological order.

When we have a job that fails in multiple steps and leads to the creation of multiple firewatch tickets, the tickets do not get created in the order that the failed steps were run.
For example consider these 3 tickets created from a single failed ACM run
LPINTEROP-3777
LPINTEROP-3778
LPINTEROP-3779
Mapping the step captured within the ticket and the order of the failed steps that were run the tickets look like this
LPINTEROP-3779
LPINTEROP-3777
LPINTEROP-3778
*Meaning that 3779's failure actually occurred before 3777 and 3778 but since the numbers aren't in order when a watcher goes to debug this they might make an incorrect assumption about the order the steps were run.
If we could make the firewatch tickets in order of the steps that failed that would help watchers understand these situations a bit easier.
Side note:
This particular scenario is being improved here to prevent cascading failures, but we could see this type of example in other scenarios as well.

I can look into this, but I don't know that there is a way for me to accurately determine the order of steps. If it is not a value provided in Prow/OCPCI, I don't know that it is worth trying to determine that.
@ascerra


cmd/link: allow specifying the macOS SDK in internal linking mode

It appears that the linker hardcodes the LC_BUILD_VERSION^1 to target a min SDK of 10.13.0 for amd64 and 11.0 for arm64.
Is there a way to set this during "go build"?

You can use external linking and specify it as a flag to the linker.

Thank you, this got me further and you are correct that
go build -ldflags="-linkmode=external -extldflags=-mmacosx-version-min=12.0" example.go

works if I'm compiling from macOS. However I didn't do a great job of describing my use case. I would like to be able to cross-compile a Go binary for macOS (from a Linux host) while also being able to set the target minimum macOS SDK. In this case I need to be able to use the internal linker. Would it be possible to reopen this bug as a feature request to add a flag to the internal linker so that the target minimum macOS version could be specified during cross-compilation?
The context for this is that we were building a Go binary that read /System/Library/CoreServices/SystemVersion.plist on macOS. There is code in the kernel that changes how the contents of this file are read depending on what the target minimum macOS SDK is of the running binary. Our current build process makes compiling this code natively somewhat difficult, whereas cross-compiling is relatively easy. But this leads to having an x86_64 slice that reads the incorrect OS version from this file.

Reopening.

CC @cherrymui @thanm

This seems doable in principle, although I worry a bit about adding this sort of flag/knob, since each flag increases the number of scenarios/permutations that we have to test (and if we have N flags, then potentially we have to test all possible combinations).

Sorry, I'm not sure I really understand the purpose of increasing the SDK version, or what exactly does that kernel code do. Could you add more information? Are you trying to enable new feature? Or is that some macOS feature is not compatible with older version of SDK? Thanks.

You can do this as a postprocess on your binary. This little program will change the version from the default of 10.13 to 10.14:
package main

import (
	"debug/macho"
	"encoding/binary"
	"os"
	"unsafe"
)

func main() {
	// Open file.
	f, err := os.OpenFile(os.Args[1], os.O_RDWR, 0)
	if err != nil {
		panic(err)
	}

	// Read and check magic number.
	var ident [4]byte
	if _, err := f.ReadAt(ident[:], 0); err != nil {
		panic(err)
	}
	magic := binary.LittleEndian.Uint32(ident[:])
	if magic != macho.Magic32 && magic != macho.Magic64 {
		panic("not a macho file")
	}

	// Read file header.
	var header macho.FileHeader
	if err := binary.Read(f, binary.LittleEndian, &header); err != nil {
		panic(err)
	}

	// Read load commands.
	offset := int64(unsafe.Sizeof(header))
	if magic == macho.Magic64 {
		offset += 4
	}
	cmds := make([]byte, header.Cmdsz)
	_, err = f.ReadAt(cmds, offset)
	if err != nil {
		panic(err)
	}

	// Iterate through load commands.
	for len(cmds) > 0 {
		cmd := binary.LittleEndian.Uint32(cmds[0:4])
		cmdSize := binary.LittleEndian.Uint32(cmds[4:8])
		if cmd == LC_BUILD_VERSION {
			version := []byte{14} // aka 10.14
			_, err = f.WriteAt(version, offset+13)
			if err != nil {
				panic(err)
			}
			_, err = f.WriteAt(version, offset+17)
			if err != nil {
				panic(err)
			}
			break
		}
		cmds = cmds[cmdSize:]
		offset += int64(cmdSize)
	}
}

const LC_BUILD_VERSION = 50

Sorry, I'm not sure I really understand the purpose of increasing the SDK version, or what exactly does that kernel code do. Could you add more information? Are you trying to enable new feature? Or is that some macOS feature is not compatible with older version of SDK?

The kernel code changes the contents of /System/Library/CoreServices/SystemVersion.plist based on the minos specified in the LC_BUILD_VERSION of the running binary. When minos predates 11.0, this file changes to display a ProductVersion of 10.16. When minos is 11.0 or greater, then the true contents of the file are returned. See also https://eclecticlight.co/2020/08/13/macos-version-numbering-isnt-so-simple/. Repro code looks like
// example.go
package main

import (
	"fmt"
	"log"
	"os"
)

func main() {
	b, err := os.ReadFile("/System/Library/CoreServices/SystemVersion.plist")
	if err != nil {
		log.Fatalf("%v", err)
	}
	fmt.Println(string(b))
}

if you compile this with GOOS=darwin GOARCH=amd64 go build example.go, then since
% vtool -show-build example
example:
Load command 5
      cmd LC_BUILD_VERSION
  cmdsize 24
 platform MACOS
    minos 10.13
      sdk 10.13
   ntools 0

running the program on any macOS from 11.1 up to 13.3 will print
        ...
	<key>ProductUserVisibleVersion</key>
	<string>10.16</string>
	<key>ProductVersion</key>
	<string>10.16</string>
       ...

instead of the true contents. Taking the same code and compiling it with GOOS=darwin GOARCH=arm64 go build example.go for Apple Silicon instead gives
% vtool -show-build example
example:
Load command 6
      cmd LC_BUILD_VERSION
  cmdsize 24
 platform MACOS
    minos 11.0
      sdk 11.0
   ntools 0

and running it on, say macOS 13.2.1:
        ...
	<key>ProductUserVisibleVersion</key>
	<string>13.2.1</string>
	<key>ProductVersion</key>
	<string>13.2.1</string>
        ...

In our case we ended up lipo-ing the amd64 and arm64 binaries together to get a universal binary where each slice specified a different minos target version, and so the resulting binary behaved differently on different arches and even behaved differently on arm64 depending on whether or not it was running under Rosetta.
We found an acceptable workaround for this particular example, but all of this is mostly to say that things are kind of weird  and it would be nice to be able to easily set the minos of all macOS builds to the same version >= 11.0 from the Go linker itself to avoid any unexpected future Apple weirdness.

Looking at https://eclecticlight.co/2020/08/13/macos-version-numbering-isnt-so-simple, it sounds as though you can just change your program to exec the equivalent of
  SYSTEM_VERSION_COMPAT=0 cat /System/Library/CoreServices/SystemVersion.plist
then read and interpret the result. Seems like that would solve your problem without needing any changes to the Go linker.

We have a workaround for the specific example provided; I'm more interested in having a general solution. It makes a bit more sense to me to be able to enforce that our binaries target a recent SDK as Apple seems to expect, rather than finding new workarounds for each thing that might break because of this. I tried to find some other instances of where this might have been an issue, but the only thing that's come up is https://github.com/golang/go/issues/30488, where the hardcoded value was breaking notarization.
If the recommended solution is to make a second pass over the binary with an external tool, I suppose that is fine, though not ideal from my perspective. I understand the reluctance to have an exploding list of platform-specific linker options.


Crash on startup

When I start my pack, Dynamic Surroundings <IP_ADDRESS> just crashes.
<IP_ADDRESS> worked fine.
https://paste.ee/p/a0H7I

Thank you, worked! Bewitchment was the other cause.


[Deploy] Google Voice

Service
Google Voice
Link to your repository
https://github.com/BehindTheMath/franz-recipe-google-voice
Additional Information
This is an update from the legacy plugin, to one compatible with Franz 5.

@BehindTheMath maybe the icons should be updated?

@simonkotwicz I can't find an SVG for the new icon.

@simonkotwicz I can't find an SVG for the new icon.

Never mind. I drew it myself.
Both the PNG and SVG icons have been updated.

Is this waiting on anything?

@eddiezane Nothing that I know of.
@adlk @haraldox Can you clarify this?

I tried to use this, and it isn't working on the latest version of Google Voice.
I screwed around with webview.js a bit and this makes it work:
module.exports = Franz => {
    function parseQuery(query) {
        const el = document.querySelector(query);
        return (el && parseInt(el.innerHTML)) || 0;
    }

    function getMessages() {
        const el = document.querySelector('.msgCount');
        let count;

        if (el) {
            // Legacy version of Google Voice
            count = parseInt(el.innerHTML.replace(/[\(\) ]/gi,"")) || 0;
        } else {
            // Updated version of Google Voice
            const count_messages = parseQuery('gv-nav-tab[tooltip="Messages"] div[aria-label="Unread count"]');
            const count_calls = parseQuery('gv-nav-tab[tooltip="Calls"] div[aria-label="Unread count"]');
            const count_voicemails = parseQuery('gv-nav-tab[tooltip="Voicemail"] div[aria-label="Unread count"]');
            count = count_messages + count_calls + count_voicemails;
        }

        Franz.setBadge(count);
    }

    Franz.loop(getMessages);
};

What's the status of this? Any chance of being merged into Franz anytime soon?

@adlk Is there any reason this hasn't been merged yet?

FWIW, I've been testing the GVoice plugin for the last 2-ish weeks, and it has been running smoothly @adlk

Deployed ✅


Update instructions about our logo

I made some suggestions that would address the issue raised at discourse

Do we want to formalize trademark guidelines before changing the instructions?
Samples of trademark policies:
https://foundation.rust-lang.org/policies/logo-policy-and-media-guide/
https://numfocus.org/trademark-guidelines

Cc @vianeylb and @spinkney.

I am very positive to rust policies. That would be a good accessible language to developers and users.
We have a meeting with Arliss (NumFOCUS) on Tuesday 13th and I am going to ask her for caveats for GPL/BSD licensed software. If there's none. I am going to update this PR with Rust's template adapted to Stan so we can discuss further.
Also, if anyone wants to chime in, please do and send new commits.

Sent this version as a draft to NumFOCUS to get their opinions on any legal flaws.

This is ready to merge if it's OK with @storopoli

Thanks!


How to use it with Laravel Authentication

How can I use Entrust routes with Laravel Authentication routes as given in manual:
Route::get('profile', ['middleware' => 'auth', function() {
    // Only authenticated users may enter...
}]);

// Using A Controller...

Route::get('profile', [
    'middleware' => 'auth',
    'uses' => 'ProfileController@show'
]);

I don't get your main-problem!? What do you want to get as the result?
Do you want to protect a Route for a specific role/permission or what?

How can I use something given below with Laravel's basic authentication system?
Entrust::routeNeedsRole('admin/advanced*', 'owner', Redirect::to('/home'));

Do you mean your Authenticate Middleware? If yes than just extend the handle() with something like this:
if($request->is('admin/advanced*') && !$this->auth->User()->hasRole('owner')) {
    return redirect()->to('home');
}

But you can write your own middleware for a cleaner code and usage.
It's not tested but should work. You also can extend the constructor of the Controller wich handles this route.
Or use the Laravel Route class with filters:
Route::filter('owner_role', function()
{
    if (!Entrust::hasRole('owner')) {
        App::abort(403);
    }
});
Route::when('admin/advanced*', 'owner_role');

There are a few possibilities and it's up to you and your coding style where and how you want to check the roles and permissions.

Perfect


Added codeforces in profile page

Added codeforces in profile page  - https://github.com/amfoss/fosswebsite/commit/305ffb29a6c107d99550372b470444446c4e9c0d
Added codeforces icon - 9cf792b

As I have suggested. There won't be any changes done to the master branch unless it is that much of a critical change. Make the changes in to the development branch.


Release 1.7.0: Develop to main

Board: https://github.com/100mslive/react-native-hms/projects/16

Pre-launch Checklist

[ ] The Documentation is updated accordingly, or this PR doesn't require it.
[x] I updated/added relevant documentation (doc comments with ///).
[x] I listed at least one issue that this PR fixes in the description above.
[x] I added new tests to check the change I am making, or this PR is test-exempt.
[x] All existing and new tests are passing.

@stanwolverine Do review this PR


How to use the checkpoint

I find it interesting that the checkpoint in your cvpr24 results do not have in_proj_weight, only in_proj_bias in nn.MultiHeadAttention parameters, which block me from using and evaluating them.
In addition, what is the corresponding config yaml file for them? The readme seems unmatched with the code and ckpt.

you need to check model_vpt.py since the attn.in_proj_weight has been chunked as q_proj_weight, k_proj_weight, v_proj_weight to only finetune query and value, where in_proj_bias was not modified. This might help you.


Don't offer Convert to template string refactoring for simple strings

TypeScript Version:  3.8.1-rc

Search Terms:

refactor
refactoring
code actions

Repo
For code such as
import ImageEditor from 'tui-image-editor';

Place cursor on the string
Bug:
A convert to template string refactoring is offered. This is not helpful.
I suggest that we only show convert to template string if you are on a string concatenation expression.

So clearly this is silly because there are certain positions where a template string isn't valid - I think it'd probably be okay to disable this for simple strings, but we should revisit whether we want to enable it for all strings and disable it for nonsensical positions like

import/export specifiers
Property names
Maybe other stuff?

I'd prefer to only see this refactoring when the cursor on a string concatenation expression
Also, we probably want to fix this for 3.8 (either for the final release or in a recovery build) as it is rather annoying to have the lightbulb show up for every string

Just as a contrasting opinion, I actually find this behavior useful (in cases where template strings would be legal). After using TS/JS for years, my muscle memory now defaults to ${...} rather than + to template values into strings, and it's nice to be able to quickly convert the string in question to a template string in cases where it isn't already.
That said @DanielRosenwasser, another potential approach could be to make the suggestion if the string in question contains ${. Just a thought. :slightly_smiling_face:

Hey there 👋
A quick heads-up to support @treybrisbane point of view.
For the context, I'm the author of a VS Code extension that provides JS & TS refactorings. We used to provide "Convert to Template Literal". We removed it since it's now handled by the editor, through TypeScript.
However, it was very valid (and convenient) to switch from:
const a = "I have some apples";

to
const a = `I have some apples`;

To start inserting variables inside.
I understand this was dropped as a side-effect of a bug fix. I think what we really want to avoid is proposing the refactoring for invalid things like imports. I implemented that kind of check in my extension indeed.
You can check https://github.com/nicoespeon/abracadabra/issues/94 for more context on this.
If you need more details, I'd be happy to help 😄
Thank you!


Nothing Happens

I try using your extension but when I try accessing the DB simply nothing happens. The process seems ok, I enter all requested info but when complete it is like nothing has been done. Not even an error.
Where do you store the config file for this extension?

Could you reinstall the extension and try again?

Got same problem, process ok but nothing really happen.
I just install gnome-keyring and all work again (probably a problem this org.freedesktop.secrets).
This solution work for me on Arch Linux (i3-wm).
Probably add gnome-keyring as dependency.

What VS Code version you are using?

Personally problem happen in version 1.20.1 (build from sources)

Hi there, sorry for the delay. Let me catch up...
YES, I reinstall it, many times. I even reinstall the VS Code and without any other extension tried it again and the result was the same.
My current VS Code version is 1.20.1, but the first time I tried your extension it was 1.18.x. The extension was still unresponsive since and for any version in between.
My environment is Linux Nitrux v 1.0.8 (Ubuntu 17.10 based) with Kernel 4.14.15-041415-generic, using KDE Plasma 5.12.80 and KDE Framework Version 5.43.0.
However, I am glad @baptistemeunier brought his solution to the table because it also fixed my issue. As soon as I install gnome-keyring it all start working magically.
Based on the result, I totally agree with @baptistemeunier that you should add gnome-keyring as a dependency for Linux environments.

Seems like an issue in keytar: https://github.com/atom/node-keytar/issues/74

Exactly the same here, I have a kde neon with plasma and I've just installed gnome-keyring. Thank you folks. sudo apt-get install gnome-keyring

same story.
Ubuntu 18.04 server + i3wm
Thank you!

I had the same issue. Like @baptistemeunier said installing gnome-keyring fixed it:
sudo apt install gnome-keyring
Thanks


issue with prevButton / nextButton when freezable: true

Issue description:  When you set values for prevButton + nextButton, controls: true, controlsContainer: false, and leave freezable: true I get an exception at the following line:
if (!controls) { hideElement(controlsContainer); }
It appears that freeze changes the values of the controls variable to false, even though I set it to true on initialization, which makes sense if this is used to hide the controls.  Since controls is now false it then attempts to hide a non-existent controlsContainer.  I expect this should be something along the lines of if (!controls && controlsContainer) to ensure a container exists before trying to hide it.
Love the lib, thanks for creating it!
Tiny-slider version:   2.7.3

Did you mean something like this?
https://codepen.io/ganlanyuan/pen/eKLqQN

Ahhh, I think my issue was using controls: true while also specifying prevButton / nextButton is problematic.  controls: false seemed to have solved that, thank you!  closing.


Sflix video list is empty error

Source information and language
Sflix
Steps to reproduce
Video list is empty error whenever i try to play something.
Expected behavior
The video should run when i click on any episode.
Actual behavior
The video loads for a few moments and then video list is empty error.
Aniyomi version
<IP_ADDRESS>
Android version
Android 11
Other details
No response
Acknowledgements

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

Any idea

Any idea how long will it take to fix it?


ConcurrentWrites=true crashes on UWP without exception

Type: Bug
NLog version: <IP_ADDRESS>00 (NLog for NetStandard 2.0)
Platform: UWP 6.1.4 on Windows 1803 (same behavior with managed and native)
Current NLog config: FileTarget with KeepFileOpen=true

What is the current result?
While using a FileTarget with KeepFileOpen=true the app crashs immediately without an exception/stacktrace when the first log entry should be written.

Did you checked the Internal log?
Yes, the logger just shuts down after trying to create an appender.

...
2018-05-25 13:29:53.4018 Debug FileTarget(Name=): Process file 'C:\Users\Developer\AppData\Local\Packages\46eb4355-0396-4686-a706-046c3ba94973_4ca7txfpdd20p\LocalState\Log\log.txt' on startup
2018-05-25 13:29:53.4149 Debug FileTarget(Name=): Do archive file: 'C:\Users\Developer\AppData\Local\Packages\46eb4355-0396-4686-a706-046c3ba94973_4ca7txfpdd20p\LocalState\Log\log.txt'
2018-05-25 13:29:53.4451 Debug Creating file appender: C:\Users\Developer\AppData\Local\Packages\46eb4355-0396-4686-a706-046c3ba94973_4ca7txfpdd20p\LocalState\Log\log.txt
2018-05-25 13:29:53.5861 Info Shutting down logging...
2018-05-25 13:29:53.5957 Trace Flushing all targets...
...

Are there any workarounds?
When setting KeepFileOpen=false, all works fine. Is this a bug or limitation when using NLog on UWP?

I traced this down the line and think the cause is that MutexMultiProcessFileAppender and WindowsMultiProcessFileAppender e.g. BaseMutexFileAppender creates a global mutex, but those are not supported on UWP (Note: The global namespace is not available for Windows Store apps.) - are they?
When I just execute new Mutex(false, "Gloabl\anything") on an UWP app, I get the same behavior, the app crashs.
Is there any way to use KeepFileOpen=true on UWP?

UWP is special just like Android and iOS. NLog tries to cater for this by removing all traps in NetStandard13.
But when building UWP-application that "supports" NetStandard2.0 then protection is gone. NLog expects NetStandard20 applications (Like AspNetCore) to have full support for all the good stuff.
The workaround for you is to configure both KeepFileOpen=true and concurrentWrites=false

@304NotModified Rename is issue to "concurrentWrites=true crashes on UWP without exception" ?

:+1:

See also: #3048 about changing default value to concurrentWrites="false" for better platform support. (UWP / Xamarin apps are optimized not know about global mutex)

Resolved by #3048

Resolved by #3048


Definition of metrics used in the paper

I am reading your paper GraphCodeBERT, but I am not quite sure about the metrics BLEU and Acc for code translation in the paper. Can you tell me the detailed definition of these two metrics?
Thanks!

BLEU-4 or others？Program Acc or token Acc？


Fixing CSeq type checking rule

Fixes #51
Creates a new scope in the environment; typechecks c1; extracts any new bindings from this typechecking; adds the new bindings to the initial environment and typechecks c2.

The implementation looks correct to me! Can you add a few more tests that nest the --- under unrolled loops.
Also, two minor nits:

The tests belong under "sequential composition"
The strings for it should start with small letters.

@apurvakoti can you add the fixes so we can merge?

LGTM.


about me page updated with logos of sites we index

added logos of the repositories we index

This looks good! I don't know why I didn't see those changes earlier.


GA Migration Java PostCommit Nexmark Direct, Flink, Spark

This PR is part of the migration from jenkins to github actions.
This PR contains this tests
Java PostCommit Nexmark Direct
Java PostCommit Nexmark Flink
Java PostCommit Nexmark Spark
3 Files were added to the workflows folder of github actions

job-postcommit-java-nexmark-direct and
job-postcommit-java-nexmark-flink
job-postcommit-java-nexmark-spark
3 Files were deleted, this files were the groovy files for jenkins
Nexmark Direct
Nexmark Flink
Nexmark Spark

Jenkins readme was modified deleting migrated tests.
CI.md was modified adding the new GA workflows
Waiting for this PR before merge https://github.com/apache/beam/pull/22703

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

[ ] Choose reviewer(s) and mention them in a comment (R: @username).
[ ] Mention the appropriate issue in your description (for example: addresses #123), if applicable. This will automatically add a link to the pull request in the issue. If you would like the issue to automatically close on merging the pull request, comment fixes #<ISSUE NUMBER> instead.
[ ] Update CHANGES.md with noteworthy changes.
[ ] If this contribution is large, please file an Apache Individual Contributor License Agreement.

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

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

LGTM!

Hi @damccorm
I made some changes in this PR

I use the test-properties file to get all the variables in all the tests of this PR.
All the tests are now using a matrix,
In the case of the tests related with spark,  I use 2 jobs, the reason that are in different jobs in the workflow and not in a matrix are that the runner are different and one runner needs a special flag to work, using this in a matrix cause the failures of the pipeline, for example using the runner SparkRunner  with the configuration of SparkStructuredStreamingRunner
If some changes are needed please let me know


feat: removed argument delay from InvalidateCacheTaskHandler

1. Why is this change necessary?
delay is no more needed
2. What does this change do, exactly?
Removed the argument delay in InvalidateCacheTaskHandler from the constructor and simplified the method run.
3. Describe each step to reproduce the issue or behaviour.
4. Please link to the relevant issues (if any).
Solves https://github.com/shopware/shopware/issues/4512
5. Checklist

[x] I have rebased my changes to remove merge conflicts
[ ] I have written tests and verified that they fail without my change
[x] I have created a changelog file with all necessary information about my changes
[ ] I have written or adjusted the documentation according to my changes
[ ] This change has comments for package types, values, functions, and non-obvious lines of code
[x] I have read the contribution requirements and fulfil them.

Thanks!


EMAILPLT-180: Bootstrap-ized email preview portlet (new styles)

Bootstrap-ized email preview portlet, including new styles, new icons, new layout - without affecting functionality.

Ahh darn.  I was hoping for a before and after screenshot.

merged out-of-band


Fix FOG built-in in spatial/fragment shader

Currently, it leads to shader compilation failure since custom_fog is not defined.

@clayjohn Done

Thanks!


SSH documentation

I noticed that there doesn't seem to be any documentation on running Groove Basin over SSH. I've been using Groove Basin exclusively over SSH for a while now (it works great) and would be happy to write a quick guide on how to get it set up. Would it be okay to add this information to the wiki?
I've also put together a tiny bash script that automates the process and might be useful to people wanting to use Groove Basin regularly to stream over ssh.

ssh -L .... That's pretty neat. I didn't know about that.
Looking at your script, I think there are two separate issues you're trying to solve at once.
Given that I can ssh to the computer that can run Groove Basin:

How do I start and stop the Groove Basin server remotely?
How do I connect to a running Groove Basin server as a client without doing any further configuration such as port forwarding in a router?

Those are both valid concerns, but I think they should be separate concerns. The Groove Basin server is designed to operate well if it's left running forever (that's how I use my Groove Basin server.), but it's also totally reasonable for users to want the server running only when they're actually using it. If we document the two issues separately, users can decide to combine them if they want.

@dohliam feel free to update the wiki :-)
It occurs to me that a process supervisor such as systemd, upstart, sysvinit, etc might solve the problem that you're solving with a bash script. Have you considered trying to use one of those?
The process supervisor's job is to:

Start the groove basin server when the computer turns on.
Restart groove basin if it crashes.

@thejoshwolfe You're absolutely right! :+1:  I can definitely address the two issues separately in the documentation.
Luckily, the first issue is easy to resolve (assuming that one already knows how to ssh into the remote machine):

Log into the remote machine
Enter the Groove Basin folder
Run groovebasin
Done! The server is now up and running

The tricky part (for me, anyway) was figuring out how to connect the client to the Groove Basin server over SSH once it's running. It's not difficult, of course, but also not exactly obvious. :smile:
Basically it just involves forwarding the appropriate ports (using the -L option as you noticed), although I also wanted to return control of the script to the local terminal (using -t -t) so that the browser window could be launched automatically.
Even taking into account the extra time needed to start the Groove Basin server every time, the whole process still has a great music player up and running in about the same amount of time as most local desktop applications take to load. It would be even faster if the server was already on and the script just logged in and opened the browser window!
@andrewrk That's an interesting idea -- I hadn't thought of using a process supervisor. At the time I wrote the script, I wasn't running the Groove Basin server all the time yet, so I wanted a way to start and stop the server remotely on command. It would be easier in a lot of ways to just have the Groove Basin server run on start up and leave it running as @thejoshwolfe suggests.
If we assume that the server is always running, it just becomes a matter of connecting the client remotely, which I think might still be worthwhile explaining for people not familiar with port-forwarding over SSH.

Finally got some time to write this up -- here's the link:
https://github.com/andrewrk/groovebasin/wiki/Using-Groove-Basin-over-SSH
Let me know if there's anything you'd like me to add/change. Otherwise, this issue can be safely closed. :smile:

Thanks for writing this up! It looks great.


Draft of the CHANGELOG file to announce Brick changes

[ ] needs list of added classes
[ ] needs list of removed classes

(these will both be easily fulfilled when #88 is merged)

@shreyasnagare How hard is it to generate a list of added/removed classes from 1.0.3 to 1.1? Can you email that to me so I can include it in the changelog? Thanks!

@shreyasnagare How hard is it to generate a list of added/removed classes from 1.0.3 to 1.1? If its not too much trouble, can you email that to me so I can include it in the changelog? Thanks! Otherwise, I can just summarize the changes we made

Done.
Can you verify that ./tools/compare_versions is working fine? I'm getting a blank file for added_classes.txt.

Thanks for sending the lists over!
We probably should use the full SemVer string when we're referring to the full versions e.g. for compare_versions.py
Is there any documentation for compare_versions? I don't know how it works

@jbkoh let me know what you think of the CHANGELOG.md file and if I need to add anything. I'd like us to release v1.1 as soon as this PR is merged!

We probably should use the full SemVer string when we're referring to the full versions e.g. for compare_versions.py

That is a good idea but if you do that in compare_versions.py, you wouldn't get anything in the files -  added_classes.txt and possible_mapping.json. The version number is used to get the root class URI (which will have 1.1).

Is there any documentation for compare_versions? I don't know how it works

Try using the --help argument.

That is a good idea but if you do that in compare_versions.py, you wouldn't get anything in the files - added_classes.txt and possible_mapping.json. The version number is used to get the root class URI (which will have 1.1).

Given that we know how we want to handle the version numbers, its probably a good idea for compare_versions.py to handle this logic so that the full SemVer number can be used, but if the abbreviated MAJOR.MINOR number is used then it defaults to whatever the latest version in the newbrick TTL file is.
I was able to get the compare_versions tool to give me a mapping from 1.1.0 to 1.0.3 after I edited the Brick.ttl version to 1.1.0, but no added_classes.txt appeared

@gtfierro I am working on fixing compare_versions.py. This is because the version names are not updated from 1.1.0 to 1.1 in the previous PR.

@gtfierro Please check #113

I'd rather be conservative about talking about regulates, hasInputSubstance, hasOutputSubstance because we have not discussed their usage enough. E.g., use cases, the correctness of the modeling, etc.
Brick ontology now fits under OWL RL ontology profile: What do you mean by this?
I don't think ontology alignment is under the versioning umbrella unless the target ontology is tightly used inside/with Brick. (E.g., a unit ontology as a standard unit representation for Brick.)
We could talk more about the tags <-> classes mapping with our model. It is one of the major features in this version.

I'd rather be conservative about talking about regulates, hasInputSubstance, hasOutputSubstance because we have not discussed their usage enough. E.g., use cases, the correctness of the modeling, etc.

I think I'm already being pretty conservative. Would you like me to elide the mention of them completely? I think it's important to at least mention them

Brick ontology now fits under OWL RL ontology profile: What do you mean by this?

The modeling practices of Brick are consistent with the OWL RL ontology profile; we don't require anything more powerful than what is defined by OWL RL.

I don't think ontology alignment is under the versioning umbrella unless the target ontology is tightly used inside/with Brick. (E.g., a unit ontology as a standard unit representation for Brick.)

It's in the repo and thus part of the release, just like the tools. Keep in mind this is also what people will see about the Brick v1.1 release, so its important to mention what we have undertaken as part of this process

We could talk more about the tags <-> classes mapping with our model. It is one of the major features in this version.

Sure, I can add more on this

@jbkoh I put the Tag/Class discussion in the README and linked to it from the CHANGELOG. I also adjusted the OWL RL text in the CHANGELOG

In general, I would like to distinguish 1) the official Brick standard and 1) what are in the repo. They are different even though they are in the same repo. People will mix them up if we don't clarify that. For example, Brick->RealEstateOntology is not a standard component of Brick though it will be useful and used by other people. Users need to know what they can heavily rely on.%^
I agree that non-standard updates are worth noting. We can have two sections inside this doc as 1 Brick Official and 2) Other Updates. We should move the description of tools to the later section as well.

I think I'm already being pretty conservative. Would you like me to elide the mention of them completely? I think it's important to at least mention them

Adding unproved features to the versioning doc will confuse the users a lot. People will definitely ask how to use regulates, hasOutputSubstance, etc. We have no concrete answer to those other than some proofs-of-concept. They are definitely not in Brick standard. Though they may fall into Other Updates, I am worried it would cause more problems than benefits.

The modeling practices of Brick are consistent with the OWL RL ontology profile; we don't require anything more powerful than what is defined by OWL RL.

I wanted easier words for this change, but I also don't know how to do it better. I will leave it to you.

It's in the repo and thus part of the release, just like the tools. Keep in mind this is also what people will see about the Brick v1.1 release, so its important to mention what we have undertaken as part of this process

This can fall under Other Updates too.

I can't say I share your worries above (e.g. "unproved features"; these have been implemented, tested, documented and peer-reviewed!), but I've distinguished between the Brick changes and tooling updates as you suggested, which is a good idea. Are there any other major changes we have to make before releasing v1.1?

I am fine with this. Thanks!

Thanks! We absolutely do still need to have conversations about these other modeling components, as you said; releasing v1.1.0 is not the end of this discussion.

@shreyasnagare where's the list of root classes you are referring to? brick:Measurable is already in the generation script

This is in the Classes section of README.

Fixed! Thanks for the pointer


Error with new App Release

Hi Paul,
can you help me?
Der Vorgang konnte nicht abgeschlossen werden. (swift_paperless.(unknown context at $102b13650).RequestError-Fehler 0.)
The Error comes with iPad and IPhone App

Would you be able to share your logs from the App?

[28.3.2024, 17:49] [General] Checking login status
[28.3.2024, 17:49] [API] Initializing ApiRespository with connection
[28.3.2024, 17:49] [API] Getting backend versions
[28.3.2024, 17:49] [General] Fetch all store request
[28.3.2024, 17:49] [General] Fetch all store
[28.3.2024, 17:49] [API] API sequence next task was cancelled.
[28.3.2024, 17:49] [API] API sequence next task was cancelled.
[28.3.2024, 17:49] [API] API sequence next task was cancelled.
[28.3.2024, 17:49] [API] API sequence next task was cancelled.
[28.3.2024, 17:49] [API] API sequence next task was cancelled.
[28.3.2024, 17:49] [API] API sequence next task was cancelled.
[28.3.2024, 17:49] [API] Caught error fetching : Error Domain=NSURLErrorDomain Code=-999 UserInfo={NSErrorFailingURLStringKey=, NSErrorFailingURLKey=, _NSURLErrorRelatedURLSessionTaskErrorKey=, _NSURLErrorFailingURLSessionTaskErrorKey=, NSLocalizedDescription=}
[28.3.2024, 17:49] [General] Unable to get current user: Error Domain=NSURLErrorDomain Code=-999 UserInfo={NSErrorFailingURLStringKey=, NSErrorFailingURLKey=, _NSURLErrorRelatedURLSessionTaskErrorKey=, _NSURLErrorFailingURLSessionTaskErrorKey=, NSLocalizedDescription=}
[28.3.2024, 17:49] [API] Getting document sequence for filter
[28.3.2024, 17:49] [General] Fetch all store request
[28.3.2024, 17:49] [General] Fetch all store
[28.3.2024, 17:49] [General] Fetch all store complete
[28.3.2024, 17:49] [General] Fetch all store complete
[28.3.2024, 17:49] [General] Fetch all store request
[28.3.2024, 17:49] [General] Fetch all store
[28.3.2024, 17:49] [General] App becomes active
[28.3.2024, 17:49] [General] App is locked, attempt biometric unlock
[28.3.2024, 17:49] [General] App becomes inactive
[28.3.2024, 17:49] [General] App is unlocked by biometric
[28.3.2024, 17:49] [API] Backend version info: API version: 5, backend version: 2.6.3
[28.3.2024, 17:49] [API] API sequence has reached end (nextPage is nil)
[28.3.2024, 17:49] [API] API sequence has reached end (nextPage is nil)
[28.3.2024, 17:49] [API] API sequence has reached end (nextPage is nil)
[28.3.2024, 17:49] [API] API sequence fetch was empty
[28.3.2024, 17:49] [API] API sequence has reached end (nextPage is nil)
[28.3.2024, 17:49] [API] API sequence has reached end (nextPage is nil)
[28.3.2024, 17:49] [General] Fetch all store complete
[28.3.2024, 17:49] [API] Get thumbnail
[28.3.2024, 17:49] [API] Get thumbnail
[28.3.2024, 17:49] [API] Get thumbnail
[28.3.2024, 17:49] [API] Get thumbnail
[28.3.2024, 17:49] [General] App becomes active
[28.3.2024, 17:49] [API] Get thumbnail
[28.3.2024, 17:49] [API] Get thumbnail
[28.3.2024, 17:49] [API] Get thumbnail
[28.3.2024, 17:50] [API] Get thumbnail
[28.3.2024, 17:50] [General] Requesting log export

Hm maybe this is the task cancellation error, although I don't think that should actually be shown in this way.
Otherwise the log doesn't contain anything that stands out. Does this happen when you do anything specific?

From a log someone else sent me, it seems like it might be an error in the document sequence.
@xcojonny also reported this error in #69.

Here are my logs as per

[29.3.2024, 17:04] [General] Checking login status
[29.3.2024, 17:04] [API] Initializing ApiRespository with connection <private> <private>
[29.3.2024, 17:04] [General] App becomes active
[29.3.2024, 17:04] [API] Getting backend versions
[29.3.2024, 17:04] [General] Fetch all store request
[29.3.2024, 17:04] [General] Fetch all store
[29.3.2024, 17:04] [API] API sequence next task was cancelled.
[29.3.2024, 17:04] [API] API sequence next task was cancelled.
[29.3.2024, 17:04] [API] API sequence next task was cancelled.
[29.3.2024, 17:04] [API] API sequence next task was cancelled.
[29.3.2024, 17:04] [API] API sequence next task was cancelled.
[29.3.2024, 17:04] [API] API sequence next task was cancelled.
[29.3.2024, 17:04] [API] Caught error fetching <private>: Error Domain=NSURLErrorDomain Code=-999 UserInfo={NSErrorFailingURLStringKey=<private>, NSErrorFailingURLKey=<private>, _NSURLErrorRelatedURLSessionTaskErrorKey=<private>, _NSURLErrorFailingURLSessionTaskErrorKey=<private>, NSLocalizedDescription=<private>}
[29.3.2024, 17:04] [General] Unable to get current user: Error Domain=NSURLErrorDomain Code=-999 UserInfo={NSErrorFailingURLStringKey=<private>, NSErrorFailingURLKey=<private>, _NSURLErrorRelatedURLSessionTaskErrorKey=<private>, _NSURLErrorFailingURLSessionTaskErrorKey=<private>, NSLocalizedDescription=<private>}
[29.3.2024, 17:04] [API] Getting document sequence for filter
[29.3.2024, 17:04] [General] Fetch all store request
[29.3.2024, 17:04] [General] Fetch all store
[29.3.2024, 17:04] [General] Fetch all store complete
[29.3.2024, 17:04] [General] Fetch all store complete
[29.3.2024, 17:04] [General] Fetch all store request
[29.3.2024, 17:04] [General] Fetch all store
[29.3.2024, 17:04] [API] API sequence has reached end (nextPage is nil)
[29.3.2024, 17:04] [API] API sequence has reached end (nextPage is nil)
[29.3.2024, 17:04] [API] API sequence has reached end (nextPage is nil)
[29.3.2024, 17:04] [API] API sequence has reached end (nextPage is nil)
[29.3.2024, 17:04] [API] API sequence has reached end (nextPage is nil)
[29.3.2024, 17:04] [API] API sequence has reached end (nextPage is nil)
[29.3.2024, 17:04] [General] Fetch all store complete
[29.3.2024, 17:04] [API] Backend version info: API version: 5, backend version: 2.6.3
[29.3.2024, 17:04] [API] Get thumbnail
[29.3.2024, 17:04] [API] Get thumbnail
[29.3.2024, 17:04] [API] Get thumbnail
[29.3.2024, 17:04] [API] Get thumbnail
[29.3.2024, 17:04] [API] Get thumbnail
[29.3.2024, 17:04] [API] Get thumbnail
[29.3.2024, 17:04] [API] Get thumbnail
[29.3.2024, 17:04] [API] Get thumbnail
[29.3.2024, 17:04] [API] Get thumbnail
[29.3.2024, 17:04] [API] Get thumbnail
[29.3.2024, 17:04] [API] Get thumbnail
[29.3.2024, 17:04] [API] URLResponse to <private> has status code 404 != 200, body: <private>
[29.3.2024, 17:04] [API] Error in API sequence: Error Domain=swift_paperless.(unknown context at $1054eb650).RequestError Code=0
[29.3.2024, 17:04] [General] DocumentList failed to load more if needed: Error Domain=swift_paperless.(unknown context at $1054eb650).RequestError Code=0
[29.3.2024, 17:04] [API] Get thumbnail
[29.3.2024, 17:04] [API] Get thumbnail
[29.3.2024, 17:05] [General] Requesting log export

Now this is almost weirder. A fetch of the document sequence fails, and then some time later the app gets a 404 from the backend.
I can't really exactly what the app is trying to load in that call, I guess I'll have to tweak the level of redacted private values in the log a bit.

Just to confirm that I am receiving the exact same error opening the app since a few days. More or less fresh paperless instance without to much fancy going on.

My best guess is that the app previously silently swallowed these errors. I haven't had time to debug this yet.
For what it's worth, I don't observe these on my device and installation, so it has to be dependent on some configuration or usage pattern that I'm not covering.

As per my other issue, I am getting the same problem. Please see attached logs.
This means the app gets 401s, 403s and 404s from that API endpoint.
I guess this could mean it's not the exact same fundamental error across all instances, but the way they're now being surfaced is the same and new in the recent version.

So, that adds a 401 to the list of observed errors.
This means the app gets 401s, 403s and 404s from that API endpoint.
I guess this could mean it's not the exact same fundamental error across all instances, but the way they're now being surfaced is the same and new in the recent version.

I’m happy to use a TestFlight version as well

Build 48 contains the unredacted body in the case of an error, and the sanitized URL it's trying to get at that point.
@DrSpaldo @xcojonny @Cyberbuy could you jump on the TestFlight, grab that build and send some logs my way?

Ofc. Using build 48.
Der Vorgang konnte nicht abgeschlossen werden. (swift_paperless.(unknown context at $1007d7b88).RequestError-Fehler 0.)

 Could you check what happens if you try to open http://example.com/api/documents/?ordering=-added&page=2&page_size=50&truncate_content=true  in your logged in browser, where example.com  needs to be replaced with your instance URL?
This seems like maybe the app mistakenly thinks that there's a second page of documents when there isn't? Normally, the next page URL is taken from the response of the current page, which would mean in this case the backend is giving an incorrect next page URL? If that's the case, I guess I could work around it in the app.

Unfortunately this works like a charm, when using https...
with http not. Wondering why paperless gives back a http address.
I try to get my http 2 https redirect working. Then I can post an update.

HTTP 200 OK
Allow: GET, POST, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "count": 1213,
    "next": "http://example.de/api/documents/?ordering=-added&page=3&page_size=50&truncate_content=true",
    "previous": "http://example.com/api/documents/?ordering=-added&page_size=50&truncate_content=true",
    "all": [
        1759,
        1758,
        1757,
        1756,

      373
    ],
    "results": [
        {
            "id": 1703,
            "correspondent": 99,
            "document_type": 2,
            "storage_path": null,
            "title": "xxx",
            "content": "xxxx",
            "tags": [],
            "created": "2024-02-01T00:00:00+01:00",
            "created_date": "2024-02-01",
            "modified": "2024-02-28T08:12:26.990950+01:00",
            "added": "2024-02-28T08:12:25.731175+01:00",
            "archive_serial_number": null,
            "original_file_name": "xxx",
            "archived_file_name": "xxx",
            "owner": 2,
            "user_can_change": true,
            "is_shared_by_requester": false,
            "notes": [],
            "custom_fields": []
        },

+ many more

My set up is as followed:

Client -> Traefik -> paperless.
In the browser I'm using openid to authenticate.
In traefik I have set up an http to https redirect rule.

Just used a browser, which I haven't used before, I logged in and when using the http url, traefik returns 404 not found.

Maybe traefik's redirect strips the auth token from the request header? It feels to me like the cleanest solution would be to have PAPERLESS_URL include the https right away, so that you don't rely on the http to https redirect at all.
That's what my setup does I also have a http to https redirect in Caddy, but I get https in the return JSON, so the browser and the app don't have to traverse the redirect.

But isn't it unsafe to try authentication over http when being in the internet? While trying to reach the endpoint via http the credentials are kind of exposed.

I have a workaround deployed in build 49. Could you test that build @xcojonny (and others)?

Works, great.
Thanks a lot.

I asked about this on Matrix, and was made aware of https://github.com/paperless-ngx/paperless-ngx/pull/3135.
I don't have this set. With the workaround in place it won't matter, but this might fix the different scheme in the API response.

49 seems to have suppressed the error message so far for me as well. Thanks.

@DrSpaldo I think previously you were getting a 401 in the document sequence: that seems to be gone.
There seems to be another error now getting thumbnails. Could you check what happens if you open https://example.com/api/documents/557/thumb/ in your browser? (example.com must be replaced with your installation domain)

@paulgessinger When I open that link, replacing with my paperless domain, it loads the thumbnail fine…
could it be that the domain name is not set correctly?

The domain is intentionally replaced, so the logs do not accidentally leak your installation address. I'll add some more logging for the thumbnail error. I've created a new issue for this though: https://github.com/paulgessinger/swift-paperless/issues/73