qcs-sdk-python 0.16.1rc0__tar.gz → 0.16.2__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 (143) hide show
  1. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/Cargo.lock +10 -10
  2. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/Cargo.toml +4 -4
  3. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/PKG-INFO +2 -2
  4. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/lib/CHANGELOG.md +44 -0
  5. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/lib/Cargo.toml +1 -1
  6. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/lib/src/compiler/rpcq.rs +3 -3
  7. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/lib/src/executable.rs +2 -2
  8. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/lib/src/lib.rs +0 -1
  9. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/lib/src/qpu/api.rs +64 -2
  10. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/lib/src/qpu/execution.rs +2 -2
  11. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/python/CHANGELOG.md +32 -0
  12. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/python/Cargo.toml +1 -1
  13. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/python/qcs_sdk/qpu/api.pyi +38 -0
  14. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/python/src/qpu/api.rs +87 -2
  15. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/pyproject.toml +3 -3
  16. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/qcs_sdk/qpu/api.pyi +38 -0
  17. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/README.md +0 -0
  18. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/lib/Makefile.toml +0 -0
  19. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/lib/README.md +0 -0
  20. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/lib/build.rs +0 -0
  21. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/lib/examples/delayed_job_retrieval.rs +0 -0
  22. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/lib/examples/execute.rs +0 -0
  23. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/lib/examples/libquil.rs +0 -0
  24. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/lib/examples/local.rs +0 -0
  25. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/lib/examples/parametric_compilation.rs +0 -0
  26. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/lib/examples/quil_t.rs +0 -0
  27. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/lib/src/bin/diagnostics.rs +0 -0
  28. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/lib/src/client.rs +0 -0
  29. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/lib/src/compiler/isa/edge.rs +0 -0
  30. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/lib/src/compiler/isa/mod.rs +0 -0
  31. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/lib/src/compiler/isa/operator.rs +0 -0
  32. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/lib/src/compiler/isa/qubit.rs +0 -0
  33. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/lib/src/compiler/libquil.rs +0 -0
  34. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/lib/src/compiler/mod.rs +0 -0
  35. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/lib/src/compiler/quilc.rs +0 -0
  36. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/lib/src/diagnostics.rs +0 -0
  37. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/lib/src/execution_data.rs +0 -0
  38. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/lib/src/qpu/mod.rs +0 -0
  39. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/lib/src/qpu/result_data.rs +0 -0
  40. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/lib/src/qpu/rewrite_arithmetic.rs +0 -0
  41. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/lib/src/qpu/snapshots/qcs__qpu__rewrite_arithmetic__describe_rewrite_arithmetic__it_allocates_for_multiple_expressions-2.snap +0 -0
  42. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/lib/src/qpu/snapshots/qcs__qpu__rewrite_arithmetic__describe_rewrite_arithmetic__it_allocates_for_multiple_expressions.snap +0 -0
  43. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/lib/src/qpu/snapshots/qcs__qpu__rewrite_arithmetic__describe_rewrite_arithmetic__it_converts_frequency_expressions-2.snap +0 -0
  44. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/lib/src/qpu/snapshots/qcs__qpu__rewrite_arithmetic__describe_rewrite_arithmetic__it_converts_frequency_expressions.snap +0 -0
  45. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/lib/src/qpu/snapshots/qcs__qpu__rewrite_arithmetic__describe_rewrite_arithmetic__it_converts_phases.snap +0 -0
  46. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/lib/src/qpu/snapshots/qcs__qpu__rewrite_arithmetic__describe_rewrite_arithmetic__it_converts_set_scale_units.snap +0 -0
  47. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/lib/src/qpu/snapshots/qcs__qpu__rewrite_arithmetic__describe_rewrite_arithmetic__it_substitutes_and_reuses_gate_expressions.snap +0 -0
  48. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/lib/src/qpu/snapshots/qcs__qpu__rewrite_arithmetic__describe_rewrite_arithmetic__it_substitutes_gate_parameters.snap +0 -0
  49. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/lib/src/qpu/translation.rs +0 -0
  50. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/lib/src/qvm/execution.rs +0 -0
  51. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/lib/src/qvm/http.rs +0 -0
  52. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/lib/src/qvm/libquil.rs +0 -0
  53. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/lib/src/qvm/mod.rs +0 -0
  54. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/lib/src/qvm/snapshots/qcs__qvm__test__apply_valid_parameters_to_program.snap +0 -0
  55. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/lib/src/register_data.rs +0 -0
  56. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/lib/tests/aspen_9_isa.json +0 -0
  57. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/lib/tests/basic_qvm.rs +0 -0
  58. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/lib/tests/bell_state_response_data.hex +0 -0
  59. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/lib/tests/compiler-isa-Aspen-8.json +0 -0
  60. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/lib/tests/mocked_qpu.rs +0 -0
  61. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/lib/tests/parametric_compilation.rs +0 -0
  62. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/lib/tests/qcs-isa-Aspen-8.json +0 -0
  63. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/lib/tests/qvm_api.rs +0 -0
  64. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/lib/tests/qvm_isa.json +0 -0
  65. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/lib/tests/secrets.toml +0 -0
  66. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/lib/tests/settings.toml +0 -0
  67. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/python/.flake8 +0 -0
  68. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/python/.stubtest-allowlist +0 -0
  69. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/python/Makefile.toml +0 -0
  70. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/python/README.md +0 -0
  71. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/python/build.rs +0 -0
  72. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/python/poetry.lock +0 -0
  73. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/python/qcs_sdk/__init__.py +0 -0
  74. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/python/qcs_sdk/__init__.pyi +0 -0
  75. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/python/qcs_sdk/client.py +0 -0
  76. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/python/qcs_sdk/client.pyi +0 -0
  77. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/python/qcs_sdk/compiler/__init__.py +0 -0
  78. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/python/qcs_sdk/compiler/__init__.pyi +0 -0
  79. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/python/qcs_sdk/compiler/quilc.pyi +0 -0
  80. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/python/qcs_sdk/diagnostics.py +0 -0
  81. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/python/qcs_sdk/py.typed +0 -0
  82. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/python/qcs_sdk/qpu/__init__.py +0 -0
  83. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/python/qcs_sdk/qpu/__init__.pyi +0 -0
  84. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/python/qcs_sdk/qpu/isa.pyi +0 -0
  85. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/python/qcs_sdk/qpu/rewrite_arithmetic.pyi +0 -0
  86. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/python/qcs_sdk/qpu/translation.pyi +0 -0
  87. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/python/qcs_sdk/qvm/__init__.py +0 -0
  88. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/python/qcs_sdk/qvm/__init__.pyi +0 -0
  89. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/python/qcs_sdk/qvm/api.pyi +0 -0
  90. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/python/src/client.rs +0 -0
  91. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/python/src/compiler/mod.rs +0 -0
  92. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/python/src/compiler/quilc.rs +0 -0
  93. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/python/src/executable.rs +0 -0
  94. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/python/src/execution_data.rs +0 -0
  95. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/python/src/from_py.rs +0 -0
  96. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/python/src/grpc/mod.rs +0 -0
  97. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/python/src/grpc/models/controller.rs +0 -0
  98. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/python/src/grpc/models/mod.rs +0 -0
  99. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/python/src/lib.rs +0 -0
  100. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/python/src/py_sync.rs +0 -0
  101. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/python/src/qpu/isa.rs +0 -0
  102. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/python/src/qpu/mod.rs +0 -0
  103. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/python/src/qpu/result_data.rs +0 -0
  104. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/python/src/qpu/rewrite_arithmetic.rs +0 -0
  105. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/python/src/qpu/translation.rs +0 -0
  106. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/python/src/qvm/api.rs +0 -0
  107. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/python/src/qvm/mod.rs +0 -0
  108. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/python/src/register_data.rs +0 -0
  109. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/python/tests/_fixtures/aspen-m-3.json +0 -0
  110. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/python/tests/_fixtures/device-2q.json +0 -0
  111. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/python/tests/_qcs_config/secrets.toml +0 -0
  112. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/python/tests/_qcs_config/settings.toml +0 -0
  113. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/python/tests/compiler/__snapshots__/test_quilc.ambr +0 -0
  114. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/python/tests/compiler/test_quilc.py +0 -0
  115. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/python/tests/conftest.py +0 -0
  116. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/python/tests/execution_data/test_execution_data.py +0 -0
  117. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/python/tests/qpu/test_api.py +0 -0
  118. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/python/tests/qpu/test_isa.py +0 -0
  119. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/python/tests/qpu/test_qpu.py +0 -0
  120. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/python/tests/qpu/test_rewrite_arithmetic.py +0 -0
  121. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/python/tests/qpu/test_translation.py +0 -0
  122. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/python/tests/qvm/test_qvm.py +0 -0
  123. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/python/tests/test_client.py +0 -0
  124. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/python/tests/test_diagnostics.py +0 -0
  125. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/python/tests/test_executable.py +0 -0
  126. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/crates/python/tests/test_logging.py +0 -0
  127. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/qcs_sdk/__init__.py +0 -0
  128. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/qcs_sdk/__init__.pyi +0 -0
  129. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/qcs_sdk/client.py +0 -0
  130. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/qcs_sdk/client.pyi +0 -0
  131. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/qcs_sdk/compiler/__init__.py +0 -0
  132. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/qcs_sdk/compiler/__init__.pyi +0 -0
  133. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/qcs_sdk/compiler/quilc.pyi +0 -0
  134. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/qcs_sdk/diagnostics.py +0 -0
  135. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/qcs_sdk/py.typed +0 -0
  136. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/qcs_sdk/qpu/__init__.py +0 -0
  137. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/qcs_sdk/qpu/__init__.pyi +0 -0
  138. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/qcs_sdk/qpu/isa.pyi +0 -0
  139. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/qcs_sdk/qpu/rewrite_arithmetic.pyi +0 -0
  140. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/qcs_sdk/qpu/translation.pyi +0 -0
  141. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/qcs_sdk/qvm/__init__.py +0 -0
  142. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/qcs_sdk/qvm/__init__.pyi +0 -0
  143. {qcs_sdk_python-0.16.1rc0 → qcs_sdk_python-0.16.2}/qcs_sdk/qvm/api.pyi +0 -0
