qcs-sdk-python 0.26.0rc3__tar.gz → 0.26.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.
Files changed (136) hide show
  1. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/Cargo.lock +169 -21
  2. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/Cargo.toml +3 -3
  3. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/PKG-INFO +1 -1
  4. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/CHANGELOG.md +54 -0
  5. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/Cargo.toml +2 -2
  6. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/src/compiler/isa/mod.rs +1 -1
  7. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/src/qpu/api/mod.rs +52 -46
  8. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/src/qpu/isa/python.rs +10 -10
  9. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/tests/mocked_qpu.rs +13 -5
  10. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/pyproject.toml +1 -1
  11. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/README-py.md +0 -0
  12. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/THIRDPARTY.yaml +0 -0
  13. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/.flake8 +0 -0
  14. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/Makefile.toml +0 -0
  15. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/README-py.md +0 -0
  16. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/README.md +0 -0
  17. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/THIRDPARTY.yaml +0 -0
  18. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/build.rs +0 -0
  19. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/examples/delayed_job_retrieval.rs +0 -0
  20. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/examples/execute.rs +0 -0
  21. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/examples/libquil.rs +0 -0
  22. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/examples/local.rs +0 -0
  23. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/examples/parametric_compilation.rs +0 -0
  24. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/examples/quil_t.rs +0 -0
  25. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/poetry.lock +0 -0
  26. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/poetry.toml +0 -0
  27. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/python/stubtest-allowlist +0 -0
  28. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/scripts/check-py-api.sh +0 -0
  29. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/scripts/lint-bindings.py +0 -0
  30. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/scripts/patch_grpc_web.py +0 -0
  31. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/src/bin/diagnostics.rs +0 -0
  32. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/src/bin/stub_gen.rs +0 -0
  33. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/src/client.rs +0 -0
  34. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/src/compiler/isa/edge.rs +0 -0
  35. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/src/compiler/isa/operator.rs +0 -0
  36. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/src/compiler/isa/qubit.rs +0 -0
  37. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/src/compiler/libquil.rs +0 -0
  38. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/src/compiler/mod.rs +0 -0
  39. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/src/compiler/python.rs +0 -0
  40. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/src/compiler/quilc.rs +0 -0
  41. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/src/compiler/rpcq.rs +0 -0
  42. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/src/diagnostics/mod.rs +0 -0
  43. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/src/diagnostics/python.rs +0 -0
  44. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/src/executable.rs +0 -0
  45. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/src/execution_data.rs +0 -0
  46. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/src/lib.rs +0 -0
  47. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/src/python/client.rs +0 -0
  48. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/src/python/errors.rs +0 -0
  49. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/src/python/executable.rs +0 -0
  50. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/src/python/execution_data.rs +0 -0
  51. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/src/python/mod.rs +0 -0
  52. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/src/python/nonzero.rs +0 -0
  53. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/src/python/register_data.rs +0 -0
  54. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/src/qpu/api/python.rs +0 -0
  55. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/src/qpu/execution.rs +0 -0
  56. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/src/qpu/experimental/mod.rs +0 -0
  57. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/src/qpu/experimental/python.rs +0 -0
  58. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/src/qpu/experimental/random.rs +0 -0
  59. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/src/qpu/isa/mod.rs +0 -0
  60. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/src/qpu/mod.rs +0 -0
  61. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/src/qpu/python.rs +0 -0
  62. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/src/qpu/result_data.rs +0 -0
  63. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/src/qpu/snapshots/qcs__qpu__rewrite_arithmetic__describe_rewrite_arithmetic__it_allocates_for_multiple_expressions-2.snap +0 -0
  64. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/src/qpu/snapshots/qcs__qpu__rewrite_arithmetic__describe_rewrite_arithmetic__it_allocates_for_multiple_expressions.snap +0 -0
  65. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/src/qpu/snapshots/qcs__qpu__rewrite_arithmetic__describe_rewrite_arithmetic__it_converts_frequency_expressions-2.snap +0 -0
  66. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/src/qpu/snapshots/qcs__qpu__rewrite_arithmetic__describe_rewrite_arithmetic__it_converts_frequency_expressions.snap +0 -0
  67. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/src/qpu/snapshots/qcs__qpu__rewrite_arithmetic__describe_rewrite_arithmetic__it_converts_phases.snap +0 -0
  68. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/src/qpu/snapshots/qcs__qpu__rewrite_arithmetic__describe_rewrite_arithmetic__it_converts_set_scale_units.snap +0 -0
  69. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/src/qpu/snapshots/qcs__qpu__rewrite_arithmetic__describe_rewrite_arithmetic__it_substitutes_and_reuses_gate_expressions.snap +0 -0
  70. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/src/qpu/snapshots/qcs__qpu__rewrite_arithmetic__describe_rewrite_arithmetic__it_substitutes_gate_parameters.snap +0 -0
  71. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/src/qpu/translation/mod.rs +0 -0
  72. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/src/qpu/translation/python.rs +0 -0
  73. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/src/qvm/execution.rs +0 -0
  74. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/src/qvm/http.rs +0 -0
  75. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/src/qvm/libquil.rs +0 -0
  76. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/src/qvm/mod.rs +0 -0
  77. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/src/qvm/python.rs +0 -0
  78. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/src/qvm/snapshots/qcs__qvm__test__apply_valid_parameters_to_program.snap +0 -0
  79. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/src/register_data.rs +0 -0
  80. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/tests/aspen_9_isa.json +0 -0
  81. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/tests/basic_qvm.rs +0 -0
  82. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/tests/bell_state_response_data.hex +0 -0
  83. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/tests/compiler-isa-Aspen-8.json +0 -0
  84. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/tests/parametric_compilation.rs +0 -0
  85. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/tests/prng_test_cases.json +0 -0
  86. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/tests/qcs-isa-Aspen-8.json +0 -0
  87. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/tests/qvm_api.rs +0 -0
  88. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/tests/qvm_isa.json +0 -0
  89. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/tests/settings.toml +0 -0
  90. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/tests_py/_fixtures/aspen-m-3.json +0 -0
  91. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/tests_py/_fixtures/device-2q.json +0 -0
  92. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/tests_py/_qcs_config/secrets.toml +0 -0
  93. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/tests_py/_qcs_config/settings.toml +0 -0
  94. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/tests_py/compiler/__snapshots__/test_quilc.ambr +0 -0
  95. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/tests_py/compiler/test_quilc.py +0 -0
  96. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/tests_py/conftest.py +0 -0
  97. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/tests_py/execution_data/test_execution_data.py +0 -0
  98. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/tests_py/qpu/experimental/test_random.py +0 -0
  99. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/tests_py/qpu/test_api.py +0 -0
  100. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/tests_py/qpu/test_isa.py +0 -0
  101. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/tests_py/qpu/test_qpu.py +0 -0
  102. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/tests_py/qpu/test_translation.py +0 -0
  103. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/tests_py/qvm/test_qvm.py +0 -0
  104. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/tests_py/test_client.py +0 -0
  105. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/tests_py/test_diagnostics.py +0 -0
  106. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/tests_py/test_executable.py +0 -0
  107. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/tests_py/test_logging.py +0 -0
  108. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/crates/lib/tests_py/test_tracing_subscriber.py +0 -0
  109. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/python/qcs_sdk/__init__.py +0 -0
  110. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/python/qcs_sdk/__init__.pyi +0 -0
  111. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/python/qcs_sdk/_tracing_subscriber/__init__.py +0 -0
  112. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/python/qcs_sdk/_tracing_subscriber/__init__.pyi +0 -0
  113. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/python/qcs_sdk/_tracing_subscriber/common/__init__.py +0 -0
  114. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/python/qcs_sdk/_tracing_subscriber/common/__init__.pyi +0 -0
  115. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/python/qcs_sdk/_tracing_subscriber/layers/__init__.py +0 -0
  116. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/python/qcs_sdk/_tracing_subscriber/layers/__init__.pyi +0 -0
  117. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/python/qcs_sdk/_tracing_subscriber/layers/file/__init__.py +0 -0
  118. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/python/qcs_sdk/_tracing_subscriber/layers/file/__init__.pyi +0 -0
  119. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/python/qcs_sdk/_tracing_subscriber/layers/otel_otlp/__init__.py +0 -0
  120. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/python/qcs_sdk/_tracing_subscriber/layers/otel_otlp/__init__.pyi +0 -0
  121. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/python/qcs_sdk/_tracing_subscriber/layers/otel_otlp_file/__init__.py +0 -0
  122. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/python/qcs_sdk/_tracing_subscriber/layers/otel_otlp_file/__init__.pyi +0 -0
  123. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/python/qcs_sdk/_tracing_subscriber/subscriber/__init__.py +0 -0
  124. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/python/qcs_sdk/_tracing_subscriber/subscriber/__init__.pyi +0 -0
  125. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/python/qcs_sdk/client.pyi +0 -0
  126. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/python/qcs_sdk/compiler/__init__.pyi +0 -0
  127. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/python/qcs_sdk/compiler/quilc.pyi +0 -0
  128. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/python/qcs_sdk/diagnostics.pyi +0 -0
  129. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/python/qcs_sdk/qpu/__init__.pyi +0 -0
  130. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/python/qcs_sdk/qpu/api.pyi +0 -0
  131. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/python/qcs_sdk/qpu/experimental/__init__.pyi +0 -0
  132. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/python/qcs_sdk/qpu/experimental/random.pyi +0 -0
  133. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/python/qcs_sdk/qpu/isa.pyi +0 -0
  134. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/python/qcs_sdk/qpu/translation.pyi +0 -0
  135. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/python/qcs_sdk/qvm/__init__.pyi +0 -0
  136. {qcs_sdk_python-0.26.0rc3 → qcs_sdk_python-0.26.1}/python/qcs_sdk/qvm/api.pyi +0 -0
