bloqade-circuit 0.7.12__py3-none-any.whl → 0.8.0__py3-none-any.whl

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 (136) hide show
  1. bloqade/analysis/address/__init__.py +8 -4
  2. bloqade/analysis/address/analysis.py +119 -29
  3. bloqade/analysis/address/impls.py +290 -87
  4. bloqade/analysis/address/lattice.py +209 -24
  5. bloqade/analysis/fidelity/analysis.py +2 -2
  6. bloqade/analysis/measure_id/impls.py +3 -27
  7. bloqade/cirq_utils/__init__.py +3 -1
  8. bloqade/cirq_utils/emit/__init__.py +3 -0
  9. bloqade/cirq_utils/emit/base.py +243 -0
  10. bloqade/cirq_utils/emit/gate.py +104 -0
  11. bloqade/cirq_utils/emit/noise.py +90 -0
  12. bloqade/cirq_utils/emit/qubit.py +35 -0
  13. bloqade/cirq_utils/lowering.py +664 -0
  14. bloqade/native/__init__.py +0 -1
  15. bloqade/native/_prelude.py +3 -3
  16. bloqade/native/dialects/gate/__init__.py +2 -0
  17. bloqade/native/dialects/gate/_dialect.py +3 -0
  18. bloqade/native/dialects/{gates → gate}/_interface.py +5 -5
  19. bloqade/native/dialects/{gates → gate}/stmts.py +5 -5
  20. bloqade/native/stdlib/broadcast.py +19 -19
  21. bloqade/native/stdlib/simple.py +14 -13
  22. bloqade/native/upstream/__init__.py +5 -0
  23. bloqade/native/upstream/squin2native.py +136 -0
  24. bloqade/pyqrack/__init__.py +1 -2
  25. bloqade/pyqrack/device.py +6 -17
  26. bloqade/pyqrack/native.py +17 -17
  27. bloqade/pyqrack/reg.py +1 -6
  28. bloqade/pyqrack/squin/gate/__init__.py +1 -0
  29. bloqade/pyqrack/squin/gate/gate.py +136 -0
  30. bloqade/pyqrack/squin/noise/native.py +120 -54
  31. bloqade/pyqrack/squin/qubit.py +25 -41
  32. bloqade/pyqrack/target.py +2 -2
  33. bloqade/qasm2/dialects/core/address.py +21 -12
  34. bloqade/qasm2/dialects/noise/fidelity.py +2 -6
  35. bloqade/qasm2/dialects/noise/model.py +2 -1
  36. bloqade/qasm2/passes/parallel.py +3 -1
  37. bloqade/qasm2/rewrite/__init__.py +0 -1
  38. bloqade/qasm2/rewrite/noise/heuristic_noise.py +7 -17
  39. bloqade/qasm2/rewrite/parallel_to_glob.py +28 -15
  40. bloqade/qasm2/rewrite/parallel_to_uop.py +2 -8
  41. bloqade/qubit/__init__.py +12 -0
  42. bloqade/qubit/_dialect.py +3 -0
  43. bloqade/qubit/_interface.py +49 -0
  44. bloqade/qubit/_prelude.py +45 -0
  45. bloqade/qubit/analysis/__init__.py +1 -0
  46. bloqade/qubit/analysis/address_impl.py +40 -0
  47. bloqade/qubit/stdlib/__init__.py +2 -0
  48. bloqade/qubit/stdlib/_new.py +34 -0
  49. bloqade/qubit/stdlib/broadcast.py +62 -0
  50. bloqade/qubit/stdlib/simple.py +59 -0
  51. bloqade/qubit/stmts.py +60 -0
  52. bloqade/rewrite/passes/aggressive_unroll.py +2 -1
  53. bloqade/squin/__init__.py +44 -17
  54. bloqade/squin/analysis/__init__.py +0 -1
  55. bloqade/squin/analysis/schedule.py +2 -2
  56. bloqade/squin/gate/__init__.py +2 -0
  57. bloqade/squin/gate/_dialect.py +3 -0
  58. bloqade/squin/gate/_interface.py +98 -0
  59. bloqade/squin/gate/stmts.py +119 -0
  60. bloqade/squin/groups.py +4 -21
  61. bloqade/squin/noise/__init__.py +1 -9
  62. bloqade/squin/noise/_dialect.py +1 -1
  63. bloqade/squin/noise/_interface.py +45 -0
  64. bloqade/squin/noise/stmts.py +65 -29
  65. bloqade/squin/rewrite/U3_to_clifford.py +70 -51
  66. bloqade/squin/rewrite/__init__.py +0 -2
  67. bloqade/squin/rewrite/remove_dangling_qubits.py +2 -2
  68. bloqade/squin/rewrite/wrap_analysis.py +4 -35
  69. bloqade/squin/stdlib/broadcast/__init__.py +34 -0
  70. bloqade/squin/stdlib/broadcast/_qubit.py +4 -0
  71. bloqade/squin/stdlib/broadcast/gate.py +260 -0
  72. bloqade/squin/stdlib/broadcast/noise.py +144 -0
  73. bloqade/squin/stdlib/simple/__init__.py +33 -0
  74. bloqade/squin/stdlib/simple/gate.py +242 -0
  75. bloqade/squin/stdlib/simple/noise.py +126 -0
  76. bloqade/stim/__init__.py +1 -0
  77. bloqade/stim/_wrappers.py +6 -0
  78. bloqade/stim/dialects/noise/emit.py +6 -1
  79. bloqade/stim/dialects/noise/stmts.py +5 -3
  80. bloqade/stim/emit/stim_str.py +2 -0
  81. bloqade/stim/parse/lowering.py +12 -17
  82. bloqade/stim/passes/__init__.py +0 -1
  83. bloqade/stim/passes/flatten.py +26 -0
  84. bloqade/stim/passes/simplify_ifs.py +6 -1
  85. bloqade/stim/passes/squin_to_stim.py +4 -70
  86. bloqade/stim/rewrite/__init__.py +0 -4
  87. bloqade/stim/rewrite/ifs_to_stim.py +23 -29
  88. bloqade/stim/rewrite/qubit_to_stim.py +90 -41
  89. bloqade/stim/rewrite/squin_measure.py +9 -18
  90. bloqade/stim/rewrite/squin_noise.py +132 -108
  91. bloqade/stim/rewrite/util.py +5 -204
  92. bloqade/types.py +10 -0
  93. {bloqade_circuit-0.7.12.dist-info → bloqade_circuit-0.8.0.dist-info}/METADATA +2 -2
  94. {bloqade_circuit-0.7.12.dist-info → bloqade_circuit-0.8.0.dist-info}/RECORD +96 -100
  95. bloqade/native/dialects/gates/__init__.py +0 -3
  96. bloqade/native/dialects/gates/_dialect.py +0 -3
  97. bloqade/pyqrack/squin/op.py +0 -180
  98. bloqade/pyqrack/squin/runtime.py +0 -543
  99. bloqade/pyqrack/squin/wire.py +0 -51
  100. bloqade/squin/_typeinfer.py +0 -20
  101. bloqade/squin/analysis/address_impl.py +0 -71
  102. bloqade/squin/analysis/nsites/__init__.py +0 -9
  103. bloqade/squin/analysis/nsites/analysis.py +0 -50
  104. bloqade/squin/analysis/nsites/impls.py +0 -99
  105. bloqade/squin/analysis/nsites/lattice.py +0 -49
  106. bloqade/squin/cirq/__init__.py +0 -306
  107. bloqade/squin/cirq/emit/emit_circuit.py +0 -129
  108. bloqade/squin/cirq/emit/noise.py +0 -49
  109. bloqade/squin/cirq/emit/op.py +0 -176
  110. bloqade/squin/cirq/emit/qubit.py +0 -58
  111. bloqade/squin/cirq/emit/runtime.py +0 -242
  112. bloqade/squin/cirq/lowering.py +0 -439
  113. bloqade/squin/lowering.py +0 -80
  114. bloqade/squin/noise/_wrapper.py +0 -36
  115. bloqade/squin/noise/rewrite.py +0 -129
  116. bloqade/squin/op/__init__.py +0 -41
  117. bloqade/squin/op/_dialect.py +0 -3
  118. bloqade/squin/op/_wrapper.py +0 -121
  119. bloqade/squin/op/number.py +0 -5
  120. bloqade/squin/op/rewrite.py +0 -46
  121. bloqade/squin/op/stdlib.py +0 -62
  122. bloqade/squin/op/stmts.py +0 -300
  123. bloqade/squin/op/traits.py +0 -43
  124. bloqade/squin/op/types.py +0 -128
  125. bloqade/squin/parallel.py +0 -200
  126. bloqade/squin/qubit.py +0 -194
  127. bloqade/squin/rewrite/canonicalize.py +0 -60
  128. bloqade/squin/rewrite/desugar.py +0 -102
  129. bloqade/squin/stdlib/channel.py +0 -86
  130. bloqade/squin/stdlib/gate.py +0 -201
  131. bloqade/squin/types.py +0 -8
  132. bloqade/squin/wire.py +0 -201
  133. bloqade/stim/rewrite/wire_identity_elimination.py +0 -24
  134. bloqade/stim/rewrite/wire_to_stim.py +0 -57
  135. {bloqade_circuit-0.7.12.dist-info → bloqade_circuit-0.8.0.dist-info}/WHEEL +0 -0
  136. {bloqade_circuit-0.7.12.dist-info → bloqade_circuit-0.8.0.dist-info}/licenses/LICENSE +0 -0
