aqora 0.31.3.dev0__tar.gz → 0.32.0.dev0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/Cargo.lock +7 -7
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/Cargo.toml +1 -1
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/PKG-INFO +1 -1
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/python/aqora/_aqora.pyi +2 -1
- aqora-0.32.0.dev0/python/aqora/auth.py +109 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/graphql/oauth2_refresh.graphql +1 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/graphql/oauth2_token.graphql +1 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/oauth2.rs +22 -4
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/python_module.rs +63 -30
- aqora-0.32.0.dev0/test/test_viewer_login.py +359 -0
- aqora-0.31.3.dev0/python/aqora/auth.py +0 -34
- aqora-0.31.3.dev0/test/test_viewer_login.py +0 -134
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/.dockerignore +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/.github/workflows/cd.yaml +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/.github/workflows/ci.yaml +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/.gitignore +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/CHANGELOG.md +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/Makefile +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/README.md +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/archiver/Cargo.toml +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/archiver/src/compress.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/archiver/src/decompress.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/archiver/src/error.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/archiver/src/indicatif.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/archiver/src/lib.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/archiver/src/repack.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/archiver/src/utils.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/archiver/tests/common.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/archiver/tests/identity.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/archiver/tests/utils.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/client/Cargo.toml +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/client/src/async_util.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/client/src/checksum.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/client/src/client.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/client/src/credentials.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/client/src/error.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/client/src/http.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/client/src/lib.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/client/src/multipart.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/client/src/retry.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/client/src/s3.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/client/src/sleep.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/client/src/tower_util.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/client/src/trace.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/client/src/utils.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/client/src/wasm.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/client/src/ws/mod.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/client/src/ws/tokio_impl.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/cog.toml +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/config/Cargo.toml +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/config/src/lib.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/.gitignore +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/Cargo.toml +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/Makefile +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/configure-pkg.sh +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/gen_schemas.py +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/src/aqora_client/graphql/CompleteDatasetVersionFileMutation.graphql +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/src/aqora_client/graphql/CreateDatasetVersionFileMutation.graphql +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/src/aqora_client/graphql/UploadDatasetVersionFilePartMutation.graphql +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/src/aqora_client/mod.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/src/async_util.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/src/csv/mod.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/src/csv/reader.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/src/dir/glob/ast.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/src/dir/glob/error.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/src/dir/glob/mod.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/src/dir/glob/parser.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/src/dir/glob/regex.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/src/dir/glob/utils.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/src/dir/glob/walk.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/src/dir/mod.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/src/error.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/src/format.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/src/fs.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/src/infer.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/src/ipc/mod.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/src/json/mod.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/src/json/reader.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/src/lib.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/src/process.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/src/read.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/src/schema.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/src/serde.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/src/utils.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/src/value.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/src/wasm/aqora_client/checksum.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/src/wasm/aqora_client/client.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/src/wasm/aqora_client/credentials.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/src/wasm/aqora_client/mod.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/src/wasm/aqora_client/multipart.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/src/wasm/aqora_client/retry.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/src/wasm/bindings.ts +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/src/wasm/blob.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/src/wasm/cast.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/src/wasm/csv.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/src/wasm/dir.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/src/wasm/error.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/src/wasm/format.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/src/wasm/infer.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/src/wasm/io.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/src/wasm/iter.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/src/wasm/mod.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/src/wasm/parquet.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/src/wasm/read.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/src/wasm/regex.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/src/wasm/serde.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/src/wasm/utils.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/src/wasm/write.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/src/write.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/tests/data/config/csv/custom_null_test.json +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/tests/data/files/csv/custom_null_test.csv +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/tests/data/files/csv/decimal_test.csv +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/tests/data/files/csv/dictionary_nullable_test.csv +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/tests/data/files/csv/example.csv +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/tests/data/files/csv/example_no_headers.csv +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/tests/data/files/csv/init_null_test.csv +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/tests/data/files/csv/null_test.csv +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/tests/data/files/csv/scientific_notation_test.csv +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/tests/data/files/csv/uk_cities.csv +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/tests/data/files/csv/uk_cities_with_headers.csv +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/tests/data/files/csv/various_types.csv +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/tests/data/files/csv/various_types_invalid.csv +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/tests/data/files/dir/images/cat-g0052cc4e9_640.jpg +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/tests/data/files/dir/images/cat-g0fcd844a4_640.jpg +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/tests/data/files/dir/images/cat-g11b1f4535_640.jpg +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/tests/data/files/dir/images/cat-g4ae5d18aa_640.jpg +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/tests/data/files/dir/images/cat-g4fe5d8c20_640.jpg +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/tests/data/files/dir/images/cat-g6052b543b_640.jpg +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/tests/data/files/dir/images/cat-ga3a48da6e_640.jpg +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/tests/data/files/dir/images/cat-gaf654b3a3_640.jpg +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/tests/data/files/dir/images/cat-gf324dae69_640.jpg +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/tests/data/files/dir/images/dog-g0973e56d5_640.jpg +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/tests/data/files/dir/images/dog-g7dcd325a6_640.jpg +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/tests/data/files/dir/images/dog-g904e7432d_640.jpg +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/tests/data/files/dir/images/dog-gaeaae353d_640.jpg +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/tests/data/files/dir/simple/test/cat/alice.json +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/tests/data/files/dir/simple/test/cat/bob.json +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/tests/data/files/dir/simple/test/dog/charlie.json +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/tests/data/files/dir/simple/test/dog/daniel.json +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/tests/data/files/dir/simple/train/cat/erin.json +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/tests/data/files/dir/simple/train/dog/frank.json +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/tests/data/files/dir/simple/train/dog/grace.json +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/tests/data/files/dir/simple/validate/cat/heidi.json +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/tests/data/files/dir/simple/validate/cat/ivan.json +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/tests/data/files/json/arrays.json +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/tests/data/files/json/basic.json +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/tests/data/files/json/basic.jsonl +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/tests/data/files/json/basic_lists.json +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/tests/data/files/json/basic_lists.jsonl +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/tests/data/files/json/basic_lists_no_headers.json +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/tests/data/files/json/basic_lists_no_headers.jsonl +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/tests/data/files/json/basic_nulls.json +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/tests/data/files/json/list_string_dict_nested.json +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/tests/data/files/json/list_string_dict_nested_nulls.json +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/tests/data/files/json/mixed_arrays.json +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/tests/data/files/json/nested_structs.json +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/tests/data/files/json/nested_with_nulls.json +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/tests/data/schema/csv/custom_null_test.json +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/tests/data/schema/csv/decimal_test.json +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/tests/data/schema/csv/dictionary_nullable_test.json +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/tests/data/schema/csv/example.json +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/tests/data/schema/csv/example_no_headers.json +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/tests/data/schema/csv/init_null_test.json +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/tests/data/schema/csv/null_test.json +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/tests/data/schema/csv/scientific_notation_test.json +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/tests/data/schema/csv/uk_cities.json +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/tests/data/schema/csv/uk_cities_with_headers.json +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/tests/data/schema/csv/various_types.json +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/tests/data/schema/csv/various_types_invalid.json +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/tests/data/schema/json/arrays.json +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/tests/data/schema/json/basic.json +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/tests/data/schema/json/basic_lists.json +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/tests/data/schema/json/basic_lists_no_headers.json +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/tests/data/schema/json/basic_nulls.json +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/tests/data/schema/json/list_string_dict_nested.json +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/tests/data/schema/json/list_string_dict_nested_nulls.json +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/tests/data/schema/json/mixed_arrays.json +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/tests/data/schema/json/nested_structs.json +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/tests/data/schema/json/nested_with_nulls.json +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/tests/wasm.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/tests/web/aqora_client.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/tests/web/data.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/tests/web/format.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/tests/web/io.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/tests/web/mod.graphql +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/tests/web/mod.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/data-utils/tests/web/utils.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/docker/Dockerfile.kubimo +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/docker/kubimo/marimo/marimo.css +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/docker/kubimo/marimo/marimo.toml +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/docker-bake.dev.hcl +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/docker-bake.hcl +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/install.py +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/pyproject.toml +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/python/aqora/__init__.py +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/python/aqora/_provider/__init__.py +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/python/aqora/_provider/client.py +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/python/aqora/_provider/formats.py +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/python/aqora/_provider/jobs.py +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/python/aqora/_provider/results.py +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/python/aqora/_provider/wire.py +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/python/aqora/fsspec.py +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/python/aqora/guppy/__init__.py +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/python/aqora/guppy/_deps.py +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/python/aqora/guppy/backend.py +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/python/aqora/guppy/job.py +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/python/aqora/iceberg.py +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/python/aqora/iceberg_fs.py +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/python/aqora/notebook.py +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/python/aqora/py.typed +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/python/aqora/pyarrow.py +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/python/aqora/pytket/__init__.py +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/python/aqora/pytket/_deps.py +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/python/aqora/pytket/backend.py +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/python/aqora/qiskit/__init__.py +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/python/aqora/qiskit/_deps.py +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/python/aqora/qiskit/backend.py +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/python/aqora/qiskit/client.py +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/python/aqora/qiskit/job.py +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/python/aqora/qiskit/primitives.py +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/python/aqora/qpu.py +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/runner/Cargo.toml +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/runner/src/ipython.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/runner/src/lib.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/runner/src/pipeline.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/runner/src/python.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/rust-toolchain +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/schema.graphql +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/cfg_file.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/colors.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/commands/add.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/commands/auth/mod.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/commands/auth/token.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/commands/clean.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/commands/dataset/common.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/commands/dataset/convert.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/commands/dataset/download.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/commands/dataset/infer.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/commands/dataset/mod.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/commands/dataset/new.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/commands/dataset/upload.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/commands/dataset/utils.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/commands/dataset/version/common.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/commands/dataset/version/list.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/commands/dataset/version/mod.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/commands/dataset/version/new.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/commands/dataset/version/reset.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/commands/global_args.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/commands/info.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/commands/install.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/commands/job/mod.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/commands/job/model.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/commands/lab.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/commands/login.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/commands/mod.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/commands/model/common.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/commands/model/download.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/commands/model/info.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/commands/model/mod.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/commands/new/dataset_marimo.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/commands/new/mod.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/commands/new/use_case.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/commands/pair/agent.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/commands/pair/mod.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/commands/pair/prompt.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/commands/pair/session.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/commands/pair/target.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/commands/python.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/commands/remove.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/commands/shell.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/commands/template.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/commands/test.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/commands/upload.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/commands/version.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/compress.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/config.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/credentials.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/dialog.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/dirs.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/download.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/error.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/evaluate.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/fs_lock.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/git.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/graphql/accept_competition_rules.graphql +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/graphql/competition_by_slug.graphql +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/graphql/complete_multipart_upload.graphql +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/graphql/create_dataset.graphql +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/graphql/create_multipart_upload.graphql +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/graphql/dataset_pair_editor.graphql +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/graphql/dataset_pair_editor_by_id.graphql +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/graphql/dataset_version_create.graphql +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/graphql/dataset_version_info.graphql +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/graphql/dataset_version_pair_editor.graphql +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/graphql/dataset_version_start_upload.graphql +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/graphql/finish_dataset_version_upload.graphql +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/graphql/get_competition_template.graphql +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/graphql/get_competition_use_case.graphql +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/graphql/get_dataset_by_slug.graphql +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/graphql/get_dataset_version_file_by_partition.graphql +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/graphql/get_dataset_version_files.graphql +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/graphql/get_dataset_versions.graphql +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/graphql/get_latest_dataset_version.graphql +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/graphql/get_latest_dataset_version_by_slug.graphql +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/graphql/get_viewer_related_entities.graphql +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/graphql/get_workspace_notebook_download_url.graphql +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/graphql/get_workspace_version_notebook_download_url.graphql +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/graphql/join_competition.graphql +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/graphql/latest_submission_version.graphql +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/graphql/login.graphql +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/graphql/oauth2_authorize.graphql +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/graphql/oauth2_redirect_subscription.graphql +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/graphql/oauth2_workspace_client.graphql +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/graphql/part_upload.graphql +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/graphql/provider_job_model.graphql +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/graphql/provider_model_info.graphql +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/graphql/reset_draft_dataset_version.graphql +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/graphql/update_submission.graphql +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/graphql/update_use_case.graphql +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/graphql/use_case_template_info.graphql +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/graphql/validate_submission.graphql +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/graphql/validate_use_case.graphql +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/graphql/viewer_info.graphql +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/graphql/workspace_pair_editor.graphql +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/graphql/workspace_runner_pair_editor_by_id.graphql +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/graphql/workspace_version_pair_editor.graphql +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/graphql/workspace_version_pair_editor_by_id.graphql +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/graphql_client.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/id.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/ipynb.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/lib.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/main.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/manifest.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/print.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/process.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/progress_bar.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/python.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/readme.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/revert_file.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/run.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/sentry.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/shutdown.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/upload.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/vscode.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/src/workspace.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/template/.gitignore +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/template/Cargo.toml +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/template/assets/conda_workspace/readme.py.hbs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/template/assets/dataset_marimo/.gitignore.hbs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/template/assets/dataset_marimo/.secrets.hbs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/template/assets/dataset_marimo/pyproject.toml.hbs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/template/assets/dataset_marimo/readme.py.hbs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/template/assets/use_case/.gitignore.hbs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/template/assets/use_case/README.md.hbs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/template/assets/use_case/data/.gitkeep +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/template/assets/use_case/pyproject.toml.hbs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/template/assets/use_case/template/.env +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/template/assets/use_case/template/.gitignore.hbs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/template/assets/use_case/template/README.md.hbs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/template/assets/use_case/template/pyproject.toml.hbs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/template/assets/use_case/template/submission/q3as_demo.ipynb +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/template/assets/use_case/template/submission/solution.ipynb.hbs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/template/assets/use_case/use_case/__init__.py +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/template/assets/use_case/use_case/test.py +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/template/assets/use_case/use_case/use_case.py +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/template/assets/workspace/.ignore.hbs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/template/assets/workspace/.secrets.hbs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/template/assets/workspace/pyproject.toml.hbs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/template/assets/workspace/readme.py.hbs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/template/src/dataset_marimo.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/template/src/lib.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/template/src/registry.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/template/src/use_case.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/template/src/utils.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/template/src/workspace.rs +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/test/test_aqora_client.py +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/test/test_aqorafs.py +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/test/test_exports.py +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/test/test_guppy_provider.py +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/test/test_pytket_provider.py +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/test/test_qiskit_provider.py +0 -0
- {aqora-0.31.3.dev0 → aqora-0.32.0.dev0}/test/test_universal_qpu.py +0 -0
|
@@ -139,7 +139,7 @@ dependencies = [
|
|
|
139
139
|
|
|
140
140
|
[[package]]
|
|
141
141
|
name = "aqora"
|
|
142
|
-
version = "0.
|
|
142
|
+
version = "0.32.0-dev.0"
|
|
143
143
|
dependencies = [
|
|
144
144
|
"aqora-archiver",
|
|
145
145
|
"aqora-client",
|
|
@@ -211,7 +211,7 @@ dependencies = [
|
|
|
211
211
|
|
|
212
212
|
[[package]]
|
|
213
213
|
name = "aqora-archiver"
|
|
214
|
-
version = "0.
|
|
214
|
+
version = "0.32.0-dev.0"
|
|
215
215
|
dependencies = [
|
|
216
216
|
"crc32fast",
|
|
217
217
|
"flate2",
|
|
@@ -232,7 +232,7 @@ dependencies = [
|
|
|
232
232
|
|
|
233
233
|
[[package]]
|
|
234
234
|
name = "aqora-client"
|
|
235
|
-
version = "0.
|
|
235
|
+
version = "0.32.0-dev.0"
|
|
236
236
|
dependencies = [
|
|
237
237
|
"async-trait",
|
|
238
238
|
"aws-config",
|
|
@@ -264,7 +264,7 @@ dependencies = [
|
|
|
264
264
|
|
|
265
265
|
[[package]]
|
|
266
266
|
name = "aqora-config"
|
|
267
|
-
version = "0.
|
|
267
|
+
version = "0.32.0-dev.0"
|
|
268
268
|
dependencies = [
|
|
269
269
|
"pep440_rs",
|
|
270
270
|
"pep508_rs",
|
|
@@ -276,7 +276,7 @@ dependencies = [
|
|
|
276
276
|
|
|
277
277
|
[[package]]
|
|
278
278
|
name = "aqora-data-utils"
|
|
279
|
-
version = "0.
|
|
279
|
+
version = "0.32.0-dev.0"
|
|
280
280
|
dependencies = [
|
|
281
281
|
"aqora-client",
|
|
282
282
|
"arrow",
|
|
@@ -325,7 +325,7 @@ dependencies = [
|
|
|
325
325
|
|
|
326
326
|
[[package]]
|
|
327
327
|
name = "aqora-runner"
|
|
328
|
-
version = "0.
|
|
328
|
+
version = "0.32.0-dev.0"
|
|
329
329
|
dependencies = [
|
|
330
330
|
"aqora-config",
|
|
331
331
|
"clap",
|
|
@@ -342,7 +342,7 @@ dependencies = [
|
|
|
342
342
|
|
|
343
343
|
[[package]]
|
|
344
344
|
name = "aqora-template"
|
|
345
|
-
version = "0.
|
|
345
|
+
version = "0.32.0-dev.0"
|
|
346
346
|
dependencies = [
|
|
347
347
|
"derive_builder",
|
|
348
348
|
"handlebars",
|
|
@@ -34,6 +34,7 @@ class ClientError(Exception): ...
|
|
|
34
34
|
|
|
35
35
|
class Client:
|
|
36
36
|
authenticated: bool
|
|
37
|
+
granted_scopes: list[str] | None
|
|
37
38
|
def __init__(
|
|
38
39
|
self, url: str | None = None, *, allow_insecure_host: bool | None = None
|
|
39
40
|
) -> None: ...
|
|
@@ -57,7 +58,7 @@ class Client:
|
|
|
57
58
|
def with_token(self, token: str) -> Client: ...
|
|
58
59
|
async def authorize_viewer(
|
|
59
60
|
self, scope: Sequence[str] | None = None
|
|
60
|
-
) -> ViewerAuthorization: ...
|
|
61
|
+
) -> ViewerAuthorization | None: ...
|
|
61
62
|
|
|
62
63
|
class ViewerAuthorization:
|
|
63
64
|
url: str
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import html
|
|
2
|
+
import warnings
|
|
3
|
+
from typing import Any, Sequence
|
|
4
|
+
|
|
5
|
+
from ._aqora import Client
|
|
6
|
+
|
|
7
|
+
# The grant a viewer made is remembered on marimo's runtime context, under this
|
|
8
|
+
# attribute, so that re-running a cell does not ask the same person again. It is
|
|
9
|
+
# stored on the context rather than in a module of our own because marimo installs
|
|
10
|
+
# a context per session: the grant then lives and dies with the session and cannot
|
|
11
|
+
# be reached from another one, even if marimo ever ran several sessions in one
|
|
12
|
+
# process. Anything process-wide would hand one viewer's token to another.
|
|
13
|
+
_GRANT_ATTR = "_aqora_viewer_grant"
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
def _covers(granted: Sequence[str] | None, requested: Sequence[str] | None) -> bool:
|
|
17
|
+
return set(requested or ["default"]) <= set(granted or [])
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def _session_context() -> Any:
|
|
21
|
+
"""marimo's runtime state for this session, or ``None`` if out of reach.
|
|
22
|
+
|
|
23
|
+
``get_context`` is a marimo internal, so the import and the call are both
|
|
24
|
+
guarded; no context simply means no caching.
|
|
25
|
+
"""
|
|
26
|
+
try:
|
|
27
|
+
from marimo._runtime.context import get_context
|
|
28
|
+
|
|
29
|
+
return get_context()
|
|
30
|
+
except Exception:
|
|
31
|
+
return None
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
async def viewer_login(
|
|
35
|
+
scope: Sequence[str] | None = None,
|
|
36
|
+
*,
|
|
37
|
+
client: Client | None = None,
|
|
38
|
+
timeout: float = 600.0,
|
|
39
|
+
label: str = "Sign in with aqora",
|
|
40
|
+
) -> Client:
|
|
41
|
+
"""Ask the person viewing this notebook to grant it access to their aqora account.
|
|
42
|
+
|
|
43
|
+
Renders a sign-in link in the current cell output, waits until they approve,
|
|
44
|
+
and returns a client authenticated as *them*. The grant is reused for the rest
|
|
45
|
+
of their session, so re-running a cell does not ask again; a fresh visit does.
|
|
46
|
+
The default ``Client()`` inside a workspace runner acts as the workspace owner;
|
|
47
|
+
use the returned client for anything done on the viewer's behalf.
|
|
48
|
+
|
|
49
|
+
Outside a workspace runner, in a notebook on your own machine, there is no
|
|
50
|
+
viewer to ask: the client returned acts as whoever ran ``aqora login``, with
|
|
51
|
+
that account's full access rather than ``scope``. That is meant for
|
|
52
|
+
development; the consent flow only runs on aqora.
|
|
53
|
+
"""
|
|
54
|
+
import marimo as mo # imported lazily; aqora does not depend on marimo
|
|
55
|
+
|
|
56
|
+
session = _session_context()
|
|
57
|
+
if session is not None:
|
|
58
|
+
cached, granted = getattr(session, _GRANT_ATTR, (None, None))
|
|
59
|
+
if cached is not None and _covers(granted, scope):
|
|
60
|
+
return cached
|
|
61
|
+
|
|
62
|
+
client = client or Client()
|
|
63
|
+
auth = await client.authorize_viewer(scope)
|
|
64
|
+
if auth is None:
|
|
65
|
+
return await _local_login(client)
|
|
66
|
+
mo.output.append(
|
|
67
|
+
mo.Html(
|
|
68
|
+
f'<a href="{html.escape(auth.url, quote=True)}"'
|
|
69
|
+
' target="_blank" rel="noopener noreferrer">'
|
|
70
|
+
f"{html.escape(label)}</a>"
|
|
71
|
+
)
|
|
72
|
+
)
|
|
73
|
+
viewer = await auth.wait(timeout=timeout)
|
|
74
|
+
mo.output.clear()
|
|
75
|
+
if session is not None:
|
|
76
|
+
try:
|
|
77
|
+
setattr(session, _GRANT_ATTR, (viewer, viewer.granted_scopes))
|
|
78
|
+
except Exception:
|
|
79
|
+
pass # a context that refuses attributes just means no caching
|
|
80
|
+
return viewer
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
async def _local_login(client: Client) -> Client:
|
|
84
|
+
"""The developer's own ``aqora login``, standing in for a viewer."""
|
|
85
|
+
# `aqora/__init__` imports this module before it defines ClientError
|
|
86
|
+
from . import ClientError
|
|
87
|
+
|
|
88
|
+
if not client.authenticated:
|
|
89
|
+
await client.authenticate()
|
|
90
|
+
try:
|
|
91
|
+
data = await client.send("query { viewer { username } }")
|
|
92
|
+
except ClientError as error:
|
|
93
|
+
codes = {
|
|
94
|
+
(graphql_error.get("extensions") or {}).get("code")
|
|
95
|
+
for graphql_error in error.graphql_errors or []
|
|
96
|
+
}
|
|
97
|
+
if "NOT_AUTHORIZED" not in codes:
|
|
98
|
+
raise
|
|
99
|
+
raise ClientError(
|
|
100
|
+
"viewer_login: not inside an aqora workspace runner and no aqora"
|
|
101
|
+
" credentials found; run `aqora login` first"
|
|
102
|
+
) from error
|
|
103
|
+
warnings.warn(
|
|
104
|
+
"viewer_login: not inside an aqora workspace runner; acting as"
|
|
105
|
+
f" {data['viewer']['username']} from `aqora login` with that account's"
|
|
106
|
+
" full access",
|
|
107
|
+
stacklevel=3,
|
|
108
|
+
)
|
|
109
|
+
return client
|
|
@@ -148,14 +148,18 @@ pub(crate) struct IssuedTokens {
|
|
|
148
148
|
pub access_token: String,
|
|
149
149
|
pub refresh_token: String,
|
|
150
150
|
pub expires_at: DateTime<Utc>,
|
|
151
|
+
/// The space delimited scopes the authorization server granted.
|
|
152
|
+
#[cfg_attr(not(feature = "extension-module"), allow(dead_code))]
|
|
153
|
+
pub scope: String,
|
|
151
154
|
}
|
|
152
155
|
|
|
153
156
|
impl IssuedTokens {
|
|
154
|
-
fn new(access_token: String, refresh_token: String, expires_in: i64) -> Self {
|
|
157
|
+
fn new(access_token: String, refresh_token: String, expires_in: i64, scope: String) -> Self {
|
|
155
158
|
Self {
|
|
156
159
|
access_token,
|
|
157
160
|
refresh_token,
|
|
158
161
|
expires_at: expires_at(expires_in),
|
|
162
|
+
scope,
|
|
159
163
|
}
|
|
160
164
|
}
|
|
161
165
|
|
|
@@ -202,7 +206,12 @@ pub(crate) async fn exchange_authorization_code(
|
|
|
202
206
|
token.unauthorized,
|
|
203
207
|
token.client_error,
|
|
204
208
|
token.issued.map(|issued| {
|
|
205
|
-
IssuedTokens::new(
|
|
209
|
+
IssuedTokens::new(
|
|
210
|
+
issued.access_token,
|
|
211
|
+
issued.refresh_token,
|
|
212
|
+
issued.expires_in,
|
|
213
|
+
issued.scope,
|
|
214
|
+
)
|
|
206
215
|
}),
|
|
207
216
|
)
|
|
208
217
|
}
|
|
@@ -232,7 +241,12 @@ pub(crate) async fn refresh_tokens(
|
|
|
232
241
|
refresh.unauthorized,
|
|
233
242
|
refresh.client_error,
|
|
234
243
|
refresh.issued.map(|issued| {
|
|
235
|
-
IssuedTokens::new(
|
|
244
|
+
IssuedTokens::new(
|
|
245
|
+
issued.access_token,
|
|
246
|
+
issued.refresh_token,
|
|
247
|
+
issued.expires_in,
|
|
248
|
+
issued.scope,
|
|
249
|
+
)
|
|
236
250
|
}),
|
|
237
251
|
)
|
|
238
252
|
}
|
|
@@ -408,7 +422,7 @@ mod tests {
|
|
|
408
422
|
client
|
|
409
423
|
}
|
|
410
424
|
|
|
411
|
-
const REFRESHED: &str = r#"{"data":{"oauth2Refresh":{"clientError":false,"unauthorized":false,"issued":{"expiresIn":3600,"accessToken":"refreshed-access","refreshToken":"refreshed-refresh"}}}}"#;
|
|
425
|
+
const REFRESHED: &str = r#"{"data":{"oauth2Refresh":{"clientError":false,"unauthorized":false,"issued":{"expiresIn":3600,"accessToken":"refreshed-access","refreshToken":"refreshed-refresh","scope":"default"}}}}"#;
|
|
412
426
|
|
|
413
427
|
#[tokio::test]
|
|
414
428
|
async fn viewer_credentials_returns_the_current_token() {
|
|
@@ -420,6 +434,7 @@ mod tests {
|
|
|
420
434
|
access_token: "access".to_string(),
|
|
421
435
|
refresh_token: "refresh".to_string(),
|
|
422
436
|
expires_at: Utc::now() + Duration::try_hours(1).unwrap(),
|
|
437
|
+
scope: "default".to_string(),
|
|
423
438
|
},
|
|
424
439
|
);
|
|
425
440
|
|
|
@@ -440,6 +455,7 @@ mod tests {
|
|
|
440
455
|
access_token: "access".to_string(),
|
|
441
456
|
refresh_token: "refresh".to_string(),
|
|
442
457
|
expires_at: Utc::now() + Duration::try_seconds(30).unwrap(),
|
|
458
|
+
scope: "default".to_string(),
|
|
443
459
|
},
|
|
444
460
|
);
|
|
445
461
|
|
|
@@ -460,6 +476,7 @@ mod tests {
|
|
|
460
476
|
access_token: "access".to_string(),
|
|
461
477
|
refresh_token: "refresh".to_string(),
|
|
462
478
|
expires_at: Utc::now() - Duration::try_hours(1).unwrap(),
|
|
479
|
+
scope: "default".to_string(),
|
|
463
480
|
},
|
|
464
481
|
);
|
|
465
482
|
|
|
@@ -509,6 +526,7 @@ mod tests {
|
|
|
509
526
|
access_token: "access".to_string(),
|
|
510
527
|
refresh_token: "refresh".to_string(),
|
|
511
528
|
expires_at: Utc::now() + Duration::try_seconds(30).unwrap(),
|
|
529
|
+
scope: "default".to_string(),
|
|
512
530
|
},
|
|
513
531
|
)));
|
|
514
532
|
|
|
@@ -24,7 +24,8 @@ use crate::{
|
|
|
24
24
|
graphql_client::{authenticate_client, unauthenticated_client},
|
|
25
25
|
oauth2::{
|
|
26
26
|
exchange_code, new_authorization_request, oauth2_workspace_client_query, spawn_first_code,
|
|
27
|
-
subscribe_code, AuthorizationRequest,
|
|
27
|
+
subscribe_code, AuthorizationRequest, IssuedTokens, Oauth2WorkspaceClientQuery,
|
|
28
|
+
ViewerCredentials,
|
|
28
29
|
},
|
|
29
30
|
workspace::download_workspace_notebook,
|
|
30
31
|
};
|
|
@@ -112,6 +113,9 @@ struct PyClient {
|
|
|
112
113
|
url: Url,
|
|
113
114
|
options: ClientOptions,
|
|
114
115
|
inner: Arc<RwLock<PyClientInner>>,
|
|
116
|
+
/// The scopes the viewer granted this client, for clients built from a
|
|
117
|
+
/// viewer authorization.
|
|
118
|
+
granted_scopes: Option<Vec<String>>,
|
|
115
119
|
}
|
|
116
120
|
|
|
117
121
|
struct PyClientInner {
|
|
@@ -131,6 +135,48 @@ fn get_environ<'py>(py: Python<'py>, key: &str) -> PyResult<Option<String>> {
|
|
|
131
135
|
}
|
|
132
136
|
}
|
|
133
137
|
|
|
138
|
+
/// The OAuth2 client this workspace runner authorizes viewers for, or `None`
|
|
139
|
+
/// when the request was not made with a runner api key.
|
|
140
|
+
async fn workspace_oauth2_client(
|
|
141
|
+
base: &Client,
|
|
142
|
+
) -> PyResult<Option<oauth2_workspace_client_query::Oauth2WorkspaceClientQueryOauth2WorkspaceClient>>
|
|
143
|
+
{
|
|
144
|
+
Ok(base
|
|
145
|
+
.send::<Oauth2WorkspaceClientQuery>(oauth2_workspace_client_query::Variables)
|
|
146
|
+
.await
|
|
147
|
+
.map_err(|error| client_error(error.into()))?
|
|
148
|
+
.oauth2_workspace_client)
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
/// A client authenticating as the viewer `tokens` were issued for, refreshing
|
|
152
|
+
/// them through `base`.
|
|
153
|
+
fn viewer_client(
|
|
154
|
+
url: Url,
|
|
155
|
+
options: ClientOptions,
|
|
156
|
+
base: Client,
|
|
157
|
+
client_id: String,
|
|
158
|
+
tokens: IssuedTokens,
|
|
159
|
+
) -> PyResult<PyClient> {
|
|
160
|
+
let granted_scopes = tokens
|
|
161
|
+
.scope
|
|
162
|
+
.split_whitespace()
|
|
163
|
+
.map(ToString::to_string)
|
|
164
|
+
.collect();
|
|
165
|
+
let mut client = unauthenticated_client(url.clone(), options.clone()).map_err(client_error)?;
|
|
166
|
+
client.graphql_layer(CredentialsLayer::new(ViewerCredentials::new(
|
|
167
|
+
base, client_id, tokens,
|
|
168
|
+
)));
|
|
169
|
+
Ok(PyClient {
|
|
170
|
+
url,
|
|
171
|
+
options,
|
|
172
|
+
inner: Arc::new(RwLock::new(PyClientInner {
|
|
173
|
+
client,
|
|
174
|
+
authenticated: true,
|
|
175
|
+
})),
|
|
176
|
+
granted_scopes: Some(granted_scopes),
|
|
177
|
+
})
|
|
178
|
+
}
|
|
179
|
+
|
|
134
180
|
#[pymethods]
|
|
135
181
|
impl PyClient {
|
|
136
182
|
#[new]
|
|
@@ -175,6 +221,7 @@ impl PyClient {
|
|
|
175
221
|
client,
|
|
176
222
|
authenticated: false,
|
|
177
223
|
})),
|
|
224
|
+
granted_scopes: None,
|
|
178
225
|
})
|
|
179
226
|
}
|
|
180
227
|
|
|
@@ -190,13 +237,15 @@ impl PyClient {
|
|
|
190
237
|
client,
|
|
191
238
|
authenticated: true,
|
|
192
239
|
})),
|
|
240
|
+
granted_scopes: None,
|
|
193
241
|
})
|
|
194
242
|
}
|
|
195
243
|
|
|
196
244
|
/// Start an OAuth2 authorization for the viewer of this workspace app.
|
|
197
245
|
///
|
|
198
|
-
///
|
|
199
|
-
/// `Authorization` header
|
|
246
|
+
/// Resolves to `None` outside an aqora workspace runner: only there are
|
|
247
|
+
/// requests without an `Authorization` header authenticated as the
|
|
248
|
+
/// workspace.
|
|
200
249
|
#[pyo3(signature = (scope=None))]
|
|
201
250
|
fn authorize_viewer<'py>(
|
|
202
251
|
&self,
|
|
@@ -208,16 +257,9 @@ impl PyClient {
|
|
|
208
257
|
let options = self.options.clone();
|
|
209
258
|
future_into_py(py, async move {
|
|
210
259
|
let base = inner.read().await.client.clone();
|
|
211
|
-
let workspace_client = base
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
.map_err(|error| client_error(error.into()))?
|
|
215
|
-
.oauth2_workspace_client
|
|
216
|
-
.ok_or_else(|| {
|
|
217
|
-
ClientError::new_err((
|
|
218
|
-
"viewer login is only available inside an aqora workspace runner",
|
|
219
|
-
))
|
|
220
|
-
})?;
|
|
260
|
+
let Some(workspace_client) = workspace_oauth2_client(&base).await? else {
|
|
261
|
+
return Ok(None);
|
|
262
|
+
};
|
|
221
263
|
let request = new_authorization_request(
|
|
222
264
|
&workspace_client.authorize_url,
|
|
223
265
|
&workspace_client.client_id,
|
|
@@ -231,13 +273,13 @@ impl PyClient {
|
|
|
231
273
|
let stream = subscribe_code(&base, &request)
|
|
232
274
|
.await
|
|
233
275
|
.map_err(client_error)?;
|
|
234
|
-
Ok(PyViewerAuthorization {
|
|
276
|
+
Ok(Some(PyViewerAuthorization {
|
|
235
277
|
request: Arc::new(request),
|
|
236
278
|
first_code: Arc::new(Mutex::new(Some(spawn_first_code(stream)))),
|
|
237
279
|
base,
|
|
238
280
|
url,
|
|
239
281
|
options,
|
|
240
|
-
})
|
|
282
|
+
}))
|
|
241
283
|
})
|
|
242
284
|
}
|
|
243
285
|
|
|
@@ -398,6 +440,11 @@ impl PyClient {
|
|
|
398
440
|
fn authenticated(&self) -> bool {
|
|
399
441
|
self.inner.blocking_read().authenticated
|
|
400
442
|
}
|
|
443
|
+
|
|
444
|
+
#[getter]
|
|
445
|
+
fn granted_scopes(&self) -> Option<Vec<String>> {
|
|
446
|
+
self.granted_scopes.clone()
|
|
447
|
+
}
|
|
401
448
|
}
|
|
402
449
|
|
|
403
450
|
/// A pending viewer authorization: send the viewer to `url` and `wait` for
|
|
@@ -467,21 +514,7 @@ impl PyViewerAuthorization {
|
|
|
467
514
|
let tokens = exchange_code(&base, &request, &code)
|
|
468
515
|
.await
|
|
469
516
|
.map_err(client_error)?;
|
|
470
|
-
|
|
471
|
-
unauthenticated_client(url.clone(), options.clone()).map_err(client_error)?;
|
|
472
|
-
client.graphql_layer(CredentialsLayer::new(ViewerCredentials::new(
|
|
473
|
-
base,
|
|
474
|
-
request.client_id.clone(),
|
|
475
|
-
tokens,
|
|
476
|
-
)));
|
|
477
|
-
Ok(PyClient {
|
|
478
|
-
url,
|
|
479
|
-
options,
|
|
480
|
-
inner: Arc::new(RwLock::new(PyClientInner {
|
|
481
|
-
client,
|
|
482
|
-
authenticated: true,
|
|
483
|
-
})),
|
|
484
|
-
})
|
|
517
|
+
viewer_client(url, options, base, request.client_id.clone(), tokens)
|
|
485
518
|
})
|
|
486
519
|
}
|
|
487
520
|
}
|