qcs-sdk-python 0.29.0rc0__tar.gz → 0.29.0rc1__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.
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/Cargo.lock +1 -1
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/PKG-INFO +1 -1
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/CHANGELOG.md +6 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/Cargo.toml +1 -1
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/python/stubtest-allowlist +1 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/executable.rs +3 -72
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/python/executable.rs +50 -102
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/qpu/api/mod.rs +26 -9
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/qpu/api/python.rs +6 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/qpu/execution.rs +2 -48
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/uv.lock +1 -1
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/pyproject.toml +1 -1
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/_qcs_sdk/__init__.pyi +8 -12
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/_qcs_sdk/qpu/api/__init__.pyi +4 -1
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/Cargo.toml +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/README-py.md +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/THIRDPARTY.yaml +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/.flake8 +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/Makefile.toml +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/README-py.md +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/README.md +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/THIRDPARTY.yaml +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/build.rs +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/examples/delayed_job_retrieval.rs +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/examples/execute.rs +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/examples/libquil.rs +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/examples/local.rs +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/examples/parametric_compilation.rs +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/examples/quil_t.rs +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/scripts/check-py-api.sh +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/scripts/lint-bindings.py +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/bin/diagnostics.rs +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/bin/stub_gen.rs +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/client.rs +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/compiler/isa/edge.rs +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/compiler/isa/mod.rs +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/compiler/isa/operator.rs +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/compiler/isa/qubit.rs +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/compiler/libquil.rs +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/compiler/mod.rs +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/compiler/python.rs +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/compiler/quilc.rs +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/compiler/rpcq.rs +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/diagnostics/mod.rs +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/diagnostics/python.rs +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/execution_data.rs +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/lib.rs +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/python/client.rs +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/python/errors.rs +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/python/execution_data.rs +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/python/mod.rs +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/python/nonzero.rs +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/python/register_data.rs +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/qpu/experimental/mod.rs +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/qpu/experimental/python.rs +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/qpu/experimental/random.rs +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/qpu/isa/mod.rs +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/qpu/isa/python.rs +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/qpu/mod.rs +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/qpu/python.rs +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/qpu/result_data.rs +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/qpu/snapshots/qcs__qpu__rewrite_arithmetic__describe_rewrite_arithmetic__it_allocates_for_multiple_expressions-2.snap +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/qpu/snapshots/qcs__qpu__rewrite_arithmetic__describe_rewrite_arithmetic__it_allocates_for_multiple_expressions.snap +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/qpu/snapshots/qcs__qpu__rewrite_arithmetic__describe_rewrite_arithmetic__it_converts_frequency_expressions-2.snap +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/qpu/snapshots/qcs__qpu__rewrite_arithmetic__describe_rewrite_arithmetic__it_converts_frequency_expressions.snap +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/qpu/snapshots/qcs__qpu__rewrite_arithmetic__describe_rewrite_arithmetic__it_converts_phases.snap +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/qpu/snapshots/qcs__qpu__rewrite_arithmetic__describe_rewrite_arithmetic__it_converts_set_scale_units.snap +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/qpu/snapshots/qcs__qpu__rewrite_arithmetic__describe_rewrite_arithmetic__it_substitutes_and_reuses_gate_expressions.snap +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/qpu/snapshots/qcs__qpu__rewrite_arithmetic__describe_rewrite_arithmetic__it_substitutes_gate_parameters.snap +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/qpu/translation/mod.rs +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/qpu/translation/python.rs +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/qvm/execution.rs +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/qvm/http.rs +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/qvm/libquil.rs +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/qvm/mod.rs +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/qvm/python.rs +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/qvm/snapshots/qcs__qvm__test__apply_valid_parameters_to_program.snap +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/register_data.rs +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/tests/aspen_9_isa.json +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/tests/basic_qvm.rs +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/tests/bell_state_response_data.hex +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/tests/compiler-isa-Aspen-8.json +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/tests/mocked_qpu.rs +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/tests/parametric_compilation.rs +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/tests/prng_test_cases.json +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/tests/qcs-isa-Aspen-8.json +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/tests/qvm_api.rs +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/tests/qvm_isa.json +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/tests/settings.toml +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/tests_py/_fixtures/aspen-m-3.json +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/tests_py/_fixtures/device-2q.json +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/tests_py/_qcs_config/secrets.toml +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/tests_py/_qcs_config/settings.toml +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/tests_py/compiler/__snapshots__/test_quilc.ambr +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/tests_py/compiler/test_quilc.py +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/tests_py/conftest.py +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/tests_py/execution_data/test_execution_data.py +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/tests_py/qpu/experimental/test_random.py +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/tests_py/qpu/test_api.py +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/tests_py/qpu/test_isa.py +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/tests_py/qpu/test_qpu.py +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/tests_py/qpu/test_translation.py +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/tests_py/qvm/test_qvm.py +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/tests_py/test_client.py +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/tests_py/test_diagnostics.py +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/tests_py/test_executable.py +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/tests_py/test_logging.py +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/tests_py/test_tracing_subscriber.py +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/__init__.py +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/_qcs_sdk/client/__init__.pyi +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/_qcs_sdk/compiler/__init__.pyi +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/_qcs_sdk/compiler/quilc/__init__.pyi +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/_qcs_sdk/diagnostics/__init__.pyi +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/_qcs_sdk/qpu/__init__.pyi +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/_qcs_sdk/qpu/experimental/__init__.pyi +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/_qcs_sdk/qpu/experimental/random/__init__.pyi +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/_qcs_sdk/qpu/isa/__init__.pyi +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/_qcs_sdk/qpu/translation/__init__.pyi +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/_qcs_sdk/qvm/__init__.pyi +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/_qcs_sdk/qvm/api/__init__.pyi +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/_tracing_subscriber/__init__.py +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/_tracing_subscriber/__init__.pyi +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/_tracing_subscriber/common/__init__.py +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/_tracing_subscriber/common/__init__.pyi +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/_tracing_subscriber/layers/__init__.py +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/_tracing_subscriber/layers/__init__.pyi +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/_tracing_subscriber/layers/file/__init__.py +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/_tracing_subscriber/layers/file/__init__.pyi +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/_tracing_subscriber/layers/otel_otlp/__init__.py +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/_tracing_subscriber/layers/otel_otlp/__init__.pyi +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/_tracing_subscriber/layers/otel_otlp_file/__init__.py +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/_tracing_subscriber/layers/otel_otlp_file/__init__.pyi +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/_tracing_subscriber/subscriber/__init__.py +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/_tracing_subscriber/subscriber/__init__.pyi +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/client/__init__.py +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/compiler/__init__.py +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/compiler/quilc/__init__.py +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/diagnostics/__init__.py +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/qpu/__init__.py +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/qpu/api/__init__.py +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/qpu/experimental/__init__.py +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/qpu/experimental/random/__init__.py +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/qpu/isa/__init__.py +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/qpu/translation/__init__.py +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/qvm/__init__.py +0 -0
- {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/qvm/api/__init__.py +0 -0
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
## 0.29.0-rc.1 (2026-09-24)
|
|
2
|
+
|
|
3
|
+
### Breaking Changes
|
|
4
|
+
|
|
5
|
+
- put endpoint-ID in the connection-strategy itself; explicitly add the ability to connect to simulated endpoints via gateway; use endpoint-ID for Gateway-bound jobs, when possible
|
|
6
|
+
|
|
1
7
|
## 0.29.0-rc.0 (2026-09-23)
|
|
2
8
|
|
|
3
9
|
### Breaking Changes
|
|
@@ -13,3 +13,4 @@ qcs_sdk\.(_qcs_sdk\.)?compiler\.quilc\.CompilerOpts\.__new__
|
|
|
13
13
|
qcs_sdk\.(_qcs_sdk\.)?Service\.(QCS|QPU|QUILC|QVM)
|
|
14
14
|
qcs_sdk\.(_qcs_sdk\.)?qpu\.isa\.Family\.(ANKAA|ASPEN|FULL|NONE)
|
|
15
15
|
qcs_sdk\.(_qcs_sdk\.)?qpu\.translation\.TranslationBackend\.(V1|V2)
|
|
16
|
+
qcs_sdk\.(_qcs_sdk\.)?qpu\.api\.EndpointLiveness\.(LIVE_ONLY|LIVE_OR_SIMULATED|SIMULATED_ONLY)
|
|
@@ -420,47 +420,6 @@ impl<'execution> Executable<'_, 'execution> {
|
|
|
420
420
|
.map_err(Error::from)
|
|
421
421
|
}
|
|
422
422
|
|
|
423
|
-
/// Compile the program and execute it on a QPU, waiting for results.
|
|
424
|
-
///
|
|
425
|
-
/// # Arguments
|
|
426
|
-
/// 1. `quantum_processor_id`: The name of the QPU to run on. This parameter affects the
|
|
427
|
-
/// lifetime of the [`Executable`]. The [`Executable`] will only live as long as the last
|
|
428
|
-
/// parameter passed into this function.
|
|
429
|
-
///
|
|
430
|
-
/// # Warning
|
|
431
|
-
///
|
|
432
|
-
/// This function uses [`tokio::task::spawn_blocking`] internally. See the docs for that function
|
|
433
|
-
/// to avoid blocking shutdown of the runtime.
|
|
434
|
-
///
|
|
435
|
-
/// # Returns
|
|
436
|
-
///
|
|
437
|
-
/// An [`ExecutionResult`].
|
|
438
|
-
///
|
|
439
|
-
/// # Errors
|
|
440
|
-
/// All errors are human readable by way of [`mod@thiserror`]. Some common errors are:
|
|
441
|
-
///
|
|
442
|
-
/// 1. You are not authenticated for QCS
|
|
443
|
-
/// 1. Your credentials don't have an active reservation for the QPU you requested
|
|
444
|
-
/// 1. [quilc] was not running.
|
|
445
|
-
/// 1. The `quil` that this [`Executable`] was constructed with was invalid.
|
|
446
|
-
/// 1. Missing parameters that should be filled with [`Executable::with_parameter`]
|
|
447
|
-
///
|
|
448
|
-
/// [quilc]: https://github.com/quil-lang/quilc
|
|
449
|
-
pub async fn execute_on_qpu_with_endpoint<S>(
|
|
450
|
-
&mut self,
|
|
451
|
-
quantum_processor_id: S,
|
|
452
|
-
endpoint_id: S,
|
|
453
|
-
translation_options: Option<TranslationOptions>,
|
|
454
|
-
) -> ExecutionResult
|
|
455
|
-
where
|
|
456
|
-
S: Into<Cow<'execution, str>>,
|
|
457
|
-
{
|
|
458
|
-
let job_handle = self
|
|
459
|
-
.submit_to_qpu_with_endpoint(quantum_processor_id, endpoint_id, translation_options)
|
|
460
|
-
.await?;
|
|
461
|
-
self.retrieve_results(job_handle).await
|
|
462
|
-
}
|
|
463
|
-
|
|
464
423
|
/// Compile the program and execute it on a QCS endpoint, waiting for results.
|
|
465
424
|
///
|
|
466
425
|
/// # Arguments
|
|
@@ -560,31 +519,6 @@ impl<'execution> Executable<'_, 'execution> {
|
|
|
560
519
|
Ok(job_handle)
|
|
561
520
|
}
|
|
562
521
|
|
|
563
|
-
/// Compile and submit the program to a QCS endpoint, but do not wait for execution to complete.
|
|
564
|
-
///
|
|
565
|
-
/// Call [`Executable::retrieve_results`] to wait for execution to complete and retrieve the
|
|
566
|
-
/// results.
|
|
567
|
-
///
|
|
568
|
-
/// # Errors
|
|
569
|
-
///
|
|
570
|
-
/// See [`Executable::execute_on_qpu`].
|
|
571
|
-
pub async fn submit_to_qpu_with_endpoint<S>(
|
|
572
|
-
&mut self,
|
|
573
|
-
quantum_processor_id: S,
|
|
574
|
-
endpoint_id: S,
|
|
575
|
-
translation_options: Option<TranslationOptions>,
|
|
576
|
-
) -> Result<JobHandle<'execution>, Error>
|
|
577
|
-
where
|
|
578
|
-
S: Into<Cow<'execution, str>>,
|
|
579
|
-
{
|
|
580
|
-
let job_handle = self
|
|
581
|
-
.qpu_for_id(quantum_processor_id)
|
|
582
|
-
.await?
|
|
583
|
-
.submit_to_endpoint_id(&self.params, endpoint_id.into(), translation_options)
|
|
584
|
-
.await?;
|
|
585
|
-
Ok(job_handle)
|
|
586
|
-
}
|
|
587
|
-
|
|
588
522
|
/// Cancel a job that has yet to begin executing.
|
|
589
523
|
///
|
|
590
524
|
/// This action is *not* atomic, and will attempt to cancel a job even if it cannot be cancelled. A
|
|
@@ -754,7 +688,6 @@ impl From<qvm::Error> for Error {
|
|
|
754
688
|
pub struct JobHandle<'executable> {
|
|
755
689
|
job_id: JobId,
|
|
756
690
|
quantum_processor_id: Cow<'executable, str>,
|
|
757
|
-
endpoint_id: Option<Cow<'executable, str>>,
|
|
758
691
|
readout_map: HashMap<String, String>,
|
|
759
692
|
execution_options: ExecutionOptions,
|
|
760
693
|
}
|
|
@@ -764,7 +697,6 @@ impl<'a> JobHandle<'a> {
|
|
|
764
697
|
pub(crate) fn new<S>(
|
|
765
698
|
job_id: JobId,
|
|
766
699
|
quantum_processor_id: S,
|
|
767
|
-
endpoint_id: Option<S>,
|
|
768
700
|
readout_map: HashMap<String, String>,
|
|
769
701
|
execution_options: ExecutionOptions,
|
|
770
702
|
) -> Self
|
|
@@ -774,7 +706,6 @@ impl<'a> JobHandle<'a> {
|
|
|
774
706
|
Self {
|
|
775
707
|
job_id,
|
|
776
708
|
quantum_processor_id: quantum_processor_id.into(),
|
|
777
|
-
endpoint_id: endpoint_id.map(Into::into),
|
|
778
709
|
readout_map,
|
|
779
710
|
execution_options,
|
|
780
711
|
}
|
|
@@ -792,11 +723,11 @@ impl<'a> JobHandle<'a> {
|
|
|
792
723
|
&self.quantum_processor_id
|
|
793
724
|
}
|
|
794
725
|
|
|
795
|
-
/// The ID of the endpoint to which the job was submitted, if
|
|
796
|
-
///
|
|
726
|
+
/// The ID of the endpoint to which the job was submitted, if the job's
|
|
727
|
+
/// [`ConnectionStrategy`](crate::qpu::api::ConnectionStrategy) specified one.
|
|
797
728
|
#[must_use]
|
|
798
729
|
pub fn endpoint_id(&self) -> Option<&str> {
|
|
799
|
-
self.
|
|
730
|
+
self.execution_options.connection_strategy().endpoint_id()
|
|
800
731
|
}
|
|
801
732
|
|
|
802
733
|
/// The readout map from source readout memory locations to the
|
|
@@ -234,160 +234,108 @@ impl PyExecutable {
|
|
|
234
234
|
|
|
235
235
|
/// Compile the program and execute it on a QPU, waiting for results.
|
|
236
236
|
///
|
|
237
|
-
/// :param `
|
|
238
|
-
///
|
|
237
|
+
/// :param `execution_options`: To target a specific endpoint, use a ``ConnectionStrategy``
|
|
238
|
+
/// that carries an endpoint ID, e.g. ``ConnectionStrategy.EndpointId(...)``.
|
|
239
239
|
///
|
|
240
240
|
/// :raises `ExecutionError`: If the job fails to execute.
|
|
241
|
-
#[pyo3(signature = (quantum_processor_id,
|
|
241
|
+
#[pyo3(signature = (quantum_processor_id, translation_options = None, execution_options = None))]
|
|
242
242
|
pub fn execute_on_qpu(
|
|
243
243
|
&self,
|
|
244
244
|
py: Python<'_>,
|
|
245
245
|
quantum_processor_id: String,
|
|
246
|
-
endpoint_id: Option<String>,
|
|
247
246
|
translation_options: Option<TranslationOptions>,
|
|
248
247
|
execution_options: Option<ExecutionOptions>,
|
|
249
248
|
) -> PyResult<ExecutionData> {
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
),
|
|
261
|
-
None => py_sync!(
|
|
262
|
-
py,
|
|
263
|
-
py_executable_data!(
|
|
264
|
-
self,
|
|
265
|
-
execute_on_qpu,
|
|
266
|
-
quantum_processor_id,
|
|
267
|
-
translation_options,
|
|
268
|
-
&execution_options.unwrap_or_default(),
|
|
269
|
-
)
|
|
270
|
-
),
|
|
271
|
-
}
|
|
249
|
+
py_sync!(
|
|
250
|
+
py,
|
|
251
|
+
py_executable_data!(
|
|
252
|
+
self,
|
|
253
|
+
execute_on_qpu,
|
|
254
|
+
quantum_processor_id,
|
|
255
|
+
translation_options,
|
|
256
|
+
&execution_options.unwrap_or_default(),
|
|
257
|
+
)
|
|
258
|
+
)
|
|
272
259
|
}
|
|
273
260
|
/// Compile the program and execute it on a QPU, waiting for results
|
|
274
261
|
/// (async analog of `Executable.execute_on_qpu`).
|
|
275
262
|
///
|
|
276
|
-
/// :param `
|
|
277
|
-
///
|
|
263
|
+
/// :param `execution_options`: To target a specific endpoint, use a ``ConnectionStrategy``
|
|
264
|
+
/// that carries an endpoint ID, e.g. ``ConnectionStrategy.EndpointId(...)``.
|
|
278
265
|
///
|
|
279
266
|
/// :raises `ExecutionError`: If the job fails to execute.
|
|
280
|
-
#[pyo3(signature = (quantum_processor_id,
|
|
267
|
+
#[pyo3(signature = (quantum_processor_id, translation_options = None, execution_options = None))]
|
|
281
268
|
pub fn execute_on_qpu_async<'py>(
|
|
282
269
|
&self,
|
|
283
270
|
py: Python<'py>,
|
|
284
271
|
quantum_processor_id: String,
|
|
285
|
-
endpoint_id: Option<String>,
|
|
286
272
|
translation_options: Option<TranslationOptions>,
|
|
287
273
|
execution_options: Option<ExecutionOptions>,
|
|
288
274
|
) -> PyResult<Awaitable<'py, ExecutionData>> {
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
translation_options,
|
|
298
|
-
),
|
|
299
|
-
),
|
|
300
|
-
None => pyo3_async_runtimes::tokio::future_into_py(
|
|
301
|
-
py,
|
|
302
|
-
py_executable_data!(
|
|
303
|
-
self,
|
|
304
|
-
execute_on_qpu,
|
|
305
|
-
quantum_processor_id,
|
|
306
|
-
translation_options,
|
|
307
|
-
&execution_options.unwrap_or_default(),
|
|
308
|
-
),
|
|
275
|
+
pyo3_async_runtimes::tokio::future_into_py(
|
|
276
|
+
py,
|
|
277
|
+
py_executable_data!(
|
|
278
|
+
self,
|
|
279
|
+
execute_on_qpu,
|
|
280
|
+
quantum_processor_id,
|
|
281
|
+
translation_options,
|
|
282
|
+
&execution_options.unwrap_or_default(),
|
|
309
283
|
),
|
|
310
|
-
|
|
284
|
+
)
|
|
311
285
|
.map(Into::into)
|
|
312
286
|
}
|
|
313
287
|
|
|
314
288
|
/// Compile the program and execute it on a QPU, without waiting for results.
|
|
315
289
|
///
|
|
316
|
-
/// :param `
|
|
317
|
-
///
|
|
290
|
+
/// :param `execution_options`: To target a specific endpoint, use a ``ConnectionStrategy``
|
|
291
|
+
/// that carries an endpoint ID, e.g. ``ConnectionStrategy.EndpointId(...)``.
|
|
318
292
|
///
|
|
319
293
|
/// :raises `ExecutionError`: If the job fails to execute.
|
|
320
|
-
#[pyo3(signature = (quantum_processor_id,
|
|
294
|
+
#[pyo3(signature = (quantum_processor_id, translation_options = None, execution_options = None))]
|
|
321
295
|
pub fn submit_to_qpu(
|
|
322
296
|
&self,
|
|
323
297
|
py: Python<'_>,
|
|
324
298
|
quantum_processor_id: String,
|
|
325
|
-
endpoint_id: Option<String>,
|
|
326
299
|
translation_options: Option<TranslationOptions>,
|
|
327
300
|
execution_options: Option<ExecutionOptions>,
|
|
328
301
|
) -> PyResult<PyJobHandle> {
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
),
|
|
340
|
-
None => py_sync!(
|
|
341
|
-
py,
|
|
342
|
-
py_job_handle!(
|
|
343
|
-
self,
|
|
344
|
-
submit_to_qpu,
|
|
345
|
-
quantum_processor_id,
|
|
346
|
-
translation_options,
|
|
347
|
-
&execution_options.unwrap_or_default(),
|
|
348
|
-
)
|
|
349
|
-
),
|
|
350
|
-
}
|
|
302
|
+
py_sync!(
|
|
303
|
+
py,
|
|
304
|
+
py_job_handle!(
|
|
305
|
+
self,
|
|
306
|
+
submit_to_qpu,
|
|
307
|
+
quantum_processor_id,
|
|
308
|
+
translation_options,
|
|
309
|
+
&execution_options.unwrap_or_default(),
|
|
310
|
+
)
|
|
311
|
+
)
|
|
351
312
|
}
|
|
352
313
|
|
|
353
314
|
/// Compile the program and execute it on a QPU, without waiting for results
|
|
354
315
|
/// (async analog of `Executable.submit_to_qpu`).
|
|
355
316
|
///
|
|
356
|
-
/// :param `
|
|
357
|
-
///
|
|
317
|
+
/// :param `execution_options`: To target a specific endpoint, use a ``ConnectionStrategy``
|
|
318
|
+
/// that carries an endpoint ID, e.g. ``ConnectionStrategy.EndpointId(...)``.
|
|
358
319
|
///
|
|
359
320
|
/// :raises `ExecutionError`: If the job fails to execute.
|
|
360
|
-
#[pyo3(signature = (quantum_processor_id,
|
|
321
|
+
#[pyo3(signature = (quantum_processor_id, translation_options = None, execution_options = None))]
|
|
361
322
|
pub fn submit_to_qpu_async<'py>(
|
|
362
323
|
&self,
|
|
363
324
|
py: Python<'py>,
|
|
364
325
|
quantum_processor_id: String,
|
|
365
|
-
endpoint_id: Option<String>,
|
|
366
326
|
translation_options: Option<TranslationOptions>,
|
|
367
327
|
execution_options: Option<ExecutionOptions>,
|
|
368
328
|
) -> PyResult<Awaitable<'py, PyJobHandle>> {
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
translation_options,
|
|
378
|
-
),
|
|
379
|
-
),
|
|
380
|
-
None => pyo3_async_runtimes::tokio::future_into_py(
|
|
381
|
-
py,
|
|
382
|
-
py_job_handle!(
|
|
383
|
-
self,
|
|
384
|
-
submit_to_qpu,
|
|
385
|
-
quantum_processor_id,
|
|
386
|
-
translation_options,
|
|
387
|
-
&execution_options.unwrap_or_default(),
|
|
388
|
-
),
|
|
329
|
+
pyo3_async_runtimes::tokio::future_into_py(
|
|
330
|
+
py,
|
|
331
|
+
py_job_handle!(
|
|
332
|
+
self,
|
|
333
|
+
submit_to_qpu,
|
|
334
|
+
quantum_processor_id,
|
|
335
|
+
translation_options,
|
|
336
|
+
&execution_options.unwrap_or_default(),
|
|
389
337
|
),
|
|
390
|
-
|
|
338
|
+
)
|
|
391
339
|
.map(Into::into)
|
|
392
340
|
}
|
|
393
341
|
|
|
@@ -273,7 +273,13 @@ pub async fn cancel_job(
|
|
|
273
273
|
client: &Qcs,
|
|
274
274
|
execution_options: &ExecutionOptions,
|
|
275
275
|
) -> Result<(), QpuApiError> {
|
|
276
|
-
cancel_jobs(
|
|
276
|
+
cancel_jobs(
|
|
277
|
+
vec![job_id],
|
|
278
|
+
quantum_processor_id,
|
|
279
|
+
client,
|
|
280
|
+
execution_options,
|
|
281
|
+
)
|
|
282
|
+
.await
|
|
277
283
|
}
|
|
278
284
|
|
|
279
285
|
#[expect(clippy::missing_errors_doc)]
|
|
@@ -554,6 +560,7 @@ pub enum EndpointLiveness {
|
|
|
554
560
|
|
|
555
561
|
/// The connection strategy to use when submitting and retrieving jobs from a QPU.
|
|
556
562
|
#[derive(Clone, Debug, PartialEq, Eq)]
|
|
563
|
+
#[cfg_attr(not(feature = "python"), optipy::strip_pyo3)]
|
|
557
564
|
#[cfg_attr(feature = "stubs", gen_stub_pyclass_complex_enum)]
|
|
558
565
|
#[cfg_attr(
|
|
559
566
|
feature = "python",
|
|
@@ -561,6 +568,7 @@ pub enum EndpointLiveness {
|
|
|
561
568
|
)]
|
|
562
569
|
pub enum ConnectionStrategy {
|
|
563
570
|
/// Connect through the publicly accessible gateway.
|
|
571
|
+
#[pyo3(constructor = (liveness=EndpointLiveness::default(), endpoint_id=None))]
|
|
564
572
|
Gateway {
|
|
565
573
|
/// Whether the gateway should route to live hardware, simulated hardware, or either.
|
|
566
574
|
liveness: EndpointLiveness,
|
|
@@ -578,6 +586,18 @@ pub enum ConnectionStrategy {
|
|
|
578
586
|
EndpointAddress(String),
|
|
579
587
|
}
|
|
580
588
|
|
|
589
|
+
impl ConnectionStrategy {
|
|
590
|
+
/// The endpoint ID carried by this strategy, if any.
|
|
591
|
+
#[must_use]
|
|
592
|
+
pub fn endpoint_id(&self) -> Option<&str> {
|
|
593
|
+
match self {
|
|
594
|
+
Self::EndpointId(endpoint_id) => Some(endpoint_id),
|
|
595
|
+
Self::Gateway { endpoint_id, .. } => endpoint_id.as_deref(),
|
|
596
|
+
Self::DirectAccess() | Self::EndpointAddress(_) => None,
|
|
597
|
+
}
|
|
598
|
+
}
|
|
599
|
+
}
|
|
600
|
+
|
|
581
601
|
impl Default for ConnectionStrategy {
|
|
582
602
|
fn default() -> Self {
|
|
583
603
|
Self::Gateway {
|
|
@@ -599,13 +619,8 @@ fn resolve_target<T>(
|
|
|
599
619
|
by_endpoint_id: impl FnOnce(String) -> T,
|
|
600
620
|
by_quantum_processor_id: impl FnOnce(String) -> T,
|
|
601
621
|
) -> Result<Option<T>, QpuApiError> {
|
|
602
|
-
let
|
|
603
|
-
|
|
604
|
-
ConnectionStrategy::Gateway { endpoint_id, .. } => endpoint_id.as_ref(),
|
|
605
|
-
ConnectionStrategy::DirectAccess() | ConnectionStrategy::EndpointAddress(_) => None,
|
|
606
|
-
};
|
|
607
|
-
if let Some(endpoint_id) = strategy_endpoint_id {
|
|
608
|
-
return Ok(Some(by_endpoint_id(endpoint_id.clone())));
|
|
622
|
+
if let Some(endpoint_id) = connection_strategy.endpoint_id() {
|
|
623
|
+
return Ok(Some(by_endpoint_id(endpoint_id.to_owned())));
|
|
609
624
|
}
|
|
610
625
|
if let Some(quantum_processor_id) = quantum_processor_id {
|
|
611
626
|
return Ok(Some(by_quantum_processor_id(
|
|
@@ -698,7 +713,9 @@ pub trait ExecutionTarget<'a> {
|
|
|
698
713
|
client: &Qcs,
|
|
699
714
|
quantum_processor_id: Option<&str>,
|
|
700
715
|
) -> Result<ControllerClient<GrpcConnection>, QpuApiError> {
|
|
701
|
-
let service = self
|
|
716
|
+
let service = self
|
|
717
|
+
.get_qpu_grpc_connection(client, quantum_processor_id)
|
|
718
|
+
.await?;
|
|
702
719
|
Ok(ControllerClient::new(service)
|
|
703
720
|
.max_encoding_message_size(MAX_CONTROLLER_OUTBOUND_REQUEST_SIZE)
|
|
704
721
|
// do not limit the received response size, although practically the limit is 4Gb due
|
|
@@ -436,6 +436,12 @@ impl ConnectionStrategy {
|
|
|
436
436
|
Self::default()
|
|
437
437
|
}
|
|
438
438
|
|
|
439
|
+
fn get_endpoint_id(&self) -> PyResult<String> {
|
|
440
|
+
self.endpoint_id().map(ToOwned::to_owned).ok_or_else(|| {
|
|
441
|
+
errors::QpuApiError::new_err("ConnectionStrategy does not have an endpoint ID")
|
|
442
|
+
})
|
|
443
|
+
}
|
|
444
|
+
|
|
439
445
|
#[gen_stub(override_return_type(
|
|
440
446
|
type_repr = "tuple[str] | tuple[EndpointLiveness, str | None] | tuple[()]"
|
|
441
447
|
))]
|
|
@@ -18,9 +18,7 @@ use crate::execution_data::{MemoryReferenceParseError, ResultData};
|
|
|
18
18
|
use crate::qpu::translation::translate;
|
|
19
19
|
use crate::{ExecutionData, JobHandle};
|
|
20
20
|
|
|
21
|
-
use super::api::{
|
|
22
|
-
retrieve_results, submit, ConnectionStrategy, ExecutionOptions, ExecutionOptionsBuilder,
|
|
23
|
-
};
|
|
21
|
+
use super::api::{retrieve_results, submit, ExecutionOptions};
|
|
24
22
|
use super::translation::{EncryptedTranslationResult, TranslationOptions};
|
|
25
23
|
use super::QpuResultData;
|
|
26
24
|
use super::{get_isa, GetIsaError};
|
|
@@ -180,54 +178,11 @@ impl<'a> Execution<'a> {
|
|
|
180
178
|
) -> Result<JobHandle<'a>, Error> {
|
|
181
179
|
tracing::debug!(quantum_processor_id=%self.quantum_processor_id, "submitting job to QPU");
|
|
182
180
|
|
|
183
|
-
self.submit_to_target(
|
|
184
|
-
params,
|
|
185
|
-
None,
|
|
186
|
-
Some(&self.quantum_processor_id.clone()),
|
|
187
|
-
translation_options,
|
|
188
|
-
execution_options,
|
|
189
|
-
)
|
|
190
|
-
.await
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
/// Run on specific QCS endpoint and wait for the results.
|
|
194
|
-
pub(crate) async fn submit_to_endpoint_id<S>(
|
|
195
|
-
&mut self,
|
|
196
|
-
params: &Parameters,
|
|
197
|
-
endpoint_id: S,
|
|
198
|
-
translation_options: Option<TranslationOptions>,
|
|
199
|
-
) -> Result<JobHandle<'a>, Error>
|
|
200
|
-
where
|
|
201
|
-
S: Into<Cow<'a, str>>,
|
|
202
|
-
{
|
|
203
|
-
let endpoint_id: Cow<'a, str> = endpoint_id.into();
|
|
204
|
-
let connection_strategy = ConnectionStrategy::EndpointId(endpoint_id.clone().into_owned());
|
|
205
|
-
self.submit_to_target(
|
|
206
|
-
params,
|
|
207
|
-
Some(&endpoint_id),
|
|
208
|
-
None,
|
|
209
|
-
translation_options,
|
|
210
|
-
&ExecutionOptionsBuilder::default()
|
|
211
|
-
.connection_strategy(connection_strategy)
|
|
212
|
-
.build()
|
|
213
|
-
.expect("valid execution options"),
|
|
214
|
-
)
|
|
215
|
-
.await
|
|
216
|
-
}
|
|
217
|
-
|
|
218
|
-
async fn submit_to_target(
|
|
219
|
-
&mut self,
|
|
220
|
-
params: &Parameters,
|
|
221
|
-
endpoint_id: Option<&str>,
|
|
222
|
-
quantum_processor_id: Option<&str>,
|
|
223
|
-
translation_options: Option<TranslationOptions>,
|
|
224
|
-
execution_options: &ExecutionOptions,
|
|
225
|
-
) -> Result<JobHandle<'a>, Error> {
|
|
226
181
|
let EncryptedTranslationResult { job, readout_map } =
|
|
227
182
|
self.translate(translation_options).await?;
|
|
228
183
|
|
|
229
184
|
let job_id = submit(
|
|
230
|
-
quantum_processor_id,
|
|
185
|
+
Some(&self.quantum_processor_id),
|
|
231
186
|
job,
|
|
232
187
|
params,
|
|
233
188
|
self.client.as_ref(),
|
|
@@ -238,7 +193,6 @@ impl<'a> Execution<'a> {
|
|
|
238
193
|
Ok(JobHandle::new(
|
|
239
194
|
job_id,
|
|
240
195
|
self.quantum_processor_id.to_string(),
|
|
241
|
-
endpoint_id.map(ToOwned::to_owned),
|
|
242
196
|
readout_map,
|
|
243
197
|
execution_options.clone(),
|
|
244
198
|
))
|
|
@@ -149,22 +149,20 @@ class Executable:
|
|
|
149
149
|
def execute_on_qpu(
|
|
150
150
|
self,
|
|
151
151
|
quantum_processor_id: builtins.str,
|
|
152
|
-
endpoint_id: typing.Optional[builtins.str] = None,
|
|
153
152
|
translation_options: typing.Optional[translation.TranslationOptions] = None,
|
|
154
153
|
execution_options: typing.Optional[api.ExecutionOptions] = None,
|
|
155
154
|
) -> ExecutionData:
|
|
156
155
|
r"""
|
|
157
156
|
Compile the program and execute it on a QPU, waiting for results.
|
|
158
157
|
|
|
159
|
-
:param `
|
|
160
|
-
|
|
158
|
+
:param `execution_options`: To target a specific endpoint, use a ``ConnectionStrategy``
|
|
159
|
+
that carries an endpoint ID, e.g. ``ConnectionStrategy.EndpointId(...)``.
|
|
161
160
|
|
|
162
161
|
:raises `ExecutionError`: If the job fails to execute.
|
|
163
162
|
"""
|
|
164
163
|
def execute_on_qpu_async(
|
|
165
164
|
self,
|
|
166
165
|
quantum_processor_id: builtins.str,
|
|
167
|
-
endpoint_id: typing.Optional[builtins.str] = None,
|
|
168
166
|
translation_options: typing.Optional[translation.TranslationOptions] = None,
|
|
169
167
|
execution_options: typing.Optional[api.ExecutionOptions] = None,
|
|
170
168
|
) -> collections.abc.Awaitable[ExecutionData]:
|
|
@@ -172,8 +170,8 @@ class Executable:
|
|
|
172
170
|
Compile the program and execute it on a QPU, waiting for results
|
|
173
171
|
(async analog of `Executable.execute_on_qpu`).
|
|
174
172
|
|
|
175
|
-
:param `
|
|
176
|
-
|
|
173
|
+
:param `execution_options`: To target a specific endpoint, use a ``ConnectionStrategy``
|
|
174
|
+
that carries an endpoint ID, e.g. ``ConnectionStrategy.EndpointId(...)``.
|
|
177
175
|
|
|
178
176
|
:raises `ExecutionError`: If the job fails to execute.
|
|
179
177
|
"""
|
|
@@ -206,22 +204,20 @@ class Executable:
|
|
|
206
204
|
def submit_to_qpu(
|
|
207
205
|
self,
|
|
208
206
|
quantum_processor_id: builtins.str,
|
|
209
|
-
endpoint_id: typing.Optional[builtins.str] = None,
|
|
210
207
|
translation_options: typing.Optional[translation.TranslationOptions] = None,
|
|
211
208
|
execution_options: typing.Optional[api.ExecutionOptions] = None,
|
|
212
209
|
) -> JobHandle:
|
|
213
210
|
r"""
|
|
214
211
|
Compile the program and execute it on a QPU, without waiting for results.
|
|
215
212
|
|
|
216
|
-
:param `
|
|
217
|
-
|
|
213
|
+
:param `execution_options`: To target a specific endpoint, use a ``ConnectionStrategy``
|
|
214
|
+
that carries an endpoint ID, e.g. ``ConnectionStrategy.EndpointId(...)``.
|
|
218
215
|
|
|
219
216
|
:raises `ExecutionError`: If the job fails to execute.
|
|
220
217
|
"""
|
|
221
218
|
def submit_to_qpu_async(
|
|
222
219
|
self,
|
|
223
220
|
quantum_processor_id: builtins.str,
|
|
224
|
-
endpoint_id: typing.Optional[builtins.str] = None,
|
|
225
221
|
translation_options: typing.Optional[translation.TranslationOptions] = None,
|
|
226
222
|
execution_options: typing.Optional[api.ExecutionOptions] = None,
|
|
227
223
|
) -> collections.abc.Awaitable[JobHandle]:
|
|
@@ -229,8 +225,8 @@ class Executable:
|
|
|
229
225
|
Compile the program and execute it on a QPU, without waiting for results
|
|
230
226
|
(async analog of `Executable.submit_to_qpu`).
|
|
231
227
|
|
|
232
|
-
:param `
|
|
233
|
-
|
|
228
|
+
:param `execution_options`: To target a specific endpoint, use a ``ConnectionStrategy``
|
|
229
|
+
that carries an endpoint ID, e.g. ``ConnectionStrategy.EndpointId(...)``.
|
|
234
230
|
|
|
235
231
|
:raises `ExecutionError`: If the job fails to execute.
|
|
236
232
|
"""
|
{qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/_qcs_sdk/qpu/api/__init__.pyi
RENAMED
|
@@ -129,6 +129,7 @@ class ConnectionStrategy:
|
|
|
129
129
|
"""
|
|
130
130
|
@staticmethod
|
|
131
131
|
def default() -> ConnectionStrategy: ...
|
|
132
|
+
def get_endpoint_id(self) -> builtins.str: ...
|
|
132
133
|
@typing.final
|
|
133
134
|
class DirectAccess(ConnectionStrategy):
|
|
134
135
|
r"""
|
|
@@ -190,7 +191,9 @@ class ConnectionStrategy:
|
|
|
190
191
|
Whether the gateway should route to live hardware, simulated hardware, or either.
|
|
191
192
|
"""
|
|
192
193
|
def __new__(
|
|
193
|
-
cls,
|
|
194
|
+
cls,
|
|
195
|
+
liveness: EndpointLiveness = EndpointLiveness.LIVE_ONLY,
|
|
196
|
+
endpoint_id: typing.Optional[builtins.str] = None,
|
|
194
197
|
) -> ConnectionStrategy.Gateway: ...
|
|
195
198
|
|
|
196
199
|
@typing.final
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/examples/delayed_job_retrieval.rs
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/examples/parametric_compilation.rs
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/compiler/isa/operator.rs
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/python/execution_data.rs
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/python/register_data.rs
RENAMED
|
File without changes
|
{qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/qpu/experimental/mod.rs
RENAMED
|
File without changes
|
{qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/qpu/experimental/python.rs
RENAMED
|
File without changes
|
{qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/qpu/experimental/random.rs
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/qpu/translation/python.rs
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/tests/bell_state_response_data.hex
RENAMED
|
File without changes
|
{qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/tests/compiler-isa-Aspen-8.json
RENAMED
|
File without changes
|
|
File without changes
|
{qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/tests/parametric_compilation.rs
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/tests_py/_fixtures/aspen-m-3.json
RENAMED
|
File without changes
|
{qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/tests_py/_fixtures/device-2q.json
RENAMED
|
File without changes
|
{qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/tests_py/_qcs_config/secrets.toml
RENAMED
|
File without changes
|
{qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/tests_py/_qcs_config/settings.toml
RENAMED
|
File without changes
|
|
File without changes
|
{qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/tests_py/compiler/test_quilc.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/tests_py/qpu/test_translation.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/tests_py/test_diagnostics.py
RENAMED
|
File without changes
|
{qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/tests_py/test_executable.py
RENAMED
|
File without changes
|
|
File without changes
|
{qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/tests_py/test_tracing_subscriber.py
RENAMED
|
File without changes
|
|
File without changes
|
{qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/_qcs_sdk/client/__init__.pyi
RENAMED
|
File without changes
|
{qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/_qcs_sdk/compiler/__init__.pyi
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/_qcs_sdk/qpu/__init__.pyi
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/_qcs_sdk/qpu/isa/__init__.pyi
RENAMED
|
File without changes
|
|
File without changes
|
{qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/_qcs_sdk/qvm/__init__.pyi
RENAMED
|
File without changes
|
{qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/_qcs_sdk/qvm/api/__init__.pyi
RENAMED
|
File without changes
|
{qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/_tracing_subscriber/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/compiler/quilc/__init__.py
RENAMED
|
File without changes
|
{qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/diagnostics/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/qpu/experimental/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/qpu/translation/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|