bloqade-circuit 0.2.2__tar.gz → 0.2.3__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.

Potentially problematic release.


This version of bloqade-circuit might be problematic. Click here for more details.

Files changed (262) hide show
  1. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/PKG-INFO +1 -1
  2. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/pyproject.toml +1 -1
  3. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/analysis/fidelity/analysis.py +27 -2
  4. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/pyqrack/device.py +108 -18
  5. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/passes/noise.py +28 -0
  6. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/uv.lock +3 -3
  7. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/.github/dependabot.yml +0 -0
  8. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/.github/workflows/ci.yml +0 -0
  9. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/.github/workflows/isort.yml +0 -0
  10. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/.github/workflows/lint.yml +0 -0
  11. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/.github/workflows/release.yml +0 -0
  12. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/.gitignore +0 -0
  13. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/.pre-commit-config.yaml +0 -0
  14. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/LICENSE +0 -0
  15. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/README.md +0 -0
  16. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/_typos.toml +0 -0
  17. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/justfile +0 -0
  18. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/analysis/__init__.py +0 -0
  19. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/analysis/address/__init__.py +0 -0
  20. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/analysis/address/analysis.py +0 -0
  21. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/analysis/address/impls.py +0 -0
  22. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/analysis/address/lattice.py +0 -0
  23. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/analysis/fidelity/__init__.py +0 -0
  24. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/device.py +0 -0
  25. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/noise/__init__.py +0 -0
  26. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/noise/fidelity.py +0 -0
  27. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/noise/native/__init__.py +0 -0
  28. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/noise/native/_dialect.py +0 -0
  29. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/noise/native/_wrappers.py +0 -0
  30. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/noise/native/model.py +0 -0
  31. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/noise/native/rewrite.py +0 -0
  32. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/noise/native/stmts.py +0 -0
  33. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/pyqrack/__init__.py +0 -0
  34. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/pyqrack/base.py +0 -0
  35. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/pyqrack/noise/__init__.py +0 -0
  36. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/pyqrack/noise/native.py +0 -0
  37. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/pyqrack/qasm2/__init__.py +0 -0
  38. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/pyqrack/qasm2/core.py +0 -0
  39. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/pyqrack/qasm2/glob.py +0 -0
  40. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/pyqrack/qasm2/parallel.py +0 -0
  41. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/pyqrack/qasm2/uop.py +0 -0
  42. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/pyqrack/reg.py +0 -0
  43. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/pyqrack/squin/__init__.py +0 -0
  44. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/pyqrack/squin/op.py +0 -0
  45. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/pyqrack/squin/qubit.py +0 -0
  46. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/pyqrack/squin/runtime.py +0 -0
  47. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/pyqrack/squin/wire.py +0 -0
  48. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/pyqrack/target.py +0 -0
  49. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/pyqrack/task.py +0 -0
  50. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/__init__.py +0 -0
  51. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/_wrappers.py +0 -0
  52. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/dialects/__init__.py +0 -0
  53. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/dialects/core/__init__.py +0 -0
  54. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/dialects/core/_dialect.py +0 -0
  55. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/dialects/core/_emit.py +0 -0
  56. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/dialects/core/_typeinfer.py +0 -0
  57. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/dialects/core/address.py +0 -0
  58. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/dialects/core/stmts.py +0 -0
  59. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/dialects/expr/__init__.py +0 -0
  60. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/dialects/expr/_dialect.py +0 -0
  61. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/dialects/expr/_emit.py +0 -0
  62. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/dialects/expr/_from_python.py +0 -0
  63. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/dialects/expr/_interp.py +0 -0
  64. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/dialects/expr/stmts.py +0 -0
  65. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/dialects/glob.py +0 -0
  66. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/dialects/indexing.py +0 -0
  67. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/dialects/inline.py +0 -0
  68. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/dialects/noise.py +0 -0
  69. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/dialects/parallel.py +0 -0
  70. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/dialects/uop/__init__.py +0 -0
  71. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/dialects/uop/_dialect.py +0 -0
  72. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/dialects/uop/_emit.py +0 -0
  73. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/dialects/uop/schedule.py +0 -0
  74. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/dialects/uop/stmts.py +0 -0
  75. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/emit/__init__.py +0 -0
  76. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/emit/base.py +0 -0
  77. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/emit/gate.py +0 -0
  78. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/emit/main.py +0 -0
  79. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/emit/target.py +0 -0
  80. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/glob.py +0 -0
  81. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/groups.py +0 -0
  82. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/parallel.py +0 -0
  83. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/parse/__init__.py +0 -0
  84. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/parse/ast.py +0 -0
  85. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/parse/build.py +0 -0
  86. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/parse/lowering.py +0 -0
  87. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/parse/parser.py +0 -0
  88. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/parse/print.py +0 -0
  89. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/parse/qasm2.lark +0 -0
  90. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/parse/visitor.py +0 -0
  91. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/parse/visitor.pyi +0 -0
  92. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/passes/__init__.py +0 -0
  93. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/passes/fold.py +0 -0
  94. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/passes/glob.py +0 -0
  95. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/passes/lift_qubits.py +0 -0
  96. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/passes/parallel.py +0 -0
  97. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/passes/py2qasm.py +0 -0
  98. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/passes/qasm2py.py +0 -0
  99. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/rewrite/__init__.py +0 -0
  100. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/rewrite/desugar.py +0 -0
  101. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/rewrite/glob.py +0 -0
  102. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/rewrite/heuristic_noise.py +0 -0
  103. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/rewrite/insert_qubits.py +0 -0
  104. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/rewrite/native_gates.py +0 -0
  105. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/rewrite/parallel_to_uop.py +0 -0
  106. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/rewrite/register.py +0 -0
  107. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/rewrite/uop_to_parallel.py +0 -0
  108. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/types.py +0 -0
  109. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qbraid/__init__.py +0 -0
  110. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qbraid/lowering.py +0 -0
  111. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qbraid/schema.py +0 -0
  112. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qbraid/simulation_result.py +0 -0
  113. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qbraid/target.py +0 -0
  114. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/squin/__init__.py +0 -0
  115. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/squin/analysis/__init__.py +0 -0
  116. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/squin/analysis/nsites/__init__.py +0 -0
  117. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/squin/analysis/nsites/analysis.py +0 -0
  118. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/squin/analysis/nsites/impls.py +0 -0
  119. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/squin/analysis/nsites/lattice.py +0 -0
  120. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/squin/analysis/schedule.py +0 -0
  121. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/squin/groups.py +0 -0
  122. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/squin/noise/__init__.py +0 -0
  123. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/squin/noise/_dialect.py +0 -0
  124. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/squin/noise/stmts.py +0 -0
  125. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/squin/op/__init__.py +0 -0
  126. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/squin/op/_dialect.py +0 -0
  127. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/squin/op/number.py +0 -0
  128. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/squin/op/rewrite.py +0 -0
  129. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/squin/op/stmts.py +0 -0
  130. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/squin/op/traits.py +0 -0
  131. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/squin/op/types.py +0 -0
  132. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/squin/qubit.py +0 -0
  133. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/squin/rewrite/__init__.py +0 -0
  134. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/squin/rewrite/measure_desugar.py +0 -0
  135. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/squin/wire.py +0 -0
  136. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/stim/__init__.py +0 -0
  137. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/stim/_wrappers.py +0 -0
  138. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/stim/dialects/__init__.py +0 -0
  139. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/stim/dialects/aux/__init__.py +0 -0
  140. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/stim/dialects/aux/_dialect.py +0 -0
  141. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/stim/dialects/aux/emit.py +0 -0
  142. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/stim/dialects/aux/interp.py +0 -0
  143. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/stim/dialects/aux/lowering.py +0 -0
  144. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/stim/dialects/aux/stmts/__init__.py +0 -0
  145. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/stim/dialects/aux/stmts/annotate.py +0 -0
  146. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/stim/dialects/aux/stmts/const.py +0 -0
  147. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/stim/dialects/aux/types.py +0 -0
  148. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/stim/dialects/collapse/__init__.py +0 -0
  149. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/stim/dialects/collapse/_dialect.py +0 -0
  150. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/stim/dialects/collapse/emit.py +0 -0
  151. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/stim/dialects/collapse/stmts/__init__.py +0 -0
  152. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/stim/dialects/collapse/stmts/measure.py +0 -0
  153. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/stim/dialects/collapse/stmts/pp_measure.py +0 -0
  154. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/stim/dialects/collapse/stmts/reset.py +0 -0
  155. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/stim/dialects/gate/__init__.py +0 -0
  156. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/stim/dialects/gate/_dialect.py +0 -0
  157. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/stim/dialects/gate/emit.py +0 -0
  158. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/stim/dialects/gate/stmts/__init__.py +0 -0
  159. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/stim/dialects/gate/stmts/base.py +0 -0
  160. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/stim/dialects/gate/stmts/clifford_1q.py +0 -0
  161. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/stim/dialects/gate/stmts/clifford_2q.py +0 -0
  162. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/stim/dialects/gate/stmts/control_2q.py +0 -0
  163. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/stim/dialects/gate/stmts/pp.py +0 -0
  164. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/stim/dialects/noise/__init__.py +0 -0
  165. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/stim/dialects/noise/_dialect.py +0 -0
  166. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/stim/dialects/noise/emit.py +0 -0
  167. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/stim/dialects/noise/stmts.py +0 -0
  168. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/stim/emit/__init__.py +0 -0
  169. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/stim/emit/stim.py +0 -0
  170. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/stim/groups.py +0 -0
  171. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/task.py +0 -0
  172. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/test_utils.py +0 -0
  173. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/types.py +0 -0
  174. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/visual/__init__.py +0 -0
  175. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/visual/animation/__init__.py +0 -0
  176. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/visual/animation/animate.py +0 -0
  177. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/visual/animation/base.py +0 -0
  178. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/visual/animation/gate_event.py +0 -0
  179. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/visual/animation/runtime/__init__.py +0 -0
  180. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/visual/animation/runtime/aod.py +0 -0
  181. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/visual/animation/runtime/atoms.py +0 -0
  182. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/visual/animation/runtime/ppoly.py +0 -0
  183. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/visual/animation/runtime/qpustate.py +0 -0
  184. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/visual/animation/runtime/utils.py +0 -0
  185. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/__init__.py +0 -0
  186. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/analysis/address/test_analysis.py +0 -0
  187. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/analysis/address/test_lattice.py +0 -0
  188. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/analysis/fidelity/test_fidelity.py +0 -0
  189. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/pyqrack/__init__.py +0 -0
  190. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/pyqrack/runtime/__init__.py +0 -0
  191. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/pyqrack/runtime/noise/__init__.py +0 -0
  192. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/pyqrack/runtime/noise/native/test_loss.py +0 -0
  193. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/pyqrack/runtime/noise/native/test_pauli.py +0 -0
  194. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/pyqrack/runtime/test_dyn_memory.py +0 -0
  195. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/pyqrack/runtime/test_qrack.py +0 -0
  196. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/pyqrack/test_squin.py +0 -0
  197. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/pyqrack/test_target.py +0 -0
  198. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/qasm2/__init__.py +0 -0
  199. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/qasm2/analysis/test_dag.py +0 -0
  200. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/qasm2/emit/test_extended.py +0 -0
  201. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/qasm2/emit/test_qasm2.py +0 -0
  202. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/qasm2/emit/test_qasm2_emit.py +0 -0
  203. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/qasm2/parse/__init__.py +0 -0
  204. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/qasm2/parse/programs/README.md +0 -0
  205. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/qasm2/parse/programs/global.qasm +0 -0
  206. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/qasm2/parse/programs/iqft1.qasm +0 -0
  207. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/qasm2/parse/programs/main.qasm +0 -0
  208. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/qasm2/parse/programs/noise.qasm +0 -0
  209. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/qasm2/parse/programs/para.qasm +0 -0
  210. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/qasm2/parse/programs/process_tomo.qasm +0 -0
  211. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/qasm2/parse/programs/qelib1.inc +0 -0
  212. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/qasm2/parse/programs/qft.qasm +0 -0
  213. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/qasm2/parse/programs/qft2.qasm +0 -0
  214. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/qasm2/parse/programs/rb.qasm +0 -0
  215. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/qasm2/parse/programs/rep_code.qasm +0 -0
  216. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/qasm2/parse/programs/ripple_carry_adder.qasm +0 -0
  217. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/qasm2/parse/programs/tele.qasm +0 -0
  218. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/qasm2/parse/test_ast.py +0 -0
  219. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/qasm2/parse/test_roundtrip.py +0 -0
  220. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/qasm2/passes/__init__.py +0 -0
  221. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/qasm2/passes/test_global_to_parallel.py +0 -0
  222. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/qasm2/passes/test_global_to_uop.py +0 -0
  223. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/qasm2/passes/test_heuristic_noise.py +0 -0
  224. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/qasm2/passes/test_parallel_to_uop.py +0 -0
  225. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/qasm2/passes/test_qasm2py.py +0 -0
  226. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/qasm2/passes/test_uop_to_parallel.py +0 -0
  227. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/qasm2/test_count.py +0 -0
  228. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/qasm2/test_inline.py +0 -0
  229. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/qasm2/test_lowering.py +0 -0
  230. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/qasm2/test_native.py +0 -0
  231. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/qasm2/test_two2one.py +0 -0
  232. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/qbraid/__init__.py +0 -0
  233. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/qbraid/test_clean_circuit.py +0 -0
  234. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/qbraid/test_lowering.py +0 -0
  235. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/qbraid/test_target.py +0 -0
  236. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/sample/__init__.py +0 -0
  237. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/sample/test_noise_model.py +0 -0
  238. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/squin/analysis/test_nsites_analysis.py +0 -0
  239. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/squin/test_constprop.py +0 -0
  240. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/squin/test_measure_sugar.py +0 -0
  241. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/squin/test_mult_rewrite.py +0 -0
  242. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/stim/__init__.py +0 -0
  243. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/stim/dialects/__init__.py +0 -0
  244. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/stim/dialects/stim/__init__.py +0 -0
  245. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/stim/dialects/stim/emit/__init__.py +0 -0
  246. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/stim/dialects/stim/emit/base.py +0 -0
  247. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/stim/dialects/stim/emit/test_stim_1q.py +0 -0
  248. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/stim/dialects/stim/emit/test_stim_ctrl.py +0 -0
  249. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/stim/dialects/stim/emit/test_stim_detector.py +0 -0
  250. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/stim/dialects/stim/emit/test_stim_meas.py +0 -0
  251. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/stim/dialects/stim/emit/test_stim_noise.py +0 -0
  252. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/stim/dialects/stim/emit/test_stim_obs_inc.py +0 -0
  253. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/stim/dialects/stim/emit/test_stim_ppmeas.py +0 -0
  254. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/stim/dialects/stim/emit/test_stim_spp.py +0 -0
  255. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/stim/dialects/stim/test_stim_circuits.py +0 -0
  256. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/stim/dialects/stim/test_stim_const.py +0 -0
  257. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/stim/wrapper/__init__.py +0 -0
  258. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/stim/wrapper/test_wrapper.py +0 -0
  259. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/test_serialization.py +0 -0
  260. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/test_zone_model.py +0 -0
  261. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/visual/__init__.py +0 -0
  262. {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/visual/test_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: bloqade-circuit
3
- Version: 0.2.2
3
+ Version: 0.2.3
4
4
  Summary: The software development toolkit for neutral atom arrays.
5
5
  Author-email: Roger-luo <rluo@quera.com>, kaihsin <khwu@quera.com>, weinbe58 <pweinberg@quera.com>, johnzl-777 <jlong@quera.com>
6
6
  License-File: LICENSE
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "bloqade-circuit"
3
- version = "0.2.2"
3
+ version = "0.2.3"
4
4
  description = "The software development toolkit for neutral atom arrays."
5
5
  readme = "README.md"
6
6
  authors = [
@@ -13,22 +13,47 @@ from ..address import AddressAnalysis
13
13
  class FidelityAnalysis(Forward):
14
14
  """
15
15
  This analysis pass can be used to track the global addresses of qubits and wires.
16
+
17
+ ## Usage examples
18
+
19
+ ```
20
+ from bloqade import qasm2
21
+ from bloqade.noise import native
22
+ from bloqade.analysis.fidelity import FidelityAnalysis
23
+ from bloqade.qasm2.passes.noise import NoisePass
24
+
25
+ noise_main = qasm2.extended.add(native.dialect)
26
+
27
+ @noise_main
28
+ def main():
29
+ q = qasm2.qreg(2)
30
+ qasm2.x(q[0])
31
+ return q
32
+
33
+ NoisePass(main.dialects)(main)
34
+
35
+ fid_analysis = FidelityAnalysis(main.dialects)
36
+ fid_analysis.run_analysis(main, no_raise=False)
37
+
38
+ gate_fidelity = fid_analysis.gate_fidelity
39
+ atom_survival_probs = fid_analysis.atom_survival_probability
40
+ ```
16
41
  """
17
42
 
18
43
  keys = ["circuit.fidelity"]
19
44
  lattice = EmptyLattice
20
45
 
46
+ gate_fidelity: float = 1.0
21
47
  """
22
48
  The fidelity of the gate set described by the analysed program. It reduces whenever a noise channel is encountered.
23
49
  """
24
- gate_fidelity: float = 1.0
25
50
 
26
51
  _current_gate_fidelity: float = field(init=False)
27
52
 
53
+ atom_survival_probability: list[float] = field(init=False)
28
54
  """
29
55
  The probabilities that each of the atoms in the register survive the duration of the analysed program. The order of the list follows the order they are in the register.
30
56
  """
31
- atom_survival_probability: list[float] = field(init=False)
32
57
 
33
58
  _current_atom_survival_probability: list[float] = field(init=False)
34
59
 
@@ -25,7 +25,11 @@ Params = ParamSpec("Params")
25
25
 
26
26
  @dataclass
27
27
  class PyQrackSimulatorBase(AbstractSimulatorDevice[PyQrackSimulatorTask]):
28
+ """PyQrack simulation device base class."""
29
+
28
30
  options: PyQrackOptions = field(default_factory=_default_pyqrack_args)
31
+ """options (PyQrackOptions): options passed into the pyqrack simulator."""
32
+
29
33
  loss_m_result: Measurement = field(default=Measurement.One, kw_only=True)
30
34
  rng_state: np.random.Generator = field(
31
35
  default_factory=np.random.default_rng, kw_only=True
@@ -96,12 +100,48 @@ class PyQrackSimulatorBase(AbstractSimulatorDevice[PyQrackSimulatorTask]):
96
100
  if len(qubit_ids) != len(set(qubit_ids)):
97
101
  raise ValueError("Qubits must be unique.")
98
102
 
99
- return sim_reg.pauli_expectation(pauli, qubit_ids)
103
+ return sim_reg.pauli_expectation(qubit_ids, pauli)
100
104
 
101
105
 
102
106
  @dataclass
103
107
  class StackMemorySimulator(PyQrackSimulatorBase):
104
- """PyQrack simulator device with precalculated stack of qubits."""
108
+ """
109
+ PyQrack simulator device with preallocated stack of qubits.
110
+
111
+ This can be used to simulate kernels where the number of qubits is known
112
+ ahead of time.
113
+
114
+ ## Usage examples
115
+
116
+ ```
117
+ # Define a kernel
118
+ @qasm2.main
119
+ def main():
120
+ q = qasm2.qreg(2)
121
+ c = qasm2.creg(2)
122
+
123
+ qasm2.h(q[0])
124
+ qasm2.cx(q[0], q[1])
125
+
126
+ qasm2.measure(q, c)
127
+ return q
128
+
129
+ # Create the simulator object
130
+ sim = StackMemorySimulator(min_qubits=2)
131
+
132
+ # Execute the kernel
133
+ qubits = sim.run(main)
134
+ ```
135
+
136
+ You can also obtain other information from it, such as the state vector:
137
+
138
+ ```
139
+ ket = sim.state_vector(main)
140
+
141
+ from pyqrack.pauli import Pauli
142
+ expectation_vals = sim.pauli_expectation([Pauli.PauliX, Pauli.PauliI], qubits)
143
+ ```
144
+ """
105
145
 
106
146
  min_qubits: int = field(default=0, kw_only=True)
107
147
 
@@ -111,6 +151,20 @@ class StackMemorySimulator(PyQrackSimulatorBase):
111
151
  args: tuple[Any, ...] = (),
112
152
  kwargs: dict[str, Any] | None = None,
113
153
  ):
154
+ """
155
+ Args:
156
+ kernel (ir.Method):
157
+ The kernel method to run.
158
+ args (tuple[Any, ...]):
159
+ Positional arguments to pass to the kernel method.
160
+ kwargs (dict[str, Any] | None):
161
+ Keyword arguments to pass to the kernel method.
162
+
163
+ Returns:
164
+ PyQrackSimulatorTask:
165
+ The task object used to track execution.
166
+
167
+ """
114
168
  if kwargs is None:
115
169
  kwargs = {}
116
170
 
@@ -136,7 +190,44 @@ class StackMemorySimulator(PyQrackSimulatorBase):
136
190
 
137
191
  @dataclass
138
192
  class DynamicMemorySimulator(PyQrackSimulatorBase):
139
- """PyQrack simulator device with dynamic qubit allocation."""
193
+ """
194
+
195
+ PyQrack simulator device with dynamic qubit allocation.
196
+
197
+ This can be used to simulate kernels where the number of qubits is not known
198
+ ahead of time.
199
+
200
+ ## Usage examples
201
+
202
+ ```
203
+ # Define a kernel
204
+ @qasm2.main
205
+ def main():
206
+ q = qasm2.qreg(2)
207
+ c = qasm2.creg(2)
208
+
209
+ qasm2.h(q[0])
210
+ qasm2.cx(q[0], q[1])
211
+
212
+ qasm2.measure(q, c)
213
+ return q
214
+
215
+ # Create the simulator object
216
+ sim = DynamicMemorySimulator()
217
+
218
+ # Execute the kernel
219
+ qubits = sim.run(main)
220
+ ```
221
+
222
+ You can also obtain other information from it, such as the state vector:
223
+
224
+ ```
225
+ ket = sim.state_vector(main)
226
+
227
+ from pyqrack.pauli import Pauli
228
+ expectation_vals = sim.pauli_expectation([Pauli.PauliX, Pauli.PauliI], qubits)
229
+
230
+ """
140
231
 
141
232
  def task(
142
233
  self,
@@ -144,23 +235,22 @@ class DynamicMemorySimulator(PyQrackSimulatorBase):
144
235
  args: tuple[Any, ...] = (),
145
236
  kwargs: dict[str, Any] | None = None,
146
237
  ):
238
+ """
239
+ Args:
240
+ kernel (ir.Method):
241
+ The kernel method to run.
242
+ args (tuple[Any, ...]):
243
+ Positional arguments to pass to the kernel method.
244
+ kwargs (dict[str, Any] | None):
245
+ Keyword arguments to pass to the kernel method.
246
+
247
+ Returns:
248
+ PyQrackSimulatorTask:
249
+ The task object used to track execution.
250
+
251
+ """
147
252
  if kwargs is None:
148
253
  kwargs = {}
149
254
 
150
255
  memory = DynamicMemory(self.options.copy())
151
256
  return self.new_task(kernel, args, kwargs, memory)
152
-
153
-
154
- def test():
155
- from bloqade.qasm2 import extended
156
-
157
- @extended
158
- def main():
159
- return 1
160
-
161
- @extended
162
- def obs(result: int) -> int:
163
- return result
164
-
165
- res = DynamicMemorySimulator().task(main)
166
- return res.run()
@@ -21,6 +21,34 @@ class NoisePass(Pass):
21
21
  NOTE: This pass is not guaranteed to be supported long-term in bloqade. We will be
22
22
  moving towards a more general approach to noise modeling in the future.
23
23
 
24
+ ## Usage examples
25
+
26
+ ```
27
+ from bloqade import qasm2
28
+ from bloqade.noise import native
29
+ from bloqade.qasm2.passes.noise import NoisePass
30
+
31
+ noise_main = qasm2.extended.add(native.dialect)
32
+
33
+ @noise_main
34
+ def main():
35
+ q = qasm2.qreg(2)
36
+ qasm2.h(q[0])
37
+ qasm2.cx(q[0], q[1])
38
+ return q
39
+
40
+ # simple IR without any nosie
41
+ main.print()
42
+
43
+ noise_pass = NoisePass(noise_main)
44
+
45
+ # rewrite stuff in-place
46
+ noise_pass.unsafe_run(main)
47
+
48
+ # now, we do have noise channels in the IR
49
+ main.print()
50
+ ```
51
+
24
52
  """
25
53
 
26
54
  noise_model: native.MoveNoiseModelABC = field(
@@ -96,7 +96,7 @@ wheels = [
96
96
 
97
97
  [[package]]
98
98
  name = "bloqade-circuit"
99
- version = "0.2.2"
99
+ version = "0.2.3"
100
100
  source = { editable = "." }
101
101
  dependencies = [
102
102
  { name = "kirin-toolchain" },
@@ -1551,9 +1551,9 @@ wheels = [
1551
1551
 
1552
1552
  [[package]]
1553
1553
  name = "pyqrack-cuda"
1554
- version = "1.40.2"
1554
+ version = "1.42.2"
1555
1555
  source = { registry = "https://pypi.org/simple" }
1556
- sdist = { url = "https://files.pythonhosted.org/packages/76/4a/d94864923bc6caf900a1a5ab0e956ada57d9d546d1b33bf4b21ca4618313/pyqrack_cuda-1.40.2.tar.gz", hash = "sha256:cf46ea0b38888cf0af18b592d2bcd3f9d44091c5187de9e603a7e7ce896ca709", size = 35345 }
1556
+ sdist = { url = "https://files.pythonhosted.org/packages/bd/3f/2581c3d74f944f38c2b22723c75abfee775e9766f45bd191463abdcbd08e/pyqrack_cuda-1.42.2.tar.gz", hash = "sha256:2033f6f47d23e567045ada8a979bdbf7f95bd46cda856077f61e39af5fa9b2a8", size = 38222 }
1557
1557
 
1558
1558
  [[package]]
1559
1559
  name = "pyqt5"
File without changes