bloqade-circuit 0.6.8__py3-none-any.whl → 0.7.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/analysis/measure_id/analysis.py +10 -11
- bloqade/analysis/measure_id/impls.py +15 -2
- bloqade/cirq_utils/noise/__init__.py +0 -2
- bloqade/cirq_utils/noise/_two_zone_utils.py +7 -15
- bloqade/cirq_utils/noise/model.py +141 -188
- bloqade/cirq_utils/noise/transform.py +2 -2
- bloqade/pyqrack/squin/qubit.py +4 -2
- bloqade/pyqrack/squin/runtime.py +14 -6
- bloqade/squin/cirq/emit/op.py +37 -5
- bloqade/squin/cirq/emit/qubit.py +4 -4
- bloqade/squin/cirq/emit/runtime.py +0 -15
- bloqade/squin/cirq/lowering.py +3 -9
- bloqade/squin/gate.py +7 -0
- bloqade/squin/lowering.py +26 -0
- bloqade/squin/noise/__init__.py +0 -1
- bloqade/squin/noise/_wrapper.py +2 -6
- bloqade/squin/noise/rewrite.py +0 -11
- bloqade/squin/noise/stmts.py +2 -14
- bloqade/squin/op/_wrapper.py +4 -4
- bloqade/squin/op/stmts.py +33 -9
- bloqade/squin/op/types.py +104 -2
- bloqade/squin/qubit.py +27 -40
- bloqade/squin/rewrite/desugar.py +44 -66
- bloqade/stim/passes/squin_to_stim.py +21 -4
- bloqade/stim/rewrite/ifs_to_stim.py +6 -1
- bloqade/stim/rewrite/qubit_to_stim.py +1 -1
- bloqade/stim/rewrite/squin_noise.py +9 -7
- bloqade/stim/rewrite/util.py +15 -3
- {bloqade_circuit-0.6.8.dist-info → bloqade_circuit-0.7.0.dist-info}/METADATA +1 -1
- {bloqade_circuit-0.6.8.dist-info → bloqade_circuit-0.7.0.dist-info}/RECORD +32 -32
- {bloqade_circuit-0.6.8.dist-info → bloqade_circuit-0.7.0.dist-info}/WHEEL +0 -0
- {bloqade_circuit-0.6.8.dist-info → bloqade_circuit-0.7.0.dist-info}/licenses/LICENSE +0 -0
bloqade/squin/rewrite/desugar.py
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
from warnings import warn
|
|
2
|
+
|
|
1
3
|
from kirin import ir, types
|
|
2
4
|
from kirin.dialects import py, ilist
|
|
3
5
|
from kirin.rewrite.abc import RewriteRule, RewriteResult
|
|
@@ -43,6 +45,8 @@ class MeasureDesugarRule(RewriteRule):
|
|
|
43
45
|
class ApplyDesugarRule(RewriteRule):
|
|
44
46
|
"""
|
|
45
47
|
Desugar apply operators in the kernel.
|
|
48
|
+
|
|
49
|
+
NOTE: this pass can be removed once we decide to disallow the syntax apply(op: Op, qubits: list)
|
|
46
50
|
"""
|
|
47
51
|
|
|
48
52
|
def rewrite_Statement(self, node: ir.Statement) -> RewriteResult:
|
|
@@ -53,72 +57,46 @@ class ApplyDesugarRule(RewriteRule):
|
|
|
53
57
|
op = node.operator
|
|
54
58
|
qubits = node.qubits
|
|
55
59
|
|
|
56
|
-
if len(qubits)
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
qubits_ilist = qubits[0]
|
|
70
|
-
|
|
71
|
-
elif len(qubits) == 1:
|
|
72
|
-
# TODO: remove this elif clause once we're at kirin v0.18
|
|
73
|
-
# NOTE: this is a temporary workaround for kirin#408
|
|
74
|
-
# currently type inference fails here in for loops since the loop var
|
|
75
|
-
# is an IList for some reason
|
|
76
|
-
|
|
77
|
-
if not isinstance(qubits[0], ir.ResultValue):
|
|
78
|
-
return RewriteResult()
|
|
79
|
-
|
|
80
|
-
is_ilist = isinstance(qbit_stmt := qubits[0].stmt, ilist.New)
|
|
81
|
-
|
|
82
|
-
if is_ilist:
|
|
83
|
-
|
|
84
|
-
if not all(
|
|
85
|
-
isinstance(qbit_getindex_result, ir.ResultValue)
|
|
86
|
-
for qbit_getindex_result in qbit_stmt.values
|
|
87
|
-
):
|
|
88
|
-
return RewriteResult()
|
|
89
|
-
|
|
90
|
-
# Get the parent statement that the qubit came from
|
|
91
|
-
# (should be a GetItem instance, see logic below)
|
|
92
|
-
qbit_getindices = [
|
|
93
|
-
qbit_getindex_result.stmt
|
|
94
|
-
for qbit_getindex_result in qbit_stmt.values
|
|
95
|
-
]
|
|
96
|
-
else:
|
|
97
|
-
qbit_getindices = [qubit.stmt for qubit in qubits]
|
|
98
|
-
|
|
99
|
-
if any(
|
|
100
|
-
not isinstance(qbit_getindex, py.indexing.GetItem)
|
|
101
|
-
for qbit_getindex in qbit_getindices
|
|
102
|
-
):
|
|
103
|
-
return RewriteResult()
|
|
104
|
-
|
|
105
|
-
# The GetItem should have been applied on something that returns an IList of Qubits
|
|
106
|
-
if any(
|
|
107
|
-
not qbit_getindex.obj.type.is_subseteq(
|
|
108
|
-
ilist.IListType[QubitType, types.Any]
|
|
109
|
-
)
|
|
110
|
-
for qbit_getindex in qbit_getindices
|
|
111
|
-
):
|
|
112
|
-
return RewriteResult()
|
|
113
|
-
|
|
114
|
-
if is_ilist:
|
|
115
|
-
qubits_ilist = qbit_stmt.result
|
|
116
|
-
else:
|
|
117
|
-
(qubits_ilist_stmt := ilist.New(values=[qubits[0]])).insert_before(node)
|
|
118
|
-
qubits_ilist = qubits_ilist_stmt.result
|
|
119
|
-
else:
|
|
60
|
+
if len(qubits) == 0:
|
|
61
|
+
# NOTE: this is invalid syntax, but we don't error in rewrites
|
|
62
|
+
return RewriteResult()
|
|
63
|
+
|
|
64
|
+
if all(q.type.is_subseteq(QubitType) for q in qubits):
|
|
65
|
+
# NOTE: this is the syntax we want; the entire rewrite becomes unnecessary
|
|
66
|
+
# once we disallow the old syntax (just wrap Apply directly)
|
|
67
|
+
apply_stmt = Apply(op, qubits)
|
|
68
|
+
node.replace_by(apply_stmt)
|
|
69
|
+
return RewriteResult(has_done_something=True)
|
|
70
|
+
|
|
71
|
+
if len(qubits) > 1:
|
|
72
|
+
# NOTE: multiple arguments, that aren't qubits, let's bail
|
|
120
73
|
return RewriteResult()
|
|
121
74
|
|
|
122
|
-
|
|
123
|
-
|
|
75
|
+
qubit_type = qubits[0].type
|
|
76
|
+
is_qubit_list = qubit_type.is_subseteq(ilist.IListType[QubitType, types.Any])
|
|
77
|
+
|
|
78
|
+
if not is_qubit_list:
|
|
79
|
+
return RewriteResult()
|
|
80
|
+
|
|
81
|
+
# NOTE: deprecated syntax: we have a single list of qubits here
|
|
82
|
+
warn(
|
|
83
|
+
"The syntax `apply(operator: Op, qubits: list[Qubit])` is deprecated and may already lead to errors. Use `apply(operator: Op, *qubits: Qubit)` instead."
|
|
84
|
+
)
|
|
85
|
+
if not isinstance(qubit_type.vars[1], types.Literal):
|
|
86
|
+
# NOTE: unknown size, nothing we can do here, it will probably error down the road somewhere
|
|
87
|
+
return RewriteResult()
|
|
88
|
+
|
|
89
|
+
n = qubit_type.vars[1].data
|
|
90
|
+
if not isinstance(n, int):
|
|
91
|
+
# wat?
|
|
92
|
+
return RewriteResult()
|
|
93
|
+
|
|
94
|
+
qubits_rewrite = []
|
|
95
|
+
for i in range(n):
|
|
96
|
+
(idx := py.Constant(i)).insert_before(node)
|
|
97
|
+
(get_item := py.GetItem(qubits[0], idx.result)).insert_before(node)
|
|
98
|
+
qubits_rewrite.append(get_item.result)
|
|
99
|
+
|
|
100
|
+
apply_stmt = Apply(op, tuple(qubits_rewrite))
|
|
101
|
+
node.replace_by(apply_stmt)
|
|
124
102
|
return RewriteResult(has_done_something=True)
|
|
@@ -17,6 +17,7 @@ from kirin.passes.abc import Pass
|
|
|
17
17
|
from kirin.rewrite.abc import RewriteResult
|
|
18
18
|
from kirin.passes.inline import InlinePass
|
|
19
19
|
from kirin.rewrite.alias import InlineAlias
|
|
20
|
+
from kirin.dialects.scf.unroll import PickIfElse
|
|
20
21
|
|
|
21
22
|
from bloqade.stim.rewrite import (
|
|
22
23
|
SquinWireToStim,
|
|
@@ -34,7 +35,7 @@ from bloqade.squin.rewrite import (
|
|
|
34
35
|
from bloqade.rewrite.passes import CanonicalizeIList
|
|
35
36
|
from bloqade.analysis.address import AddressAnalysis
|
|
36
37
|
from bloqade.analysis.measure_id import MeasurementIDAnalysis
|
|
37
|
-
from bloqade.squin.rewrite.desugar import ApplyDesugarRule
|
|
38
|
+
from bloqade.squin.rewrite.desugar import ApplyDesugarRule, MeasureDesugarRule
|
|
38
39
|
|
|
39
40
|
from .simplify_ifs import StimSimplifyIfs
|
|
40
41
|
from ..rewrite.ifs_to_stim import IfToStim
|
|
@@ -91,7 +92,11 @@ class SquinToStimPass(Pass):
|
|
|
91
92
|
Walk(Fixpoint(CFGCompactify())).rewrite(mt.code).join(rewrite_result)
|
|
92
93
|
)
|
|
93
94
|
|
|
94
|
-
|
|
95
|
+
rewrite_result = (
|
|
96
|
+
Walk(Chain(InlineAlias(), PickIfElse()))
|
|
97
|
+
.rewrite(mt.code)
|
|
98
|
+
.join(rewrite_result)
|
|
99
|
+
)
|
|
95
100
|
|
|
96
101
|
rewrite_result = (
|
|
97
102
|
StimSimplifyIfs(mt.dialects, no_raise=self.no_raise)
|
|
@@ -112,8 +117,20 @@ class SquinToStimPass(Pass):
|
|
|
112
117
|
.join(rewrite_result)
|
|
113
118
|
)
|
|
114
119
|
|
|
115
|
-
|
|
116
|
-
|
|
120
|
+
rewrite_result = TypeInfer(
|
|
121
|
+
dialects=mt.dialects, no_raise=self.no_raise
|
|
122
|
+
).unsafe_run(mt)
|
|
123
|
+
|
|
124
|
+
rewrite_result = (
|
|
125
|
+
Walk(
|
|
126
|
+
Chain(
|
|
127
|
+
ApplyDesugarRule(),
|
|
128
|
+
MeasureDesugarRule(),
|
|
129
|
+
)
|
|
130
|
+
)
|
|
131
|
+
.rewrite(mt.code)
|
|
132
|
+
.join(rewrite_result)
|
|
133
|
+
)
|
|
117
134
|
|
|
118
135
|
# after this the program should be in a state where it is analyzable
|
|
119
136
|
# -------------------------------------------------------------------
|
|
@@ -170,7 +170,12 @@ class IfToStim(IfElseSimplification, RewriteRule):
|
|
|
170
170
|
get_record_stmt = GetRecord(id=measure_id_idx_stmt.result) # noqa: F841
|
|
171
171
|
|
|
172
172
|
# get address attribute and generate qubit idx statements
|
|
173
|
-
|
|
173
|
+
if len(apply_or_broadcast.qubits) != 1:
|
|
174
|
+
# NOTE: this is actually invalid since we are dealing with single-qubit operators here
|
|
175
|
+
return RewriteResult()
|
|
176
|
+
|
|
177
|
+
address_attr = apply_or_broadcast.qubits[0].hints.get("address")
|
|
178
|
+
|
|
174
179
|
if address_attr is None:
|
|
175
180
|
return RewriteResult()
|
|
176
181
|
assert isinstance(address_attr, AddressAttribute)
|
|
@@ -19,13 +19,13 @@ class SquinNoiseToStim(RewriteRule):
|
|
|
19
19
|
|
|
20
20
|
def rewrite_Statement(self, node: Statement) -> RewriteResult:
|
|
21
21
|
match node:
|
|
22
|
-
case qubit.Apply() | qubit.Broadcast():
|
|
22
|
+
case qubit.Apply() | qubit.Broadcast() | wire.Apply() | wire.Broadcast():
|
|
23
23
|
return self.rewrite_Apply_and_Broadcast(node)
|
|
24
24
|
case _:
|
|
25
25
|
return RewriteResult()
|
|
26
26
|
|
|
27
27
|
def rewrite_Apply_and_Broadcast(
|
|
28
|
-
self, stmt: qubit.Apply | qubit.Broadcast
|
|
28
|
+
self, stmt: qubit.Apply | qubit.Broadcast | wire.Apply | wire.Broadcast
|
|
29
29
|
) -> RewriteResult:
|
|
30
30
|
"""Rewrite Apply and Broadcast to their stim statements."""
|
|
31
31
|
|
|
@@ -37,20 +37,22 @@ class SquinNoiseToStim(RewriteRule):
|
|
|
37
37
|
|
|
38
38
|
if isinstance(applied_op, squin_noise.stmts.NoiseChannel):
|
|
39
39
|
|
|
40
|
+
rewrite_method = getattr(self, f"rewrite_{type(applied_op).__name__}", None)
|
|
41
|
+
# No rewrite method exists and the rewrite should stop
|
|
42
|
+
if rewrite_method is None:
|
|
43
|
+
return RewriteResult()
|
|
44
|
+
|
|
40
45
|
qubit_idx_ssas = insert_qubit_idx_after_apply(stmt=stmt)
|
|
41
46
|
if qubit_idx_ssas is None:
|
|
42
47
|
return RewriteResult()
|
|
43
48
|
|
|
44
|
-
rewrite_method = getattr(self, f"rewrite_{type(applied_op).__name__}")
|
|
45
49
|
stim_stmt = rewrite_method(stmt, qubit_idx_ssas)
|
|
46
50
|
|
|
47
51
|
if isinstance(stmt, (wire.Apply, wire.Broadcast)):
|
|
48
52
|
create_wire_passthrough(stmt)
|
|
49
53
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
if len(stmt.operator.owner.result.uses) == 0:
|
|
53
|
-
stmt.operator.owner.delete()
|
|
54
|
+
# guaranteed that you have a valid stim_stmt to plug in
|
|
55
|
+
stmt.replace_by(stim_stmt)
|
|
54
56
|
|
|
55
57
|
return RewriteResult(has_done_something=True)
|
|
56
58
|
return RewriteResult()
|
bloqade/stim/rewrite/util.py
CHANGED
|
@@ -106,9 +106,21 @@ def insert_qubit_idx_after_apply(
|
|
|
106
106
|
"""
|
|
107
107
|
if isinstance(stmt, (qubit.Apply, qubit.Broadcast)):
|
|
108
108
|
qubits = stmt.qubits
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
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
|
+
|
|
112
124
|
assert isinstance(address_attribute, AddressAttribute)
|
|
113
125
|
return insert_qubit_idx_from_address(
|
|
114
126
|
address=address_attribute, stmt_to_insert_before=stmt
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: bloqade-circuit
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.7.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
|
|
@@ -10,17 +10,17 @@ bloqade/analysis/address/lattice.py,sha256=dUq999feqPoBYkqEXe1hjHOn4TP_bkvKip8fy
|
|
|
10
10
|
bloqade/analysis/fidelity/__init__.py,sha256=iJkhoHvCMU9bKxQqgxIWKQWvpqNFRgNBI5DK8-4RAB8,59
|
|
11
11
|
bloqade/analysis/fidelity/analysis.py,sha256=G6JEYc8eeWJ9mwsbUAIzXuU2nrnTU4te41c04xE71gM,3218
|
|
12
12
|
bloqade/analysis/measure_id/__init__.py,sha256=r_R_br1e3H7ZzwkeQw4TnDAP4M_bUaRlRb7ZRdowvNI,145
|
|
13
|
-
bloqade/analysis/measure_id/analysis.py,sha256=
|
|
14
|
-
bloqade/analysis/measure_id/impls.py,sha256=
|
|
13
|
+
bloqade/analysis/measure_id/analysis.py,sha256=D8KcV8aL1yrqKhtqgaqMArX-PGXYcFXumEC5tx36plU,1974
|
|
14
|
+
bloqade/analysis/measure_id/impls.py,sha256=q_HKSxptGfOvvGrRcpl42UGoe7eRL2-5dIGiA0tDyrA,6866
|
|
15
15
|
bloqade/analysis/measure_id/lattice.py,sha256=WPrn0R79umCH909BFWsUJ64qx9n_3KYimIW5UaXNuGU,1891
|
|
16
16
|
bloqade/cirq_utils/__init__.py,sha256=1DRDCF3PpgJCOr0z7iULdrn3dqm7GLpRGs9AlqE7XA8,280
|
|
17
17
|
bloqade/cirq_utils/lineprog.py,sha256=JosrhfeOHI9FycUT_sYFj8TBzLpo97TL8zK-Ap2U4eQ,11021
|
|
18
18
|
bloqade/cirq_utils/parallelize.py,sha256=E2MsPm61Dkm3n0v4EFPJFGOc4B_Aw01yfhu-ViOKGiA,13812
|
|
19
|
-
bloqade/cirq_utils/noise/__init__.py,sha256=
|
|
20
|
-
bloqade/cirq_utils/noise/_two_zone_utils.py,sha256=
|
|
19
|
+
bloqade/cirq_utils/noise/__init__.py,sha256=hUBi53U0wE4u3AqGh5cNdgdCspt3O-Vw-SR68cfBZYc,421
|
|
20
|
+
bloqade/cirq_utils/noise/_two_zone_utils.py,sha256=iq4nwdJQITFlGB61wfrV7vyPA2194p-i_nv36powZ90,17883
|
|
21
21
|
bloqade/cirq_utils/noise/conflict_graph.py,sha256=ZUwPWTknrb6SgtZUVPeICn3YA-nUeWQJDuKKX5jL9tE,7179
|
|
22
|
-
bloqade/cirq_utils/noise/model.py,sha256=
|
|
23
|
-
bloqade/cirq_utils/noise/transform.py,sha256=
|
|
22
|
+
bloqade/cirq_utils/noise/model.py,sha256=8qovvB50oHzDszXkuMAs2I9BQV3eS1IU2D7Wux_dsGE,18459
|
|
23
|
+
bloqade/cirq_utils/noise/transform.py,sha256=pauFnOKbk2QjxeyXEV_x2zyRGypr5wiQ6ySirU7C2zg,2278
|
|
24
24
|
bloqade/pyqrack/__init__.py,sha256=lonTS-luJkTVujCCtgdZRC12V7FQdoFcozAI-byXwN0,810
|
|
25
25
|
bloqade/pyqrack/base.py,sha256=g0GRlEgyJ_P8z-lR8RK2CAuRTj6KPfglKX0iwrgg4DM,4408
|
|
26
26
|
bloqade/pyqrack/device.py,sha256=-zlr1lSzOvcj5l28nnevy1oMYct79DTOdLYyGaT2Yco,11567
|
|
@@ -36,8 +36,8 @@ bloqade/pyqrack/qasm2/parallel.py,sha256=ITetuXOH2KUDpDOBuFnJoz2DhduvyBC72cOAOOi
|
|
|
36
36
|
bloqade/pyqrack/qasm2/uop.py,sha256=bLZONsEK15ymFGIQwy7muQv-TX0mvLrECuMp1Y3XTfA,8612
|
|
37
37
|
bloqade/pyqrack/squin/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
38
38
|
bloqade/pyqrack/squin/op.py,sha256=m9QiQgQnKy1tYvrieU6MjXf_b9i2fovj4r2novcQwIc,5535
|
|
39
|
-
bloqade/pyqrack/squin/qubit.py,sha256=
|
|
40
|
-
bloqade/pyqrack/squin/runtime.py,sha256=
|
|
39
|
+
bloqade/pyqrack/squin/qubit.py,sha256=IXoAN_wOAzmKsKMKUakTQd_TbeJrFrtvH5Fd9SlQVLo,2277
|
|
40
|
+
bloqade/pyqrack/squin/runtime.py,sha256=3iVCN3XMUL8uk-bm0y4HSaVU7i5xZsNm5sY285rUKQE,15583
|
|
41
41
|
bloqade/pyqrack/squin/wire.py,sha256=rqlAeU-r_EHOwJMqHrEAxpZ_rKsvUpwGG7MP4BW75Nw,1658
|
|
42
42
|
bloqade/pyqrack/squin/noise/__init__.py,sha256=uXgRQPOrHNRp3k2ff2HD8mheUEaqxZPKEnwV-s4BiV4,31
|
|
43
43
|
bloqade/pyqrack/squin/noise/native.py,sha256=KF4VGzU5Ps92DeLcIDIMsxQQtQ97z_3KUHqBPPkZFaM,2286
|
|
@@ -127,11 +127,11 @@ bloqade/rewrite/rules/inline_getitem_ilist.py,sha256=uIXQRCsr3_GPMciDT4ghI-ezhQm
|
|
|
127
127
|
bloqade/rewrite/rules/split_ifs.py,sha256=KhwvUx-oBrBO2F1j-J5kwNbdnrnEZcZtJflzyQm-UOI,2613
|
|
128
128
|
bloqade/squin/__init__.py,sha256=b7ZD69ql9GriIPxN6JhWxANJVzuIJh_r-gC24wsW1mM,621
|
|
129
129
|
bloqade/squin/_typeinfer.py,sha256=bilWfC6whTMwewFCqDgB6vDHZsgXPr3azNOYqqnvtB4,780
|
|
130
|
-
bloqade/squin/gate.py,sha256=
|
|
130
|
+
bloqade/squin/gate.py,sha256=NEmdr6ZTdaVDc4onB0ref-r-4T9fxyYosiX0DVuQJOo,4162
|
|
131
131
|
bloqade/squin/groups.py,sha256=RXGJnNZUSXF_f5ljjhZ9At8UhaijayoxFoWvxEsUOWc,1310
|
|
132
|
-
bloqade/squin/lowering.py,sha256=
|
|
132
|
+
bloqade/squin/lowering.py,sha256=bfrPjx6t2mnd1qoBshF_RW-FXMWg3TOUA6XKUeONyig,2560
|
|
133
133
|
bloqade/squin/parallel.py,sha256=X6Ps9kQIgnFMlZO14y2ntdxvivqbIP28PAWF8KmxByM,5172
|
|
134
|
-
bloqade/squin/qubit.py,sha256=
|
|
134
|
+
bloqade/squin/qubit.py,sha256=cRy2a2jFLlor4KPHWk_05fMqr8Gmj5ixk624dLdWKmY,4911
|
|
135
135
|
bloqade/squin/types.py,sha256=T3lkqid4HEWuAK_wRns_p-K5DbLDwlldoyZtVay7A3o,119
|
|
136
136
|
bloqade/squin/wire.py,sha256=GZhF0EHCu7OU70zTV_N83yann-eQnYG_lM2u0QYFoAs,6596
|
|
137
137
|
bloqade/squin/analysis/__init__.py,sha256=DvnFHmEqMxRG92jVT3ZWwAQDTb6DC4fZDTV8ZSLZgP0,43
|
|
@@ -142,30 +142,30 @@ bloqade/squin/analysis/nsites/analysis.py,sha256=rIe1RU1MZRItcE2aB8DYahLrv73HfD3
|
|
|
142
142
|
bloqade/squin/analysis/nsites/impls.py,sha256=wSNWjNmgwCP35FgmreyLKmRYedxlebWi7LhsEq9jPs4,3097
|
|
143
143
|
bloqade/squin/analysis/nsites/lattice.py,sha256=ruh0808SHtj3ecuT-C3AZTsLY2j3DRhtezGiTZvcuVs,942
|
|
144
144
|
bloqade/squin/cirq/__init__.py,sha256=7OYYboSl5lPwdWOKk4AJgm1s1lBX_WAstVqPfaynSv8,10156
|
|
145
|
-
bloqade/squin/cirq/lowering.py,sha256=
|
|
145
|
+
bloqade/squin/cirq/lowering.py,sha256=trrcBDQQzy2r3JVKb2x6i2BdzBMYkjQNBzH_Va6JOu0,17789
|
|
146
146
|
bloqade/squin/cirq/emit/emit_circuit.py,sha256=JVFXiaSB7A9kamRwCjLqs03Sel4PVCBT-6kRNRWX-jo,4393
|
|
147
147
|
bloqade/squin/cirq/emit/noise.py,sha256=rESjGC_66s2Y4FwwYda4rY3mYHYjbqLlKE_vnqpZDYI,1534
|
|
148
|
-
bloqade/squin/cirq/emit/op.py,sha256=
|
|
149
|
-
bloqade/squin/cirq/emit/qubit.py,sha256=
|
|
150
|
-
bloqade/squin/cirq/emit/runtime.py,sha256=
|
|
151
|
-
bloqade/squin/noise/__init__.py,sha256=
|
|
148
|
+
bloqade/squin/cirq/emit/op.py,sha256=u1FoOlbz7NNXPlU-hMbnX_yRB5suKbsEm2jF3Ts4f68,5764
|
|
149
|
+
bloqade/squin/cirq/emit/qubit.py,sha256=FManFeDyi1l4Sd07IeD7Lb4xR-7jy5Nwe-quQHI1yPw,1984
|
|
150
|
+
bloqade/squin/cirq/emit/runtime.py,sha256=dH7JSMt2mALPhVFjmZETQzvnTUQ3BFY5poe0YZpM5vQ,6819
|
|
151
|
+
bloqade/squin/noise/__init__.py,sha256=JFJ4kmEeWt6bJ2xx3yA5ek-NEbj8ilYWf6mepgbJLOo,338
|
|
152
152
|
bloqade/squin/noise/_dialect.py,sha256=2IR98J-lXm5Y3srP9g-FD4JC-qTq2seureM6mKKq1xg,63
|
|
153
|
-
bloqade/squin/noise/_wrapper.py,sha256=
|
|
154
|
-
bloqade/squin/noise/rewrite.py,sha256=
|
|
155
|
-
bloqade/squin/noise/stmts.py,sha256
|
|
153
|
+
bloqade/squin/noise/_wrapper.py,sha256=yGiL_x5INGA_86A04Ra6aF-i1eYTk2JhvpJWIPSdUZ4,783
|
|
154
|
+
bloqade/squin/noise/rewrite.py,sha256=_6kGvxmbiMtL7MDHhLzgQnkq4SRthYA-cSKh_MBbC_U,4656
|
|
155
|
+
bloqade/squin/noise/stmts.py,sha256=-_BX18aJTALYehDMczehYd_cNwsixzuZbOXh5ZG8lFw,1686
|
|
156
156
|
bloqade/squin/op/__init__.py,sha256=6JOjPdzc6RKO4299ZFz4Jk-wtVyPlGTkakYewHBueXw,841
|
|
157
157
|
bloqade/squin/op/_dialect.py,sha256=66G1IYqmsqUEaCTyUqn2shSHmGYduiTU8GfDXcoMvw4,55
|
|
158
|
-
bloqade/squin/op/_wrapper.py,sha256=
|
|
158
|
+
bloqade/squin/op/_wrapper.py,sha256=XrEImj0M78u6imXq7SkckmWemziL7cM98FtoMj03l2M,1955
|
|
159
159
|
bloqade/squin/op/number.py,sha256=yujWUqLrOAr8i8OBDsiS5M882wV7t08u345NgNA6TUc,95
|
|
160
160
|
bloqade/squin/op/rewrite.py,sha256=Itxz_hTAPNLyLYeLS0PCVk143J1Z558UR7N9-urbnoU,1327
|
|
161
161
|
bloqade/squin/op/stdlib.py,sha256=4UFK3wKImpums2v5a9OFKuVvz2TLYbYwidg3JYYEi2o,1073
|
|
162
|
-
bloqade/squin/op/stmts.py,sha256=
|
|
162
|
+
bloqade/squin/op/stmts.py,sha256=DEV-hm9vNY2zMlnOZtWEOSQo-ByVFfW5EepCK0_tF1Y,6864
|
|
163
163
|
bloqade/squin/op/traits.py,sha256=jjsnzWtPtmQK7K3H_D2fvc8XiW1Y3EMBcgeyPax2sjc,1065
|
|
164
|
-
bloqade/squin/op/types.py,sha256=
|
|
164
|
+
bloqade/squin/op/types.py,sha256=xCFdaYZags7YvANUIlsv7VOIoj8iB1sGISe7NjDEH_o,2283
|
|
165
165
|
bloqade/squin/rewrite/U3_to_clifford.py,sha256=72ECWFrjeaEelR5e6IgNgaJXnTQ6ZXL4ZakZfXQbi8I,5670
|
|
166
166
|
bloqade/squin/rewrite/__init__.py,sha256=cY1GbXQXKvDeXi0YE4PgjORm6iGBPk63xzMCpVjiCgw,349
|
|
167
167
|
bloqade/squin/rewrite/canonicalize.py,sha256=hcfsn4ntsvnJ_cVnoUgcE5Zk9EqvwgixGArLPx4OjP0,2100
|
|
168
|
-
bloqade/squin/rewrite/desugar.py,sha256=
|
|
168
|
+
bloqade/squin/rewrite/desugar.py,sha256=nl7yvUKgruIU0Ksb184a6r6ebeQ93HsEAG6hrPOmpWk,3296
|
|
169
169
|
bloqade/squin/rewrite/remove_dangling_qubits.py,sha256=iTuWV-03YW5wtYbSeKMlnnWjNzDj9SmflyqYPgoYGy8,469
|
|
170
170
|
bloqade/squin/rewrite/wrap_analysis.py,sha256=JUPS4OAYbDHOK0VIrdz1pprSizISUfN7osuoP_P-bIo,2256
|
|
171
171
|
bloqade/stim/__init__.py,sha256=QPZnQRWiiC66pwZ4yRiX2m5doqgPQorQLqc3b7fav2A,935
|
|
@@ -207,14 +207,14 @@ bloqade/stim/parse/__init__.py,sha256=l2DjReB2KkgrDjP_4nP6RnoziiOewoSeZfTno1sVYT
|
|
|
207
207
|
bloqade/stim/parse/lowering.py,sha256=L-IcR_exlxsTVv4SQ0bhzIF4_L82P-GEdK6qRd6B86Y,23723
|
|
208
208
|
bloqade/stim/passes/__init__.py,sha256=aysjOZyn0IrJQCQBEqiz8pwZ5u5t2s9TmEzA9Y9KG9w,167
|
|
209
209
|
bloqade/stim/passes/simplify_ifs.py,sha256=zicqggWu_yzfrf2a7uUCt-ZenbYSEnFsyGxDfKw72qQ,1084
|
|
210
|
-
bloqade/stim/passes/squin_to_stim.py,sha256=
|
|
210
|
+
bloqade/stim/passes/squin_to_stim.py,sha256=cDn4W9TEsCZQT5YhEMEId87LtLv4iqwaurwgTqtE1qQ,6421
|
|
211
211
|
bloqade/stim/rewrite/__init__.py,sha256=zL5G73JEsXkehN7gCtUgGnmC2BJ3vKihOd1ohVwM68E,480
|
|
212
|
-
bloqade/stim/rewrite/ifs_to_stim.py,sha256=
|
|
212
|
+
bloqade/stim/rewrite/ifs_to_stim.py,sha256=A3SndoGinZHLul17zXWyQrK_1Hy5I4qvuOskLIeDRMU,6942
|
|
213
213
|
bloqade/stim/rewrite/py_constant_to_stim.py,sha256=PV8bHvn759-d_0JW4akaGSORW_oxigrlUBhAC51PJAU,1354
|
|
214
|
-
bloqade/stim/rewrite/qubit_to_stim.py,sha256=
|
|
214
|
+
bloqade/stim/rewrite/qubit_to_stim.py,sha256=vdTjzVJyzslp6BbXz5219DjF1pUJF9kvNWwUtQ_MP0g,2627
|
|
215
215
|
bloqade/stim/rewrite/squin_measure.py,sha256=1zuILosGACN7rPYA87MYVwv0M4pPTala1YTe9owbhkw,2519
|
|
216
|
-
bloqade/stim/rewrite/squin_noise.py,sha256=
|
|
217
|
-
bloqade/stim/rewrite/util.py,sha256=
|
|
216
|
+
bloqade/stim/rewrite/squin_noise.py,sha256=P-54e3lH9L2irsknRQ7u9UkCmUOQZFDra_yHlLlClDk,6379
|
|
217
|
+
bloqade/stim/rewrite/util.py,sha256=o96hA-h03vpwsB0jVe_q0hCmTVINaMaZKn1IYWM6DtM,7751
|
|
218
218
|
bloqade/stim/rewrite/wire_identity_elimination.py,sha256=Cscu8yaSslPuW04HvbXx4HJ3JzdUZNUMyFqcvuc4sxY,795
|
|
219
219
|
bloqade/stim/rewrite/wire_to_stim.py,sha256=rZY4Ya4I2b4C3tk84LvJvEi--jyUgza8WmtDtTxCajI,1814
|
|
220
220
|
bloqade/stim/upstream/__init__.py,sha256=Skev79lMyfz2bFoih-Fn_9iXbMArqlKxHSd1agHAtlA,55
|
|
@@ -230,7 +230,7 @@ bloqade/visual/animation/runtime/atoms.py,sha256=EmjxhujLiHHPS_HtH_B-7TiqeHgvW5u
|
|
|
230
230
|
bloqade/visual/animation/runtime/ppoly.py,sha256=JB9IP53N1w6adBJEue6J5Nmj818Id9JvrlgrmiQTU1I,1385
|
|
231
231
|
bloqade/visual/animation/runtime/qpustate.py,sha256=rlmxQeJSvaohXrTpXQL5y-NJcpvfW33xPaYM1slv7cc,4270
|
|
232
232
|
bloqade/visual/animation/runtime/utils.py,sha256=ju9IzOWX-vKwfpqUjlUKu3Ssr_UFPFFq-tzH_Nqyo_c,1212
|
|
233
|
-
bloqade_circuit-0.
|
|
234
|
-
bloqade_circuit-0.
|
|
235
|
-
bloqade_circuit-0.
|
|
236
|
-
bloqade_circuit-0.
|
|
233
|
+
bloqade_circuit-0.7.0.dist-info/METADATA,sha256=nH4KSeEfISkRsNt7OaAZgsdnGq_Fpt73ad7eIoHwt8E,3849
|
|
234
|
+
bloqade_circuit-0.7.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
235
|
+
bloqade_circuit-0.7.0.dist-info/licenses/LICENSE,sha256=S5GIJwR6QCixPA9wryYb44ZEek0Nz4rt_zLUqP05UbU,13160
|
|
236
|
+
bloqade_circuit-0.7.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|