bloqade-circuit 0.4.5__py3-none-any.whl → 0.5.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.
- bloqade/cirq_utils/__init__.py +7 -0
- bloqade/cirq_utils/lineprog.py +295 -0
- bloqade/cirq_utils/parallelize.py +400 -0
- bloqade/pyqrack/squin/op.py +7 -2
- bloqade/pyqrack/squin/runtime.py +4 -2
- bloqade/qasm2/dialects/expr/stmts.py +2 -20
- bloqade/qasm2/parse/lowering.py +1 -0
- bloqade/qasm2/passes/parallel.py +18 -0
- bloqade/qasm2/rewrite/__init__.py +1 -0
- bloqade/qasm2/rewrite/parallel_to_glob.py +82 -0
- bloqade/squin/__init__.py +1 -0
- bloqade/squin/_typeinfer.py +20 -0
- bloqade/squin/analysis/nsites/impls.py +6 -1
- bloqade/squin/cirq/lowering.py +19 -6
- bloqade/squin/op/__init__.py +1 -0
- bloqade/squin/op/_wrapper.py +4 -0
- bloqade/squin/op/stmts.py +20 -2
- bloqade/squin/qubit.py +8 -5
- bloqade/squin/rewrite/__init__.py +1 -0
- bloqade/squin/rewrite/canonicalize.py +60 -0
- bloqade/squin/rewrite/desugar.py +52 -5
- bloqade/squin/types.py +8 -0
- bloqade/squin/wire.py +91 -5
- bloqade/stim/__init__.py +1 -0
- bloqade/stim/_wrappers.py +4 -0
- bloqade/stim/dialects/noise/emit.py +1 -0
- bloqade/stim/dialects/noise/stmts.py +5 -0
- bloqade/stim/passes/squin_to_stim.py +16 -1
- bloqade/stim/rewrite/__init__.py +1 -0
- bloqade/stim/rewrite/qubit_to_stim.py +10 -6
- bloqade/stim/rewrite/squin_noise.py +120 -0
- bloqade/stim/rewrite/util.py +44 -9
- bloqade/stim/rewrite/wire_to_stim.py +8 -3
- {bloqade_circuit-0.4.5.dist-info → bloqade_circuit-0.5.0.dist-info}/METADATA +4 -2
- {bloqade_circuit-0.4.5.dist-info → bloqade_circuit-0.5.0.dist-info}/RECORD +37 -29
- {bloqade_circuit-0.4.5.dist-info → bloqade_circuit-0.5.0.dist-info}/WHEEL +0 -0
- {bloqade_circuit-0.4.5.dist-info → bloqade_circuit-0.5.0.dist-info}/licenses/LICENSE +0 -0
bloqade/stim/__init__.py
CHANGED
bloqade/stim/_wrappers.py
CHANGED
|
@@ -190,3 +190,7 @@ def y_error(p: float, targets: tuple[int, ...]) -> None: ...
|
|
|
190
190
|
|
|
191
191
|
@wraps(noise.ZError)
|
|
192
192
|
def z_error(p: float, targets: tuple[int, ...]) -> None: ...
|
|
193
|
+
|
|
194
|
+
|
|
195
|
+
@wraps(noise.QubitLoss)
|
|
196
|
+
def qubit_loss(probs: tuple[float, ...], targets: tuple[int, ...]) -> None: ...
|
|
@@ -8,6 +8,7 @@ from kirin.rewrite import (
|
|
|
8
8
|
DeadCodeElimination,
|
|
9
9
|
CommonSubexpressionElimination,
|
|
10
10
|
)
|
|
11
|
+
from kirin.analysis import const
|
|
11
12
|
from kirin.ir.method import Method
|
|
12
13
|
from kirin.passes.abc import Pass
|
|
13
14
|
from kirin.rewrite.abc import RewriteResult
|
|
@@ -16,11 +17,12 @@ from bloqade.stim.groups import main as stim_main_group
|
|
|
16
17
|
from bloqade.stim.rewrite import (
|
|
17
18
|
SquinWireToStim,
|
|
18
19
|
PyConstantToStim,
|
|
20
|
+
SquinNoiseToStim,
|
|
19
21
|
SquinQubitToStim,
|
|
20
22
|
SquinMeasureToStim,
|
|
21
23
|
SquinWireIdentityElimination,
|
|
22
24
|
)
|
|
23
|
-
from bloqade.squin.rewrite import RemoveDeadRegister
|
|
25
|
+
from bloqade.squin.rewrite import SquinU3ToClifford, RemoveDeadRegister
|
|
24
26
|
|
|
25
27
|
|
|
26
28
|
@dataclass
|
|
@@ -31,10 +33,23 @@ class SquinToStim(Pass):
|
|
|
31
33
|
# propagate constants
|
|
32
34
|
rewrite_result = fold_pass(mt)
|
|
33
35
|
|
|
36
|
+
cp_frame, _ = const.Propagate(dialects=mt.dialects).run_analysis(mt)
|
|
37
|
+
cp_results = cp_frame.entries
|
|
38
|
+
|
|
34
39
|
# Assume that address analysis and
|
|
35
40
|
# wrapping has been done before this pass!
|
|
36
41
|
|
|
42
|
+
# Rewrite the noise statements first.
|
|
43
|
+
rewrite_result = (
|
|
44
|
+
Walk(SquinNoiseToStim(cp_results=cp_results))
|
|
45
|
+
.rewrite(mt.code)
|
|
46
|
+
.join(rewrite_result)
|
|
47
|
+
)
|
|
48
|
+
|
|
37
49
|
# Wrap Rewrite + SquinToStim can happen w/ standard walk
|
|
50
|
+
|
|
51
|
+
rewrite_result = Walk(SquinU3ToClifford()).rewrite(mt.code).join(rewrite_result)
|
|
52
|
+
|
|
38
53
|
rewrite_result = (
|
|
39
54
|
Walk(
|
|
40
55
|
Chain(
|
bloqade/stim/rewrite/__init__.py
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
from kirin import ir
|
|
2
2
|
from kirin.rewrite.abc import RewriteRule, RewriteResult
|
|
3
3
|
|
|
4
|
-
from bloqade.squin import op, qubit
|
|
4
|
+
from bloqade.squin import op, noise, qubit
|
|
5
5
|
from bloqade.squin.rewrite import AddressAttribute
|
|
6
6
|
from bloqade.stim.dialects import gate
|
|
7
7
|
from bloqade.stim.rewrite.util import (
|
|
8
|
-
|
|
8
|
+
SQUIN_STIM_OP_MAPPING,
|
|
9
9
|
rewrite_Control,
|
|
10
|
+
rewrite_QubitLoss,
|
|
10
11
|
insert_qubit_idx_from_address,
|
|
11
12
|
)
|
|
12
13
|
|
|
@@ -30,11 +31,17 @@ class SquinQubitToStim(RewriteRule):
|
|
|
30
31
|
|
|
31
32
|
# this is an SSAValue, need it to be the actual operator
|
|
32
33
|
applied_op = stmt.operator.owner
|
|
34
|
+
|
|
35
|
+
if isinstance(applied_op, noise.stmts.QubitLoss):
|
|
36
|
+
return rewrite_QubitLoss(stmt)
|
|
37
|
+
|
|
33
38
|
assert isinstance(applied_op, op.stmts.Operator)
|
|
34
39
|
|
|
35
40
|
if isinstance(applied_op, op.stmts.Control):
|
|
36
41
|
return rewrite_Control(stmt)
|
|
37
42
|
|
|
43
|
+
# need to handle Control through separate means
|
|
44
|
+
|
|
38
45
|
# check if its adjoint, assume its canonicalized so no nested adjoints.
|
|
39
46
|
is_conj = False
|
|
40
47
|
if isinstance(applied_op, op.stmts.Adjoint):
|
|
@@ -44,9 +51,7 @@ class SquinQubitToStim(RewriteRule):
|
|
|
44
51
|
is_conj = True
|
|
45
52
|
applied_op = applied_op.op.owner
|
|
46
53
|
|
|
47
|
-
|
|
48
|
-
# but we can handle X, Y, Z, H, and S here just fine
|
|
49
|
-
stim_1q_op = SQUIN_STIM_GATE_MAPPING.get(type(applied_op))
|
|
54
|
+
stim_1q_op = SQUIN_STIM_OP_MAPPING.get(type(applied_op))
|
|
50
55
|
if stim_1q_op is None:
|
|
51
56
|
return RewriteResult()
|
|
52
57
|
|
|
@@ -55,7 +60,6 @@ class SquinQubitToStim(RewriteRule):
|
|
|
55
60
|
if address_attr is None:
|
|
56
61
|
return RewriteResult()
|
|
57
62
|
|
|
58
|
-
# sometimes you can get a whole AddressReg...
|
|
59
63
|
assert isinstance(address_attr, AddressAttribute)
|
|
60
64
|
qubit_idx_ssas = insert_qubit_idx_from_address(
|
|
61
65
|
address=address_attr, stmt_to_insert_before=stmt
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
from typing import Dict, Tuple
|
|
2
|
+
from dataclasses import dataclass
|
|
3
|
+
|
|
4
|
+
from kirin.ir import SSAValue, Statement
|
|
5
|
+
from kirin.analysis import const
|
|
6
|
+
from kirin.dialects import py
|
|
7
|
+
from kirin.rewrite.abc import RewriteRule, RewriteResult
|
|
8
|
+
|
|
9
|
+
from bloqade.squin import wire, noise as squin_noise, qubit
|
|
10
|
+
from bloqade.stim.dialects import noise as stim_noise
|
|
11
|
+
from bloqade.stim.rewrite.util import (
|
|
12
|
+
create_wire_passthrough,
|
|
13
|
+
insert_qubit_idx_after_apply,
|
|
14
|
+
)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
@dataclass
|
|
18
|
+
class SquinNoiseToStim(RewriteRule):
|
|
19
|
+
|
|
20
|
+
cp_results: Dict[SSAValue, const.Result]
|
|
21
|
+
|
|
22
|
+
def rewrite_Statement(self, node: Statement) -> RewriteResult:
|
|
23
|
+
match node:
|
|
24
|
+
case qubit.Apply() | qubit.Broadcast():
|
|
25
|
+
return self.rewrite_Apply_and_Broadcast(node)
|
|
26
|
+
case _:
|
|
27
|
+
return RewriteResult()
|
|
28
|
+
|
|
29
|
+
def rewrite_Apply_and_Broadcast(
|
|
30
|
+
self, stmt: qubit.Apply | qubit.Broadcast
|
|
31
|
+
) -> RewriteResult:
|
|
32
|
+
"""Rewrite Apply and Broadcast to their stim statements."""
|
|
33
|
+
|
|
34
|
+
# this is an SSAValue, need it to be the actual operator
|
|
35
|
+
applied_op = stmt.operator.owner
|
|
36
|
+
|
|
37
|
+
if isinstance(applied_op, squin_noise.stmts.NoiseChannel):
|
|
38
|
+
|
|
39
|
+
qubit_idx_ssas = insert_qubit_idx_after_apply(stmt=stmt)
|
|
40
|
+
if qubit_idx_ssas is None:
|
|
41
|
+
return RewriteResult()
|
|
42
|
+
|
|
43
|
+
stim_stmt = None
|
|
44
|
+
if isinstance(applied_op, squin_noise.stmts.SingleQubitPauliChannel):
|
|
45
|
+
stim_stmt = self.rewrite_SingleQubitPauliChannel(stmt, qubit_idx_ssas)
|
|
46
|
+
elif isinstance(applied_op, squin_noise.stmts.TwoQubitPauliChannel):
|
|
47
|
+
stim_stmt = self.rewrite_TwoQubitPauliChannel(stmt, qubit_idx_ssas)
|
|
48
|
+
|
|
49
|
+
if isinstance(stmt, (wire.Apply, wire.Broadcast)):
|
|
50
|
+
create_wire_passthrough(stmt)
|
|
51
|
+
|
|
52
|
+
if stim_stmt is not None:
|
|
53
|
+
stmt.replace_by(stim_stmt)
|
|
54
|
+
if len(stmt.operator.owner.result.uses) == 0:
|
|
55
|
+
stmt.operator.owner.delete()
|
|
56
|
+
|
|
57
|
+
return RewriteResult(has_done_something=True)
|
|
58
|
+
return RewriteResult()
|
|
59
|
+
|
|
60
|
+
def rewrite_SingleQubitPauliChannel(
|
|
61
|
+
self,
|
|
62
|
+
stmt: qubit.Apply | qubit.Broadcast | wire.Broadcast | wire.Apply,
|
|
63
|
+
qubit_idx_ssas: Tuple[SSAValue],
|
|
64
|
+
) -> Statement:
|
|
65
|
+
"""Rewrite squin.noise.SingleQubitPauliChannel to stim.PauliChannel1."""
|
|
66
|
+
|
|
67
|
+
squin_channel = stmt.operator.owner
|
|
68
|
+
assert isinstance(squin_channel, squin_noise.stmts.SingleQubitPauliChannel)
|
|
69
|
+
|
|
70
|
+
params = self.cp_results.get(squin_channel.params).data
|
|
71
|
+
new_stmts = [
|
|
72
|
+
p_x := py.Constant(params[0]),
|
|
73
|
+
p_y := py.Constant(params[1]),
|
|
74
|
+
p_z := py.Constant(params[2]),
|
|
75
|
+
]
|
|
76
|
+
for new_stmt in new_stmts:
|
|
77
|
+
new_stmt.insert_before(stmt)
|
|
78
|
+
|
|
79
|
+
stim_stmt = stim_noise.PauliChannel1(
|
|
80
|
+
targets=qubit_idx_ssas,
|
|
81
|
+
px=p_x.result,
|
|
82
|
+
py=p_y.result,
|
|
83
|
+
pz=p_z.result,
|
|
84
|
+
)
|
|
85
|
+
return stim_stmt
|
|
86
|
+
|
|
87
|
+
def rewrite_TwoQubitPauliChannel(
|
|
88
|
+
self,
|
|
89
|
+
stmt: qubit.Apply | qubit.Broadcast | wire.Broadcast | wire.Apply,
|
|
90
|
+
qubit_idx_ssas: Tuple[SSAValue],
|
|
91
|
+
) -> Statement:
|
|
92
|
+
"""Rewrite squin.noise.SingleQubitPauliChannel to stim.PauliChannel1."""
|
|
93
|
+
|
|
94
|
+
squin_channel = stmt.operator.owner
|
|
95
|
+
assert isinstance(squin_channel, squin_noise.stmts.TwoQubitPauliChannel)
|
|
96
|
+
|
|
97
|
+
params = self.cp_results.get(squin_channel.params).data
|
|
98
|
+
param_stmts = [py.Constant(p) for p in params]
|
|
99
|
+
for param_stmt in param_stmts:
|
|
100
|
+
param_stmt.insert_before(stmt)
|
|
101
|
+
|
|
102
|
+
stim_stmt = stim_noise.PauliChannel2(
|
|
103
|
+
targets=qubit_idx_ssas,
|
|
104
|
+
pix=param_stmts[0].result,
|
|
105
|
+
piy=param_stmts[1].result,
|
|
106
|
+
piz=param_stmts[2].result,
|
|
107
|
+
pxi=param_stmts[3].result,
|
|
108
|
+
pxx=param_stmts[4].result,
|
|
109
|
+
pxy=param_stmts[5].result,
|
|
110
|
+
pxz=param_stmts[6].result,
|
|
111
|
+
pyi=param_stmts[7].result,
|
|
112
|
+
pyx=param_stmts[8].result,
|
|
113
|
+
pyy=param_stmts[9].result,
|
|
114
|
+
pyz=param_stmts[10].result,
|
|
115
|
+
pzi=param_stmts[11].result,
|
|
116
|
+
pzx=param_stmts[12].result,
|
|
117
|
+
pzy=param_stmts[13].result,
|
|
118
|
+
pzz=param_stmts[14].result,
|
|
119
|
+
)
|
|
120
|
+
return stim_stmt
|
bloqade/stim/rewrite/util.py
CHANGED
|
@@ -2,12 +2,12 @@ from kirin import ir
|
|
|
2
2
|
from kirin.dialects import py
|
|
3
3
|
from kirin.rewrite.abc import RewriteResult
|
|
4
4
|
|
|
5
|
-
from bloqade.squin import op, wire, qubit
|
|
5
|
+
from bloqade.squin import op, wire, noise as squin_noise, qubit
|
|
6
6
|
from bloqade.squin.rewrite import AddressAttribute
|
|
7
|
-
from bloqade.stim.dialects import gate, collapse
|
|
7
|
+
from bloqade.stim.dialects import gate, noise as stim_noise, collapse
|
|
8
8
|
from bloqade.analysis.address import AddressReg, AddressWire, AddressQubit, AddressTuple
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
SQUIN_STIM_OP_MAPPING = {
|
|
11
11
|
op.stmts.X: gate.X,
|
|
12
12
|
op.stmts.Y: gate.Y,
|
|
13
13
|
op.stmts.Z: gate.Z,
|
|
@@ -17,6 +17,7 @@ SQUIN_STIM_GATE_MAPPING = {
|
|
|
17
17
|
op.stmts.SqrtY: gate.SqrtY,
|
|
18
18
|
op.stmts.Identity: gate.Identity,
|
|
19
19
|
op.stmts.Reset: collapse.RZ,
|
|
20
|
+
squin_noise.stmts.QubitLoss: stim_noise.QubitLoss,
|
|
20
21
|
}
|
|
21
22
|
|
|
22
23
|
# Squin allows creation of control gates where the gate can be any operator,
|
|
@@ -151,18 +152,52 @@ def rewrite_Control(
|
|
|
151
152
|
stim_stmt = stim_gate(controls=ctrl_qubits, targets=target_qubits)
|
|
152
153
|
|
|
153
154
|
if isinstance(stmt_with_ctrl, (wire.Apply, wire.Broadcast)):
|
|
154
|
-
|
|
155
|
-
# to subsequent statements, remove dependency on the current statement
|
|
156
|
-
for input_wire, output_wire in zip(
|
|
157
|
-
stmt_with_ctrl.inputs, stmt_with_ctrl.results
|
|
158
|
-
):
|
|
159
|
-
output_wire.replace_by(input_wire)
|
|
155
|
+
create_wire_passthrough(stmt_with_ctrl)
|
|
160
156
|
|
|
161
157
|
stmt_with_ctrl.replace_by(stim_stmt)
|
|
162
158
|
|
|
163
159
|
return RewriteResult(has_done_something=True)
|
|
164
160
|
|
|
165
161
|
|
|
162
|
+
def rewrite_QubitLoss(
|
|
163
|
+
stmt: qubit.Apply | qubit.Broadcast | wire.Broadcast | wire.Apply,
|
|
164
|
+
) -> RewriteResult:
|
|
165
|
+
"""
|
|
166
|
+
Rewrite QubitLoss statements to Stim's TrivialError.
|
|
167
|
+
"""
|
|
168
|
+
|
|
169
|
+
squin_loss_op = stmt.operator.owner
|
|
170
|
+
assert isinstance(squin_loss_op, squin_noise.stmts.QubitLoss)
|
|
171
|
+
|
|
172
|
+
qubit_idx_ssas = insert_qubit_idx_after_apply(stmt=stmt)
|
|
173
|
+
if qubit_idx_ssas is None:
|
|
174
|
+
return RewriteResult()
|
|
175
|
+
|
|
176
|
+
stim_loss_stmt = stim_noise.QubitLoss(
|
|
177
|
+
targets=qubit_idx_ssas,
|
|
178
|
+
probs=(squin_loss_op.p,),
|
|
179
|
+
)
|
|
180
|
+
|
|
181
|
+
if isinstance(stmt, (wire.Apply, wire.Broadcast)):
|
|
182
|
+
create_wire_passthrough(stmt)
|
|
183
|
+
|
|
184
|
+
stmt.replace_by(stim_loss_stmt)
|
|
185
|
+
# NoiseChannels are not pure,
|
|
186
|
+
# need to manually delete because
|
|
187
|
+
# DCE won't touch them
|
|
188
|
+
stmt.operator.owner.delete()
|
|
189
|
+
|
|
190
|
+
return RewriteResult(has_done_something=True)
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
def create_wire_passthrough(stmt: wire.Apply | wire.Broadcast) -> None:
|
|
194
|
+
|
|
195
|
+
for input_wire, output_wire in zip(stmt.inputs, stmt.results):
|
|
196
|
+
# have to "reroute" the input of these statements to directly plug in
|
|
197
|
+
# to subsequent statements, remove dependency on the current statement
|
|
198
|
+
output_wire.replace_by(input_wire)
|
|
199
|
+
|
|
200
|
+
|
|
166
201
|
def is_measure_result_used(
|
|
167
202
|
stmt: qubit.MeasureQubit | qubit.MeasureQubitList | wire.Measure,
|
|
168
203
|
) -> bool:
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
from kirin import ir
|
|
2
2
|
from kirin.rewrite.abc import RewriteRule, RewriteResult
|
|
3
3
|
|
|
4
|
-
from bloqade.squin import op, wire
|
|
4
|
+
from bloqade.squin import op, wire, noise
|
|
5
5
|
from bloqade.stim.rewrite.util import (
|
|
6
|
-
|
|
6
|
+
SQUIN_STIM_OP_MAPPING,
|
|
7
7
|
rewrite_Control,
|
|
8
|
+
rewrite_QubitLoss,
|
|
8
9
|
insert_qubit_idx_from_wire_ssa,
|
|
9
10
|
)
|
|
10
11
|
|
|
@@ -24,12 +25,16 @@ class SquinWireToStim(RewriteRule):
|
|
|
24
25
|
|
|
25
26
|
# this is an SSAValue, need it to be the actual operator
|
|
26
27
|
applied_op = stmt.operator.owner
|
|
28
|
+
|
|
29
|
+
if isinstance(applied_op, noise.stmts.QubitLoss):
|
|
30
|
+
return rewrite_QubitLoss(stmt)
|
|
31
|
+
|
|
27
32
|
assert isinstance(applied_op, op.stmts.Operator)
|
|
28
33
|
|
|
29
34
|
if isinstance(applied_op, op.stmts.Control):
|
|
30
35
|
return rewrite_Control(stmt)
|
|
31
36
|
|
|
32
|
-
stim_1q_op =
|
|
37
|
+
stim_1q_op = SQUIN_STIM_OP_MAPPING.get(type(applied_op))
|
|
33
38
|
if stim_1q_op is None:
|
|
34
39
|
return RewriteResult()
|
|
35
40
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: bloqade-circuit
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.5.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
|
|
@@ -16,6 +16,7 @@ Requires-Dist: scipy>=1.13.1
|
|
|
16
16
|
Provides-Extra: cirq
|
|
17
17
|
Requires-Dist: cirq-core>=1.4.1; extra == 'cirq'
|
|
18
18
|
Requires-Dist: cirq-core[contrib]>=1.4.1; extra == 'cirq'
|
|
19
|
+
Requires-Dist: qpsolvers[clarabel]>=4.7.0; extra == 'cirq'
|
|
19
20
|
Provides-Extra: pyqrack-cuda
|
|
20
21
|
Requires-Dist: pyqrack-cuda>=1.38.2; extra == 'pyqrack-cuda'
|
|
21
22
|
Provides-Extra: pyqrack-opencl
|
|
@@ -29,7 +30,8 @@ Requires-Dist: stim>=1.15.0; extra == 'stim'
|
|
|
29
30
|
Provides-Extra: vis
|
|
30
31
|
Requires-Dist: ffmpeg>=1.4; extra == 'vis'
|
|
31
32
|
Requires-Dist: matplotlib>=3.9.2; extra == 'vis'
|
|
32
|
-
Requires-Dist: pyqt5>=5.15.11; extra == 'vis'
|
|
33
|
+
Requires-Dist: pyqt5>=5.15.11; (sys_platform == 'darwin') and extra == 'vis'
|
|
34
|
+
Requires-Dist: pyqt5>=5.15.11; (sys_platform == 'linux') and extra == 'vis'
|
|
33
35
|
Requires-Dist: tqdm>=4.66.5; extra == 'vis'
|
|
34
36
|
Description-Content-Type: text/markdown
|
|
35
37
|
|
|
@@ -9,6 +9,9 @@ bloqade/analysis/address/impls.py,sha256=c3FMF2LLkV_fwWaolIRTV7ueXC9qwAR6PUW9kDQ
|
|
|
9
9
|
bloqade/analysis/address/lattice.py,sha256=dUq999feqPoBYkqEXe1hjHOn4TP_bkvKip8fyWQ-2-8,1755
|
|
10
10
|
bloqade/analysis/fidelity/__init__.py,sha256=iJkhoHvCMU9bKxQqgxIWKQWvpqNFRgNBI5DK8-4RAB8,59
|
|
11
11
|
bloqade/analysis/fidelity/analysis.py,sha256=G6JEYc8eeWJ9mwsbUAIzXuU2nrnTU4te41c04xE71gM,3218
|
|
12
|
+
bloqade/cirq_utils/__init__.py,sha256=RZTqtfAviI64lUrA6_XX6Bf83RC8VnKxrFaVx0lcxik,223
|
|
13
|
+
bloqade/cirq_utils/lineprog.py,sha256=JosrhfeOHI9FycUT_sYFj8TBzLpo97TL8zK-Ap2U4eQ,11021
|
|
14
|
+
bloqade/cirq_utils/parallelize.py,sha256=jnvZdA22UOkcIWVVulfhlN95Ha5q2ES-b1ZuQz--gOY,13770
|
|
12
15
|
bloqade/pyqrack/__init__.py,sha256=lonTS-luJkTVujCCtgdZRC12V7FQdoFcozAI-byXwN0,810
|
|
13
16
|
bloqade/pyqrack/base.py,sha256=9z61PaaAFqCBBwkgsDZSr-qr9IQ5OJ_JUvltmJ7Bgls,4407
|
|
14
17
|
bloqade/pyqrack/device.py,sha256=cOdyT1k0b73QbOsEIu5KqxHW2OAWP86fi_3XGPhaWGA,7134
|
|
@@ -23,9 +26,9 @@ bloqade/pyqrack/qasm2/glob.py,sha256=EGe7sh9SuvpRW4V4rFcX6Gf7ot8iyThYbsdPeEBKzYM
|
|
|
23
26
|
bloqade/pyqrack/qasm2/parallel.py,sha256=ITetuXOH2KUDpDOBuFnJoz2DhduvyBC72cOAOOixTaM,1606
|
|
24
27
|
bloqade/pyqrack/qasm2/uop.py,sha256=bLZONsEK15ymFGIQwy7muQv-TX0mvLrECuMp1Y3XTfA,8612
|
|
25
28
|
bloqade/pyqrack/squin/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
26
|
-
bloqade/pyqrack/squin/op.py,sha256=
|
|
29
|
+
bloqade/pyqrack/squin/op.py,sha256=fHBPV6Q3sKj50K34KfnctacZoNQ8iFz4j5k3qTtRfnI,5123
|
|
27
30
|
bloqade/pyqrack/squin/qubit.py,sha256=svQMbsLxv3yjiFMSRc4C7QGllzjtmlSWOsMY1mjTI8Q,2223
|
|
28
|
-
bloqade/pyqrack/squin/runtime.py,sha256=
|
|
31
|
+
bloqade/pyqrack/squin/runtime.py,sha256=BM_xRoTpsRipL_Vt-N5UO-x2Nsgiafw3nwiqiuOeH68,15401
|
|
29
32
|
bloqade/pyqrack/squin/wire.py,sha256=rqlAeU-r_EHOwJMqHrEAxpZ_rKsvUpwGG7MP4BW75Nw,1658
|
|
30
33
|
bloqade/pyqrack/squin/noise/__init__.py,sha256=uXgRQPOrHNRp3k2ff2HD8mheUEaqxZPKEnwV-s4BiV4,31
|
|
31
34
|
bloqade/pyqrack/squin/noise/native.py,sha256=KF4VGzU5Ps92DeLcIDIMsxQQtQ97z_3KUHqBPPkZFaM,2286
|
|
@@ -53,7 +56,7 @@ bloqade/qasm2/dialects/expr/_dialect.py,sha256=yu46u8FX8tTWAlMHv_YIOXZYiAuWYzB7-
|
|
|
53
56
|
bloqade/qasm2/dialects/expr/_emit.py,sha256=GlT1ZuunltKh0wjfevNu5hig74jwxW8JFoI-oQ2GqWA,3270
|
|
54
57
|
bloqade/qasm2/dialects/expr/_from_python.py,sha256=4wB9J0gMRZq1HnMzAjn6sk6qVpS2gWTlIrTZKKGOMQ8,3432
|
|
55
58
|
bloqade/qasm2/dialects/expr/_interp.py,sha256=dQLDcWABpo107BtC6d18L5NmXYlRPPedGtGqlezRWJw,2395
|
|
56
|
-
bloqade/qasm2/dialects/expr/stmts.py,sha256=
|
|
59
|
+
bloqade/qasm2/dialects/expr/stmts.py,sha256=izU70b1mnnciEP8BrZO1ACyMBZy0CeN8sWescn1bQNg,8053
|
|
57
60
|
bloqade/qasm2/dialects/noise/__init__.py,sha256=4YSXTFjt7TiQd0jqMZy2k6pfKbLyTamQlQ--jPTziLQ,512
|
|
58
61
|
bloqade/qasm2/dialects/noise/_dialect.py,sha256=onK6l3wbM0IHwf3WMiWy7pDRQG0DyLTOzplBuj56psA,58
|
|
59
62
|
bloqade/qasm2/dialects/noise/fidelity.py,sha256=Ft-Benmg1mvWYTPE_DkjMZP5-JfmiotIU_WfAWq8sCw,1632
|
|
@@ -74,7 +77,7 @@ bloqade/qasm2/emit/impls/noise.py,sha256=-N9PmCbz8MwC6xtd55GOpjDoWMyJPJBMVDWT3G8
|
|
|
74
77
|
bloqade/qasm2/parse/__init__.py,sha256=01tlLfrR015nAAPWw3i_Cs9IXsShpXMnJMagcJ_Vuik,986
|
|
75
78
|
bloqade/qasm2/parse/ast.py,sha256=a48ssf0D_xaE-27PsyeBD5lBvwN2Dojj-RWIBhy7jJE,2904
|
|
76
79
|
bloqade/qasm2/parse/build.py,sha256=2CibD1ZRX3_aknmhb5XvFQcI2sBOn97DlQHomb9CMEw,10621
|
|
77
|
-
bloqade/qasm2/parse/lowering.py,sha256=
|
|
80
|
+
bloqade/qasm2/parse/lowering.py,sha256=aBIbvJWOdG5lauPiDhh1uNQ398814INtoWZrUZtpyEU,20879
|
|
78
81
|
bloqade/qasm2/parse/parser.py,sha256=fxqp65dv8NnXE-Ie7ryLESfSH3Xr0unx1EBQysctiHM,121
|
|
79
82
|
bloqade/qasm2/parse/print.py,sha256=PaigQ5RbcfhOteWvDdQHoKsTE3tcNefpVfh1sp5eZEI,8973
|
|
80
83
|
bloqade/qasm2/parse/qasm2.lark,sha256=IYrBydUoVLn1VCNDPP5uNN5BHDET3fQ2yG11cOy900k,2238
|
|
@@ -85,15 +88,16 @@ bloqade/qasm2/passes/fold.py,sha256=NMT9MVpc7eWtqmdCztcztrfVewk5SCz5OTDMjSNPGaE,
|
|
|
85
88
|
bloqade/qasm2/passes/glob.py,sha256=qGmUTJSvDPf6qatapg4U69bTRKOAwZEHcFdts3mRxjI,3563
|
|
86
89
|
bloqade/qasm2/passes/lift_qubits.py,sha256=VgIuqaZecozA3cwGAq8Nzqdv8IqQlzyQv2XlaqY4H4g,759
|
|
87
90
|
bloqade/qasm2/passes/noise.py,sha256=w7U91jOAabcCZZXm8uPxojsVRtcIkxtpZS2hwEDsDN0,2709
|
|
88
|
-
bloqade/qasm2/passes/parallel.py,sha256=
|
|
91
|
+
bloqade/qasm2/passes/parallel.py,sha256=hvdxnmVpWnBYWYXD1oHicPa5mVpqNN25J5BWRRASSXo,5725
|
|
89
92
|
bloqade/qasm2/passes/py2qasm.py,sha256=PmdIrViQ_4PEYBKE5XEk4oqFO2sLF2s_2Etz6R9CBoQ,2167
|
|
90
93
|
bloqade/qasm2/passes/qasm2py.py,sha256=beocXUoO2iM6sX85ML1eK8hp9_s5oupw8tqHWV1cDCo,2138
|
|
91
94
|
bloqade/qasm2/passes/unroll_if.py,sha256=NBqgOcOJ4bEo9Osb2K-UATZVb77ckSgcWFpKlSkAnxI,771
|
|
92
|
-
bloqade/qasm2/rewrite/__init__.py,sha256=
|
|
95
|
+
bloqade/qasm2/rewrite/__init__.py,sha256=bWOcz2uPQErF6xHFlgHBAFPCZBaSHmLDrjXllzgjHSU,765
|
|
93
96
|
bloqade/qasm2/rewrite/desugar.py,sha256=ABri2ubImrgYUWtuFj0EEh5FcICqjtKUSS2Ue4WlMdA,1007
|
|
94
97
|
bloqade/qasm2/rewrite/glob.py,sha256=JzGDIY8ME9ZhNQ0g4d0FTpJuJlPu6G19myzo4zb6f_M,3119
|
|
95
98
|
bloqade/qasm2/rewrite/insert_qubits.py,sha256=PpYNlJAl-TVtC1MJxIzOQWDetgW8OPXe6cLN1SMg2w0,1187
|
|
96
99
|
bloqade/qasm2/rewrite/native_gates.py,sha256=GVutT1jf_gv9qaR5fLqjcmxcqCfMZTiQyg4Fq-TlmFM,18684
|
|
100
|
+
bloqade/qasm2/rewrite/parallel_to_glob.py,sha256=TQ5EAYIx7pLpydSeeF2Ta0h5evaHHXaRtvtgz1X3Kfo,2750
|
|
97
101
|
bloqade/qasm2/rewrite/parallel_to_uop.py,sha256=_banEox20L_qU1GTvKjSSDBkFg49UlSE-POuTCKnrzY,2351
|
|
98
102
|
bloqade/qasm2/rewrite/register.py,sha256=sghKMBlsls9YLO6baXZ_m692aNpWgMdxZhinNznQDks,1541
|
|
99
103
|
bloqade/qasm2/rewrite/split_ifs.py,sha256=7MTDFREG0hSSNBzU8Gpc9S-D-vHlBHcE6Zw2Zr7auY0,2053
|
|
@@ -106,19 +110,21 @@ bloqade/qbraid/lowering.py,sha256=84RsPONWeQ_2beyOWBNoJbGFKuaMhsWtRiPivTCZ-Q0,11
|
|
|
106
110
|
bloqade/qbraid/schema.py,sha256=dTPexUFOiBNBnFv0GEbGh6jpIbMIFHk4hFXmXbeihxA,7854
|
|
107
111
|
bloqade/qbraid/simulation_result.py,sha256=zdCJcAdbQkEDzFFuC2q3gqOFTOLAXHk4wh8RRDB6cgc,3956
|
|
108
112
|
bloqade/qbraid/target.py,sha256=LcFHHyLe74yBmrHI9251xHgLN_nUz35lN8RPNwrT6mI,3149
|
|
109
|
-
bloqade/squin/__init__.py,sha256=
|
|
113
|
+
bloqade/squin/__init__.py,sha256=dFe6oAqR_4_utyMXj0NbKJ-3FRHhjYTvxcr1fqK7drE,428
|
|
114
|
+
bloqade/squin/_typeinfer.py,sha256=bilWfC6whTMwewFCqDgB6vDHZsgXPr3azNOYqqnvtB4,780
|
|
110
115
|
bloqade/squin/groups.py,sha256=RXGJnNZUSXF_f5ljjhZ9At8UhaijayoxFoWvxEsUOWc,1310
|
|
111
116
|
bloqade/squin/lowering.py,sha256=w-GyOKYZHHKCGA2slcgWNS97Q_znQU65PeYxEIkvChM,816
|
|
112
|
-
bloqade/squin/qubit.py,sha256=
|
|
113
|
-
bloqade/squin/
|
|
117
|
+
bloqade/squin/qubit.py,sha256=LgNJsm6qCyP7_O-lZg3YT8IiqzF5W5ff1VwQ79nXN4c,5148
|
|
118
|
+
bloqade/squin/types.py,sha256=T3lkqid4HEWuAK_wRns_p-K5DbLDwlldoyZtVay7A3o,119
|
|
119
|
+
bloqade/squin/wire.py,sha256=GZhF0EHCu7OU70zTV_N83yann-eQnYG_lM2u0QYFoAs,6596
|
|
114
120
|
bloqade/squin/analysis/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
115
121
|
bloqade/squin/analysis/schedule.py,sha256=buuC4bFuLuaSDK2BZfkRkh8ZdNicz9HkEv3FAnsDViE,7880
|
|
116
122
|
bloqade/squin/analysis/nsites/__init__.py,sha256=RlQg7ivczXCXG5lMeL3ipYKj2oJKC4THu8orYf5PBYs,263
|
|
117
123
|
bloqade/squin/analysis/nsites/analysis.py,sha256=rIe1RU1MZRItcE2aB8DYahLrv73HfD3IHCX3E_EGQ1c,1773
|
|
118
|
-
bloqade/squin/analysis/nsites/impls.py,sha256=
|
|
124
|
+
bloqade/squin/analysis/nsites/impls.py,sha256=bVqO4E2hDzfYWwSG0pfj2j8oT1m0C3b42LdSHr4HQlo,2874
|
|
119
125
|
bloqade/squin/analysis/nsites/lattice.py,sha256=ruh0808SHtj3ecuT-C3AZTsLY2j3DRhtezGiTZvcuVs,942
|
|
120
126
|
bloqade/squin/cirq/__init__.py,sha256=fxvBvwX5VNfDmqkeM4GHguLQh53k-PJVsz89Eu0wRXw,8552
|
|
121
|
-
bloqade/squin/cirq/lowering.py,sha256=
|
|
127
|
+
bloqade/squin/cirq/lowering.py,sha256=tVbDBL7jlwXbp0ZLEjQ4zWdV1TSkcpwWgHOGxF8T1Hg,15660
|
|
122
128
|
bloqade/squin/cirq/emit/emit_circuit.py,sha256=7puJ3eCFwE9VdPb9NAiSdyRNkoQPwo_uVykz9Yv7c14,3761
|
|
123
129
|
bloqade/squin/cirq/emit/noise.py,sha256=rESjGC_66s2Y4FwwYda4rY3mYHYjbqLlKE_vnqpZDYI,1534
|
|
124
130
|
bloqade/squin/cirq/emit/op.py,sha256=z54NP5KqMxffXeFGWamEzvunpTNrxmYuluurk4j2-ps,4000
|
|
@@ -129,22 +135,23 @@ bloqade/squin/noise/_dialect.py,sha256=2IR98J-lXm5Y3srP9g-FD4JC-qTq2seureM6mKKq1
|
|
|
129
135
|
bloqade/squin/noise/_wrapper.py,sha256=b2HymlFi1BTgAZRaXvRnujJsoXkowmxQFPRBgZso82g,750
|
|
130
136
|
bloqade/squin/noise/rewrite.py,sha256=-IqFfDGnhuaFI-9b6PXjhSuiXFM1C5Qu0ibL5GvZldI,3917
|
|
131
137
|
bloqade/squin/noise/stmts.py,sha256=rktxkIdjdPUYek0MYh9uh83otkl-7UoADCoWHWf57J8,1678
|
|
132
|
-
bloqade/squin/op/__init__.py,sha256=
|
|
138
|
+
bloqade/squin/op/__init__.py,sha256=6JOjPdzc6RKO4299ZFz4Jk-wtVyPlGTkakYewHBueXw,841
|
|
133
139
|
bloqade/squin/op/_dialect.py,sha256=66G1IYqmsqUEaCTyUqn2shSHmGYduiTU8GfDXcoMvw4,55
|
|
134
|
-
bloqade/squin/op/_wrapper.py,sha256=
|
|
140
|
+
bloqade/squin/op/_wrapper.py,sha256=bg6MLA6u-qkPpo-sKL3lib1VVtQWKCe6RMZb57w8PJQ,1929
|
|
135
141
|
bloqade/squin/op/number.py,sha256=yujWUqLrOAr8i8OBDsiS5M882wV7t08u345NgNA6TUc,95
|
|
136
142
|
bloqade/squin/op/rewrite.py,sha256=Itxz_hTAPNLyLYeLS0PCVk143J1Z558UR7N9-urbnoU,1327
|
|
137
143
|
bloqade/squin/op/stdlib.py,sha256=4UFK3wKImpums2v5a9OFKuVvz2TLYbYwidg3JYYEi2o,1073
|
|
138
|
-
bloqade/squin/op/stmts.py,sha256=
|
|
144
|
+
bloqade/squin/op/stmts.py,sha256=68dASDOK6IFqS4G02A5Wlnc4ThyyIrls4aurK09aqgE,5975
|
|
139
145
|
bloqade/squin/op/traits.py,sha256=jjsnzWtPtmQK7K3H_D2fvc8XiW1Y3EMBcgeyPax2sjc,1065
|
|
140
146
|
bloqade/squin/op/types.py,sha256=ozUT0Bv9NuUxPjB2vAeqJ9cpdvUaBfP9trB5mybYxgc,663
|
|
141
147
|
bloqade/squin/rewrite/U3_to_clifford.py,sha256=HpkFTqe-J0macb_aNs1QNs8wJDoUsmwf9Mtb0I3ZepI,5377
|
|
142
|
-
bloqade/squin/rewrite/__init__.py,sha256=
|
|
143
|
-
bloqade/squin/rewrite/
|
|
148
|
+
bloqade/squin/rewrite/__init__.py,sha256=cY1GbXQXKvDeXi0YE4PgjORm6iGBPk63xzMCpVjiCgw,349
|
|
149
|
+
bloqade/squin/rewrite/canonicalize.py,sha256=hcfsn4ntsvnJ_cVnoUgcE5Zk9EqvwgixGArLPx4OjP0,2100
|
|
150
|
+
bloqade/squin/rewrite/desugar.py,sha256=ZPZnhBvIpPYOZDCFsyja4-AL5KMGfH0h8kS-AGu6sHY,3526
|
|
144
151
|
bloqade/squin/rewrite/remove_dangling_qubits.py,sha256=iTuWV-03YW5wtYbSeKMlnnWjNzDj9SmflyqYPgoYGy8,469
|
|
145
152
|
bloqade/squin/rewrite/wrap_analysis.py,sha256=JUPS4OAYbDHOK0VIrdz1pprSizISUfN7osuoP_P-bIo,2256
|
|
146
|
-
bloqade/stim/__init__.py,sha256
|
|
147
|
-
bloqade/stim/_wrappers.py,sha256=
|
|
153
|
+
bloqade/stim/__init__.py,sha256=QPZnQRWiiC66pwZ4yRiX2m5doqgPQorQLqc3b7fav2A,935
|
|
154
|
+
bloqade/stim/_wrappers.py,sha256=Bx_cv-B5ifuFK9sJkURAFg3AzfDzS3oMObEEheX-Ieg,4045
|
|
148
155
|
bloqade/stim/groups.py,sha256=Fx8G698BGO7hR8OwpPXGUEYdW4uCCPwbMp_3fJAqa8M,585
|
|
149
156
|
bloqade/stim/dialects/__init__.py,sha256=A1Sq0jg8wi6MjRkzmuSBnHmO3EraD0pDFWz-dO6c6v8,89
|
|
150
157
|
bloqade/stim/dialects/auxiliary/__init__.py,sha256=6f57a8k2-QBtqaB0GN8FxxTBlG82oZQbVIOxxq975g4,692
|
|
@@ -174,21 +181,22 @@ bloqade/stim/dialects/gate/stmts/control_2q.py,sha256=gZRtkpgAkiUFqx5Led2t1YjYbl
|
|
|
174
181
|
bloqade/stim/dialects/gate/stmts/pp.py,sha256=yUNCrkYBM7wUCvtRqwP9_HYX0HsHVt6JZR4efM05838,487
|
|
175
182
|
bloqade/stim/dialects/noise/__init__.py,sha256=WoDdIZnxelk8REiIWDKcrEW79xwISdTZlqlTjURb71Q,138
|
|
176
183
|
bloqade/stim/dialects/noise/_dialect.py,sha256=SVUjAqBoGnxo13JlAlsxulIMo1QzfJb4SMSrFaCnfP4,57
|
|
177
|
-
bloqade/stim/dialects/noise/emit.py,sha256=
|
|
178
|
-
bloqade/stim/dialects/noise/stmts.py,sha256=
|
|
184
|
+
bloqade/stim/dialects/noise/emit.py,sha256=BCxaJPLTU_pKkFgw9rtOzTIqZKP4o4NgDM-x128NX9s,2936
|
|
185
|
+
bloqade/stim/dialects/noise/stmts.py,sha256=WJOlhLMfazP6u7jMMpKeCpX-gIL8_D1jv33mxclHrz4,3661
|
|
179
186
|
bloqade/stim/emit/__init__.py,sha256=N2dPQY7OyqPwHAStDeOgYg2yfxqxMOz-N7pD5Z4JwlI,73
|
|
180
187
|
bloqade/stim/emit/stim_str.py,sha256=JyEBoIhLQASogZcUWHI9tMD4JoXYrEqUr2qaZ30gZdc,1491
|
|
181
188
|
bloqade/stim/parse/__init__.py,sha256=l2DjReB2KkgrDjP_4nP6RnoziiOewoSeZfTno1sVYTw,59
|
|
182
189
|
bloqade/stim/parse/lowering.py,sha256=L-IcR_exlxsTVv4SQ0bhzIF4_L82P-GEdK6qRd6B86Y,23723
|
|
183
190
|
bloqade/stim/passes/__init__.py,sha256=KAWJPhZHf0cVDmr9o9LNRfZU8G9aS4adGC4EC7ci_E8,54
|
|
184
|
-
bloqade/stim/passes/squin_to_stim.py,sha256=
|
|
185
|
-
bloqade/stim/rewrite/__init__.py,sha256=
|
|
191
|
+
bloqade/stim/passes/squin_to_stim.py,sha256=ytPeYJiCRDBD1heB43I4V6AfORy9xs2V7n2fcv2kMyI,3239
|
|
192
|
+
bloqade/stim/rewrite/__init__.py,sha256=SHWryh7rZHXOlIz8BMNpj-w7-8VQCRMLt6PfzYFbBfw,434
|
|
186
193
|
bloqade/stim/rewrite/py_constant_to_stim.py,sha256=PV8bHvn759-d_0JW4akaGSORW_oxigrlUBhAC51PJAU,1354
|
|
187
|
-
bloqade/stim/rewrite/qubit_to_stim.py,sha256=
|
|
194
|
+
bloqade/stim/rewrite/qubit_to_stim.py,sha256=Yzh1P_wzLXWqpP_YN4lvDmCS7aLIyZci2JWlHPNO9Xg,2524
|
|
188
195
|
bloqade/stim/rewrite/squin_measure.py,sha256=1X3rcfGvVDSEXmvqlw4T0LQu2A8LFeNeqz1_zf_I8vA,2466
|
|
189
|
-
bloqade/stim/rewrite/
|
|
196
|
+
bloqade/stim/rewrite/squin_noise.py,sha256=dNt3C2fHebPEYYqlY2eonqiQr7V6GwIl69mI9E5U61g,4265
|
|
197
|
+
bloqade/stim/rewrite/util.py,sha256=tAEi1aDirZ-H5vfxs5u_WWBwHRkBCU3zs_XRSUmWMEQ,6866
|
|
190
198
|
bloqade/stim/rewrite/wire_identity_elimination.py,sha256=Cscu8yaSslPuW04HvbXx4HJ3JzdUZNUMyFqcvuc4sxY,795
|
|
191
|
-
bloqade/stim/rewrite/wire_to_stim.py,sha256=
|
|
199
|
+
bloqade/stim/rewrite/wire_to_stim.py,sha256=rZY4Ya4I2b4C3tk84LvJvEi--jyUgza8WmtDtTxCajI,1814
|
|
192
200
|
bloqade/visual/__init__.py,sha256=Y7d0YgovKhUFzjMeDvt0wGRUZ3re3SY6iO3e8xHXrr4,37
|
|
193
201
|
bloqade/visual/animation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
194
202
|
bloqade/visual/animation/animate.py,sha256=NSKs3YDWgTZH2-Tpx3cP1bBcIEWTEPqK5UFkY_IF_3k,8927
|
|
@@ -200,7 +208,7 @@ bloqade/visual/animation/runtime/atoms.py,sha256=EmjxhujLiHHPS_HtH_B-7TiqeHgvW5u
|
|
|
200
208
|
bloqade/visual/animation/runtime/ppoly.py,sha256=JB9IP53N1w6adBJEue6J5Nmj818Id9JvrlgrmiQTU1I,1385
|
|
201
209
|
bloqade/visual/animation/runtime/qpustate.py,sha256=rlmxQeJSvaohXrTpXQL5y-NJcpvfW33xPaYM1slv7cc,4270
|
|
202
210
|
bloqade/visual/animation/runtime/utils.py,sha256=ju9IzOWX-vKwfpqUjlUKu3Ssr_UFPFFq-tzH_Nqyo_c,1212
|
|
203
|
-
bloqade_circuit-0.
|
|
204
|
-
bloqade_circuit-0.
|
|
205
|
-
bloqade_circuit-0.
|
|
206
|
-
bloqade_circuit-0.
|
|
211
|
+
bloqade_circuit-0.5.0.dist-info/METADATA,sha256=WQewYSavs5inq14laYhjQrHPOh289qP0sC-DXq8c5QM,3849
|
|
212
|
+
bloqade_circuit-0.5.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
213
|
+
bloqade_circuit-0.5.0.dist-info/licenses/LICENSE,sha256=S5GIJwR6QCixPA9wryYb44ZEek0Nz4rt_zLUqP05UbU,13160
|
|
214
|
+
bloqade_circuit-0.5.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|