qcs-sdk-python 0.19.3__tar.gz → 0.20.1__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.19.3 → qcs_sdk_python-0.20.1}/Cargo.lock +59 -29
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/Cargo.toml +6 -6
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/PKG-INFO +18 -1
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/lib/CHANGELOG.md +38 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/lib/Cargo.toml +2 -2
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/lib/src/compiler/quilc.rs +4 -7
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/lib/src/executable.rs +7 -7
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/lib/src/qpu/api.rs +72 -16
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/lib/src/qvm/execution.rs +3 -3
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/python/CHANGELOG.md +38 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/python/Cargo.toml +7 -2
- qcs_sdk_python-0.20.1/crates/python/Makefile.toml +110 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/python/qcs_sdk/_tracing_subscriber/layers/__init__.py +0 -1
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1/crates/python}/qcs_sdk/_tracing_subscriber/layers/__init__.pyi +8 -8
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1/crates/python}/qcs_sdk/_tracing_subscriber/layers/file/__init__.py +0 -2
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1/crates/python}/qcs_sdk/_tracing_subscriber/layers/file/__init__.pyi +0 -1
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1/crates/python}/qcs_sdk/_tracing_subscriber/layers/otel_otlp/__init__.py +0 -1
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1/crates/python}/qcs_sdk/_tracing_subscriber/layers/otel_otlp/__init__.pyi +2 -4
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/python/qcs_sdk/_tracing_subscriber/layers/otel_otlp_file/__init__.py +0 -1
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/python/qcs_sdk/_tracing_subscriber/layers/otel_otlp_file/__init__.pyi +0 -1
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/python/qcs_sdk/_tracing_subscriber/subscriber/__init__.py +0 -1
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/python/qcs_sdk/_tracing_subscriber/subscriber/__init__.pyi +0 -1
- qcs_sdk_python-0.20.1/crates/python/qcs_sdk/client.pyi +155 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1/crates/python}/qcs_sdk/qpu/api.pyi +11 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/python/qcs_sdk/qpu/isa.pyi +19 -6
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1/crates/python}/qcs_sdk/qpu/translation.pyi +4 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/python/src/client.rs +30 -83
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/python/src/compiler/quilc.rs +2 -3
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/python/src/executable.rs +1 -2
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/python/src/lib.rs +2 -3
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/python/src/qpu/api.rs +24 -5
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/python/src/qpu/isa.rs +9 -7
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/python/src/qpu/mod.rs +3 -2
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/python/src/qpu/translation.rs +17 -5
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/python/src/qvm/api.rs +3 -2
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/python/src/qvm/mod.rs +3 -2
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/python/tests/compiler/__snapshots__/test_quilc.ambr +1 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/python/tests/test_client.py +9 -13
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/pyproject.toml +21 -32
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/qcs_sdk/_tracing_subscriber/layers/__init__.py +0 -1
- {qcs_sdk_python-0.19.3/crates/python → qcs_sdk_python-0.20.1}/qcs_sdk/_tracing_subscriber/layers/__init__.pyi +8 -8
- {qcs_sdk_python-0.19.3/crates/python → qcs_sdk_python-0.20.1}/qcs_sdk/_tracing_subscriber/layers/file/__init__.py +0 -2
- {qcs_sdk_python-0.19.3/crates/python → qcs_sdk_python-0.20.1}/qcs_sdk/_tracing_subscriber/layers/file/__init__.pyi +0 -1
- {qcs_sdk_python-0.19.3/crates/python → qcs_sdk_python-0.20.1}/qcs_sdk/_tracing_subscriber/layers/otel_otlp/__init__.py +0 -1
- {qcs_sdk_python-0.19.3/crates/python → qcs_sdk_python-0.20.1}/qcs_sdk/_tracing_subscriber/layers/otel_otlp/__init__.pyi +2 -4
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/qcs_sdk/_tracing_subscriber/layers/otel_otlp_file/__init__.py +0 -1
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/qcs_sdk/_tracing_subscriber/layers/otel_otlp_file/__init__.pyi +0 -1
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/qcs_sdk/_tracing_subscriber/subscriber/__init__.py +0 -1
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/qcs_sdk/_tracing_subscriber/subscriber/__init__.pyi +0 -1
- qcs_sdk_python-0.20.1/qcs_sdk/client.pyi +155 -0
- {qcs_sdk_python-0.19.3/crates/python → qcs_sdk_python-0.20.1}/qcs_sdk/qpu/api.pyi +11 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/qcs_sdk/qpu/isa.pyi +19 -6
- {qcs_sdk_python-0.19.3/crates/python → qcs_sdk_python-0.20.1}/qcs_sdk/qpu/translation.pyi +4 -0
- qcs_sdk_python-0.19.3/crates/python/Makefile.toml +0 -79
- qcs_sdk_python-0.19.3/crates/python/qcs_sdk/client.pyi +0 -116
- qcs_sdk_python-0.19.3/crates/python/src/py_sync.rs +0 -133
- qcs_sdk_python-0.19.3/qcs_sdk/client.pyi +0 -116
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/README.md +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/lib/Makefile.toml +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/lib/README.md +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/lib/build.rs +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/lib/examples/delayed_job_retrieval.rs +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/lib/examples/execute.rs +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/lib/examples/libquil.rs +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/lib/examples/local.rs +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/lib/examples/parametric_compilation.rs +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/lib/examples/quil_t.rs +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/lib/src/bin/diagnostics.rs +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/lib/src/client.rs +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/lib/src/compiler/isa/edge.rs +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/lib/src/compiler/isa/mod.rs +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/lib/src/compiler/isa/operator.rs +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/lib/src/compiler/isa/qubit.rs +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/lib/src/compiler/libquil.rs +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/lib/src/compiler/mod.rs +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/lib/src/compiler/rpcq.rs +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/lib/src/diagnostics.rs +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/lib/src/execution_data.rs +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/lib/src/lib.rs +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/lib/src/qpu/execution.rs +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/lib/src/qpu/mod.rs +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/lib/src/qpu/result_data.rs +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/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.19.3 → qcs_sdk_python-0.20.1}/crates/lib/src/qpu/snapshots/qcs__qpu__rewrite_arithmetic__describe_rewrite_arithmetic__it_allocates_for_multiple_expressions.snap +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/lib/src/qpu/snapshots/qcs__qpu__rewrite_arithmetic__describe_rewrite_arithmetic__it_converts_frequency_expressions-2.snap +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/lib/src/qpu/snapshots/qcs__qpu__rewrite_arithmetic__describe_rewrite_arithmetic__it_converts_frequency_expressions.snap +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/lib/src/qpu/snapshots/qcs__qpu__rewrite_arithmetic__describe_rewrite_arithmetic__it_converts_phases.snap +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/lib/src/qpu/snapshots/qcs__qpu__rewrite_arithmetic__describe_rewrite_arithmetic__it_converts_set_scale_units.snap +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/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.19.3 → qcs_sdk_python-0.20.1}/crates/lib/src/qpu/snapshots/qcs__qpu__rewrite_arithmetic__describe_rewrite_arithmetic__it_substitutes_gate_parameters.snap +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/lib/src/qpu/translation.rs +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/lib/src/qvm/http.rs +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/lib/src/qvm/libquil.rs +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/lib/src/qvm/mod.rs +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/lib/src/qvm/snapshots/qcs__qvm__test__apply_valid_parameters_to_program.snap +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/lib/src/register_data.rs +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/lib/tests/aspen_9_isa.json +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/lib/tests/basic_qvm.rs +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/lib/tests/bell_state_response_data.hex +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/lib/tests/compiler-isa-Aspen-8.json +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/lib/tests/mocked_qpu.rs +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/lib/tests/parametric_compilation.rs +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/lib/tests/qcs-isa-Aspen-8.json +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/lib/tests/qvm_api.rs +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/lib/tests/qvm_isa.json +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/lib/tests/secrets.toml +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/lib/tests/settings.toml +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/python/.flake8 +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/python/.stubtest-allowlist +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/python/README.md +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/python/build.rs +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/python/poetry.lock +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/python/qcs_sdk/__init__.py +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/python/qcs_sdk/__init__.pyi +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/python/qcs_sdk/_tracing_subscriber/.stubtest-allowlist +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/python/qcs_sdk/_tracing_subscriber/__init__.py +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/python/qcs_sdk/_tracing_subscriber/__init__.pyi +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/python/qcs_sdk/client.py +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/python/qcs_sdk/compiler/__init__.py +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/python/qcs_sdk/compiler/__init__.pyi +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/python/qcs_sdk/compiler/quilc.pyi +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/python/qcs_sdk/diagnostics.py +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/python/qcs_sdk/py.typed +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/python/qcs_sdk/qpu/__init__.py +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/python/qcs_sdk/qpu/__init__.pyi +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/python/qcs_sdk/qvm/__init__.py +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/python/qcs_sdk/qvm/__init__.pyi +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/python/qcs_sdk/qvm/api.pyi +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/python/scripts/patch_grpc_web.py +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/python/src/compiler/mod.rs +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/python/src/execution_data.rs +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/python/src/from_py.rs +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/python/src/grpc/mod.rs +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/python/src/grpc/models/controller.rs +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/python/src/grpc/models/mod.rs +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/python/src/qpu/result_data.rs +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/python/src/register_data.rs +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/python/tests/_fixtures/aspen-m-3.json +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/python/tests/_fixtures/device-2q.json +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/python/tests/_qcs_config/secrets.toml +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/python/tests/_qcs_config/settings.toml +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/python/tests/compiler/test_quilc.py +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/python/tests/conftest.py +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/python/tests/execution_data/test_execution_data.py +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/python/tests/qpu/test_api.py +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/python/tests/qpu/test_isa.py +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/python/tests/qpu/test_qpu.py +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/python/tests/qpu/test_translation.py +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/python/tests/qvm/test_qvm.py +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/python/tests/test_diagnostics.py +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/python/tests/test_executable.py +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/python/tests/test_logging.py +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/crates/python/tests/test_tracing_subscriber.py +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/qcs_sdk/__init__.py +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/qcs_sdk/__init__.pyi +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/qcs_sdk/_tracing_subscriber/__init__.py +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/qcs_sdk/_tracing_subscriber/__init__.pyi +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/qcs_sdk/client.py +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/qcs_sdk/compiler/__init__.py +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/qcs_sdk/compiler/__init__.pyi +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/qcs_sdk/compiler/quilc.pyi +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/qcs_sdk/diagnostics.py +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/qcs_sdk/py.typed +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/qcs_sdk/qpu/__init__.py +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/qcs_sdk/qpu/__init__.pyi +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/qcs_sdk/qvm/__init__.py +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/qcs_sdk/qvm/__init__.pyi +0 -0
- {qcs_sdk_python-0.19.3 → qcs_sdk_python-0.20.1}/qcs_sdk/qvm/api.pyi +0 -0
|
@@ -1592,18 +1592,18 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55"
|
|
|
1592
1592
|
|
|
1593
1593
|
[[package]]
|
|
1594
1594
|
name = "lexical"
|
|
1595
|
-
version = "
|
|
1595
|
+
version = "7.0.1"
|
|
1596
1596
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1597
|
-
checksum = "
|
|
1597
|
+
checksum = "8ecd3381ac77c22d4e2607284ac71e44b21c21bd3785ee807d21976d54ee16f9"
|
|
1598
1598
|
dependencies = [
|
|
1599
1599
|
"lexical-core",
|
|
1600
1600
|
]
|
|
1601
1601
|
|
|
1602
1602
|
[[package]]
|
|
1603
1603
|
name = "lexical-core"
|
|
1604
|
-
version = "0.
|
|
1604
|
+
version = "1.0.1"
|
|
1605
1605
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1606
|
-
checksum = "
|
|
1606
|
+
checksum = "0885f6cdfe75c96e45bbf1c4e49511f128201391ce3b56e60e29f5a1fadbc1c1"
|
|
1607
1607
|
dependencies = [
|
|
1608
1608
|
"lexical-parse-float",
|
|
1609
1609
|
"lexical-parse-integer",
|
|
@@ -1614,9 +1614,9 @@ dependencies = [
|
|
|
1614
1614
|
|
|
1615
1615
|
[[package]]
|
|
1616
1616
|
name = "lexical-parse-float"
|
|
1617
|
-
version = "0.
|
|
1617
|
+
version = "1.0.1"
|
|
1618
1618
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1619
|
-
checksum = "
|
|
1619
|
+
checksum = "924f7ec090cd4f60bd873f160b0fb69a0c80bb3a98f2e778a1893ae0e5c4b0b9"
|
|
1620
1620
|
dependencies = [
|
|
1621
1621
|
"lexical-parse-integer",
|
|
1622
1622
|
"lexical-util",
|
|
@@ -1625,9 +1625,9 @@ dependencies = [
|
|
|
1625
1625
|
|
|
1626
1626
|
[[package]]
|
|
1627
1627
|
name = "lexical-parse-integer"
|
|
1628
|
-
version = "0.
|
|
1628
|
+
version = "1.0.1"
|
|
1629
1629
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1630
|
-
checksum = "
|
|
1630
|
+
checksum = "8feab1da84a2ab0ddbbad2fb1830b755f71a9a8d996c7a1f2a553faf72aa3686"
|
|
1631
1631
|
dependencies = [
|
|
1632
1632
|
"lexical-util",
|
|
1633
1633
|
"static_assertions",
|
|
@@ -1635,18 +1635,18 @@ dependencies = [
|
|
|
1635
1635
|
|
|
1636
1636
|
[[package]]
|
|
1637
1637
|
name = "lexical-util"
|
|
1638
|
-
version = "0.
|
|
1638
|
+
version = "1.0.2"
|
|
1639
1639
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1640
|
-
checksum = "
|
|
1640
|
+
checksum = "591ce1a12ecd3b26d4121ab360a6a4483a67f05a5372add6acbfd0b65c9285d9"
|
|
1641
1641
|
dependencies = [
|
|
1642
1642
|
"static_assertions",
|
|
1643
1643
|
]
|
|
1644
1644
|
|
|
1645
1645
|
[[package]]
|
|
1646
1646
|
name = "lexical-write-float"
|
|
1647
|
-
version = "0.
|
|
1647
|
+
version = "1.0.1"
|
|
1648
1648
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1649
|
-
checksum = "
|
|
1649
|
+
checksum = "05b0f3f9ddada5942b54e97654d535df37c9340ad66c24b50360a90619779f41"
|
|
1650
1650
|
dependencies = [
|
|
1651
1651
|
"lexical-util",
|
|
1652
1652
|
"lexical-write-integer",
|
|
@@ -1655,9 +1655,9 @@ dependencies = [
|
|
|
1655
1655
|
|
|
1656
1656
|
[[package]]
|
|
1657
1657
|
name = "lexical-write-integer"
|
|
1658
|
-
version = "0.
|
|
1658
|
+
version = "1.0.1"
|
|
1659
1659
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1660
|
-
checksum = "
|
|
1660
|
+
checksum = "48c6d47254ddb292771dce7697ae2be9619f8e369d01a9ccda15ef2ff50443fc"
|
|
1661
1661
|
dependencies = [
|
|
1662
1662
|
"lexical-util",
|
|
1663
1663
|
"static_assertions",
|
|
@@ -2551,7 +2551,7 @@ dependencies = [
|
|
|
2551
2551
|
"num-complex",
|
|
2552
2552
|
"parking_lot",
|
|
2553
2553
|
"portable-atomic",
|
|
2554
|
-
"pyo3-build-config",
|
|
2554
|
+
"pyo3-build-config 0.20.3",
|
|
2555
2555
|
"pyo3-ffi",
|
|
2556
2556
|
"pyo3-macros",
|
|
2557
2557
|
"unindent",
|
|
@@ -2580,6 +2580,16 @@ dependencies = [
|
|
|
2580
2580
|
"target-lexicon",
|
|
2581
2581
|
]
|
|
2582
2582
|
|
|
2583
|
+
[[package]]
|
|
2584
|
+
name = "pyo3-build-config"
|
|
2585
|
+
version = "0.22.1"
|
|
2586
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2587
|
+
checksum = "7879eb018ac754bba32cb0eec7526391c02c14a093121857ed09fbf1d1057d41"
|
|
2588
|
+
dependencies = [
|
|
2589
|
+
"once_cell",
|
|
2590
|
+
"target-lexicon",
|
|
2591
|
+
]
|
|
2592
|
+
|
|
2583
2593
|
[[package]]
|
|
2584
2594
|
name = "pyo3-ffi"
|
|
2585
2595
|
version = "0.20.3"
|
|
@@ -2587,7 +2597,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
2587
2597
|
checksum = "62b42531d03e08d4ef1f6e85a2ed422eb678b8cd62b762e53891c05faf0d4afa"
|
|
2588
2598
|
dependencies = [
|
|
2589
2599
|
"libc",
|
|
2590
|
-
"pyo3-build-config",
|
|
2600
|
+
"pyo3-build-config 0.20.3",
|
|
2591
2601
|
]
|
|
2592
2602
|
|
|
2593
2603
|
[[package]]
|
|
@@ -2621,7 +2631,7 @@ checksum = "7c7e9b68bb9c3149c5b0cade5d07f953d6d125eb4337723c4ccdb665f1f96185"
|
|
|
2621
2631
|
dependencies = [
|
|
2622
2632
|
"heck 0.4.1",
|
|
2623
2633
|
"proc-macro2",
|
|
2624
|
-
"pyo3-build-config",
|
|
2634
|
+
"pyo3-build-config 0.20.3",
|
|
2625
2635
|
"quote",
|
|
2626
2636
|
"syn 2.0.66",
|
|
2627
2637
|
]
|
|
@@ -2674,7 +2684,7 @@ dependencies = [
|
|
|
2674
2684
|
|
|
2675
2685
|
[[package]]
|
|
2676
2686
|
name = "qcs"
|
|
2677
|
-
version = "0.
|
|
2687
|
+
version = "0.24.1"
|
|
2678
2688
|
dependencies = [
|
|
2679
2689
|
"assert2",
|
|
2680
2690
|
"async-trait",
|
|
@@ -2736,19 +2746,25 @@ dependencies = [
|
|
|
2736
2746
|
|
|
2737
2747
|
[[package]]
|
|
2738
2748
|
name = "qcs-api-client-common"
|
|
2739
|
-
version = "0.
|
|
2749
|
+
version = "0.10.1"
|
|
2740
2750
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2741
|
-
checksum = "
|
|
2751
|
+
checksum = "1cf1692d12ab36478f43f1ef493a8b2445f7f5d17164f739d8b0fd57ad59e6e6"
|
|
2742
2752
|
dependencies = [
|
|
2743
2753
|
"async-trait",
|
|
2744
2754
|
"backoff",
|
|
2755
|
+
"base64 0.22.1",
|
|
2745
2756
|
"derive_builder 0.20.0",
|
|
2746
2757
|
"figment",
|
|
2747
2758
|
"futures",
|
|
2748
2759
|
"home",
|
|
2749
2760
|
"http",
|
|
2750
2761
|
"jsonwebtoken",
|
|
2762
|
+
"paste",
|
|
2763
|
+
"pyo3",
|
|
2764
|
+
"pyo3-asyncio",
|
|
2765
|
+
"pyo3-build-config 0.22.1",
|
|
2751
2766
|
"reqwest",
|
|
2767
|
+
"rigetti-pyo3 0.3.6",
|
|
2752
2768
|
"serde",
|
|
2753
2769
|
"shellexpand",
|
|
2754
2770
|
"thiserror",
|
|
@@ -2762,9 +2778,9 @@ dependencies = [
|
|
|
2762
2778
|
|
|
2763
2779
|
[[package]]
|
|
2764
2780
|
name = "qcs-api-client-grpc"
|
|
2765
|
-
version = "0.
|
|
2781
|
+
version = "0.10.1"
|
|
2766
2782
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2767
|
-
checksum = "
|
|
2783
|
+
checksum = "b6224aeaaafb92d44439a398a03b042889edacbe23a115cfb1ff1e17c80c8bf2"
|
|
2768
2784
|
dependencies = [
|
|
2769
2785
|
"backoff",
|
|
2770
2786
|
"http",
|
|
@@ -2795,9 +2811,9 @@ dependencies = [
|
|
|
2795
2811
|
|
|
2796
2812
|
[[package]]
|
|
2797
2813
|
name = "qcs-api-client-openapi"
|
|
2798
|
-
version = "0.
|
|
2814
|
+
version = "0.11.1"
|
|
2799
2815
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2800
|
-
checksum = "
|
|
2816
|
+
checksum = "c5107bbd313d31d1eede8dec2bc9c69e0aa50ffc6207457bb4d8c3ab3cb32434"
|
|
2801
2817
|
dependencies = [
|
|
2802
2818
|
"anyhow",
|
|
2803
2819
|
"qcs-api-client-common",
|
|
@@ -2815,7 +2831,7 @@ dependencies = [
|
|
|
2815
2831
|
|
|
2816
2832
|
[[package]]
|
|
2817
2833
|
name = "qcs-sdk-python"
|
|
2818
|
-
version = "0.
|
|
2834
|
+
version = "0.20.1"
|
|
2819
2835
|
dependencies = [
|
|
2820
2836
|
"async-trait",
|
|
2821
2837
|
"numpy",
|
|
@@ -2823,9 +2839,10 @@ dependencies = [
|
|
|
2823
2839
|
"opentelemetry 0.23.0",
|
|
2824
2840
|
"opentelemetry_sdk 0.23.0",
|
|
2825
2841
|
"paste",
|
|
2842
|
+
"prost",
|
|
2826
2843
|
"pyo3",
|
|
2827
2844
|
"pyo3-asyncio",
|
|
2828
|
-
"pyo3-build-config",
|
|
2845
|
+
"pyo3-build-config 0.20.3",
|
|
2829
2846
|
"pyo3-log",
|
|
2830
2847
|
"pyo3-opentelemetry",
|
|
2831
2848
|
"pyo3-tracing-subscriber",
|
|
@@ -2835,7 +2852,7 @@ dependencies = [
|
|
|
2835
2852
|
"qcs-api-client-grpc",
|
|
2836
2853
|
"qcs-api-client-openapi",
|
|
2837
2854
|
"quil-rs",
|
|
2838
|
-
"rigetti-pyo3",
|
|
2855
|
+
"rigetti-pyo3 0.4.1",
|
|
2839
2856
|
"serde_json",
|
|
2840
2857
|
"thiserror",
|
|
2841
2858
|
"tokio",
|
|
@@ -2850,8 +2867,8 @@ checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0"
|
|
|
2850
2867
|
|
|
2851
2868
|
[[package]]
|
|
2852
2869
|
name = "quil-rs"
|
|
2853
|
-
version = "0.
|
|
2854
|
-
source = "git+https://github.com/rigetti/quil-rs?tag=quil-py/v0.
|
|
2870
|
+
version = "0.28.1"
|
|
2871
|
+
source = "git+https://github.com/rigetti/quil-rs?tag=quil-py/v0.12.1#a0f2776893d3ce33eb9f29449f3b4b0e9ed24174"
|
|
2855
2872
|
dependencies = [
|
|
2856
2873
|
"approx",
|
|
2857
2874
|
"indexmap 2.2.6",
|
|
@@ -3099,6 +3116,19 @@ dependencies = [
|
|
|
3099
3116
|
"time",
|
|
3100
3117
|
]
|
|
3101
3118
|
|
|
3119
|
+
[[package]]
|
|
3120
|
+
name = "rigetti-pyo3"
|
|
3121
|
+
version = "0.4.1"
|
|
3122
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
3123
|
+
checksum = "f924032d36104a859f936762576a9e6fc0811b37a1f4a8144c0b9b25ee89607b"
|
|
3124
|
+
dependencies = [
|
|
3125
|
+
"num-complex",
|
|
3126
|
+
"num-traits",
|
|
3127
|
+
"paste",
|
|
3128
|
+
"pyo3",
|
|
3129
|
+
"time",
|
|
3130
|
+
]
|
|
3131
|
+
|
|
3102
3132
|
[[package]]
|
|
3103
3133
|
name = "ring"
|
|
3104
3134
|
version = "0.16.20"
|
|
@@ -4,19 +4,19 @@ resolver = "2"
|
|
|
4
4
|
|
|
5
5
|
[workspace.dependencies]
|
|
6
6
|
qcs-api = "0.2.1"
|
|
7
|
-
qcs-api-client-common = "0.
|
|
8
|
-
qcs-api-client-grpc = "0.
|
|
9
|
-
qcs-api-client-openapi = "0.
|
|
7
|
+
qcs-api-client-common = "0.10.1"
|
|
8
|
+
qcs-api-client-grpc = "0.10.1"
|
|
9
|
+
qcs-api-client-openapi = "0.11.1"
|
|
10
10
|
serde_json = "1.0.86"
|
|
11
11
|
thiserror = "1.0.57"
|
|
12
12
|
tokio = "1.36.0"
|
|
13
13
|
# We specify quil-rs as a git and versioned dependency so that we can keep the version of
|
|
14
14
|
# quil-rs used in both the Rust and Python packages in sync. The tag used should always
|
|
15
|
-
# be a `quil-py` tag and should be
|
|
15
|
+
# be a `quil-py` tag and should be compatible with the version specified in
|
|
16
16
|
# `crates/python/pyproject.toml`.
|
|
17
17
|
# The version must also be specified in order to publish to crates.io. Cargo enforces
|
|
18
18
|
# that the specified version is the same as the version in the git repository.
|
|
19
|
-
quil-rs = { version = "0.
|
|
19
|
+
quil-rs = { version = "0.28.1", git = "https://github.com/rigetti/quil-rs", tag = "quil-py/v0.12.1" }
|
|
20
20
|
|
|
21
21
|
# ndarray is used by the `qcs` crate, but it is also used in the `python` crate via a
|
|
22
22
|
# re-export through the numpy crate. They should be updated as a pair to keep both
|
|
@@ -32,7 +32,7 @@ pyo3-opentelemetry = { version = "=0.3.2-dev.1" }
|
|
|
32
32
|
pyo3-tracing-subscriber = { version = "=0.1.2-dev.1", default-features = true }
|
|
33
33
|
|
|
34
34
|
pyo3-build-config = "0.20.0"
|
|
35
|
-
rigetti-pyo3 = { version = "0.
|
|
35
|
+
rigetti-pyo3 = { version = "0.4.1", default-features = false, features = ["complex", "time"] }
|
|
36
36
|
|
|
37
37
|
# The primary intent of these options is to reduce the binary size for Python wheels
|
|
38
38
|
# since PyPi has limits on how much storage a project can use.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: qcs-sdk-python
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.20.1
|
|
4
4
|
Classifier: Development Status :: 3 - Alpha
|
|
5
5
|
Classifier: License :: OSI Approved :: Apache Software License
|
|
6
6
|
Classifier: Programming Language :: Python :: 3.8
|
|
@@ -9,6 +9,23 @@ Classifier: Programming Language :: Python :: 3.10
|
|
|
9
9
|
Classifier: Programming Language :: Python :: 3.11
|
|
10
10
|
Classifier: Operating System :: OS Independent
|
|
11
11
|
Requires-Dist: quil >=0.11.2
|
|
12
|
+
Requires-Dist: qcs-api-client-common >=0.10.0
|
|
13
|
+
Requires-Dist: pyquil ==4.14.2 ; extra == 'pyquil'
|
|
14
|
+
Requires-Dist: black >=24.8.0 ; extra == 'dev'
|
|
15
|
+
Requires-Dist: opentelemetry-sdk ==1.25.0 ; extra == 'dev'
|
|
16
|
+
Requires-Dist: pytest >=8.1.1 ; extra == 'dev'
|
|
17
|
+
Requires-Dist: pytest-asyncio >=0.23.6 ; extra == 'dev'
|
|
18
|
+
Requires-Dist: pytest-mock >=3.14.0 ; extra == 'dev'
|
|
19
|
+
Requires-Dist: pytest-sugar >=1.0.0 ; extra == 'dev'
|
|
20
|
+
Requires-Dist: pytest-clarity >=1.0.1 ; extra == 'dev'
|
|
21
|
+
Requires-Dist: syrupy >=4.0.0 ; extra == 'dev'
|
|
22
|
+
Requires-Dist: maturin ==1.5.1 ; extra == 'dev'
|
|
23
|
+
Requires-Dist: numpy >=1.24.1 ; extra == 'dev'
|
|
24
|
+
Requires-Dist: pdoc >=14.6.1 ; extra == 'dev'
|
|
25
|
+
Requires-Dist: ruff >=0.3.5 ; extra == 'dev'
|
|
26
|
+
Requires-Dist: mypy >=1.4.1 ; extra == 'dev'
|
|
27
|
+
Provides-Extra: pyquil
|
|
28
|
+
Provides-Extra: dev
|
|
12
29
|
Summary: Python interface for the QCS Rust SDK
|
|
13
30
|
Keywords: pyquil,SDK,Rigetti,Quil,Quantum
|
|
14
31
|
Author-email: Rigetti Computing <softapps@rigetti.com>, Mark Skilbeck <mark.skilbeck@rigetti.com>, Marquess Valdez <mvaldez@rigetti.com>, Randall Fulton <rfulton@rigetti.com>
|
|
@@ -1,3 +1,41 @@
|
|
|
1
|
+
## 0.24.1
|
|
2
|
+
|
|
3
|
+
### Fixes
|
|
4
|
+
|
|
5
|
+
- Bump qcs-api-client-rust versions (#500)
|
|
6
|
+
|
|
7
|
+
## 0.24.1-rc.0
|
|
8
|
+
|
|
9
|
+
### Fixes
|
|
10
|
+
|
|
11
|
+
- Bump qcs-api-client-rust versions (#500)
|
|
12
|
+
|
|
13
|
+
## 0.24.0
|
|
14
|
+
|
|
15
|
+
### Breaking Changes
|
|
16
|
+
|
|
17
|
+
- Make Python bindings public (#463)
|
|
18
|
+
|
|
19
|
+
### Fixes
|
|
20
|
+
|
|
21
|
+
- ExecutionOptions::default() now respects defaults used in ExecutionOptionsBuilder::default() (#499)
|
|
22
|
+
|
|
23
|
+
## 0.24.0-rc.0
|
|
24
|
+
|
|
25
|
+
### Breaking Changes
|
|
26
|
+
|
|
27
|
+
- Make Python bindings public (#463)
|
|
28
|
+
|
|
29
|
+
### Fixes
|
|
30
|
+
|
|
31
|
+
- ExecutionOptions::default() now respects defaults used in ExecutionOptionsBuilder::default() (#499)
|
|
32
|
+
|
|
33
|
+
## 0.23.3-rc.0
|
|
34
|
+
|
|
35
|
+
### Fixes
|
|
36
|
+
|
|
37
|
+
- ExecutionOptions::default() now respects defaults used in ExecutionOptionsBuilder::default() (#499)
|
|
38
|
+
|
|
1
39
|
## 0.23.2
|
|
2
40
|
|
|
3
41
|
### Fixes
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
[package]
|
|
2
2
|
name = "qcs"
|
|
3
3
|
description = "High level interface for running Quil on a QPU"
|
|
4
|
-
version = "0.
|
|
4
|
+
version = "0.24.1"
|
|
5
5
|
edition = "2018"
|
|
6
6
|
license = "Apache-2.0"
|
|
7
7
|
repository = "https://github.com/rigetti/qcs-sdk-rust"
|
|
8
8
|
keywords = ["pyquil", "SDK", "Rigetti", "Quil", "Quantum"]
|
|
9
9
|
categories = ["api-bindings", "compilers", "science", "emulators"]
|
|
10
|
-
readme = "
|
|
10
|
+
readme = "README.md"
|
|
11
11
|
|
|
12
12
|
[features]
|
|
13
13
|
manual-tests = []
|
|
@@ -357,7 +357,7 @@ mod tests {
|
|
|
357
357
|
serde_json::from_reader(File::open("tests/qvm_isa.json").unwrap()).unwrap()
|
|
358
358
|
}
|
|
359
359
|
|
|
360
|
-
|
|
360
|
+
fn rpcq_client() -> rpcq::Client {
|
|
361
361
|
let qcs = Qcs::load();
|
|
362
362
|
let endpoint = qcs.get_config().quilc_url();
|
|
363
363
|
rpcq::Client::new(endpoint).unwrap()
|
|
@@ -366,7 +366,6 @@ mod tests {
|
|
|
366
366
|
#[tokio::test]
|
|
367
367
|
async fn compare_native_quil_to_expected_output() {
|
|
368
368
|
let output = rpcq_client()
|
|
369
|
-
.await
|
|
370
369
|
.compile_program(
|
|
371
370
|
"MEASURE 0",
|
|
372
371
|
TargetDevice::try_from(qvm_isa()).expect("Couldn't build target device from ISA"),
|
|
@@ -390,7 +389,6 @@ MEASURE 1 ro[1]
|
|
|
390
389
|
let client = Qcs::load();
|
|
391
390
|
let client = qvm::http::HttpClient::from(&client);
|
|
392
391
|
let output = rpcq_client()
|
|
393
|
-
.await
|
|
394
392
|
.compile_program(
|
|
395
393
|
BELL_STATE,
|
|
396
394
|
TargetDevice::try_from(aspen_9_isa())
|
|
@@ -426,7 +424,6 @@ MEASURE 1 ro[1]
|
|
|
426
424
|
#[tokio::test]
|
|
427
425
|
async fn test_compile_declare_only() {
|
|
428
426
|
let output = rpcq_client()
|
|
429
|
-
.await
|
|
430
427
|
.compile_program(
|
|
431
428
|
"DECLARE ro BIT[1]\n",
|
|
432
429
|
TargetDevice::try_from(aspen_9_isa())
|
|
@@ -440,7 +437,7 @@ MEASURE 1 ro[1]
|
|
|
440
437
|
|
|
441
438
|
#[tokio::test]
|
|
442
439
|
async fn get_version_info_from_quilc() {
|
|
443
|
-
let rpcq_client = rpcq_client()
|
|
440
|
+
let rpcq_client = rpcq_client();
|
|
444
441
|
let version = rpcq_client
|
|
445
442
|
.get_version_info()
|
|
446
443
|
.expect("Should get version info from quilc");
|
|
@@ -450,7 +447,7 @@ MEASURE 1 ro[1]
|
|
|
450
447
|
|
|
451
448
|
#[tokio::test]
|
|
452
449
|
async fn test_conjugate_pauli_by_clifford() {
|
|
453
|
-
let rpcq_client = rpcq_client()
|
|
450
|
+
let rpcq_client = rpcq_client();
|
|
454
451
|
let request = ConjugateByCliffordRequest {
|
|
455
452
|
pauli: PauliTerm {
|
|
456
453
|
indices: vec![0],
|
|
@@ -473,7 +470,7 @@ MEASURE 1 ro[1]
|
|
|
473
470
|
|
|
474
471
|
#[tokio::test]
|
|
475
472
|
async fn test_generate_randomized_benchmark_sequence() {
|
|
476
|
-
let rpcq_client = rpcq_client()
|
|
473
|
+
let rpcq_client = rpcq_client();
|
|
477
474
|
let request = RandomizedBenchmarkingRequest {
|
|
478
475
|
depth: 2,
|
|
479
476
|
qubits: 1,
|
|
@@ -803,7 +803,7 @@ mod describe_get_config {
|
|
|
803
803
|
use crate::client::Qcs;
|
|
804
804
|
use crate::{compiler::rpcq, Executable};
|
|
805
805
|
|
|
806
|
-
|
|
806
|
+
fn quilc_client() -> rpcq::Client {
|
|
807
807
|
let qcs = Qcs::load();
|
|
808
808
|
let endpoint = qcs.get_config().quilc_url();
|
|
809
809
|
rpcq::Client::new(endpoint).unwrap()
|
|
@@ -811,7 +811,7 @@ mod describe_get_config {
|
|
|
811
811
|
|
|
812
812
|
#[tokio::test]
|
|
813
813
|
async fn it_resizes_params_dynamically() {
|
|
814
|
-
let mut exe = Executable::from_quil("").with_quilc_client(Some(quilc_client()
|
|
814
|
+
let mut exe = Executable::from_quil("").with_quilc_client(Some(quilc_client()));
|
|
815
815
|
|
|
816
816
|
exe.with_parameter("foo", 0, 0.0);
|
|
817
817
|
let params = exe.params.get("foo").unwrap().len();
|
|
@@ -834,7 +834,7 @@ mod describe_qpu_for_id {
|
|
|
834
834
|
use crate::qpu;
|
|
835
835
|
use crate::{client::Qcs, Executable};
|
|
836
836
|
|
|
837
|
-
|
|
837
|
+
fn quilc_client() -> rpcq::Client {
|
|
838
838
|
let qcs = Qcs::load();
|
|
839
839
|
let endpoint = qcs.get_config().quilc_url();
|
|
840
840
|
rpcq::Client::new(endpoint).unwrap()
|
|
@@ -845,7 +845,7 @@ mod describe_qpu_for_id {
|
|
|
845
845
|
// Default config has no auth, so it should try to refresh
|
|
846
846
|
let mut exe = Executable::from_quil("")
|
|
847
847
|
.with_qcs_client(Qcs::load())
|
|
848
|
-
.with_quilc_client(Some(quilc_client()
|
|
848
|
+
.with_quilc_client(Some(quilc_client()));
|
|
849
849
|
let result = exe.qpu_for_id("blah").await;
|
|
850
850
|
let Err(err) = result else {
|
|
851
851
|
panic!("Expected an error!");
|
|
@@ -856,7 +856,7 @@ mod describe_qpu_for_id {
|
|
|
856
856
|
|
|
857
857
|
#[tokio::test]
|
|
858
858
|
async fn it_loads_cached_version() {
|
|
859
|
-
let mut exe = Executable::from_quil("").with_quilc_client(Some(quilc_client()
|
|
859
|
+
let mut exe = Executable::from_quil("").with_quilc_client(Some(quilc_client()));
|
|
860
860
|
let shots = NonZeroU16::new(17).expect("value is non-zero");
|
|
861
861
|
exe.shots = shots;
|
|
862
862
|
exe.qpu = Some(
|
|
@@ -881,7 +881,7 @@ mod describe_qpu_for_id {
|
|
|
881
881
|
async fn it_creates_new_after_shot_change() {
|
|
882
882
|
let original_shots = NonZeroU16::new(23).expect("value is non-zero");
|
|
883
883
|
let mut exe = Executable::from_quil("")
|
|
884
|
-
.with_quilc_client(Some(quilc_client()
|
|
884
|
+
.with_quilc_client(Some(quilc_client()))
|
|
885
885
|
.with_shots(original_shots);
|
|
886
886
|
let qpu = exe.qpu_for_id("Aspen-9").await.unwrap();
|
|
887
887
|
|
|
@@ -898,7 +898,7 @@ mod describe_qpu_for_id {
|
|
|
898
898
|
|
|
899
899
|
#[tokio::test]
|
|
900
900
|
async fn it_creates_new_for_new_qpu_id() {
|
|
901
|
-
let mut exe = Executable::from_quil("").with_quilc_client(Some(quilc_client()
|
|
901
|
+
let mut exe = Executable::from_quil("").with_quilc_client(Some(quilc_client()));
|
|
902
902
|
let qpu = exe.qpu_for_id("Aspen-9").await.unwrap();
|
|
903
903
|
|
|
904
904
|
assert_eq!(qpu.quantum_processor_id, "Aspen-9");
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
use std::{convert::TryFrom, fmt, time::Duration};
|
|
5
5
|
|
|
6
|
+
use async_trait::async_trait;
|
|
6
7
|
use cached::proc_macro::cached;
|
|
7
8
|
use derive_builder::Builder;
|
|
8
9
|
use qcs_api_client_common::configuration::TokenError;
|
|
@@ -39,6 +40,7 @@ use crate::executable::Parameters;
|
|
|
39
40
|
|
|
40
41
|
use crate::client::{GrpcClientError, GrpcConnection, Qcs};
|
|
41
42
|
|
|
43
|
+
/// The maximum size of a gRPC response, in bytes.
|
|
42
44
|
const MAX_DECODING_MESSAGE_SIZE_BYTES: usize = 250 * 1024 * 1024;
|
|
43
45
|
|
|
44
46
|
pub(crate) fn params_into_job_execution_configuration(
|
|
@@ -327,11 +329,11 @@ pub type QpuConnectionOptions = ExecutionOptions;
|
|
|
327
329
|
/// Builder for setting up [`QpuConnectionOptions`].
|
|
328
330
|
pub type QpuConnectionOptionsBuilder = ExecutionOptionsBuilder;
|
|
329
331
|
|
|
330
|
-
/// Options
|
|
332
|
+
/// Options available when executing a job on a QPU.
|
|
331
333
|
///
|
|
332
334
|
/// Use [`Default`] to get a reasonable set of defaults, or start with [`ExecutionOptionsBuilder`]
|
|
333
335
|
/// to build a custom set of options.
|
|
334
|
-
#[derive(Builder, Clone, Debug,
|
|
336
|
+
#[derive(Builder, Clone, Debug, PartialEq)]
|
|
335
337
|
pub struct ExecutionOptions {
|
|
336
338
|
#[doc = "The [`ConnectionStrategy`] to use to establish a connection to the QPU."]
|
|
337
339
|
#[builder(default)]
|
|
@@ -339,14 +341,22 @@ pub struct ExecutionOptions {
|
|
|
339
341
|
#[doc = "The timeout to use for the request, defaults to 30 seconds. If set to `None`, then there is no timeout."]
|
|
340
342
|
#[builder(default = "Some(Duration::from_secs(30))")]
|
|
341
343
|
timeout: Option<Duration>,
|
|
342
|
-
#[doc = "Options
|
|
344
|
+
#[doc = "Options available when executing a job on a QPU, particular to the execution service's API."]
|
|
343
345
|
#[builder(default = "None")]
|
|
344
346
|
api_options: Option<InnerApiExecutionOptions>,
|
|
345
347
|
}
|
|
346
348
|
|
|
349
|
+
impl Default for ExecutionOptions {
|
|
350
|
+
fn default() -> Self {
|
|
351
|
+
ExecutionOptionsBuilder::default().build().expect(
|
|
352
|
+
"Should be able to derive a default set of the ExecutionOptions from the builder.",
|
|
353
|
+
)
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
|
|
347
357
|
impl Eq for ExecutionOptions {}
|
|
348
358
|
|
|
349
|
-
/// Options
|
|
359
|
+
/// Options available when executing a job on a QPU, particular to the execution service's API.
|
|
350
360
|
/// This is a conventent alias for [`InnerApiExecutionOptions`] which provides a builder.
|
|
351
361
|
///
|
|
352
362
|
/// Use [`Default`] to get a reasonable set of defaults, or start with [`ApiExecutionOptionsBuilder`]
|
|
@@ -435,11 +445,21 @@ pub enum ConnectionStrategy {
|
|
|
435
445
|
EndpointId(String),
|
|
436
446
|
}
|
|
437
447
|
|
|
438
|
-
///
|
|
439
|
-
///
|
|
440
|
-
|
|
448
|
+
/// An ExecutionTarget provides methods to establish the appropriate connection to the execution
|
|
449
|
+
/// service.
|
|
450
|
+
///
|
|
451
|
+
/// Implementors provide a [`ConnectionStrategy`] and timeout, the trait provides default
|
|
452
|
+
/// implementation for getting connections and execution targets.
|
|
453
|
+
#[async_trait]
|
|
454
|
+
pub trait ExecutionTarget<'a> {
|
|
455
|
+
/// The [`ConnectionStrategy`] to use to determine the connection target.
|
|
456
|
+
fn connection_strategy(&'a self) -> &'a ConnectionStrategy;
|
|
457
|
+
/// The timeout to use for requests to the target.
|
|
458
|
+
fn timeout(&self) -> Option<Duration>;
|
|
459
|
+
|
|
460
|
+
/// Get the [`execute_controller_job_request::Target`] for the given quantum processor ID.
|
|
441
461
|
fn get_job_target(
|
|
442
|
-
&self,
|
|
462
|
+
&'a self,
|
|
443
463
|
quantum_processor_id: Option<&str>,
|
|
444
464
|
) -> Option<execute_controller_job_request::Target> {
|
|
445
465
|
match self.connection_strategy() {
|
|
@@ -452,8 +472,9 @@ impl ExecutionOptions {
|
|
|
452
472
|
}
|
|
453
473
|
}
|
|
454
474
|
|
|
475
|
+
/// Get the [`get_controller_job_results_request::Target`] for the given quantum processor ID.
|
|
455
476
|
fn get_results_target(
|
|
456
|
-
&self,
|
|
477
|
+
&'a self,
|
|
457
478
|
quantum_processor_id: Option<&str>,
|
|
458
479
|
) -> Option<get_controller_job_results_request::Target> {
|
|
459
480
|
match self.connection_strategy() {
|
|
@@ -466,8 +487,9 @@ impl ExecutionOptions {
|
|
|
466
487
|
}
|
|
467
488
|
}
|
|
468
489
|
|
|
490
|
+
/// Get the [`cancel_controller_jobs_request::Target`] for the given quantum processor ID.
|
|
469
491
|
fn get_cancel_target(
|
|
470
|
-
&self,
|
|
492
|
+
&'a self,
|
|
471
493
|
quantum_processor_id: Option<&str>,
|
|
472
494
|
) -> Option<cancel_controller_jobs_request::Target> {
|
|
473
495
|
match self.connection_strategy() {
|
|
@@ -480,9 +502,9 @@ impl ExecutionOptions {
|
|
|
480
502
|
}
|
|
481
503
|
}
|
|
482
504
|
|
|
483
|
-
/// Get a controller client for the given
|
|
484
|
-
|
|
485
|
-
&self,
|
|
505
|
+
/// Get a controller client for the given quantum processor ID.
|
|
506
|
+
async fn get_controller_client(
|
|
507
|
+
&'a self,
|
|
486
508
|
client: &Qcs,
|
|
487
509
|
quantum_processor_id: Option<&str>,
|
|
488
510
|
) -> Result<ControllerClient<GrpcConnection>, QpuApiError> {
|
|
@@ -494,8 +516,8 @@ impl ExecutionOptions {
|
|
|
494
516
|
}
|
|
495
517
|
|
|
496
518
|
/// Get a GRPC connection to a QPU, without specifying the API to use.
|
|
497
|
-
|
|
498
|
-
&self,
|
|
519
|
+
async fn get_qpu_grpc_connection(
|
|
520
|
+
&'a self,
|
|
499
521
|
client: &Qcs,
|
|
500
522
|
quantum_processor_id: Option<&str>,
|
|
501
523
|
) -> Result<GrpcConnection, QpuApiError> {
|
|
@@ -525,6 +547,7 @@ impl ExecutionOptions {
|
|
|
525
547
|
self.grpc_address_to_channel(&address, client)
|
|
526
548
|
}
|
|
527
549
|
|
|
550
|
+
/// Get a channel from the given gRPC address.
|
|
528
551
|
fn grpc_address_to_channel(
|
|
529
552
|
&self,
|
|
530
553
|
address: &str,
|
|
@@ -540,6 +563,7 @@ impl ExecutionOptions {
|
|
|
540
563
|
Ok(channel)
|
|
541
564
|
}
|
|
542
565
|
|
|
566
|
+
/// Get the gateway address for the given quantum processor ID.
|
|
543
567
|
async fn get_gateway_address(
|
|
544
568
|
&self,
|
|
545
569
|
quantum_processor_id: &str,
|
|
@@ -548,6 +572,7 @@ impl ExecutionOptions {
|
|
|
548
572
|
get_accessor_with_cache(quantum_processor_id, client).await
|
|
549
573
|
}
|
|
550
574
|
|
|
575
|
+
/// Get the default endpoint address for the given quantum processor ID.
|
|
551
576
|
async fn get_default_endpoint_address(
|
|
552
577
|
&self,
|
|
553
578
|
quantum_processor_id: &str,
|
|
@@ -557,6 +582,19 @@ impl ExecutionOptions {
|
|
|
557
582
|
}
|
|
558
583
|
}
|
|
559
584
|
|
|
585
|
+
/// Methods that help select and configure a controller service client given a set of
|
|
586
|
+
/// [`ExecutionOptions`] and QPU ID.
|
|
587
|
+
#[async_trait]
|
|
588
|
+
impl<'a> ExecutionTarget<'a> for ExecutionOptions {
|
|
589
|
+
fn connection_strategy(&'a self) -> &'a ConnectionStrategy {
|
|
590
|
+
self.connection_strategy()
|
|
591
|
+
}
|
|
592
|
+
|
|
593
|
+
fn timeout(&self) -> Option<Duration> {
|
|
594
|
+
self.timeout()
|
|
595
|
+
}
|
|
596
|
+
}
|
|
597
|
+
|
|
560
598
|
#[cached(
|
|
561
599
|
result = true,
|
|
562
600
|
time = 60,
|
|
@@ -690,7 +728,10 @@ pub enum QpuApiError {
|
|
|
690
728
|
/// The message associated with the failed job.
|
|
691
729
|
message: String,
|
|
692
730
|
},
|
|
693
|
-
|
|
731
|
+
/// Error that can occur when the gRPC status code cannot be decoded.
|
|
732
|
+
#[error("The status code could not be decoded: {0}")]
|
|
733
|
+
StatusCodeDecode(String),
|
|
734
|
+
// just for the error type?
|
|
694
735
|
/// Error that can occur if a numeric status identifier cannot be converted
|
|
695
736
|
/// into a known status type.
|
|
696
737
|
#[error("The request returned an invalid status: {status}. {message}")]
|
|
@@ -702,3 +743,18 @@ pub enum QpuApiError {
|
|
|
702
743
|
message: String,
|
|
703
744
|
},
|
|
704
745
|
}
|
|
746
|
+
|
|
747
|
+
#[cfg(test)]
|
|
748
|
+
mod test {
|
|
749
|
+
use crate::qpu::api::ExecutionOptions;
|
|
750
|
+
|
|
751
|
+
use super::ExecutionOptionsBuilder;
|
|
752
|
+
|
|
753
|
+
#[test]
|
|
754
|
+
fn test_default_execution_options() {
|
|
755
|
+
assert_eq!(
|
|
756
|
+
ExecutionOptions::default(),
|
|
757
|
+
ExecutionOptionsBuilder::default().build().unwrap(),
|
|
758
|
+
);
|
|
759
|
+
}
|
|
760
|
+
}
|