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.
Files changed (146) hide show
  1. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/Cargo.lock +1 -1
  2. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/PKG-INFO +1 -1
  3. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/CHANGELOG.md +6 -0
  4. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/Cargo.toml +1 -1
  5. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/python/stubtest-allowlist +1 -0
  6. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/executable.rs +3 -72
  7. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/python/executable.rs +50 -102
  8. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/qpu/api/mod.rs +26 -9
  9. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/qpu/api/python.rs +6 -0
  10. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/qpu/execution.rs +2 -48
  11. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/uv.lock +1 -1
  12. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/pyproject.toml +1 -1
  13. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/_qcs_sdk/__init__.pyi +8 -12
  14. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/_qcs_sdk/qpu/api/__init__.pyi +4 -1
  15. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/Cargo.toml +0 -0
  16. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/README-py.md +0 -0
  17. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/THIRDPARTY.yaml +0 -0
  18. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/.flake8 +0 -0
  19. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/Makefile.toml +0 -0
  20. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/README-py.md +0 -0
  21. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/README.md +0 -0
  22. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/THIRDPARTY.yaml +0 -0
  23. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/build.rs +0 -0
  24. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/examples/delayed_job_retrieval.rs +0 -0
  25. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/examples/execute.rs +0 -0
  26. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/examples/libquil.rs +0 -0
  27. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/examples/local.rs +0 -0
  28. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/examples/parametric_compilation.rs +0 -0
  29. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/examples/quil_t.rs +0 -0
  30. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/scripts/check-py-api.sh +0 -0
  31. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/scripts/lint-bindings.py +0 -0
  32. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/bin/diagnostics.rs +0 -0
  33. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/bin/stub_gen.rs +0 -0
  34. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/client.rs +0 -0
  35. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/compiler/isa/edge.rs +0 -0
  36. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/compiler/isa/mod.rs +0 -0
  37. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/compiler/isa/operator.rs +0 -0
  38. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/compiler/isa/qubit.rs +0 -0
  39. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/compiler/libquil.rs +0 -0
  40. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/compiler/mod.rs +0 -0
  41. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/compiler/python.rs +0 -0
  42. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/compiler/quilc.rs +0 -0
  43. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/compiler/rpcq.rs +0 -0
  44. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/diagnostics/mod.rs +0 -0
  45. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/diagnostics/python.rs +0 -0
  46. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/execution_data.rs +0 -0
  47. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/lib.rs +0 -0
  48. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/python/client.rs +0 -0
  49. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/python/errors.rs +0 -0
  50. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/python/execution_data.rs +0 -0
  51. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/python/mod.rs +0 -0
  52. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/python/nonzero.rs +0 -0
  53. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/python/register_data.rs +0 -0
  54. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/qpu/experimental/mod.rs +0 -0
  55. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/qpu/experimental/python.rs +0 -0
  56. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/qpu/experimental/random.rs +0 -0
  57. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/qpu/isa/mod.rs +0 -0
  58. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/qpu/isa/python.rs +0 -0
  59. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/qpu/mod.rs +0 -0
  60. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/qpu/python.rs +0 -0
  61. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/qpu/result_data.rs +0 -0
  62. {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
  63. {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
  64. {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
  65. {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
  66. {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
  67. {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
  68. {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
  69. {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
  70. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/qpu/translation/mod.rs +0 -0
  71. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/qpu/translation/python.rs +0 -0
  72. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/qvm/execution.rs +0 -0
  73. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/qvm/http.rs +0 -0
  74. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/qvm/libquil.rs +0 -0
  75. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/qvm/mod.rs +0 -0
  76. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/qvm/python.rs +0 -0
  77. {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
  78. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/src/register_data.rs +0 -0
  79. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/tests/aspen_9_isa.json +0 -0
  80. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/tests/basic_qvm.rs +0 -0
  81. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/tests/bell_state_response_data.hex +0 -0
  82. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/tests/compiler-isa-Aspen-8.json +0 -0
  83. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/tests/mocked_qpu.rs +0 -0
  84. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/tests/parametric_compilation.rs +0 -0
  85. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/tests/prng_test_cases.json +0 -0
  86. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/tests/qcs-isa-Aspen-8.json +0 -0
  87. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/tests/qvm_api.rs +0 -0
  88. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/tests/qvm_isa.json +0 -0
  89. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/tests/settings.toml +0 -0
  90. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/tests_py/_fixtures/aspen-m-3.json +0 -0
  91. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/tests_py/_fixtures/device-2q.json +0 -0
  92. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/tests_py/_qcs_config/secrets.toml +0 -0
  93. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/tests_py/_qcs_config/settings.toml +0 -0
  94. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/tests_py/compiler/__snapshots__/test_quilc.ambr +0 -0
  95. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/tests_py/compiler/test_quilc.py +0 -0
  96. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/tests_py/conftest.py +0 -0
  97. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/tests_py/execution_data/test_execution_data.py +0 -0
  98. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/tests_py/qpu/experimental/test_random.py +0 -0
  99. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/tests_py/qpu/test_api.py +0 -0
  100. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/tests_py/qpu/test_isa.py +0 -0
  101. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/tests_py/qpu/test_qpu.py +0 -0
  102. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/tests_py/qpu/test_translation.py +0 -0
  103. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/tests_py/qvm/test_qvm.py +0 -0
  104. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/tests_py/test_client.py +0 -0
  105. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/tests_py/test_diagnostics.py +0 -0
  106. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/tests_py/test_executable.py +0 -0
  107. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/tests_py/test_logging.py +0 -0
  108. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/crates/lib/tests_py/test_tracing_subscriber.py +0 -0
  109. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/__init__.py +0 -0
  110. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/_qcs_sdk/client/__init__.pyi +0 -0
  111. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/_qcs_sdk/compiler/__init__.pyi +0 -0
  112. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/_qcs_sdk/compiler/quilc/__init__.pyi +0 -0
  113. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/_qcs_sdk/diagnostics/__init__.pyi +0 -0
  114. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/_qcs_sdk/qpu/__init__.pyi +0 -0
  115. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/_qcs_sdk/qpu/experimental/__init__.pyi +0 -0
  116. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/_qcs_sdk/qpu/experimental/random/__init__.pyi +0 -0
  117. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/_qcs_sdk/qpu/isa/__init__.pyi +0 -0
  118. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/_qcs_sdk/qpu/translation/__init__.pyi +0 -0
  119. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/_qcs_sdk/qvm/__init__.pyi +0 -0
  120. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/_qcs_sdk/qvm/api/__init__.pyi +0 -0
  121. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/_tracing_subscriber/__init__.py +0 -0
  122. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/_tracing_subscriber/__init__.pyi +0 -0
  123. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/_tracing_subscriber/common/__init__.py +0 -0
  124. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/_tracing_subscriber/common/__init__.pyi +0 -0
  125. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/_tracing_subscriber/layers/__init__.py +0 -0
  126. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/_tracing_subscriber/layers/__init__.pyi +0 -0
  127. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/_tracing_subscriber/layers/file/__init__.py +0 -0
  128. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/_tracing_subscriber/layers/file/__init__.pyi +0 -0
  129. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/_tracing_subscriber/layers/otel_otlp/__init__.py +0 -0
  130. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/_tracing_subscriber/layers/otel_otlp/__init__.pyi +0 -0
  131. {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
  132. {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
  133. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/_tracing_subscriber/subscriber/__init__.py +0 -0
  134. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/_tracing_subscriber/subscriber/__init__.pyi +0 -0
  135. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/client/__init__.py +0 -0
  136. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/compiler/__init__.py +0 -0
  137. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/compiler/quilc/__init__.py +0 -0
  138. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/diagnostics/__init__.py +0 -0
  139. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/qpu/__init__.py +0 -0
  140. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/qpu/api/__init__.py +0 -0
  141. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/qpu/experimental/__init__.py +0 -0
  142. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/qpu/experimental/random/__init__.py +0 -0
  143. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/qpu/isa/__init__.py +0 -0
  144. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/qpu/translation/__init__.py +0 -0
  145. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/qvm/__init__.py +0 -0
  146. {qcs_sdk_python-0.29.0rc0 → qcs_sdk_python-0.29.0rc1}/python/qcs_sdk/qvm/api/__init__.py +0 -0
@@ -3324,7 +3324,7 @@ dependencies = [
3324
3324
 
3325
3325
  [[package]]
3326
3326
  name = "qcs"
3327
- version = "0.29.0-rc.0"
3327
+ version = "0.29.0-rc.1"
3328
3328
  dependencies = [
3329
3329
  "assert2",
3330
3330
  "async-trait",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: qcs-sdk-python
3
- Version: 0.29.0rc0
3
+ Version: 0.29.0rc1
4
4
  Classifier: Development Status :: 3 - Alpha
5
5
  Classifier: License :: OSI Approved :: Apache Software License
6
6
  Classifier: Programming Language :: Python :: 3.10
@@ -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
@@ -1,7 +1,7 @@
1
1
  [package]
2
2
  name = "qcs"
3
3
  description = "High level interface for running Quil on a QPU"
4
- version = "0.29.0-rc.0"
4
+ version = "0.29.0-rc.1"
5
5
  edition = "2018"
6
6
  license = "Apache-2.0"
7
7
  repository = "https://github.com/rigetti/qcs-sdk-rust"
@@ -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 it was submitted to a specific
796
- /// endpoint (see [`Executable::submit_to_qpu_with_endpoint`]) rather than a quantum processor.
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.endpoint_id.as_deref()
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 `endpoint_id`: execute the compiled program against an explicitly provided endpoint.
238
- /// If `None`, the default endpoint for the given `quantum_processor_id` is used.
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, endpoint_id = None, translation_options = None, execution_options = None))]
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
- match endpoint_id {
251
- Some(endpoint_id) => py_sync!(
252
- py,
253
- py_executable_data!(
254
- self,
255
- execute_on_qpu_with_endpoint,
256
- quantum_processor_id,
257
- endpoint_id,
258
- translation_options,
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 `endpoint_id`: execute the compiled program against an explicitly provided endpoint.
277
- /// If `None`, the default endpoint for the given `quantum_processor_id` is used.
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, endpoint_id = None, translation_options = None, execution_options = None))]
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
- match endpoint_id {
290
- Some(endpoint_id) => pyo3_async_runtimes::tokio::future_into_py(
291
- py,
292
- py_executable_data!(
293
- self,
294
- execute_on_qpu_with_endpoint,
295
- quantum_processor_id,
296
- endpoint_id,
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 `endpoint_id`: execute the compiled program against an explicitly provided endpoint.
317
- /// If `None`, the default endpoint for the given `quantum_processor_id` is used.
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, endpoint_id = None, translation_options = None, execution_options = None))]
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
- match endpoint_id {
330
- Some(endpoint_id) => py_sync!(
331
- py,
332
- py_job_handle!(
333
- self,
334
- submit_to_qpu_with_endpoint,
335
- quantum_processor_id,
336
- endpoint_id,
337
- translation_options,
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 `endpoint_id`: execute the compiled program against an explicitly provided endpoint.
357
- /// If `None`, the default endpoint for the given `quantum_processor_id` is used.
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, endpoint_id = None, translation_options = None, execution_options = None))]
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
- match endpoint_id {
370
- Some(endpoint_id) => pyo3_async_runtimes::tokio::future_into_py(
371
- py,
372
- py_job_handle!(
373
- self,
374
- submit_to_qpu_with_endpoint,
375
- quantum_processor_id,
376
- endpoint_id,
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(vec![job_id], quantum_processor_id, client, execution_options).await
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 strategy_endpoint_id = match connection_strategy {
603
- ConnectionStrategy::EndpointId(endpoint_id) => Some(endpoint_id),
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.get_qpu_grpc_connection(client, quantum_processor_id).await?;
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
  ))
@@ -855,7 +855,7 @@ wheels = [
855
855
 
856
856
  [[package]]
857
857
  name = "qcs-sdk-python"
858
- version = "0.28.0"
858
+ version = "0.29.0rc0"
859
859
  source = { virtual = "." }
860
860
  dependencies = [
861
861
  { name = "qcs-api-client-common" },
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "qcs-sdk-python"
3
- version = "0.29.0-rc.0"
3
+ version = "0.29.0-rc.1"
4
4
  description = "Python interface for the QCS Rust SDK"
5
5
  authors = [
6
6
  { name = "Rigetti QPU Software", email = "qpu-software@rigetti.com" },
@@ -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 `endpoint_id`: execute the compiled program against an explicitly provided endpoint.
160
- If `None`, the default endpoint for the given `quantum_processor_id` is used.
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 `endpoint_id`: execute the compiled program against an explicitly provided endpoint.
176
- If `None`, the default endpoint for the given `quantum_processor_id` is used.
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 `endpoint_id`: execute the compiled program against an explicitly provided endpoint.
217
- If `None`, the default endpoint for the given `quantum_processor_id` is used.
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 `endpoint_id`: execute the compiled program against an explicitly provided endpoint.
233
- If `None`, the default endpoint for the given `quantum_processor_id` is used.
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
  """
@@ -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, liveness: EndpointLiveness, endpoint_id: typing.Optional[builtins.str]
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