@@ -659,6 +659,16 @@ dependencies = [
659
659
  "darling_macro 0.20.11",
660
660
  ]
661
661
 
662
+ [[package]]
663
+ name = "darling"
664
+ version = "0.23.0"
665
+ source = "registry+https://github.com/rust-lang/crates.io-index"
666
+ checksum = "25ae13da2f202d56bd7f91c25fba009e7717a1e4a1cc98a76d844b65ae912e9d"
667
+ dependencies = [
668
+ "darling_core 0.23.0",
669
+ "darling_macro 0.23.0",
670
+ ]
671
+
662
672
  [[package]]
663
673
  name = "darling_core"
664
674
  version = "0.14.4"
@@ -687,6 +697,19 @@ dependencies = [
687
697
  "syn 2.0.114",
688
698
  ]
689
699
 
700
+ [[package]]
701
+ name = "darling_core"
702
+ version = "0.23.0"
703
+ source = "registry+https://github.com/rust-lang/crates.io-index"
704
+ checksum = "9865a50f7c335f53564bb694ef660825eb8610e0a53d3e11bf1b0d3df31e03b0"
705
+ dependencies = [
706
+ "ident_case",
707
+ "proc-macro2",
708
+ "quote",
709
+ "strsim 0.11.1",
710
+ "syn 2.0.114",
711
+ ]
712
+
690
713
  [[package]]