@@ -1,35 +1,8 @@
1
- from typing import TypeVar
2
-
3
- from kirin import ir, interp
4
- from kirin.analysis import const
1
+ from kirin import ir
5
2
  from kirin.dialects import py
6
- from kirin.rewrite.abc import RewriteResult
7
3
 
8
- from bloqade.squin import op, wire, noise as squin_noise, qubit
9
4
  from bloqade.squin.rewrite import AddressAttribute
10
- from bloqade.stim.dialects import gate, noise as stim_noise, collapse
11
- from bloqade.analysis.address import AddressReg, AddressWire, AddressQubit, AddressTuple
12
-
13
- SQUIN_STIM_OP_MAPPING = {
14
- op.stmts.X: gate.X,
15
- op.stmts.Y: gate.Y,
16
- op.stmts.Z: gate.Z,
17
- op.stmts.H: gate.H,
18
- op.stmts.S: gate.S,
19
- op.stmts.SqrtX: gate.SqrtX,
20
- op.stmts.SqrtY: gate.SqrtY,
21
- op.stmts.Identity: gate.Identity,
22
- op.stmts.Reset: collapse.RZ,
23
- squin_noise.stmts.QubitLoss: stim_noise.QubitLoss,
24
- }
25
-
26
- # Squin allows creation of control gates where the gate can be any operator,
27
- # but Stim only supports CX, CY, and CZ as control gates.
28
- SQUIN_STIM_CONTROL_GATE_MAPPING = {
29
- op.stmts.X: gate.CX,
30
- op.stmts.Y: gate.CY,
31
- op.stmts.Z: gate.CZ,
32
- }
5
+ from bloqade.analysis.address import AddressReg, AddressQubit
33
6
 
34
7
 