@@ -2054,7 +2054,7 @@ dependencies = [
2054
2054
 
2055
2055
  [[package]]
2056
2056
  name = "qcs"
2057
- version = "0.20.1-rc.0"
2057
+ version = "0.20.3"
2058
2058
  dependencies = [
2059
2059
  "assert2",
2060
2060
  "async-trait",
@@ -2114,9 +2114,9 @@ dependencies = [
2114
2114
 
2115
2115
  [[package]]
2116
2116
  name = "qcs-api-client-common"
2117
- version = "0.7.7"
2117
+ version = "0.7.9"
2118
2118
  source = "registry+https://github.com/rust-lang/crates.io-index"
2119
- checksum = "dad78be261af4de4d54bfb03019ae5c564c5e966d4ca64f883cef25ed07d218d"
2119
+ checksum = "cc3356caa74bb697c4271c950a3040e8dbb9448a9bd0124411b9b43155b8e192"
2120
2120
  dependencies = [
2121
2121
  "async-trait",
2122
2122
  "futures",
@@ -2135,9 +2135,9 @@ dependencies = [
2135
2135
 
2136
2136
  [[package]]
2137
2137
  name = "qcs-api-client-grpc"
2138
- version = "0.7.7"
2138
+ version = "0.7.9"
2139
2139
  source = "registry+https://github.com/rust-lang/crates.io-index"
2140
- checksum = "53e298dc6ce58bca734eed37f7934cc82e3d34463ac3e067bd4ad57fa903b55b"
2140
+ checksum = "37bd1842ca3485e8c0abf36be4cbcee1ea12e97da15ac731ce9dae20f7f58f41"
2141
2141
  dependencies = [
2142
2142
  "http",
2143
2143
  "http-body",
@@ -2164,9 +2164,9 @@ dependencies = [
2164
2164
 
2165
2165
  [[package]]
2166
2166
  name = "qcs-api-client-openapi"
2167
- version = "0.8.7"
2167
+ version = "0.8.9"
2168
2168
  source = "registry+https://github.com/rust-lang/crates.io-index"
2169
- checksum = "e970a25b7a98e040ca03badddae6d23b5a5f58189bd0e112770b7a9126b05296"
2169
+ checksum = "c605c4bdf887f487dbe7c0055f303728a992a6d508eedc55d7efa41b36adba07"
2170
2170
  dependencies = [
2171
2171
  "anyhow",
2172
2172
  "qcs-api-client-common",
@@ -2183,7 +2183,7 @@ dependencies = [
2183
2183
 
2184
2184
  [[package]]
2185
2185
  name = "qcs-sdk-python"
2186
- version = "0.16.1-rc.0"
2186
+ version = "0.16.2"
2187
2187
  dependencies = [
2188
2188
  "async-trait",
2189
2189
  "numpy",
@@ -2213,8 +2213,8 @@ checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0"
2213
2213
 
2214
2214
  [[package]]
2215
2215
  name = "quil-rs"
2216
- version = "0.22.3"
2217
- source = "git+https://github.com/rigetti/quil-rs?tag=quil-py/v0.6.3#a58a14efd45c64d0f3de477e6ab84d927f6fd0c4"
2216
+ version = "0.22.4"
2217
+ source = "git+https://github.com/rigetti/quil-rs?tag=quil-py/v0.6.4#f7c0ac9affd37f797d4b6434be8cc53143984f8c"
2218
2218
  dependencies = [
2219
2219
  "approx",
2220
2220
  "indexmap 1.9.3",
@@ -4,9 +4,9 @@ resolver = "2"
4
4
 
5
5
  [workspace.dependencies]
6
6
  qcs-api = "0.2.1"
7
- qcs-api-client-common = "0.7.7"
8
- qcs-api-client-grpc = "0.7.7"
9
- qcs-api-client-openapi = "0.8.7"
7
+ qcs-api-client-common = "0.7.9"
8
+ qcs-api-client-grpc = "0.7.9"
9
+ qcs-api-client-openapi = "0.8.9"
10
10
  serde_json = "1.0.86"
11
11
  thiserror = "1.0.37"
12
12
  tokio = "1.34.0"
@@ -15,7 +15,7 @@ tokio = "1.34.0"
15
15
  # be a `quil-py` tag and should match the version used in `crates/python/pyproject.toml`
16
16
  # The version must also be specified in order to publish to crates.io. Cargo enforces
17
17
  # that the specified version is the same as the version in the git repository.
18
- quil-rs = { version = "0.22.3", git = "https://github.com/rigetti/quil-rs", tag = "quil-py/v0.6.3" }
18
+ quil-rs = { version = "0.22.4", git = "https://github.com/rigetti/quil-rs", tag = "quil-py/v0.6.4" }
19
19
 
20
20
  # ndarray is used by the `qcs` crate, but it is also used in the `python` crate via a
21
21
  # re-export through the numpy crate. They should be updated as a pair to keep both
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: qcs-sdk-python
3
- Version: 0.16.1rc0
3
+ Version: 0.16.2
4
4
  Classifier: Development Status :: 3 - Alpha
5
5
  Classifier: License :: OSI Approved :: Apache Software License
6
6
  Classifier: Programming Language :: Python :: 3.8
@@ -8,7 +8,7 @@ Classifier: Programming Language :: Python :: 3.9
8
8
  Classifier: Programming Language :: Python :: 3.10
9
9
  Classifier: Programming Language :: Python :: 3.11
10
10
  Classifier: Operating System :: OS Independent
11
- Requires-Dist: quil ==0.6.3
11
+ Requires-Dist: quil ==0.6.4
12
12
  Summary: Python interface for the QCS Rust SDK
13
13
  Keywords: pyquil,SDK,Rigetti,Quil,Quantum
14
14
  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,47 @@
1
+ ## 0.20.3
2
+
3
+ ### Features
4
+
5
+ - Update quil-rs/quil-py to 0.23.4/0.6.4 (#423)
6
+ - provide ExecutionOptions configurability as ApiExecutionOptions (#415)
7
+
8
+ ## 0.20.3-rc.2
9
+
10
+ ### Features
11
+
12
+ - Update quil-rs/quil-py to 0.23.4/0.6.4 (#423)
13
+ - provide ExecutionOptions configurability as ApiExecutionOptions (#415)
14
+
15
+ ## 0.20.3-rc.1
16
+
17
+ ### Features
18
+
19
+ - provide ExecutionOptions configurability as ApiExecutionOptions (#415)
20
+
21
+ ## 0.20.3-rc.0
22
+
23
+ ### Features
24
+
25
+ - provide ExecutionOptions configurability as ApiExecutionOptions (#415)
26
+
27
+ ## 0.20.2
28
+
29
+ ### Fixes
30
+
31
+ - make rpcq timeout functions public, since initializing Client is public (#398)
32
+
33
+ ## 0.20.2-rc.0
34
+
35
+ ### Fixes
36
+
37
+ - make rpcq timeout functions public, since initializing Client is public (#398)
38
+
39
+ ## 0.20.1
40
+
41
+ ### Features
42
+
43
+ - Update quil-rs/py to 0.23.3/0.6.3 (#413)
44
+
1
45
  ## 0.20.1-rc.0
2
46
 
3
47
  ### Features
@@ -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.20.1-rc.0"
4
+ version = "0.20.3"
5
5
  edition = "2018"
6
6
  license = "Apache-2.0"
7
7
  repository = "https://github.com/rigetti/qcs-sdk-rust"
@@ -41,7 +41,7 @@ impl Client {
41
41
  /// Set the timeout used for both sending and receiving messages
42
42
  ///
43
43
  /// Value is number of milliseconds. A value of `-1` means no timeout.
44
- pub(crate) fn set_timeout(&mut self, timeout: i32) {
44
+ pub fn set_timeout(&mut self, timeout: i32) {
45
45
  self.set_send_timeout(timeout);
46
46
  self.set_receive_timeout(timeout);
47
47
  }
@@ -49,14 +49,14 @@ impl Client {
49
49
  /// Set the timeout used when sending messages
50
50
  ///
51
51
  /// Value is number of milliseconds. A value of `-1` means no timeout.
52
- pub(crate) fn set_send_timeout(&mut self, timeout: i32) {
52
+ pub fn set_send_timeout(&mut self, timeout: i32) {
53
53
  self.send_timeout = Some(timeout);
54
54
  }
55
55
 
56
56
  /// Set the timeout used when receiving messages
57
57
  ///
58
58
  /// Value is number of milliseconds. A value of `-1` means no timeout.
59
- pub(crate) fn set_receive_timeout(&mut self, timeout: i32) {
59
+ pub fn set_receive_timeout(&mut self, timeout: i32) {
60
60
  self.receive_timeout = Some(timeout);
61
61
  }
62
62
 
@@ -701,7 +701,7 @@ impl From<ExecutionError> for Error {
701
701
  ExecutionError::Unexpected(inner) => Self::Unexpected(format!("{inner:?}")),
702
702
  ExecutionError::Quilc { .. } => Self::Connection(Service::Quilc),
703
703
  ExecutionError::QcsClient(v) => Self::Unexpected(format!("{v:?}")),
704
- ExecutionError::IsaError(v) => Self::Unexpected(format!("{v:?}")),
704
+ ExecutionError::Isa(v) => Self::Unexpected(format!("{v:?}")),
705
705
  ExecutionError::ReadoutParse(v) => Self::Unexpected(format!("{v:?}")),
706
706
  ExecutionError::Quil(e) => Self::Quil(e),
707
707
  ExecutionError::ToQuil(e) => Self::ToQuil(e),
@@ -709,7 +709,7 @@ impl From<ExecutionError> for Error {
709
709
  ExecutionError::RewriteArithmetic(e) => Self::RewriteArithmetic(e),
710
710
  ExecutionError::RpcqClient(e) => Self::Unexpected(format!("{e:?}")),
711
711
  ExecutionError::Substitution(message) => Self::Substitution(message),
712
- ExecutionError::QpuApiError(e) => Self::QpuApiError(e),
712
+ ExecutionError::QpuApi(e) => Self::QpuApiError(e),
713
713
  }
714
714
  }
715
715
  }
@@ -30,7 +30,6 @@
30
30
  path_statements,
31
31
  patterns_in_fns_without_body,
32
32
  pointer_structural_match,
33
- private_in_public,
34
33
  semicolon_in_expressions_from_macros,
35
34
  trivial_casts,
36
35
  trivial_numeric_casts,
@@ -17,7 +17,7 @@ use qcs_api_client_grpc::{
17
17
  services::controller::{
18
18
  controller_client::ControllerClient, execute_controller_job_request,
19
19
  get_controller_job_results_request, ExecuteControllerJobRequest,
20
- GetControllerJobResultsRequest,
20
+ ExecutionOptions as InnerApiExecutionOptions, GetControllerJobResultsRequest,
21
21
  },
22
22
  };
23
23
  pub use qcs_api_client_openapi::apis::Error as OpenApiError;
@@ -104,6 +104,7 @@ pub async fn submit(
104
104
  execution_configurations: vec![params_into_job_execution_configuration(patch_values)],
105
105
  job: Some(execute_controller_job_request::Job::Encrypted(program)),
106
106
  target: execution_options.get_job_target(quantum_processor_id),
107
+ options: execution_options.api_options().cloned(),
107
108
  };
108
109
 
109
110
  let mut controller_client = execution_options
@@ -194,7 +195,7 @@ pub type QpuConnectionOptionsBuilder = ExecutionOptionsBuilder;
194
195
  ///
195
196
  /// Use [`Default`] to get a reasonable set of defaults, or start with [`ExecutionOptionsBuilder`]
196
197
  /// to build a custom set of options.
197
- #[derive(Builder, Clone, Debug, Default, PartialEq, Eq)]
198
+ #[derive(Builder, Clone, Debug, Default, PartialEq)]
198
199
  pub struct ExecutionOptions {
199
200
  #[doc = "The [`ConnectionStrategy`] to use to establish a connection to the QPU."]
200
201
  #[builder(default)]
@@ -202,6 +203,61 @@ pub struct ExecutionOptions {
202
203
  #[doc = "The timeout to use for the request, defaults to 30 seconds. If set to `None`, then there is no timeout."]
203
204
  #[builder(default = "Some(Duration::from_secs(30))")]
204
205
  timeout: Option<Duration>,
206
+ #[doc = "Options avaialable when executing a job on a QPU, particular to the execution service's API."]
207
+ #[builder(default = "None")]
208
+ api_options: Option<InnerApiExecutionOptions>,
209
+ }
210
+
211
+ impl Eq for ExecutionOptions {}
212
+
213
+ /// Options avaialable when executing a job on a QPU, particular to the execution service's API.
214
+ /// This is a conventent alias for [`InnerApiExecutionOptions`] which provides a builder.
215
+ ///
216
+ /// Use [`Default`] to get a reasonable set of defaults, or start with [`ApiExecutionOptionsBuilder`]
217
+ /// to build a custom set of options.
218
+ #[derive(Builder, Clone, Debug, Default, PartialEq)]
219
+ #[allow(clippy::module_name_repetitions)]
220
+ pub struct ApiExecutionOptions {
221
+ /// the inner proto representation
222
+ inner: InnerApiExecutionOptions,
223
+ }
224
+
225
+ impl Eq for ApiExecutionOptions {}
226
+
227
+ impl ApiExecutionOptions {
228
+ /// Get an [`ExecutionOptionsBuilder`] that can be used to build a custom [`ExecutionOptions`].
229
+ #[must_use]
230
+ pub fn builder() -> ApiExecutionOptionsBuilder {
231
+ ApiExecutionOptionsBuilder::default()
232
+ }
233
+
234
+ /// Get the configured `bypass_settings_protection` value.
235
+ #[must_use]
236
+ pub fn bypass_settings_protection(&self) -> bool {
237
+ self.inner.bypass_settings_protection
238
+ }
239
+ }
240
+
241
+ impl From<ApiExecutionOptions> for InnerApiExecutionOptions {
242
+ fn from(options: ApiExecutionOptions) -> Self {
243
+ options.inner
244
+ }
245
+ }
246
+
247
+ impl From<InnerApiExecutionOptions> for ApiExecutionOptions {
248
+ fn from(inner: InnerApiExecutionOptions) -> Self {
249
+ Self { inner }
250
+ }
251
+ }
252
+
253
+ impl ApiExecutionOptionsBuilder {
254
+ /// Set the `bypass_settings_protection` value.
255
+ pub fn bypass_settings_protection(&mut self, bypass_settings_protection: bool) -> &mut Self {
256
+ self.inner
257
+ .get_or_insert(InnerApiExecutionOptions::default())
258
+ .bypass_settings_protection = bypass_settings_protection;
259
+ self
260
+ }
205
261
  }
206
262
 
207
263
  impl ExecutionOptions {
@@ -222,6 +278,12 @@ impl ExecutionOptions {
222
278
  pub fn timeout(&self) -> Option<Duration> {
223
279
  self.timeout
224
280
  }
281
+
282
+ /// Get the [`ApiExecutionOptions`].
283
+ #[must_use]
284
+ pub fn api_options(&self) -> Option<&InnerApiExecutionOptions> {
285
+ self.api_options.as_ref()
286
+ }
225
287
  }
226
288
 
227
289
  /// The connection strategy to use when submitting and retrieving jobs from a QPU.
@@ -52,7 +52,7 @@ pub(crate) enum Error {
52
52
  #[error("Problem using QCS API: {0}")]
53
53
  QcsClient(#[from] GrpcClientError),
54
54
  #[error("Problem fetching ISA: {0}")]
55
- IsaError(#[from] GetIsaError),
55
+ Isa(#[from] GetIsaError),
56
56
  #[error("Problem parsing memory readout: {0}")]
57
57
  ReadoutParse(#[from] MemoryReferenceParseError),
58
58
  #[error("Problem when compiling program: {details}")]
@@ -64,7 +64,7 @@ pub(crate) enum Error {
64
64
  #[error("Program when getting substitutions for program: {0}")]
65
65
  Substitution(String),
66
66
  #[error("Problem making a request to the QPU: {0}")]
67
- QpuApiError(#[from] super::api::QpuApiError),
67
+ QpuApi(#[from] super::api::QpuApiError),
68
68
  }
69
69
 
70
70
  impl From<quilc::Error> for Error {
@@ -1,3 +1,35 @@
1
+ ## 0.16.2
2
+
3
+ ### Features
4
+
5
+ - Update quil-rs/quil-py to 0.23.4/0.6.4 (#423)
6
+ - provide ExecutionOptions configurability as ApiExecutionOptions (#415)
7
+
8
+ ## 0.16.2-rc.2
9
+
10
+ ### Features
11
+
12
+ - Update quil-rs/quil-py to 0.23.4/0.6.4 (#423)
13
+ - provide ExecutionOptions configurability as ApiExecutionOptions (#415)
14
+
15
+ ## 0.16.2-rc.1
16
+
17
+ ### Features
18
+
19
+ - provide ExecutionOptions configurability as ApiExecutionOptions (#415)
20
+
21
+ ## 0.16.2-rc.0
22
+
23
+ ### Features
24
+
25
+ - provide ExecutionOptions configurability as ApiExecutionOptions (#415)
26
+
27
+ ## 0.16.1
28
+
29
+ ### Features
30
+
31
+ - Update quil-rs/py to 0.23.3/0.6.3 (#413)
32
+
1
33
  ## 0.16.1-rc.0
2
34
 
3
35
  ### Features
@@ -1,7 +1,7 @@
1
1
  [package]
2
2
  name = "qcs-sdk-python"
3
3
  description = "Python bindings to qcs-sdk-rust"
4
- version = "0.16.1-rc.0"
4
+ version = "0.16.2"
5
5
  edition = "2021"
6
6
  license = "Apache-2.0"
7
7
  repository = "https://github.com/rigetti/qcs-sdk-rust"
@@ -193,6 +193,9 @@ class ExecutionOptions:
193
193
  @property
194
194
  def timeout_seconds(self) -> Optional[float]:
195
195
  """The time in seconds to wait before timing out a request, if any."""
196
+ @property
197
+ def api_options(self) -> bool:
198
+ """Execution options particular to the API call at the point of execution."""
196
199
 
197
200
  @final
198
201
  class ExecutionOptionsBuilder:
@@ -216,9 +219,44 @@ class ExecutionOptionsBuilder:
216
219
  @timeout_seconds.setter
217
220
  def timeout_seconds(self, timeout_seconds: Optional[float]):
218
221
  """Set the number of seconds to wait before timing out. If set to `None` there is no timeout."""
222
+ @property
223
+ def api_options(self) -> bool:
224
+ raise AttributeError("api_options is not readable")
225
+ @api_options.setter
226
+ def api_options(self, api_options: APIExecutionOptions):
227
+ """Execution options particular to the API call at the point of execution."""
219
228
  def build(self) -> ExecutionOptions:
220
229
  """Build the ``ExecutionOptions`` using the options set in this builder."""
221
230
 
231
+ @final
232
+ class APIExecutionOptions:
233
+ @staticmethod
234
+ def default() -> APIExecutionOptions:
235
+ """Return APIExecutionOptions with a reasonable set of defaults."""
236
+ ...
237
+ @staticmethod
238
+ def builder() -> APIExecutionOptionsBuilder:
239
+ """Get an ``APIExecutionOptionsBuilder`` that can be used to build a custom set of ``APIExecutionOptions``"""
240
+ @property
241
+ def bypass_settings_protection(self) -> bool:
242
+ """Whether or not to force managed settings to change, if applicable. Subject to additional authorization requirements."""
243
+
244
+ @final
245
+ class APIExecutionOptionsBuilder:
246
+ def __new__(cls) -> APIExecutionOptionsBuilder: ...
247
+ @staticmethod
248
+ def default() -> APIExecutionOptionsBuilder:
249
+ """Return a builder with the default values for ``APIExecutionOptions``"""
250
+ ...
251
+ @property
252
+ def bypass_settings_protection(self) -> bool:
253
+ raise AttributeError("bypass_settings_protection is not readable")
254
+ @bypass_settings_protection.setter
255
+ def bypass_settings_protection(self, bypass_settings_protection: bool):
256
+ """Whether or not to force managed settings to change, if applicable. Subject to additional authorization requirements."""
257
+ def build(self) -> APIExecutionOptions:
258
+ """Build the ``APIExecutionOptions`` using the options set in this builder."""
259
+
222
260
  @final
223
261
  class ConnectionStrategy:
224
262
  """The connection strategy to use when submitting and retrieiving jobs from a quantum processor."""
@@ -11,7 +11,10 @@ use pyo3::{
11
11
  types::{PyComplex, PyInt},
12
12
  IntoPy, Py, PyObject, PyResult, Python, ToPyObject,
13
13
  };
14
- use qcs::qpu::api::{ConnectionStrategy, ExecutionOptions, ExecutionOptionsBuilder};
14
+ use qcs::qpu::api::{
15
+ ApiExecutionOptions, ApiExecutionOptionsBuilder, ConnectionStrategy, ExecutionOptions,
16
+ ExecutionOptionsBuilder,
17
+ };
15
18
  use qcs_api_client_grpc::models::controller::{
16
19
  data_value, readout_values, ControllerJobExecutionResult,
17
20
  };
@@ -33,7 +36,9 @@ create_init_submodule! {
33
36
  ExecutionResults,
34
37
  PyConnectionStrategy,
35
38
  PyExecutionOptions,
36
- PyExecutionOptionsBuilder
39
+ PyExecutionOptionsBuilder,
40
+ PyApiExecutionOptions,
41
+ PyApiExecutionOptionsBuilder
37
42
  ],
38
43
  errors: [
39
44
  SubmissionError,
@@ -300,6 +305,13 @@ py_wrap_type! {
300
305
  impl_repr!(PyExecutionOptions);
301
306
  impl_as_mut_for_wrapper!(PyExecutionOptions);
302
307
 
308
+ py_wrap_type! {
309
+ #[derive(Debug, Default)]
310
+ PyApiExecutionOptions(ApiExecutionOptions) as "APIExecutionOptions"
311
+ }
312
+ impl_repr!(PyApiExecutionOptions);
313
+ impl_as_mut_for_wrapper!(PyApiExecutionOptions);
314
+
303
315
  #[pymethods]
304
316
  impl PyExecutionOptions {
305
317
  #[staticmethod]
@@ -324,6 +336,13 @@ impl PyExecutionOptions {
324
336
  .map(|timeout| timeout.as_secs_f64())
325
337
  }
326
338
 
339
+ #[getter]
340
+ fn api_options(&self) -> Option<PyApiExecutionOptions> {
341
+ self.as_inner()
342
+ .api_options()
343
+ .map(|x| PyApiExecutionOptions(x.clone().into()))
344
+ }
345
+
327
346
  fn __richcmp__(&self, py: Python<'_>, other: &Self, op: CompareOp) -> PyObject {
328
347
  match op {
329
348
  CompareOp::Eq => (self.as_inner() == other.as_inner()).into_py(py),
@@ -332,6 +351,24 @@ impl PyExecutionOptions {
332
351
  }
333
352
  }
334
353
 
354
+ #[pymethods]
355
+ impl PyApiExecutionOptions {
356
+ #[staticmethod]
357
+ fn default() -> Self {
358
+ Self::from(ApiExecutionOptions::default())
359
+ }
360
+
361
+ #[staticmethod]
362
+ fn builder() -> PyApiExecutionOptionsBuilder {
363
+ PyApiExecutionOptionsBuilder::default()
364
+ }
365
+
366
+ #[getter]
367
+ fn bypass_settings_protection(&self) -> bool {
368
+ self.as_inner().bypass_settings_protection()
369
+ }
370
+ }
371
+
335
372
  py_wrap_type! {
336
373
  PyExecutionOptionsBuilder(ExecutionOptionsBuilder) as "ExecutionOptionsBuilder"
337
374
  }
@@ -361,6 +398,16 @@ impl PyExecutionOptionsBuilder {
361
398
  );
362
399
  }
363
400
 
401
+ #[setter]
402
+ fn api_options(&mut self, api_options: Option<PyApiExecutionOptions>) {
403
+ *self = Self::from(
404
+ self.as_inner()
405
+ .clone()
406
+ .api_options(api_options.map(|x| x.into_inner().into()))
407
+ .clone(),
408
+ );
409
+ }
410
+
364
411
  #[setter]
365
412
  fn timeout_seconds(&mut self, timeout_seconds: Option<f64>) {
366
413
  let timeout = timeout_seconds.map(Duration::from_secs_f64);
@@ -376,6 +423,44 @@ impl PyExecutionOptionsBuilder {
376
423
  }
377
424
  }
378
425
 
426
+ py_wrap_type! {
427
+ PyApiExecutionOptionsBuilder(ApiExecutionOptionsBuilder) as "APIExecutionOptionsBuilder"
428
+ }
429
+
430
+ #[pymethods]
431
+ impl PyApiExecutionOptionsBuilder {
432
+ #[new]
433
+ fn new() -> Self {
434
+ Self::default()
435
+ }
436
+
437
+ #[staticmethod]
438
+ fn default() -> Self {
439
+ Self::from(ApiExecutionOptionsBuilder::default())
440
+ }
441
+
442
+ #[setter]
443
+ fn bypass_settings_protection(&mut self, bypass_settings_protection: bool) {
444
+ // `derive_builder::Builder` doesn't implement AsMut, meaning we can't use `PyWrapperMut`,
445
+ // which forces us into this awkward clone.
446
+
447
+ *self = Self::from(
448
+ self.as_inner()
449
+ .clone()
450
+ .bypass_settings_protection(bypass_settings_protection)
451
+ .clone(),
452
+ );
453
+ }
454
+
455
+ fn build(&self) -> PyResult<PyApiExecutionOptions> {
456
+ Ok(PyApiExecutionOptions::from(
457
+ self.as_inner()
458
+ .build()
459
+ .map_err(|err| PyValueError::new_err(err.to_string()))?,
460
+ ))
461
+ }
462
+ }
463
+
379
464
  py_wrap_type! {
380
465
  #[derive(Default)]
381
466
  PyConnectionStrategy(ConnectionStrategy) as "ConnectionStrategy"
@@ -1,7 +1,7 @@
1
1
  # This is the metadata Maturin uploads to PyPI on publish
2
2
  [project]
3
3
  name = "qcs-sdk-python"
4
- version = "0.16.1-rc.0"
4
+ version = "0.16.2"
5
5
  description = "Python interface for the QCS Rust SDK"
6
6
  readme = "README.md"
7
7
  license = { text = "Apache-2.0" }
@@ -20,13 +20,13 @@ classifiers = [
20
20
  "Programming Language :: Python :: 3.11",
21
21
  "Operating System :: OS Independent",
22
22
  ]
23
- dependencies = ["quil==0.6.3"]
23
+ dependencies = ["quil==0.6.4"]
24
24
 
25
25
  # PEP 621 specifies the [project] table as the source for project metadata. However, Poetry only supports [tool.poetry]
26
26
  # We can remove this table once this issue is resolved: https://github.com/python-poetry/poetry/issues/3332
27
27
  [tool.poetry]
28
28
  name = "qcs-sdk-python"
29
- version = "0.16.1-rc.0"
29
+ version = "0.16.2"
30
30
  description = "Python interface for the QCS Rust SDK"
31
31
  readme = "README.md"
32
32
  authors = [
@@ -193,6 +193,9 @@ class ExecutionOptions:
193
193
  @property
194
194
  def timeout_seconds(self) -> Optional[float]:
195
195
  """The time in seconds to wait before timing out a request, if any."""
196
+ @property
197
+ def api_options(self) -> bool:
198
+ """Execution options particular to the API call at the point of execution."""
196
199
 
197
200
  @final
198
201
  class ExecutionOptionsBuilder:
@@ -216,9 +219,44 @@ class ExecutionOptionsBuilder:
216
219
  @timeout_seconds.setter
217
220
  def timeout_seconds(self, timeout_seconds: Optional[float]):
218
221
  """Set the number of seconds to wait before timing out. If set to `None` there is no timeout."""
222
+ @property
223
+ def api_options(self) -> bool:
224
+ raise AttributeError("api_options is not readable")
225
+ @api_options.setter
226
+ def api_options(self, api_options: APIExecutionOptions):
227
+ """Execution options particular to the API call at the point of execution."""
219
228
  def build(self) -> ExecutionOptions:
220
229
  """Build the ``ExecutionOptions`` using the options set in this builder."""
221
230
 
231
+ @final
232
+ class APIExecutionOptions:
233
+ @staticmethod
234
+ def default() -> APIExecutionOptions:
235
+ """Return APIExecutionOptions with a reasonable set of defaults."""
236
+ ...
237
+ @staticmethod
238
+ def builder() -> APIExecutionOptionsBuilder:
239
+ """Get an ``APIExecutionOptionsBuilder`` that can be used to build a custom set of ``APIExecutionOptions``"""
240
+ @property
241
+ def bypass_settings_protection(self) -> bool:
242
+ """Whether or not to force managed settings to change, if applicable. Subject to additional authorization requirements."""
243
+
244
+ @final
245
+ class APIExecutionOptionsBuilder:
246
+ def __new__(cls) -> APIExecutionOptionsBuilder: ...
247
+ @staticmethod
248
+ def default() -> APIExecutionOptionsBuilder:
249
+ """Return a builder with the default values for ``APIExecutionOptions``"""
250
+ ...
251
+ @property
252
+ def bypass_settings_protection(self) -> bool:
253
+ raise AttributeError("bypass_settings_protection is not readable")
254
+ @bypass_settings_protection.setter
255
+ def bypass_settings_protection(self, bypass_settings_protection: bool):
256
+ """Whether or not to force managed settings to change, if applicable. Subject to additional authorization requirements."""
257
+ def build(self) -> APIExecutionOptions:
258
+ """Build the ``APIExecutionOptions`` using the options set in this builder."""
259
+
222
260
  @final
223
261
  class ConnectionStrategy:
224
262
  """The connection strategy to use when submitting and retrieiving jobs from a quantum processor."""