691
714
  name = "darling_macro"
692
715
  version = "0.14.4"
@@ -709,6 +732,17 @@ dependencies = [
709
732
  "syn 2.0.114",
710
733
  ]
711
734
 
735
+ [[package]]
736
+ name = "darling_macro"
737
+ version = "0.23.0"
738
+ source = "registry+https://github.com/rust-lang/crates.io-index"
739
+ checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d"
740
+ dependencies = [
741
+ "darling_core 0.23.0",
742
+ "quote",
743
+ "syn 2.0.114",
744
+ ]
745
+
712
746
  [[package]]
713
747
  name = "dashmap"
714
748
  version = "5.5.3"
@@ -828,6 +862,12 @@ version = "1.0.5"
828
862
  source = "registry+https://github.com/rust-lang/crates.io-index"
829
863
  checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813"
830
864
 
865
+ [[package]]
866
+ name = "dyn-clone"
867
+ version = "1.0.20"
868
+ source = "registry+https://github.com/rust-lang/crates.io-index"
869
+ checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555"
870
+
831
871
  [[package]]
832
872
  name = "either"
833
873
  version = "1.15.0"
@@ -1138,7 +1178,7 @@ dependencies = [
1138
1178
  "futures-sink",
1139
1179
  "futures-util",
1140
1180
  "http 0.2.12",
1141
- "indexmap",
1181
+ "indexmap 2.13.0",
1142
1182
  "slab",
1143
1183
  "tokio",
1144
1184
  "tokio-util",
@@ -1157,7 +1197,7 @@ dependencies = [
1157
1197
  "futures-core",
1158
1198
  "futures-sink",
1159
1199
  "http 1.4.0",
1160
- "indexmap",
1200
+ "indexmap 2.13.0",
1161
1201
  "slab",
1162
1202
  "tokio",
1163
1203
  "tokio-util",
@@ -1180,6 +1220,12 @@ dependencies = [
1180
1220
  "thiserror 2.0.18",
1181
1221
  ]
1182
1222
 
1223
+ [[package]]
1224
+ name = "hashbrown"
1225
+ version = "0.12.3"
1226
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1227
+ checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
1228
+
1183
1229
  [[package]]
1184
1230
  name = "hashbrown"
1185
1231
  version = "0.13.2"
@@ -1657,6 +1703,17 @@ dependencies = [
1657
1703
  "icu_properties",
1658
1704
  ]
1659
1705
 
1706
+ [[package]]
1707
+ name = "indexmap"
1708
+ version = "1.9.3"
1709
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1710
+ checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99"
1711
+ dependencies = [
1712
+ "autocfg",
1713
+ "hashbrown 0.12.3",
1714
+ "serde",
1715
+ ]
1716
+
1660
1717
  [[package]]
1661
1718
  name = "indexmap"
1662
1719
  version = "2.13.0"
@@ -1665,6 +1722,8 @@ checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017"
1665
1722
  dependencies = [
1666
1723
  "equivalent",
1667
1724
  "hashbrown 0.16.1",
1725
+ "serde",
1726
+ "serde_core",
1668
1727
  ]
1669
1728
 
1670
1729
  [[package]]
@@ -2753,7 +2812,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
2753
2812
  checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db"
2754
2813
  dependencies = [
2755
2814
  "fixedbitset",
2756
- "indexmap",
2815
+ "indexmap 2.13.0",
2757
2816
  ]
2758
2817
 
2759
2818
  [[package]]
@@ -3007,7 +3066,7 @@ version = "0.27.2"
3007
3066
  source = "registry+https://github.com/rust-lang/crates.io-index"
3008
3067
  checksum = "ab53c047fcd1a1d2a8820fe84f05d6be69e9526be40cb03b73f86b6b03e6d87d"
3009
3068
  dependencies = [
3010
- "indexmap",
3069
+ "indexmap 2.13.0",
3011
3070
  "indoc",
3012
3071
  "inventory",
3013
3072
  "libc",
@@ -3133,7 +3192,7 @@ dependencies = [
3133
3192
  "anyhow",
3134
3193
  "chrono",
3135
3194
  "either",
3136
- "indexmap",
3195
+ "indexmap 2.13.0",
3137
3196
  "inventory",
3138
3197
  "itertools 0.14.0",
3139
3198
  "log",
@@ -3154,7 +3213,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
3154
3213
  checksum = "2426ba759d848787239d80f9fdb1f223786976f87fb6c3da8188ca7c17744b28"
3155
3214
  dependencies = [
3156
3215
  "heck 0.5.0",
3157
- "indexmap",
3216
+ "indexmap 2.13.0",
3158
3217
  "proc-macro2",
3159
3218
  "quote",
3160
3219
  "rustpython-parser",
@@ -3188,7 +3247,7 @@ dependencies = [
3188
3247
 
3189
3248
  [[package]]
3190
3249
  name = "qcs"
3191
- version = "0.26.0-rc.3"
3250
+ version = "0.26.1"
3192
3251
  dependencies = [
3193
3252
  "assert2",
3194
3253
  "async-trait",
@@ -3201,7 +3260,7 @@ dependencies = [
3201
3260
  "futures",
3202
3261
  "futures-util",
3203
3262
  "hex",
3204
- "indexmap",
3263
+ "indexmap 2.13.0",
3205
3264
  "insta",
3206
3265
  "itertools 0.12.1",
3207
3266
  "lazy_static",
@@ -3252,9 +3311,9 @@ dependencies = [
3252
3311
 
3253
3312
  [[package]]
3254
3313
  name = "qcs-api-client-common"
3255
- version = "0.15.3"
3314
+ version = "0.17.0"
3256
3315
  source = "registry+https://github.com/rust-lang/crates.io-index"
3257
- checksum = "bdc0501a74bdee8ea88ad07d531f9bf506c7ab2839e7eac67000b64d4bc54c34"
3316
+ checksum = "b88868b8da4b216c54fc5b30244050cfb6d2c406ee723593475fbd014206133a"
3258
3317
  dependencies = [
3259
3318
  "async-tempfile",
3260
3319
  "async-trait",
@@ -3294,9 +3353,9 @@ dependencies = [
3294
3353
 
3295
3354
  [[package]]
3296
3355
  name = "qcs-api-client-grpc"
3297
- version = "0.15.3"
3356
+ version = "0.17.0"
3298
3357
  source = "registry+https://github.com/rust-lang/crates.io-index"
3299
- checksum = "5c6bfa1fa8ca6117eec6428522ee8757eb654835a14986ea60b39e939b4164c9"
3358
+ checksum = "764eaf5498238f5dd7a1b6f93e18c812791093c19bddbcf8c331a2dc16f19059"
3300
3359
  dependencies = [
3301
3360
  "backoff",
3302
3361
  "futures-util",
@@ -3333,9 +3392,9 @@ dependencies = [
3333
3392
 
3334
3393
  [[package]]
3335
3394
  name = "qcs-api-client-openapi"
3336
- version = "0.16.3"
3395
+ version = "0.18.0"
3337
3396
  source = "registry+https://github.com/rust-lang/crates.io-index"
3338
- checksum = "f4691f7df5a99e1fdb9e61f2dd782ee9c14f9964de8391067421d51f350159f2"
3397
+ checksum = "5cb716214a3b7dfa0f35a40b4ce8f69ab467f6f542f9771b7c47a3dcfdd5db61"
3339
3398
  dependencies = [
3340
3399
  "anyhow",
3341
3400
  "http 1.4.0",
@@ -3345,6 +3404,9 @@ dependencies = [
3345
3404
  "reqwest-tracing",
3346
3405
  "serde",
3347
3406
  "serde_json",
3407
+ "serde_path_to_error",
3408
+ "serde_repr",
3409
+ "serde_with",
3348
3410
  "tokio",
3349
3411
  "tracing",
3350
3412
  "tracing-opentelemetry",
@@ -3359,7 +3421,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
3359
3421
  checksum = "281944c5f662c40607e966f9628cb0a3a23c4f854c4cf2089e6e61b98f2c8c58"
3360
3422
  dependencies = [
3361
3423
  "approx",
3362
- "indexmap",
3424
+ "indexmap 2.13.0",
3363
3425
  "internment",
3364
3426
  "itertools 0.12.1",
3365
3427
  "lexical",
@@ -3557,6 +3619,26 @@ dependencies = [
3557
3619
  "bitflags 2.10.0",
3558
3620
  ]
3559
3621
 
3622
+ [[package]]
3623
+ name = "ref-cast"
3624
+ version = "1.0.25"
3625
+ source = "registry+https://github.com/rust-lang/crates.io-index"
3626
+ checksum = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d"
3627
+ dependencies = [
3628
+ "ref-cast-impl",
3629
+ ]
3630
+
3631
+ [[package]]
3632
+ name = "ref-cast-impl"
3633
+ version = "1.0.25"
3634
+ source = "registry+https://github.com/rust-lang/crates.io-index"
3635
+ checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da"
3636
+ dependencies = [
3637
+ "proc-macro2",
3638
+ "quote",
3639
+ "syn 2.0.114",
3640
+ ]
3641
+
3560
3642
  [[package]]
3561
3643
  name = "regex"
3562
3644
  version = "1.12.3"
@@ -3683,7 +3765,7 @@ version = "0.5.0"
3683
3765
  source = "registry+https://github.com/rust-lang/crates.io-index"
3684
3766
  checksum = "0a440c858291b41a07ad12f55f5e067fe804f899a9e5d08ab2ef379228305740"
3685
3767
  dependencies = [
3686
- "indexmap",
3768
+ "indexmap 2.13.0",
3687
3769
  "itertools 0.14.0",
3688
3770
  "opentelemetry",
3689
3771
  "optipy",
@@ -4002,6 +4084,30 @@ dependencies = [
4002
4084
  "windows-sys 0.61.2",
4003
4085
  ]
4004
4086
 
4087
+ [[package]]
4088
+ name = "schemars"
4089
+ version = "0.9.0"
4090
+ source = "registry+https://github.com/rust-lang/crates.io-index"
4091
+ checksum = "4cd191f9397d57d581cddd31014772520aa448f65ef991055d7f61582c65165f"
4092
+ dependencies = [
4093
+ "dyn-clone",
4094
+ "ref-cast",
4095
+ "serde",
4096
+ "serde_json",
4097
+ ]
4098
+
4099
+ [[package]]
4100
+ name = "schemars"
4101
+ version = "1.2.1"
4102
+ source = "registry+https://github.com/rust-lang/crates.io-index"
4103
+ checksum = "a2b42f36aa1cd011945615b92222f6bf73c599a102a300334cd7f8dbeec726cc"
4104
+ dependencies = [
4105
+ "dyn-clone",
4106
+ "ref-cast",
4107
+ "serde",
4108
+ "serde_json",
4109
+ ]
4110
+
4005
4111
  [[package]]
4006
4112
  name = "scoped-tls"
4007
4113
  version = "1.0.1"
@@ -4114,6 +4220,17 @@ dependencies = [
4114
4220
  "serde_core",
4115
4221
  ]
4116
4222
 
4223
+ [[package]]
4224
+ name = "serde_repr"
4225
+ version = "0.1.20"
4226
+ source = "registry+https://github.com/rust-lang/crates.io-index"
4227
+ checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c"
4228
+ dependencies = [
4229
+ "proc-macro2",
4230
+ "quote",
4231
+ "syn 2.0.114",
4232
+ ]
4233
+
4117
4234
  [[package]]
4118
4235
  name = "serde_spanned"
4119
4236
  version = "0.6.9"
@@ -4144,6 +4261,37 @@ dependencies = [
4144
4261
  "serde",
4145
4262
  ]
4146
4263
 
4264
+ [[package]]
4265
+ name = "serde_with"
4266
+ version = "3.18.0"
4267
+ source = "registry+https://github.com/rust-lang/crates.io-index"
4268
+ checksum = "dd5414fad8e6907dbdd5bc441a50ae8d6e26151a03b1de04d89a5576de61d01f"
4269
+ dependencies = [
4270
+ "base64 0.22.1",
4271
+ "chrono",
4272
+ "hex",
4273
+ "indexmap 1.9.3",
4274
+ "indexmap 2.13.0",
4275
+ "schemars 0.9.0",
4276
+ "schemars 1.2.1",
4277
+ "serde_core",
4278
+ "serde_json",
4279
+ "serde_with_macros",
4280
+ "time",
4281
+ ]
4282
+
4283
+ [[package]]
4284
+ name = "serde_with_macros"
4285
+ version = "3.18.0"
4286
+ source = "registry+https://github.com/rust-lang/crates.io-index"
4287
+ checksum = "d3db8978e608f1fe7357e211969fd9abdcae80bac1ba7a3369bb7eb6b404eb65"
4288
+ dependencies = [
4289
+ "darling 0.23.0",
4290
+ "proc-macro2",
4291
+ "quote",
4292
+ "syn 2.0.114",
4293
+ ]
4294
+
4147
4295
  [[package]]
4148
4296
  name = "sha1"
4149
4297
  version = "0.10.6"
@@ -4734,7 +4882,7 @@ version = "0.9.11+spec-1.1.0"
4734
4882
  source = "registry+https://github.com/rust-lang/crates.io-index"
4735
4883
  checksum = "f3afc9a848309fe1aaffaed6e1546a7a14de1f935dc9d89d32afd9a44bab7c46"
4736
4884
  dependencies = [
4737
- "indexmap",
4885
+ "indexmap 2.13.0",
4738
4886
  "serde_core",
4739
4887
  "serde_spanned 1.0.4",
4740
4888
  "toml_datetime 0.7.5+spec-1.1.0",
@@ -4767,7 +4915,7 @@ version = "0.19.15"
4767
4915
  source = "registry+https://github.com/rust-lang/crates.io-index"
4768
4916
  checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421"
4769
4917
  dependencies = [
4770
- "indexmap",
4918
+ "indexmap 2.13.0",
4771
4919
  "serde",
4772
4920
  "serde_spanned 0.6.9",
4773
4921
  "toml_datetime 0.6.11",
@@ -4780,7 +4928,7 @@ version = "0.22.27"
4780
4928
  source = "registry+https://github.com/rust-lang/crates.io-index"
4781
4929
  checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a"
4782
4930
  dependencies = [
4783
- "indexmap",
4931
+ "indexmap 2.13.0",
4784
4932
  "serde",
4785
4933
  "serde_spanned 0.6.9",
4786
4934
  "toml_datetime 0.6.11",
@@ -4794,7 +4942,7 @@ version = "0.23.10+spec-1.0.0"
4794
4942
  source = "registry+https://github.com/rust-lang/crates.io-index"
4795
4943
  checksum = "84c8b9f757e028cee9fa244aea147aab2a9ec09d5325a9b01e0a49730c2b5269"
4796
4944
  dependencies = [
4797
- "indexmap",
4945
+ "indexmap 2.13.0",
4798
4946
  "toml_datetime 0.7.5+spec-1.1.0",
4799
4947
  "toml_parser",
4800
4948
  "toml_writer",
@@ -4894,7 +5042,7 @@ checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4"
4894
5042
  dependencies = [
4895
5043
  "futures-core",
4896
5044
  "futures-util",
4897
- "indexmap",
5045
+ "indexmap 2.13.0",
4898
5046
  "pin-project-lite",
4899
5047
  "slab",
4900
5048
  "sync_wrapper",
@@ -28,9 +28,9 @@ tracing-subscriber = { version = "0.3.19" }
28
28
  optipy = "0.1.0"
29
29
  pyo3-opentelemetry = "0.6.0"
30
30
  pyo3-tracing-subscriber = { version = "0.4.0", default-features = false }
31
- qcs-api-client-common = "0.15.3"
32
- qcs-api-client-grpc = "0.15.3"
33
- qcs-api-client-openapi = "0.16.3"
31
+ qcs-api-client-common = "0.17.0"
32
+ qcs-api-client-grpc = "0.17.0"
33
+ qcs-api-client-openapi = "0.18.0"
34
34
  quil-rs = "0.35.0"
35
35
  rigetti-pyo3 = "0.5.0"
36
36
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: qcs-sdk-python
3
- Version: 0.26.0rc3
3
+ Version: 0.26.1
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,57 @@
1
+ ## 0.26.1 (2026-03-30)
2
+
3
+ ### Features
4
+
5
+ - upgrade qcs-api-client dependencies (#581)
6
+
7
+ ### Fixes
8
+
9
+ - selecting an accessor should not prefer None to Some({ rank: None }) (#579)
10
+ - use gzip compression for grpc (#526)
11
+
12
+ ## 0.26.1-rc.2 (2026-03-30)
13
+
14
+ ### Features
15
+
16
+ - upgrade qcs-api-client dependencies (#581)
17
+
18
+ ### Fixes
19
+
20
+ - selecting an accessor should not prefer None to Some({ rank: None }) (#579)
21
+ - use gzip compression for grpc (#526)
22
+
23
+ ## 0.26.1-rc.1 (2026-03-20)
24
+
25
+ ### Features
26
+
27
+ - upgrade qcs-api-client dependencies (#581)
28
+
29
+ ### Fixes
30
+
31
+ - selecting an accessor should not prefer None to Some({ rank: None }) (#579)
32
+
33
+ ## 0.26.1-rc.0 (2026-03-17)
34
+
35
+ ### Fixes
36
+
37
+ - selecting an accessor should not prefer None to Some({ rank: None }) (#579)
38
+
39
+ ## 0.26.0 (2026-03-13)
40
+
41
+ ### Breaking Changes
42
+
43
+ - merge python crate into lib (#571)
44
+
45
+ ### Features
46
+
47
+ - allow direct endpoint connection strategy (#573)
48
+
49
+ ### Fixes
50
+
51
+ - update qcs-api-client dependencies to 0.12.12, (0.13.13 grpc) (#570)
52
+ - elide version value from python stub files (#575)
53
+ - bump qcs-api-client versions to support gateway (#576)
54
+
1
55
  ## 0.26.0-rc.3 (2026-03-13)
2
56
 
3
57
  ### 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.26.0-rc.3"
4
+ version = "0.26.1"
5
5
  edition = "2018"
6
6
  license = "Apache-2.0"
7
7
  repository = "https://github.com/rigetti/qcs-sdk-rust"
@@ -88,7 +88,7 @@ thiserror.workspace = true
88
88
  tokio = { workspace = true, features = ["fs", "rt-multi-thread"] }
89
89
  tokio-util = { workspace = true }
90
90
  toml = "0.9.8"
91
- tonic = { version = "0.13.1", features = ["tls-aws-lc", "tls-native-roots"] }
91
+ tonic = { version = "0.13.1", features = ["tls-aws-lc", "tls-native-roots", "gzip"] }
92
92
  uuid = { version = "1.10.0", features = ["v4"] }
93
93
  zmq = { version = "0.10.0" }
94
94
 
@@ -81,7 +81,7 @@ pub enum Error {
81
81
  "The number of nodes for an operation and site_operation must be (1, 1) or (2, 2). \
82
82
  Got {0:?} while parsing operation {1} at site {2:?}"
83
83
  )]
84
- IncorrectNodes((Option<i64>, usize), String, Vec<i64>),
84
+ IncorrectNodes((Option<u64>, usize), String, Vec<i64>),
85
85
  #[error(transparent)]
86
86
  Qubit(#[from] qubit::Error),
87
87
  #[error(transparent)]
@@ -1,6 +1,8 @@
1
1
  //! This module provides access to the QCS QPU API
2
2
  use std::{convert::TryFrom, fmt, time::Duration};
3
3
 
4
+ use tonic::codec::CompressionEncoding;
5
+
4
6
  #[cfg(feature = "stubs")]
5
7
  use pyo3_stub_gen::derive::{gen_stub_pyclass, gen_stub_pyclass_complex_enum, gen_stub_pymethods};
6
8
 
@@ -30,16 +32,19 @@ use qcs_api_client_grpc::{
30
32
  tonic::{parse_uri, wrap_channel_with, wrap_channel_with_retry},
31
33
  };
32
34
  pub use qcs_api_client_openapi::apis::Error as OpenApiError;
33
- use qcs_api_client_openapi::apis::{
34
- endpoints_api::{
35
- get_default_endpoint as api_get_default_endpoint, get_endpoint, GetDefaultEndpointError,
36
- GetEndpointError,
37
- },
38
- quantum_processors_api::{
39
- list_quantum_processor_accessors, ListQuantumProcessorAccessorsError,
35
+ use qcs_api_client_openapi::models::QuantumProcessorAccessorType;
36
+ use qcs_api_client_openapi::{
37
+ apis::{
38
+ endpoints_api::{
39
+ get_default_endpoint as api_get_default_endpoint, get_endpoint,
40
+ GetDefaultEndpointError, GetEndpointError,
41
+ },
42
+ quantum_processors_api::{
43
+ get_quantum_processor_accessors, GetQuantumProcessorAccessorsError,
44
+ },
40
45
  },
46
+ models::QuantumProcessorAccessor,
41
47
  };
42
- use qcs_api_client_openapi::models::QuantumProcessorAccessorType;
43
48
 
44
49
  use crate::executable::Parameters;
45
50
 
@@ -624,7 +629,9 @@ pub trait ExecutionTarget<'a> {
624
629
  .max_encoding_message_size(MAX_CONTROLLER_OUTBOUND_REQUEST_SIZE)
625
630
  // do not limit the received response size, although practically the limit is 4Gb due
626
631
  // to the frame_length of the message being a u32.
627
- .max_decoding_message_size(u32::MAX as usize))
632
+ .max_decoding_message_size(u32::MAX as usize)
633
+ .accept_compressed(CompressionEncoding::Gzip)
634
+ .send_compressed(CompressionEncoding::Gzip))
628
635
  }
629
636
 
630
637
  /// Get a GRPC connection to a QPU, without specifying the API to use.
@@ -744,40 +751,28 @@ async fn get_accessor_with_cache(
744
751
  }
745
752
 
746
753
  async fn get_accessor(quantum_processor_id: &str, client: &Qcs) -> Result<String, QpuApiError> {
747
- let mut min = None;
748
- let mut next_page_token = None;
749
- loop {
750
- let accessors = list_quantum_processor_accessors(
751
- &client.get_openapi_client(),
752
- quantum_processor_id,
753
- Some(100),
754
- next_page_token.as_deref(),
755
- )
756
- .await?;
754
+ let accessors =
755
+ get_quantum_processor_accessors(&client.get_openapi_client(), quantum_processor_id).await?;
756
+
757
+ let min = select_min_accessor(accessors.accessors);
757
758
 
758
- let accessor = accessors
759
- .accessors
760
- .into_iter()
761
- .filter(|acc| {
762
- acc.live
763
- // `as_deref` needed to work around the `Option<Box<_>>` type.
764
- && acc.access_type.as_deref() == Some(&QuantumProcessorAccessorType::GatewayV1)
765
- })
766
- .min_by_key(|acc| acc.rank.unwrap_or(i64::MAX));
767
-
768
- min = std::cmp::min_by_key(min, accessor, |acc| {
769
- acc.as_ref().and_then(|acc| acc.rank).unwrap_or(i64::MAX)
770
- });
771
-
772
- next_page_token.clone_from(&accessors.next_page_token);
773
- if next_page_token.is_none() {
774
- break;
775
- }
776
- }
777
759
  min.map(|accessor| accessor.url)
778
760
  .ok_or_else(|| QpuApiError::GatewayNotFound(quantum_processor_id.to_string()))
779
761
  }
780
762
 
763
+ /// Select the accessor with the lowest rank from a list of accessors.
764
+ /// - Prefer `Some({ rank: None })` to `None`.
765
+ /// - Prefer the first accessor encountered among those with the same rank value.
766
+ fn select_min_accessor(
767
+ accessors: Vec<QuantumProcessorAccessor>,
768
+ ) -> Option<QuantumProcessorAccessor> {
769
+ accessors
770
+ .into_iter()
771
+ .filter(|accessor| accessor.live)
772
+ .filter(|accessor| accessor.access_type == QuantumProcessorAccessorType::GatewayV1)
773
+ .min_by_key(|accessor| accessor.rank.unwrap_or(i64::MAX))
774
+ }
775
+
781
776
  #[cached(
782
777
  result = true,
783
778
  time = 60,
@@ -801,11 +796,10 @@ async fn get_default_endpoint(
801
796
  ) -> Result<String, QpuApiError> {
802
797
  let default_endpoint =
803
798
  api_get_default_endpoint(&client.get_openapi_client(), quantum_processor_id).await?;
804
- let addresses = default_endpoint.addresses.as_ref();
805
- let grpc_address = addresses.grpc.as_ref();
806
- grpc_address
799
+ default_endpoint
800
+ .addresses
801
+ .grpc
807
802
  .ok_or_else(|| QpuApiError::QpuEndpointNotFound(quantum_processor_id.into()))
808
- .cloned()
809
803
  }
810
804
 
811
805
  /// Errors that can occur while attempting to establish a connection to the QPU.
@@ -829,7 +823,7 @@ pub enum QpuApiError {
829
823
 
830
824
  /// Error due to failure to get accessors for quantum processor
831
825
  #[error("Failed to get accessors for quantum processor: {0}")]
832
- AccessorRequestFailed(#[from] OpenApiError<ListQuantumProcessorAccessorsError>),
826
+ AccessorRequestFailed(#[from] OpenApiError<GetQuantumProcessorAccessorsError>),
833
827
 
834
828
  /// Error due to failure to find gateway for quantum processor
835
829
  #[error("No gateway found for quantum processor: {0}")]
@@ -877,9 +871,7 @@ pub enum QpuApiError {
877
871
 
878
872
  #[cfg(test)]
879
873
  mod test {
880
- use crate::qpu::api::ExecutionOptions;
881
-
882
- use super::ExecutionOptionsBuilder;
874
+ use super::*;
883
875
 
884
876
  #[test]
885
877
  fn test_default_execution_options() {
@@ -888,4 +880,18 @@ mod test {
888
880
  ExecutionOptionsBuilder::default().build().unwrap(),
889
881
  );
890
882
  }
883
+
884
+ #[test]
885
+ fn test_select_min_accessor_prefers_some_to_none() {
886
+ let expected = QuantumProcessorAccessor {
887
+ live: true,
888
+ access_type: QuantumProcessorAccessorType::GatewayV1,
889
+ rank: None,
890
+ url: "url".to_string(),
891
+ };
892
+
893
+ let accessors = vec![expected.clone()];
894
+ let actual = select_min_accessor(accessors);
895
+ assert_eq!(expected, actual.expect("expected Some accessor"));
896
+ }
891
897
  }