35
8
  def create_and_insert_qubit_idx_stmt(
@@ -46,189 +19,17 @@ def insert_qubit_idx_from_address(
46
19
  """
47
20
  Extract qubit indices from an AddressAttribute and insert them into the SSA form.
48
21
  """
49
- address_data = address.address
50
22
  qubit_idx_ssas = []
51
-
52
- if isinstance(address_data, AddressTuple):
53
- for address_qubit in address_data.data:
54
- if not isinstance(address_qubit, AddressQubit):
55
- return
23
+ if isinstance(address_data := address.address, AddressReg):
24
+ for qubit_idx in address_data.qubits:
56
25
  create_and_insert_qubit_idx_stmt(
57
- address_qubit.data, stmt_to_insert_before, qubit_idx_ssas
58
- )
59
- elif isinstance(address_data, AddressReg):
60
- for qubit_idx in address_data.data:
61
- create_and_insert_qubit_idx_stmt(
62
- qubit_idx, stmt_to_insert_before, qubit_idx_ssas
26
+ qubit_idx.data, stmt_to_insert_before, qubit_idx_ssas
63
27
  )
64
28
  elif isinstance(address_data, AddressQubit):
65
29
  create_and_insert_qubit_idx_stmt(
66
30
  address_data.data, stmt_to_insert_before, qubit_idx_ssas
67
31
  )
68
- elif isinstance(address_data, AddressWire):
69
- address_qubit = address_data.origin_qubit
70
- create_and_insert_qubit_idx_stmt(
71
- address_qubit.data, stmt_to_insert_before, qubit_idx_ssas
72
- )
73
32
  else:
74
33
  return
75
34
 
76
35
  return tuple(qubit_idx_ssas)
77
-
78
-
79
- def insert_qubit_idx_from_wire_ssa(
80
- wire_ssas: tuple[ir.SSAValue, ...], stmt_to_insert_before: ir.Statement
81
- ) -> tuple[ir.SSAValue, ...] | None:
82
- """
83
- Extract qubit indices from wire SSA values and insert them into the SSA form.
84
- """
85
- qubit_idx_ssas = []
86
- for wire_ssa in wire_ssas:
87
- address_attribute = wire_ssa.hints.get("address")
88
- if address_attribute is None:
89
- return
90
- assert isinstance(address_attribute, AddressAttribute)
91
- wire_address = address_attribute.address
92
- assert isinstance(wire_address, AddressWire)
93
- qubit_idx = wire_address.origin_qubit.data
94
- qubit_idx_stmt = py.Constant(qubit_idx)
95
- qubit_idx_ssas.append(qubit_idx_stmt.result)
96
- qubit_idx_stmt.insert_before(stmt_to_insert_before)
97
-
98
- return tuple(qubit_idx_ssas)
99
-
100
-
101
- def insert_qubit_idx_after_apply(
102
- stmt: wire.Apply | qubit.Apply | wire.Broadcast | qubit.Broadcast,
103
- ) -> tuple[ir.SSAValue, ...] | None:
104
- """
105
- Extract qubit indices from Apply or Broadcast statements.
106
- """
107
- if isinstance(stmt, (qubit.Apply, qubit.Broadcast)):
108
- qubits = stmt.qubits
109
- if len(qubits) == 1:
110
- address_attribute = qubits[0].hints.get("address")
111
- if address_attribute is None:
112
- return
113
- else:
114
- address_attribute_data = []
115
- for qbit in qubits:
116
- address_attribute = qbit.hints.get("address")
117
- if not isinstance(address_attribute, AddressAttribute):
118
- return
119
- address_attribute_data.append(address_attribute.address)
120
- address_attribute = AddressAttribute(
121
- AddressTuple(data=tuple(address_attribute_data))
122
- )
123
-
124
- assert isinstance(address_attribute, AddressAttribute)
125
- return insert_qubit_idx_from_address(
126
- address=address_attribute, stmt_to_insert_before=stmt
127
- )
128
- elif isinstance(stmt, (wire.Apply, wire.Broadcast)):
129
- wire_ssas = stmt.inputs
130
- return insert_qubit_idx_from_wire_ssa(
131
- wire_ssas=wire_ssas, stmt_to_insert_before=stmt
132
- )
133
-
134
-
135
- def rewrite_Control(
136
- stmt_with_ctrl: qubit.Apply | wire.Apply | qubit.Broadcast | wire.Broadcast,
137
- ) -> RewriteResult:
138
- """
139
- Handle control gates for Apply and Broadcast statements.
140
- """
141
- ctrl_op = stmt_with_ctrl.operator.owner
142
- assert isinstance(ctrl_op, op.stmts.Control)
143
-
144
- ctrl_op_target_gate = ctrl_op.op.owner
145
- assert isinstance(ctrl_op_target_gate, op.stmts.Operator)
146
-
147
- qubit_idx_ssas = insert_qubit_idx_after_apply(stmt=stmt_with_ctrl)
148
- if qubit_idx_ssas is None:
149
- return RewriteResult()
150
-
151
- # Separate control and target qubits
152
- target_qubits = []
153
- ctrl_qubits = []
154
- for i in range(len(qubit_idx_ssas)):
155
- if (i % 2) == 0:
156
- ctrl_qubits.append(qubit_idx_ssas[i])
157
- else:
158
- target_qubits.append(qubit_idx_ssas[i])
159
-
160
- target_qubits = tuple(target_qubits)
161
- ctrl_qubits = tuple(ctrl_qubits)
162
-
163
- stim_gate = SQUIN_STIM_CONTROL_GATE_MAPPING.get(type(ctrl_op_target_gate))
164
- if stim_gate is None:
165
- return RewriteResult()
166
-
167
- stim_stmt = stim_gate(controls=ctrl_qubits, targets=target_qubits)
168
-
169
- if isinstance(stmt_with_ctrl, (wire.Apply, wire.Broadcast)):
170
- create_wire_passthrough(stmt_with_ctrl)
171
-
172
- stmt_with_ctrl.replace_by(stim_stmt)
173
-
174
- return RewriteResult(has_done_something=True)
175
-
176
-
177
- def rewrite_QubitLoss(
178
- stmt: qubit.Apply | qubit.Broadcast | wire.Broadcast | wire.Apply,
179
- ) -> RewriteResult:
180
- """
181
- Rewrite QubitLoss statements to Stim's TrivialError.
182
- """
183
-
184
- squin_loss_op = stmt.operator.owner
185
- assert isinstance(squin_loss_op, squin_noise.stmts.QubitLoss)
186
-
187
- qubit_idx_ssas = insert_qubit_idx_after_apply(stmt=stmt)
188
- if qubit_idx_ssas is None:
189
- return RewriteResult()
190
-
191
- stim_loss_stmt = stim_noise.QubitLoss(
192
- targets=qubit_idx_ssas,
193
- probs=(squin_loss_op.p,),
194
- )
195
-
196
- if isinstance(stmt, (wire.Apply, wire.Broadcast)):
197
- create_wire_passthrough(stmt)
198
-
199
- stmt.replace_by(stim_loss_stmt)
200
-
201
- return RewriteResult(has_done_something=True)
202
-
203
-
204
- def create_wire_passthrough(stmt: wire.Apply | wire.Broadcast) -> None:
205
-
206
- for input_wire, output_wire in zip(stmt.inputs, stmt.results):
207
- # have to "reroute" the input of these statements to directly plug in
208
- # to subsequent statements, remove dependency on the current statement
209
- output_wire.replace_by(input_wire)
210
-
211
-
212
- def is_measure_result_used(
213
- stmt: qubit.MeasureQubit | qubit.MeasureQubitList | wire.Measure,
214
- ) -> bool:
215
- """
216
- Check if the result of a measure statement is used in the program.
217
- """
218
- return bool(stmt.result.uses)
219
-
220
-
221
- T = TypeVar("T")
222
-
223
-
224
- def get_const_value(typ: type[T], value: ir.SSAValue) -> T:
225
- if isinstance(hint := value.hints.get("const"), const.Value):
226
- data = hint.data
227
- if isinstance(data, typ):
228
- return hint.data
229
- raise interp.InterpreterError(
230
- f"Expected constant value <type = {typ}>, got {data}"
231
- )
232
- raise interp.InterpreterError(
233
- f"Expected constant value <type = {typ}>, got {value}"
234
- )
bloqade/types.py CHANGED
@@ -22,3 +22,13 @@ class Qubit(ABC):
22
22
 
23
23
  QubitType = types.PyClass(Qubit)
24
24
  """Kirin type for a qubit."""
25
+
26
+
27
+ class MeasurementResult:
28
+ """Runtime representation of the result of a measurement on a qubit."""
29
+
30
+ pass
31
+
32
+
33
+ MeasurementResultType = types.PyClass(MeasurementResult)
34
+ """Kirin type for a measurement result."""
@@ -1,11 +1,11 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: bloqade-circuit
3
- Version: 0.7.12
3
+ Version: 0.8.0
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
7
7
  Requires-Python: >=3.10
8
- Requires-Dist: kirin-toolchain~=0.17.23
8
+ Requires-Dist: kirin-toolchain~=0.17.30
9
9
  Requires-Dist: numpy>=1.22.0
10
10
  Requires-Dist: pandas>=2.2.3
11
11
  Requires-Dist: pydantic<2.11.0,>=1.3.0
@@ -1,42 +1,50 @@
1
1
  bloqade/device.py,sha256=y54uCyD8lfgOaZshjxd1DXf4lrwjVvNEtrx6KeeDup0,3888
2
2
  bloqade/task.py,sha256=L7l8TAc9e2kaOA24Qrh15pfUPY21xRkUQ86OtAR9Sog,2861
3
3
  bloqade/test_utils.py,sha256=rYUIOdGpjnoIIAthjhiTPbji3ytc23ry3lj_s2EaSFw,874
4
- bloqade/types.py,sha256=qmuryGmkKGGyxLCDI9niXEhwVrcdzy71myxDHnxqBws,447
4
+ bloqade/types.py,sha256=1bgvSmYdynIrOMAmTK7rsUB9TWD3__uoeeGbiKWTJU0,662
5
5
  bloqade/analysis/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
- bloqade/analysis/address/__init__.py,sha256=ed_05tCQgeCQsvC8O-2LVlpSiiYz2ebixr4xyxD-wRE,321
7
- bloqade/analysis/address/analysis.py,sha256=u0acWZApnuH8ueO-_mHnNuyKCWglCcAajinCgz2-dt0,1872
8
- bloqade/analysis/address/impls.py,sha256=cWdq1CNV6HVDECtIgl9ogUa8nvFZm_Sy5Wcfk1frrjc,5528
9
- bloqade/analysis/address/lattice.py,sha256=dUq999feqPoBYkqEXe1hjHOn4TP_bkvKip8fyWQ-2-8,1755
6
+ bloqade/analysis/address/__init__.py,sha256=cWEtk7i6jfbPDICFAITxfwAIiJIQFAr9U3lYXpObwh8,445
7
+ bloqade/analysis/address/analysis.py,sha256=M39EFTLaZQN71hCmeBUSxOK7HnIZfCaQ48ngWDWF9rI,5323
8
+ bloqade/analysis/address/impls.py,sha256=QjKGpGyc3SYvnyq_Dc0nBDIkb1BuZw5A3lWHaxMEWgg,11318
9
+ bloqade/analysis/address/lattice.py,sha256=qMv6ntYcMO0fK-ccBTONXKJ4a3nkRSwDiztV9DcNIYc,8102
10
10
  bloqade/analysis/fidelity/__init__.py,sha256=iJkhoHvCMU9bKxQqgxIWKQWvpqNFRgNBI5DK8-4RAB8,59
11
- bloqade/analysis/fidelity/analysis.py,sha256=G6JEYc8eeWJ9mwsbUAIzXuU2nrnTU4te41c04xE71gM,3218
11
+ bloqade/analysis/fidelity/analysis.py,sha256=VCBd-hfSlaGttL8JSz-7l3ifpYXnAzzaMcqTnIx_d04,3236
12
12
  bloqade/analysis/measure_id/__init__.py,sha256=r_R_br1e3H7ZzwkeQw4TnDAP4M_bUaRlRb7ZRdowvNI,145
13
13
  bloqade/analysis/measure_id/analysis.py,sha256=D8KcV8aL1yrqKhtqgaqMArX-PGXYcFXumEC5tx36plU,1974
14
- bloqade/analysis/measure_id/impls.py,sha256=q_HKSxptGfOvvGrRcpl42UGoe7eRL2-5dIGiA0tDyrA,6866
14
+ bloqade/analysis/measure_id/impls.py,sha256=KsMz9Lyci4in6sKyuDDt_LCMZUVTgYaGgqve8Nfg5s8,6236
15
15
  bloqade/analysis/measure_id/lattice.py,sha256=WPrn0R79umCH909BFWsUJ64qx9n_3KYimIW5UaXNuGU,1891
16
- bloqade/cirq_utils/__init__.py,sha256=NOChrzb4vxb3xHKxM0gg7HdZ7R76X5yU8RJZ9hECXWs,276
16
+ bloqade/cirq_utils/__init__.py,sha256=euOBePhGrYOZsUn_IJXHGUQCxA6y3GBR6G3o9JvX21k,410
17
17
  bloqade/cirq_utils/lineprog.py,sha256=JosrhfeOHI9FycUT_sYFj8TBzLpo97TL8zK-Ap2U4eQ,11021
18
+ bloqade/cirq_utils/lowering.py,sha256=cuIIldcXuT92dMTILLV_Fm1TozHLl0S3Jtg1386RSn4,23792
18
19
  bloqade/cirq_utils/parallelize.py,sha256=u9AP6l7YwBatFfIvrcCjbcYMiavk7MU6HKSKPkqlxtY,13803
20
+ bloqade/cirq_utils/emit/__init__.py,sha256=_NnnLT47nPFFkXY8EF3wrLHhAaKTl-8_zKqkKZ8Kpes,139
21
+ bloqade/cirq_utils/emit/base.py,sha256=bibUSCriEc1EPTKu-6q4w5CZcl5GLTAZ43wqD8bzu7M,8102
22
+ bloqade/cirq_utils/emit/gate.py,sha256=hPggg5kBSbejR-5ri_cEmghrA8bh75n_-KyMz9dNAFg,2984
23
+ bloqade/cirq_utils/emit/noise.py,sha256=9UljeIwT5XT73mzXvdqE1Bdi8m9R1CYznbFNcXS_tOU,2468
24
+ bloqade/cirq_utils/emit/qubit.py,sha256=lzSn19cVkxuLRIwo6ixnnumwBZW2LJ5g76FHPVYAnME,1047
19
25
  bloqade/cirq_utils/noise/__init__.py,sha256=hUBi53U0wE4u3AqGh5cNdgdCspt3O-Vw-SR68cfBZYc,421
20
26
  bloqade/cirq_utils/noise/_two_zone_utils.py,sha256=iq4nwdJQITFlGB61wfrV7vyPA2194p-i_nv36powZ90,17883
21
27
  bloqade/cirq_utils/noise/conflict_graph.py,sha256=ZUwPWTknrb6SgtZUVPeICn3YA-nUeWQJDuKKX5jL9tE,7179
22
28
  bloqade/cirq_utils/noise/model.py,sha256=fhznG0P_SUtl7LBNIANuNi5MGY9ks241UW7m0rg2iNs,18782
23
29
  bloqade/cirq_utils/noise/transform.py,sha256=pauFnOKbk2QjxeyXEV_x2zyRGypr5wiQ6ySirU7C2zg,2278
24
- bloqade/native/__init__.py,sha256=MtQZmq7KqNGkjxsO_22DpY-13X23Ovw8JKs7lfuv55w,443
25
- bloqade/native/_prelude.py,sha256=znle4mSTLZtRMCmmiZ-bCPfHqNdgVxsKuY64Fgj2kko,1258
30
+ bloqade/native/__init__.py,sha256=ckZjzkPGV08CXmBKAHutlVU_AlLIwzBmlkNOTuJVBx0,427
31
+ bloqade/native/_prelude.py,sha256=ktF91AQrWVswjc48ZnSi0Uqrz5QEtkU0RWld8TqL4MQ,1250
26
32
  bloqade/native/dialects/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
27
- bloqade/native/dialects/gates/__init__.py,sha256=YX5h-5Agl_x5K0KD-QnuloNV8oeIFXnsGT4ouMpabCU,138
28
- bloqade/native/dialects/gates/_dialect.py,sha256=D5vU_JAE2ROT5jMMth3f9SPjL9vfvCVjzEfLJzvAImI,61
29
- bloqade/native/dialects/gates/_interface.py,sha256=2Tie1C-k9GrrSJEsrQ3IIO_3yYJXsyoD6pBZmm0cyp4,537
30
- bloqade/native/dialects/gates/stmts.py,sha256=qBziqe1b39ltwcFUEpBZ2RdzL4DTiesRs__HIjbA5N4,1016
33
+ bloqade/native/dialects/gate/__init__.py,sha256=w5o5Fa2br2q6VG2D1WJ4hofduBk-9QuDIvge8FSJ-oU,70
34
+ bloqade/native/dialects/gate/_dialect.py,sha256=oRBmg4jkT3hhwpYnv9uAGLb76legyteGT5UjmXuXaP0,58
35
+ bloqade/native/dialects/gate/_interface.py,sha256=R-91lFvarmlQXOF6YDDmgzLRHDeBCwcecFaR6NbFAOI,536
36
+ bloqade/native/dialects/gate/stmts.py,sha256=FjMO13pdAXa0Mp4gVf4h0yf787UWQdpqexB8LO8lUMY,1001
31
37
  bloqade/native/stdlib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
32
- bloqade/native/stdlib/broadcast.py,sha256=0DEK6pRcz0IG5BZHt0sV1wZpDvlJgvw4-Qwd1xYLSYM,6141
33
- bloqade/native/stdlib/simple.py,sha256=mK_p9x_TUr4g-q-Q4LfbVBtXxBS21XPh1meyCC4to_k,5416
34
- bloqade/pyqrack/__init__.py,sha256=OV8-2fw44gP_JgY8mAUiwISO_qYxS-t0fKsbuUB-r9Y,861
38
+ bloqade/native/stdlib/broadcast.py,sha256=OHj1uDDER_80F734eIsBkGTkDEvk7eHS3YaKcUy-MNg,6050
39
+ bloqade/native/stdlib/simple.py,sha256=0ZHpJfqB6tbIaIxUmN52MDE9qPboo1H8w_u9L7Ff8sY,5352
40
+ bloqade/native/upstream/__init__.py,sha256=IoqsQ5MK0D63kcrwh1VBxOYtdoJIndIDDThPqYBvNsI,136
41
+ bloqade/native/upstream/squin2native.py,sha256=4LmQ4l5Ika8OP2FBEBkvNBvr1b5knFs7armQM4C0Gc8,4601
42
+ bloqade/pyqrack/__init__.py,sha256=MHQ861MamWKQObIgJGCBd-oohRBvJTL8XdsRBw7Kq6w,833
35
43
  bloqade/pyqrack/base.py,sha256=Q2GjAcqEZBo-Lhe2jpXuNCB0xXVIdwtdy6cUmDM_OZI,4623
36
- bloqade/pyqrack/device.py,sha256=ruseNWt3scvjw0KyHZjwnM6Z6lFjROgmW3Zdi1lucgQ,15195
37
- bloqade/pyqrack/native.py,sha256=ErbVQCatn_JT3Ej-iQzMMfb_q50JF_K1Iv1vRYvu5VA,1857
38
- bloqade/pyqrack/reg.py,sha256=2GK7QW1dhCfqDHtwzYK-C37fNtnbGK8DhdhMrMidP_w,1859
39
- bloqade/pyqrack/target.py,sha256=c78VtLWAiDNp_0sXwvVzhaEoeFsr1fUVsupxWuo6p3s,3661
44
+ bloqade/pyqrack/device.py,sha256=Y3xW0yhav0XrWAvhx9kDIhQinGq5K27QXsOWm_dKatU,14837
45
+ bloqade/pyqrack/native.py,sha256=FcdYb5H65Mgf8lafG-hcugx4Oa1cD8nEYNxGboAA7Lc,1877
46
+ bloqade/pyqrack/reg.py,sha256=x227OK2hYX8zAUwlDvoFWrJDFxxrXcS9DNNecWe1s7c,1797
47
+ bloqade/pyqrack/target.py,sha256=fJo7YdAERC69Kyx1Xe9zlm58mpWTSrCclZL38Arf4No,3665
40
48
  bloqade/pyqrack/task.py,sha256=nRmI3tM_y4134_Uld-D9xwNXG9ie-OHNAqwRT5Ss-Y0,5266
41
49
  bloqade/pyqrack/noise/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
42
50
  bloqade/pyqrack/noise/native.py,sha256=BmRlRzqCzvSgfSsDlIjuB8L0gx4uaPqmPyfJ5-Ole6M,2751
@@ -46,12 +54,11 @@ bloqade/pyqrack/qasm2/glob.py,sha256=EGe7sh9SuvpRW4V4rFcX6Gf7ot8iyThYbsdPeEBKzYM
46
54
  bloqade/pyqrack/qasm2/parallel.py,sha256=ITetuXOH2KUDpDOBuFnJoz2DhduvyBC72cOAOOixTaM,1606
47
55
  bloqade/pyqrack/qasm2/uop.py,sha256=bLZONsEK15ymFGIQwy7muQv-TX0mvLrECuMp1Y3XTfA,8612
48
56
  bloqade/pyqrack/squin/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
49
- bloqade/pyqrack/squin/op.py,sha256=m9QiQgQnKy1tYvrieU6MjXf_b9i2fovj4r2novcQwIc,5535
50
- bloqade/pyqrack/squin/qubit.py,sha256=M32AhO3HRc_-FrOj7h_1Arj6jr9WiaHoxc4aeU1KoIY,2859
51
- bloqade/pyqrack/squin/runtime.py,sha256=3iVCN3XMUL8uk-bm0y4HSaVU7i5xZsNm5sY285rUKQE,15583
52
- bloqade/pyqrack/squin/wire.py,sha256=rqlAeU-r_EHOwJMqHrEAxpZ_rKsvUpwGG7MP4BW75Nw,1658
57
+ bloqade/pyqrack/squin/qubit.py,sha256=rXshs86krKZpBjrkCLkbcvhKtbTQVxcwnru9qyg-c_c,2303
58
+ bloqade/pyqrack/squin/gate/__init__.py,sha256=pxvjsKnmIpR47mzs1zrZLYHcmjRvErieMOl1G4KcGeY,27
59
+ bloqade/pyqrack/squin/gate/gate.py,sha256=k0qROtw0ouSujod-Z9K1v_X9BNXAVIp7f08cMw2Hk9E,3901
53
60
  bloqade/pyqrack/squin/noise/__init__.py,sha256=uXgRQPOrHNRp3k2ff2HD8mheUEaqxZPKEnwV-s4BiV4,31
54
- bloqade/pyqrack/squin/noise/native.py,sha256=gs2At4fDKTN3LJl5DVZ-Z3Pn3YTSwZCQCAoPrMJxEcQ,2287
61
+ bloqade/pyqrack/squin/noise/native.py,sha256=d4gdMqJJqOPPGOaIpualenKx6UYXDDqAQxA_6wMy9pc,4158
55
62
  bloqade/qasm2/__init__.py,sha256=W9dR4Qnvigc7e7Ay7puSJHAIuiQk8vWqY-W64SMu5oU,515
56
63
  bloqade/qasm2/_qasm_loading.py,sha256=dSfjlB6Bm1ednfxc9L42dEa48s5q4N5SGQ9Iw21sBZQ,4753
57
64
  bloqade/qasm2/_wrappers.py,sha256=4x3fldC4sV2K_XZ0FPZOorQKAbs_7pualListXtak4A,11148
@@ -69,7 +76,7 @@ bloqade/qasm2/dialects/core/__init__.py,sha256=rzYkYvHd-z0CU_Kabac2T9B0TI1-ZxdyS
69
76
  bloqade/qasm2/dialects/core/_dialect.py,sha256=KYguYHVdyIjPjAyM4GApBUk4slMXmRTMPNfE0lEE7rc,57
70
77
  bloqade/qasm2/dialects/core/_emit.py,sha256=HhMKhfl9pL3cb4gr6TCGP2GJ0PchyyJ-ZcvE7MVeqwQ,2540
71
78
  bloqade/qasm2/dialects/core/_typeinfer.py,sha256=27qciyhU4TNJ2NPBvDc7mjkOK-x8AzMjq20OXqsRtYQ,671
72
- bloqade/qasm2/dialects/core/address.py,sha256=jUAAyuxrdVYqgqBN97dcCd0IjhsPf1XeTRsdZFfK6DA,1072
79
+ bloqade/qasm2/dialects/core/address.py,sha256=F_jnTXs977LKD5azRii3s-gdWf0TNslIkHpGIgf0GAE,1310
73
80
  bloqade/qasm2/dialects/core/stmts.py,sha256=MOzll2u4mPdqtUI_aHkYxx3U-SsveEM8W85OU34FqHk,3826
74
81
  bloqade/qasm2/dialects/expr/__init__.py,sha256=8A7VX0ox0jIcDL_ufHlC9wZMraZw81f5GkcZKA-7nRY,451
75
82
  bloqade/qasm2/dialects/expr/_dialect.py,sha256=yu46u8FX8tTWAlMHv_YIOXZYiAuWYzB7-dbgGIhQayU,57
@@ -79,8 +86,8 @@ bloqade/qasm2/dialects/expr/_interp.py,sha256=dQLDcWABpo107BtC6d18L5NmXYlRPPedGt
79
86
  bloqade/qasm2/dialects/expr/stmts.py,sha256=izU70b1mnnciEP8BrZO1ACyMBZy0CeN8sWescn1bQNg,8053
80
87
  bloqade/qasm2/dialects/noise/__init__.py,sha256=4YSXTFjt7TiQd0jqMZy2k6pfKbLyTamQlQ--jPTziLQ,512
81
88
  bloqade/qasm2/dialects/noise/_dialect.py,sha256=onK6l3wbM0IHwf3WMiWy7pDRQG0DyLTOzplBuj56psA,58
82
- bloqade/qasm2/dialects/noise/fidelity.py,sha256=Ft-Benmg1mvWYTPE_DkjMZP5-JfmiotIU_WfAWq8sCw,1632
83
- bloqade/qasm2/dialects/noise/model.py,sha256=mHfVqig-pzbyXU4HjKSqPxZULvZQcedzY8WIruH1tr8,12867
89
+ bloqade/qasm2/dialects/noise/fidelity.py,sha256=SQBSfgl4U3FH4sgZY7nMkAs1IHkRSUdz5B5HUcKICK8,1450
90
+ bloqade/qasm2/dialects/noise/model.py,sha256=0EaNmGJosRp8s-8ENxqWs56Y0xxwstaY-uT2_w5eDfQ,12907
84
91
  bloqade/qasm2/dialects/noise/stmts.py,sha256=G2zHBIBxpJigh9IMy7_Cj3rJRB1m0Hqf9h3i7h-8X_4,2351
85
92
  bloqade/qasm2/dialects/uop/__init__.py,sha256=M2jpSIExxlgKX0l08-KzvRKeVBUuFPlyLmmWosHWIdk,735
86
93
  bloqade/qasm2/dialects/uop/_dialect.py,sha256=mns7toJRMnx38Q5IpScFMUZyA3MwSuEJkV003zudsJA,56
@@ -108,80 +115,70 @@ bloqade/qasm2/passes/fold.py,sha256=OA4mVarUYRAfZSODOA9wgoW7HNNmpQWfPG5qGVEbA6I,
108
115
  bloqade/qasm2/passes/glob.py,sha256=qGmUTJSvDPf6qatapg4U69bTRKOAwZEHcFdts3mRxjI,3563
109
116
  bloqade/qasm2/passes/lift_qubits.py,sha256=VgIuqaZecozA3cwGAq8Nzqdv8IqQlzyQv2XlaqY4H4g,759
110
117
  bloqade/qasm2/passes/noise.py,sha256=w7U91jOAabcCZZXm8uPxojsVRtcIkxtpZS2hwEDsDN0,2709
111
- bloqade/qasm2/passes/parallel.py,sha256=hvdxnmVpWnBYWYXD1oHicPa5mVpqNN25J5BWRRASSXo,5725
118
+ bloqade/qasm2/passes/parallel.py,sha256=f1GUzMJ5Ripdhax2jJyBnqq73jtDdX8ocwUuBXBdXHg,5856
112
119
  bloqade/qasm2/passes/py2qasm.py,sha256=PmdIrViQ_4PEYBKE5XEk4oqFO2sLF2s_2Etz6R9CBoQ,2167
113
120
  bloqade/qasm2/passes/qasm2py.py,sha256=beocXUoO2iM6sX85ML1eK8hp9_s5oupw8tqHWV1cDCo,2138
114
121
  bloqade/qasm2/passes/unroll_if.py,sha256=CpE0IRiTU5p2nuFtw0pziNzmkuPvD_EM4Q5IcW4hxm0,1095
115
- bloqade/qasm2/rewrite/__init__.py,sha256=bWOcz2uPQErF6xHFlgHBAFPCZBaSHmLDrjXllzgjHSU,765
122
+ bloqade/qasm2/rewrite/__init__.py,sha256=peWypAlrxyMwuqZT9CmRuVZVPxkbrHZ0tke5ngP_qow,684
116
123
  bloqade/qasm2/rewrite/desugar.py,sha256=ABri2ubImrgYUWtuFj0EEh5FcICqjtKUSS2Ue4WlMdA,1007
117
124
  bloqade/qasm2/rewrite/glob.py,sha256=JzGDIY8ME9ZhNQ0g4d0FTpJuJlPu6G19myzo4zb6f_M,3119
118
125
  bloqade/qasm2/rewrite/insert_qubits.py,sha256=PpYNlJAl-TVtC1MJxIzOQWDetgW8OPXe6cLN1SMg2w0,1187
119
126
  bloqade/qasm2/rewrite/native_gates.py,sha256=GVutT1jf_gv9qaR5fLqjcmxcqCfMZTiQyg4Fq-TlmFM,18684
120
- bloqade/qasm2/rewrite/parallel_to_glob.py,sha256=TQ5EAYIx7pLpydSeeF2Ta0h5evaHHXaRtvtgz1X3Kfo,2750
121
- bloqade/qasm2/rewrite/parallel_to_uop.py,sha256=_banEox20L_qU1GTvKjSSDBkFg49UlSE-POuTCKnrzY,2351
127
+ bloqade/qasm2/rewrite/parallel_to_glob.py,sha256=FVNDBwjiL3-tJN-IT7kjKiaO7I3guDLqRN6rdmLdZvw,3001
128
+ bloqade/qasm2/rewrite/parallel_to_uop.py,sha256=SPOcMq51NHk30GQs1U1oMS0AdNa1Xzg3_0XKJuEid-s,2205
122
129
  bloqade/qasm2/rewrite/register.py,sha256=0q-zkSdZih3BbRUDGnig8fFVQA9y2fhn3wdsu4Kbdm4,1563
123
130
  bloqade/qasm2/rewrite/uop_to_parallel.py,sha256=2_7SQh1SRQaCk6v0HbV0G2rSlUGscIHmmDQcaMIpTwE,13131
124
131
  bloqade/qasm2/rewrite/noise/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
125
- bloqade/qasm2/rewrite/noise/heuristic_noise.py,sha256=7C7yYC66HLZPlTynXwfZ5lKnJkLnDGLT7lVWxREozuc,7851
132
+ bloqade/qasm2/rewrite/noise/heuristic_noise.py,sha256=RtXWFBbVfBhAul6eWDfh7D4TduUmALLMM2I71RyafPM,7356
126
133
  bloqade/qasm2/rewrite/noise/remove_noise.py,sha256=rnalZ1igiTpCFJ9Z3PRdzcx-qnkkALv6iQO-_yz39kM,1097
127
134
  bloqade/qbraid/__init__.py,sha256=V-Co_nhH03UCV4c5MGkBnhHcVwJ2Ngrl6KZnSwo91b8,80
128
135
  bloqade/qbraid/lowering.py,sha256=84RsPONWeQ_2beyOWBNoJbGFKuaMhsWtRiPivTCZ-Q0,11985
129
136
  bloqade/qbraid/schema.py,sha256=dTPexUFOiBNBnFv0GEbGh6jpIbMIFHk4hFXmXbeihxA,7854
130
137
  bloqade/qbraid/simulation_result.py,sha256=zdCJcAdbQkEDzFFuC2q3gqOFTOLAXHk4wh8RRDB6cgc,3956
131
138
  bloqade/qbraid/target.py,sha256=LcFHHyLe74yBmrHI9251xHgLN_nUz35lN8RPNwrT6mI,3149
139
+ bloqade/qubit/__init__.py,sha256=Op0IkrZINFqk9CAaadTz1zAEX_kvQA0jAeDp7azeMCk,425
140
+ bloqade/qubit/_dialect.py,sha256=9rjrq21U6FSwDkMILDplE6zPCjdB-U2mLfpFGdsUeeY,52
141
+ bloqade/qubit/_interface.py,sha256=ihRgJ9x9kYboTJ8zyXj9N4P0idYGFQQJAWuX6Xu0pb0,1079
142
+ bloqade/qubit/_prelude.py,sha256=svWslf7sdyYExCqi1Ki1oXECZezE3xdcDtjNOvWPcMI,1269
143
+ bloqade/qubit/stmts.py,sha256=FP1H7TiRwsPP5GaDZCeE4TiJzJMebKunY0qMTiUGnFU,1959
144
+ bloqade/qubit/analysis/__init__.py,sha256=DvnFHmEqMxRG92jVT3ZWwAQDTb6DC4fZDTV8ZSLZgP0,43
145
+ bloqade/qubit/analysis/address_impl.py,sha256=x1pV6bol2BSrE-_ITSnCkQjq3OK053ja0uHhAwyFdpA,1080
146
+ bloqade/qubit/stdlib/__init__.py,sha256=b1CgWSNBcIWh1yKeFS_keFo0CnXkeTEDk6LEu0kpEiE,102
147
+ bloqade/qubit/stdlib/_new.py,sha256=YDooaU5oXScFaKEHEkNQvnlpma2nwvK4nqX7Z9xAJDo,775
148
+ bloqade/qubit/stdlib/broadcast.py,sha256=oTnxrknCaW1caYEDESwnbWXI_2zjyTG1uXrxEJwKlgs,1729
149
+ bloqade/qubit/stdlib/simple.py,sha256=0aiOgorWQguNDatl3WbnFW98Sy4LDyODlW6h9j426g8,1503
132
150
  bloqade/rewrite/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
133
151
  bloqade/rewrite/passes/__init__.py,sha256=-J8Ng97AlSCy6hJGmQORbVPjSCWhXdyU4EJx6XHnqXE,139
134
- bloqade/rewrite/passes/aggressive_unroll.py,sha256=bXXOjooo_qJVIejniSfPMxa9ySrTaK3C57PgkpYa1dw,3025
152
+ bloqade/rewrite/passes/aggressive_unroll.py,sha256=JSXw4dOTDA4ZwCMaQHQYIS4LVleJ5aqyqt9uMiPwKBc,3043
135
153
  bloqade/rewrite/passes/canonicalize_ilist.py,sha256=Y7twcmmtEEnXb4ulKhLi7JFBicCMxaP76_KiQMkOq7w,749
136
154
  bloqade/rewrite/rules/__init__.py,sha256=3e1Z5T3INqNtP6OU0Vivu_SdMOR_2KDixeA0Yjoddgg,82
137
155
  bloqade/rewrite/rules/split_ifs.py,sha256=KhwvUx-oBrBO2F1j-J5kwNbdnrnEZcZtJflzyQm-UOI,2613
138
- bloqade/squin/__init__.py,sha256=j9jgH39eQHedbVR9poKx2YHxOihclAI0GpIA05NejHM,675
139
- bloqade/squin/_typeinfer.py,sha256=bilWfC6whTMwewFCqDgB6vDHZsgXPr3azNOYqqnvtB4,780
140
- bloqade/squin/groups.py,sha256=ceO6RfWB1B0FlGZYtJACkKUXvTFPNZR_A4aikKDwHAU,1324
141
- bloqade/squin/lowering.py,sha256=bfrPjx6t2mnd1qoBshF_RW-FXMWg3TOUA6XKUeONyig,2560
142
- bloqade/squin/parallel.py,sha256=X6Ps9kQIgnFMlZO14y2ntdxvivqbIP28PAWF8KmxByM,5172
143
- bloqade/squin/qubit.py,sha256=eX24PLk0CILaooQZDD6gv5MwSAXSncazv86M-cyT3cc,5649
144
- bloqade/squin/types.py,sha256=T3lkqid4HEWuAK_wRns_p-K5DbLDwlldoyZtVay7A3o,119
145
- bloqade/squin/wire.py,sha256=GZhF0EHCu7OU70zTV_N83yann-eQnYG_lM2u0QYFoAs,6596
146
- bloqade/squin/analysis/__init__.py,sha256=DvnFHmEqMxRG92jVT3ZWwAQDTb6DC4fZDTV8ZSLZgP0,43
147
- bloqade/squin/analysis/address_impl.py,sha256=eMEGlkw88ozj8ZGHcfQ0qW2K_dNxYxnhwztJr2PkPuc,1921
148
- bloqade/squin/analysis/schedule.py,sha256=buuC4bFuLuaSDK2BZfkRkh8ZdNicz9HkEv3FAnsDViE,7880
149
- bloqade/squin/analysis/nsites/__init__.py,sha256=RlQg7ivczXCXG5lMeL3ipYKj2oJKC4THu8orYf5PBYs,263
150
- bloqade/squin/analysis/nsites/analysis.py,sha256=rIe1RU1MZRItcE2aB8DYahLrv73HfD3IHCX3E_EGQ1c,1773
151
- bloqade/squin/analysis/nsites/impls.py,sha256=wSNWjNmgwCP35FgmreyLKmRYedxlebWi7LhsEq9jPs4,3097
152
- bloqade/squin/analysis/nsites/lattice.py,sha256=ruh0808SHtj3ecuT-C3AZTsLY2j3DRhtezGiTZvcuVs,942
153
- bloqade/squin/cirq/__init__.py,sha256=7OYYboSl5lPwdWOKk4AJgm1s1lBX_WAstVqPfaynSv8,10156
154
- bloqade/squin/cirq/lowering.py,sha256=i5-IakuJGo3CYw7VNHqB0uM3AiFMw__a3oizKce3F7I,17937
155
- bloqade/squin/cirq/emit/emit_circuit.py,sha256=JVFXiaSB7A9kamRwCjLqs03Sel4PVCBT-6kRNRWX-jo,4393
156
- bloqade/squin/cirq/emit/noise.py,sha256=rESjGC_66s2Y4FwwYda4rY3mYHYjbqLlKE_vnqpZDYI,1534
157
- bloqade/squin/cirq/emit/op.py,sha256=u1FoOlbz7NNXPlU-hMbnX_yRB5suKbsEm2jF3Ts4f68,5764
158
- bloqade/squin/cirq/emit/qubit.py,sha256=9aDM0USxcekzXx9--WJB5r96JQ1iEmeNJ9h8rdZ8QhM,1915
159
- bloqade/squin/cirq/emit/runtime.py,sha256=dH7JSMt2mALPhVFjmZETQzvnTUQ3BFY5poe0YZpM5vQ,6819
160
- bloqade/squin/noise/__init__.py,sha256=JFJ4kmEeWt6bJ2xx3yA5ek-NEbj8ilYWf6mepgbJLOo,338
161
- bloqade/squin/noise/_dialect.py,sha256=2IR98J-lXm5Y3srP9g-FD4JC-qTq2seureM6mKKq1xg,63
162
- bloqade/squin/noise/_wrapper.py,sha256=TrXZdtUIJ_wW392ka5_2Q-yYzCG1ApOzgSo5Sk7wmX8,734
163
- bloqade/squin/noise/rewrite.py,sha256=_6kGvxmbiMtL7MDHhLzgQnkq4SRthYA-cSKh_MBbC_U,4656
164
- bloqade/squin/noise/stmts.py,sha256=fqhGPkVL5gZ_pMQaaOs_Pn81cp3WJjVOxHakT8ASxto,2094
165
- bloqade/squin/op/__init__.py,sha256=6JOjPdzc6RKO4299ZFz4Jk-wtVyPlGTkakYewHBueXw,841
166
- bloqade/squin/op/_dialect.py,sha256=66G1IYqmsqUEaCTyUqn2shSHmGYduiTU8GfDXcoMvw4,55
167
- bloqade/squin/op/_wrapper.py,sha256=XrEImj0M78u6imXq7SkckmWemziL7cM98FtoMj03l2M,1955
168
- bloqade/squin/op/number.py,sha256=yujWUqLrOAr8i8OBDsiS5M882wV7t08u345NgNA6TUc,95
169
- bloqade/squin/op/rewrite.py,sha256=Itxz_hTAPNLyLYeLS0PCVk143J1Z558UR7N9-urbnoU,1327
170
- bloqade/squin/op/stdlib.py,sha256=4UFK3wKImpums2v5a9OFKuVvz2TLYbYwidg3JYYEi2o,1073
171
- bloqade/squin/op/stmts.py,sha256=DEV-hm9vNY2zMlnOZtWEOSQo-ByVFfW5EepCK0_tF1Y,6864
172
- bloqade/squin/op/traits.py,sha256=jjsnzWtPtmQK7K3H_D2fvc8XiW1Y3EMBcgeyPax2sjc,1065
173
- bloqade/squin/op/types.py,sha256=xCFdaYZags7YvANUIlsv7VOIoj8iB1sGISe7NjDEH_o,2283
174
- bloqade/squin/rewrite/U3_to_clifford.py,sha256=72ECWFrjeaEelR5e6IgNgaJXnTQ6ZXL4ZakZfXQbi8I,5670
175
- bloqade/squin/rewrite/__init__.py,sha256=cY1GbXQXKvDeXi0YE4PgjORm6iGBPk63xzMCpVjiCgw,349
176
- bloqade/squin/rewrite/canonicalize.py,sha256=hcfsn4ntsvnJ_cVnoUgcE5Zk9EqvwgixGArLPx4OjP0,2100
177
- bloqade/squin/rewrite/desugar.py,sha256=nl7yvUKgruIU0Ksb184a6r6ebeQ93HsEAG6hrPOmpWk,3296
178
- bloqade/squin/rewrite/remove_dangling_qubits.py,sha256=iTuWV-03YW5wtYbSeKMlnnWjNzDj9SmflyqYPgoYGy8,469
179
- bloqade/squin/rewrite/wrap_analysis.py,sha256=JUPS4OAYbDHOK0VIrdz1pprSizISUfN7osuoP_P-bIo,2256
156
+ bloqade/squin/__init__.py,sha256=iEIS2aDbTtgYhCcHxKSpqNeNjQ6WUA1HTpsFSj5GYPo,1194
157
+ bloqade/squin/groups.py,sha256=DG1FkSvlKZ6-HUhlB5Xbg7lXA8531S2UqRbKoghAe2s,798
158
+ bloqade/squin/analysis/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
159
+ bloqade/squin/analysis/schedule.py,sha256=LY3tFAOK6X5kDPZurhfj16nEy0MQmFCIlVyeRWkec0E,7880
160
+ bloqade/squin/gate/__init__.py,sha256=w5o5Fa2br2q6VG2D1WJ4hofduBk-9QuDIvge8FSJ-oU,70
161
+ bloqade/squin/gate/_dialect.py,sha256=1l9W5g38f9dIOvCU2iR783tuBBc3TjfwESvXE3SiWFg,57
162
+ bloqade/squin/gate/_interface.py,sha256=Nb4XvV84UwQZnOnnw7b84TOBIFfamyxZLIPvdxRVWNI,1601
163
+ bloqade/squin/gate/stmts.py,sha256=P83wlNq6itbK0rjCiMKmRrMq4cHRDrmRlcoZbnCi0ak,2537
164
+ bloqade/squin/noise/__init__.py,sha256=B8QCV0Db9bbBDmqjQPsiRphGLu89-tre-TSlStFYmxM,96
165
+ bloqade/squin/noise/_dialect.py,sha256=Wyc9lXmmfHkZfURlDoIHYCX6HDsLzfPkqwE4REUmMsg,58
166
+ bloqade/squin/noise/_interface.py,sha256=5P5cwt6lwDFLdtR1sZMVnFS8v8KWMAKnfN45AAJ0Iks,1027
167
+ bloqade/squin/noise/stmts.py,sha256=G6B4-FVmHAVE5COV-7mAhoBjxq3ZVtzLYhZJxl_RmQQ,3180
168
+ bloqade/squin/rewrite/U3_to_clifford.py,sha256=hkxjoo3sXbHG9XChdVb11BuU_rOIpw8ZikN0nbg5YlE,5539
169
+ bloqade/squin/rewrite/__init__.py,sha256=9SOU2dpNM52hdlgqvSyPQG2LFvhIA-Z1kAp4ljnDeL0,265
170
+ bloqade/squin/rewrite/remove_dangling_qubits.py,sha256=Q5XmRqZWdlq2-v82W6NCHcdwtgK4cfpqn4MkWohUqHA,469
171
+ bloqade/squin/rewrite/wrap_analysis.py,sha256=cbGY0lnPV3g2ZgVep6AA6w9UmA7mO3waX7tuotIgdqU,1557
180
172
  bloqade/squin/stdlib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
181
- bloqade/squin/stdlib/channel.py,sha256=ZZrnZlJ1UnjiGMaN2C3MFqbeCH94lb92gfmlb72pB-U,2978
182
- bloqade/squin/stdlib/gate.py,sha256=5bwImrUOOH4Yl7VBVXsQmCtJMqtXdp6u6spMLiMWE5Q,4180
183
- bloqade/stim/__init__.py,sha256=QPZnQRWiiC66pwZ4yRiX2m5doqgPQorQLqc3b7fav2A,935
184
- bloqade/stim/_wrappers.py,sha256=Bx_cv-B5ifuFK9sJkURAFg3AzfDzS3oMObEEheX-Ieg,4045
173
+ bloqade/squin/stdlib/broadcast/__init__.py,sha256=kiJmcrd1Q44oR7X0KfkOLxoMaPhiFkAxfHYwUrqOaYk,774
174
+ bloqade/squin/stdlib/broadcast/_qubit.py,sha256=s25nKv4ezRu1O-6w_o-f570TD50K_oFqWWP253hli2o,91
175
+ bloqade/squin/stdlib/broadcast/gate.py,sha256=orBbexaTTkPsEDTXpldLDuL0IuVUMzKqW-3J9ZcJeYo,6393
176
+ bloqade/squin/stdlib/broadcast/noise.py,sha256=_RtbJX-CCO3QMYiOYOJH83rnhn8o-UaSZ296rtrLxm8,4928
177
+ bloqade/squin/stdlib/simple/__init__.py,sha256=y7yq0Ff2ljBgOkC7SFMvrIeSnGjVH55TQ-ynq10DnkQ,719
178
+ bloqade/squin/stdlib/simple/gate.py,sha256=FUOKlvdvbkoNaXrkUnpjyd5o-iM2GsWbptTLNexyZII,5130
179
+ bloqade/squin/stdlib/simple/noise.py,sha256=DWNyHzBjbZz0Af_ufwRKcduHVXlJDJ0SE3Eut9Ohx7Y,3958
180
+ bloqade/stim/__init__.py,sha256=jCkbQig8t7kT_aGBVJ8e_Hj8UHKeyT8QRqmf5QGJPoc,987
181
+ bloqade/stim/_wrappers.py,sha256=PNuo1jcMvNsLAVNvHv_O6hJEmRCj1XRVP97C5mtjtEw,4178
185
182
  bloqade/stim/groups.py,sha256=lywG10uTr3saNsvKGa8Sqfb-xZIqiLwc3y1_QAvaaNs,599
186
183
  bloqade/stim/dialects/__init__.py,sha256=A1Sq0jg8wi6MjRkzmuSBnHmO3EraD0pDFWz-dO6c6v8,89
187
184
  bloqade/stim/dialects/auxiliary/__init__.py,sha256=6f57a8k2-QBtqaB0GN8FxxTBlG82oZQbVIOxxq975g4,692
@@ -211,25 +208,24 @@ bloqade/stim/dialects/gate/stmts/control_2q.py,sha256=gZRtkpgAkiUFqx5Led2t1YjYbl
211
208
  bloqade/stim/dialects/gate/stmts/pp.py,sha256=yUNCrkYBM7wUCvtRqwP9_HYX0HsHVt6JZR4efM05838,487
212
209
  bloqade/stim/dialects/noise/__init__.py,sha256=WoDdIZnxelk8REiIWDKcrEW79xwISdTZlqlTjURb71Q,138
213
210
  bloqade/stim/dialects/noise/_dialect.py,sha256=SVUjAqBoGnxo13JlAlsxulIMo1QzfJb4SMSrFaCnfP4,57
214
- bloqade/stim/dialects/noise/emit.py,sha256=BCxaJPLTU_pKkFgw9rtOzTIqZKP4o4NgDM-x128NX9s,2936
215
- bloqade/stim/dialects/noise/stmts.py,sha256=WJOlhLMfazP6u7jMMpKeCpX-gIL8_D1jv33mxclHrz4,3661
211
+ bloqade/stim/dialects/noise/emit.py,sha256=j3p8ovE75XFLHsT4AcGDCLKot7XzCkwbtM0MxRgeyfw,3067
212
+ bloqade/stim/dialects/noise/stmts.py,sha256=1jB43gshxCOqX9vX_EBwYEy9swag8lOjDLwAi-m2xSo,3620
216
213
  bloqade/stim/emit/__init__.py,sha256=GZst8q95tnaCf789z-Ha2t6WMiOZ429X7h8mzX5rFM0,102
217
214
  bloqade/stim/emit/impls.py,sha256=Isld_CikedHvrU6CahEkSRLwwLC87iK57CRk_ojob90,446
218
- bloqade/stim/emit/stim_str.py,sha256=JyEBoIhLQASogZcUWHI9tMD4JoXYrEqUr2qaZ30gZdc,1491
215
+ bloqade/stim/emit/stim_str.py,sha256=_NsYK6r911ZnATIZZyldcVyHN14Ni9UMizm6Bqi8IF0,1607
219
216
  bloqade/stim/parse/__init__.py,sha256=l2DjReB2KkgrDjP_4nP6RnoziiOewoSeZfTno1sVYTw,59
220
- bloqade/stim/parse/lowering.py,sha256=L-IcR_exlxsTVv4SQ0bhzIF4_L82P-GEdK6qRd6B86Y,23723
221
- bloqade/stim/passes/__init__.py,sha256=hemzgyl_pwZi34secp1GqStAW0d09CEeKvLD0fXhbb8,111
222
- bloqade/stim/passes/simplify_ifs.py,sha256=zicqggWu_yzfrf2a7uUCt-ZenbYSEnFsyGxDfKw72qQ,1084
223
- bloqade/stim/passes/squin_to_stim.py,sha256=mqCspofBJ60YUU5dl7AdxmctmHygk1yeRr4ucgD9TbU,5620
224
- bloqade/stim/rewrite/__init__.py,sha256=zL5G73JEsXkehN7gCtUgGnmC2BJ3vKihOd1ohVwM68E,480
225
- bloqade/stim/rewrite/ifs_to_stim.py,sha256=A3SndoGinZHLul17zXWyQrK_1Hy5I4qvuOskLIeDRMU,6942
217
+ bloqade/stim/parse/lowering.py,sha256=aQl9xe1T0Dk8ymsM9s4RCh94vX4-UTPaPJDi2uqwBpY,23591
218
+ bloqade/stim/passes/__init__.py,sha256=Mznmsy9ABZPCV9YGxoyqSPSTsg_nZByO6_3MxBxw1n0,71
219
+ bloqade/stim/passes/flatten.py,sha256=MBodYW1q-r6DRkGAft7SpEtGnaY7SeCVrsy50n3NTx4,903
220
+ bloqade/stim/passes/simplify_ifs.py,sha256=TpzInFhUhZ0qrBvAEKBMufr7OHKSqxanZOnhkYge3hc,1304
221
+ bloqade/stim/passes/squin_to_stim.py,sha256=3r6xh84nfgUF0Mae-KuvzxKIqUtM69rKg8pFCc--RdE,3515
222
+ bloqade/stim/rewrite/__init__.py,sha256=TACFSdSMRkRkh3jgihXhaBNsoVYg2rjp8GSNh6jP1U0,310
223
+ bloqade/stim/rewrite/ifs_to_stim.py,sha256=3GgG4PRYduX2np_eTUcH-WF2sLFY8mAbsJdHM8eVdtE,6471
226
224
  bloqade/stim/rewrite/py_constant_to_stim.py,sha256=PV8bHvn759-d_0JW4akaGSORW_oxigrlUBhAC51PJAU,1354
227
- bloqade/stim/rewrite/qubit_to_stim.py,sha256=vdTjzVJyzslp6BbXz5219DjF1pUJF9kvNWwUtQ_MP0g,2627
228
- bloqade/stim/rewrite/squin_measure.py,sha256=1zuILosGACN7rPYA87MYVwv0M4pPTala1YTe9owbhkw,2519
229
- bloqade/stim/rewrite/squin_noise.py,sha256=P-54e3lH9L2irsknRQ7u9UkCmUOQZFDra_yHlLlClDk,6379
230
- bloqade/stim/rewrite/util.py,sha256=o96hA-h03vpwsB0jVe_q0hCmTVINaMaZKn1IYWM6DtM,7751
231
- bloqade/stim/rewrite/wire_identity_elimination.py,sha256=Cscu8yaSslPuW04HvbXx4HJ3JzdUZNUMyFqcvuc4sxY,795
232
- bloqade/stim/rewrite/wire_to_stim.py,sha256=rZY4Ya4I2b4C3tk84LvJvEi--jyUgza8WmtDtTxCajI,1814
225
+ bloqade/stim/rewrite/qubit_to_stim.py,sha256=-ccFmmNgVvbzc3HjGWFRJhmS1AcpelbumlEhY0DAAwQ,4790
226
+ bloqade/stim/rewrite/squin_measure.py,sha256=F6zyq3UnJH3Bu7hL9fYItwJdV0R0IKp22Phxk5Cg-vw,2150
227
+ bloqade/stim/rewrite/squin_noise.py,sha256=2VkRv0u5PmjShFeQtA9vM1AxYCy8ktgNHNrlVXdhHAo,7012
228
+ bloqade/stim/rewrite/util.py,sha256=G8Uddu5E0CDgdxzgf2MGGIBHFB0uNRqyP4IANgNehYM,1166
233
229
  bloqade/stim/upstream/__init__.py,sha256=Skev79lMyfz2bFoih-Fn_9iXbMArqlKxHSd1agHAtlA,55
234
230
  bloqade/stim/upstream/from_squin.py,sha256=08I_BE7gK2a8ngZ2ElCLw879B5KGaKCFRf26NJVdU70,272
235
231
  bloqade/visual/__init__.py,sha256=Y7d0YgovKhUFzjMeDvt0wGRUZ3re3SY6iO3e8xHXrr4,37
@@ -243,7 +239,7 @@ bloqade/visual/animation/runtime/atoms.py,sha256=EmjxhujLiHHPS_HtH_B-7TiqeHgvW5u
243
239
  bloqade/visual/animation/runtime/ppoly.py,sha256=JB9IP53N1w6adBJEue6J5Nmj818Id9JvrlgrmiQTU1I,1385
244
240
  bloqade/visual/animation/runtime/qpustate.py,sha256=rlmxQeJSvaohXrTpXQL5y-NJcpvfW33xPaYM1slv7cc,4270
245
241
  bloqade/visual/animation/runtime/utils.py,sha256=ju9IzOWX-vKwfpqUjlUKu3Ssr_UFPFFq-tzH_Nqyo_c,1212
246
- bloqade_circuit-0.7.12.dist-info/METADATA,sha256=vd0O1K5RlBH7OgQCkSl2jUnRjgMT6H-L7hPQP-GHMGI,3725
247
- bloqade_circuit-0.7.12.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
248
- bloqade_circuit-0.7.12.dist-info/licenses/LICENSE,sha256=S5GIJwR6QCixPA9wryYb44ZEek0Nz4rt_zLUqP05UbU,13160
249
- bloqade_circuit-0.7.12.dist-info/RECORD,,
242
+ bloqade_circuit-0.8.0.dist-info/METADATA,sha256=OcGB0AqImLKWVIGe-zCRMEgDN_zPMq_5TGPDr8naVHA,3724
243
+ bloqade_circuit-0.8.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
244
+ bloqade_circuit-0.8.0.dist-info/licenses/LICENSE,sha256=S5GIJwR6QCixPA9wryYb44ZEek0Nz4rt_zLUqP05UbU,13160
245
+ bloqade_circuit-0.8.0.dist-info/RECORD,,
@@ -1,3 +0,0 @@
1
- from .stmts import CZ as CZ, R as R, Rz as Rz
2
- from ._dialect import dialect as dialect
3
- from ._interface import r as r, cz as cz, rz as rz
@@ -1,3 +0,0 @@
1
- from kirin import ir
2
-
3
- dialect = ir.Dialect("bloqade.native")