bloqade-circuit 0.7.7__py3-none-any.whl → 0.7.8__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 +1 -1
- bloqade/cirq_utils/noise/model.py +4 -3
- bloqade/cirq_utils/parallelize.py +9 -6
- bloqade/pyqrack/base.py +6 -0
- bloqade/pyqrack/reg.py +6 -1
- bloqade/pyqrack/squin/noise/native.py +1 -1
- bloqade/pyqrack/squin/qubit.py +20 -3
- bloqade/squin/cirq/lowering.py +5 -0
- bloqade/squin/qubit.py +25 -2
- {bloqade_circuit-0.7.7.dist-info → bloqade_circuit-0.7.8.dist-info}/METADATA +4 -5
- {bloqade_circuit-0.7.7.dist-info → bloqade_circuit-0.7.8.dist-info}/RECORD +13 -13
- {bloqade_circuit-0.7.7.dist-info → bloqade_circuit-0.7.8.dist-info}/WHEEL +0 -0
- {bloqade_circuit-0.7.7.dist-info → bloqade_circuit-0.7.8.dist-info}/licenses/LICENSE +0 -0
bloqade/cirq_utils/__init__.py
CHANGED
|
@@ -2,7 +2,7 @@ from . import noise as noise
|
|
|
2
2
|
from .parallelize import (
|
|
3
3
|
transpile as transpile,
|
|
4
4
|
parallelize as parallelize,
|
|
5
|
-
|
|
5
|
+
remove_tags as remove_tags,
|
|
6
6
|
auto_similarity as auto_similarity,
|
|
7
7
|
block_similarity as block_similarity,
|
|
8
8
|
moment_similarity as moment_similarity,
|
|
@@ -357,9 +357,10 @@ class GeminiOneZoneNoiseModelConflictGraphMoves(GeminiOneZoneNoiseModel):
|
|
|
357
357
|
def noisy_moment(self, moment, system_qubits):
|
|
358
358
|
# Moment with original ops
|
|
359
359
|
original_moment = moment
|
|
360
|
-
assert np.all(
|
|
361
|
-
|
|
362
|
-
|
|
360
|
+
assert np.all([isinstance(q, cirq.GridQubit) for q in system_qubits]), (
|
|
361
|
+
"Found a qubit that is not a GridQubit. In order for the conflict graph to know the qubit geometry, "
|
|
362
|
+
"all qubits in the circuit must be defined as cirq.GridQubit objects."
|
|
363
|
+
)
|
|
363
364
|
# Check if the moment is empty
|
|
364
365
|
if len(moment.operations) == 0:
|
|
365
366
|
move_moments = []
|
|
@@ -136,7 +136,7 @@ def auto_similarity(
|
|
|
136
136
|
return cirq.Circuit(flattened_circuit), weights
|
|
137
137
|
|
|
138
138
|
|
|
139
|
-
def
|
|
139
|
+
def remove_tags(circuit: cirq.Circuit) -> cirq.Circuit:
|
|
140
140
|
"""
|
|
141
141
|
Removes all tags from the circuit
|
|
142
142
|
|
|
@@ -146,10 +146,11 @@ def no_similarity(circuit: cirq.Circuit) -> cirq.Circuit:
|
|
|
146
146
|
Returns:
|
|
147
147
|
[0] - cirq.Circuit - the circuit with all tags removed.
|
|
148
148
|
"""
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
149
|
+
|
|
150
|
+
def remove_tag(op: cirq.Operation, _):
|
|
151
|
+
return op.untagged
|
|
152
|
+
|
|
153
|
+
return cirq.map_operations(circuit, remove_tag)
|
|
153
154
|
|
|
154
155
|
|
|
155
156
|
def to_dag_circuit(circuit: cirq.Circuit, can_reorder=None) -> nx.DiGraph:
|
|
@@ -399,4 +400,6 @@ def parallelize(
|
|
|
399
400
|
)
|
|
400
401
|
# Convert the epochs to a cirq circuit.
|
|
401
402
|
moments = map(cirq.Moment, epochs)
|
|
402
|
-
|
|
403
|
+
circuit = cirq.Circuit(moments)
|
|
404
|
+
|
|
405
|
+
return remove_tags(circuit)
|
bloqade/pyqrack/base.py
CHANGED
|
@@ -146,7 +146,13 @@ class PyQrackInterpreter(Interpreter, typing.Generic[MemoryType]):
|
|
|
146
146
|
loss_m_result: Measurement = field(default=Measurement.One, kw_only=True)
|
|
147
147
|
"""The value of a measurement result when a qubit is lost."""
|
|
148
148
|
|
|
149
|
+
global_measurement_id: int = field(init=False, default=0)
|
|
150
|
+
|
|
149
151
|
def initialize(self) -> Self:
|
|
150
152
|
super().initialize()
|
|
151
153
|
self.memory.reset() # reset allocated qubits
|
|
152
154
|
return self
|
|
155
|
+
|
|
156
|
+
def set_global_measurement_id(self, m: Measurement):
|
|
157
|
+
m.measurement_id = self.global_measurement_id
|
|
158
|
+
self.global_measurement_id += 1
|
bloqade/pyqrack/reg.py
CHANGED
|
@@ -2,15 +2,20 @@ import enum
|
|
|
2
2
|
from typing import TYPE_CHECKING
|
|
3
3
|
from dataclasses import dataclass
|
|
4
4
|
|
|
5
|
+
from bloqade.types import MeasurementResult
|
|
5
6
|
from bloqade.qasm2.types import Qubit
|
|
6
7
|
|
|
7
8
|
if TYPE_CHECKING:
|
|
8
9
|
from pyqrack import QrackSimulator
|
|
9
10
|
|
|
10
11
|
|
|
11
|
-
class Measurement(enum.IntEnum):
|
|
12
|
+
class Measurement(MeasurementResult, enum.IntEnum):
|
|
12
13
|
"""Enumeration of measurement results."""
|
|
13
14
|
|
|
15
|
+
def __init__(self, measurement_id: int = 0) -> None:
|
|
16
|
+
super().__init__()
|
|
17
|
+
self.measurement_id = measurement_id
|
|
18
|
+
|
|
14
19
|
Zero = 0
|
|
15
20
|
One = 1
|
|
16
21
|
Lost = enum.auto()
|
bloqade/pyqrack/squin/qubit.py
CHANGED
|
@@ -4,7 +4,7 @@ from kirin import interp
|
|
|
4
4
|
from kirin.dialects import ilist
|
|
5
5
|
|
|
6
6
|
from bloqade.squin import qubit
|
|
7
|
-
from bloqade.pyqrack.reg import QubitState, PyQrackQubit
|
|
7
|
+
from bloqade.pyqrack.reg import QubitState, Measurement, PyQrackQubit
|
|
8
8
|
from bloqade.pyqrack.base import PyQrackInterpreter
|
|
9
9
|
|
|
10
10
|
from .runtime import OperatorRuntimeABC
|
|
@@ -41,9 +41,12 @@ class PyQrackMethods(interp.MethodTable):
|
|
|
41
41
|
|
|
42
42
|
def _measure_qubit(self, qbit: PyQrackQubit, interp: PyQrackInterpreter):
|
|
43
43
|
if qbit.is_active():
|
|
44
|
-
|
|
44
|
+
m = Measurement(bool(qbit.sim_reg.m(qbit.addr)))
|
|
45
45
|
else:
|
|
46
|
-
|
|
46
|
+
m = Measurement(interp.loss_m_result)
|
|
47
|
+
|
|
48
|
+
interp.set_global_measurement_id(m)
|
|
49
|
+
return m
|
|
47
50
|
|
|
48
51
|
@interp.impl(qubit.MeasureQubitList)
|
|
49
52
|
def measure_qubit_list(
|
|
@@ -63,3 +66,17 @@ class PyQrackMethods(interp.MethodTable):
|
|
|
63
66
|
qbit: PyQrackQubit = frame.get(stmt.qubit)
|
|
64
67
|
result = self._measure_qubit(qbit, interp)
|
|
65
68
|
return (result,)
|
|
69
|
+
|
|
70
|
+
@interp.impl(qubit.QubitId)
|
|
71
|
+
def qubit_id(
|
|
72
|
+
self, interp: PyQrackInterpreter, frame: interp.Frame, stmt: qubit.QubitId
|
|
73
|
+
):
|
|
74
|
+
qbit: PyQrackQubit = frame.get(stmt.qubit)
|
|
75
|
+
return (qbit.addr,)
|
|
76
|
+
|
|
77
|
+
@interp.impl(qubit.MeasurementId)
|
|
78
|
+
def measurement_id(
|
|
79
|
+
self, interp: PyQrackInterpreter, frame: interp.Frame, stmt: qubit.MeasurementId
|
|
80
|
+
):
|
|
81
|
+
measurement: Measurement = frame.get(stmt.measurement)
|
|
82
|
+
return (measurement.measurement_id,)
|
bloqade/squin/cirq/lowering.py
CHANGED
|
@@ -144,6 +144,11 @@ class Squin(lowering.LoweringABC[CirqNode]):
|
|
|
144
144
|
qbits = self.lower_qubit_getindices(state, node.qubits)
|
|
145
145
|
return state.current_frame.push(qubit.Apply(operator=op_, qubits=qbits))
|
|
146
146
|
|
|
147
|
+
def visit_TaggedOperation(
|
|
148
|
+
self, state: lowering.State[CirqNode], node: cirq.TaggedOperation
|
|
149
|
+
):
|
|
150
|
+
state.lower(node.untagged)
|
|
151
|
+
|
|
147
152
|
def lower_measurement(
|
|
148
153
|
self, state: lowering.State[CirqNode], node: cirq.GateOperation
|
|
149
154
|
):
|
bloqade/squin/qubit.py
CHANGED
|
@@ -79,6 +79,20 @@ class MeasureQubitList(ir.Statement):
|
|
|
79
79
|
result: ir.ResultValue = info.result(ilist.IListType[MeasurementResultType])
|
|
80
80
|
|
|
81
81
|
|
|
82
|
+
@statement(dialect=dialect)
|
|
83
|
+
class QubitId(ir.Statement):
|
|
84
|
+
traits = frozenset({lowering.FromPythonCall(), ir.Pure()})
|
|
85
|
+
qubit: ir.SSAValue = info.argument(QubitType)
|
|
86
|
+
result: ir.ResultValue = info.result(types.Int)
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
@statement(dialect=dialect)
|
|
90
|
+
class MeasurementId(ir.Statement):
|
|
91
|
+
traits = frozenset({lowering.FromPythonCall(), ir.Pure()})
|
|
92
|
+
measurement: ir.SSAValue = info.argument(MeasurementResultType)
|
|
93
|
+
result: ir.ResultValue = info.result(types.Int)
|
|
94
|
+
|
|
95
|
+
|
|
82
96
|
# NOTE: no dependent types in Python, so we have to mark it Any...
|
|
83
97
|
@wraps(New)
|
|
84
98
|
def new(n_qubits: int) -> ilist.IList[Qubit, Any]:
|
|
@@ -127,9 +141,10 @@ def measure(input: Any) -> Any:
|
|
|
127
141
|
input: A qubit or a list of qubits to measure.
|
|
128
142
|
|
|
129
143
|
Returns:
|
|
130
|
-
|
|
131
|
-
a single
|
|
144
|
+
MeasurementResult | list[MeasurementResult]: The result of the measurement. If a single qubit is measured,
|
|
145
|
+
a single result is returned. If a list of qubits is measured, a list of results
|
|
132
146
|
is returned.
|
|
147
|
+
A MeasurementResult can represent both 0 and 1, but also atoms that are lost.
|
|
133
148
|
"""
|
|
134
149
|
...
|
|
135
150
|
|
|
@@ -169,3 +184,11 @@ def broadcast(operator: Op, *qubits: ilist.IList[Qubit, OpSize] | list[Qubit]) -
|
|
|
169
184
|
None
|
|
170
185
|
"""
|
|
171
186
|
...
|
|
187
|
+
|
|
188
|
+
|
|
189
|
+
@wraps(QubitId)
|
|
190
|
+
def get_qubit_id(qubit: Qubit) -> int: ...
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
@wraps(MeasurementId)
|
|
194
|
+
def get_measurement_id(measurement: MeasurementResult) -> int: ...
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: bloqade-circuit
|
|
3
|
-
Version: 0.7.
|
|
3
|
+
Version: 0.7.8
|
|
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
|
|
@@ -9,8 +9,7 @@ Requires-Dist: kirin-toolchain~=0.17.23
|
|
|
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
|
|
12
|
-
Requires-Dist: pyqrack-cpu>=1.69.
|
|
13
|
-
Requires-Dist: pyqrack>=1.69.0; sys_platform == 'darwin-arm64'
|
|
12
|
+
Requires-Dist: pyqrack-cpu>=1.69.1
|
|
14
13
|
Requires-Dist: rich>=13.9.4
|
|
15
14
|
Requires-Dist: scipy>=1.13.1
|
|
16
15
|
Provides-Extra: cirq
|
|
@@ -18,9 +17,9 @@ Requires-Dist: cirq-core>=1.4.1; extra == 'cirq'
|
|
|
18
17
|
Requires-Dist: cirq-core[contrib]>=1.4.1; extra == 'cirq'
|
|
19
18
|
Requires-Dist: qpsolvers[clarabel]>=4.7.0; extra == 'cirq'
|
|
20
19
|
Provides-Extra: pyqrack-cuda
|
|
21
|
-
Requires-Dist: pyqrack-cuda>=1.69.
|
|
20
|
+
Requires-Dist: pyqrack-cuda>=1.69.1; extra == 'pyqrack-cuda'
|
|
22
21
|
Provides-Extra: pyqrack-opencl
|
|
23
|
-
Requires-Dist: pyqrack>=1.69.
|
|
22
|
+
Requires-Dist: pyqrack>=1.69.1; extra == 'pyqrack-opencl'
|
|
24
23
|
Provides-Extra: qasm2
|
|
25
24
|
Requires-Dist: lark>=1.2.2; extra == 'qasm2'
|
|
26
25
|
Provides-Extra: qbraid
|
|
@@ -13,13 +13,13 @@ bloqade/analysis/measure_id/__init__.py,sha256=r_R_br1e3H7ZzwkeQw4TnDAP4M_bUaRlR
|
|
|
13
13
|
bloqade/analysis/measure_id/analysis.py,sha256=D8KcV8aL1yrqKhtqgaqMArX-PGXYcFXumEC5tx36plU,1974
|
|
14
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
|
-
bloqade/cirq_utils/__init__.py,sha256=
|
|
16
|
+
bloqade/cirq_utils/__init__.py,sha256=NOChrzb4vxb3xHKxM0gg7HdZ7R76X5yU8RJZ9hECXWs,276
|
|
17
17
|
bloqade/cirq_utils/lineprog.py,sha256=JosrhfeOHI9FycUT_sYFj8TBzLpo97TL8zK-Ap2U4eQ,11021
|
|
18
|
-
bloqade/cirq_utils/parallelize.py,sha256=
|
|
18
|
+
bloqade/cirq_utils/parallelize.py,sha256=u9AP6l7YwBatFfIvrcCjbcYMiavk7MU6HKSKPkqlxtY,13803
|
|
19
19
|
bloqade/cirq_utils/noise/__init__.py,sha256=hUBi53U0wE4u3AqGh5cNdgdCspt3O-Vw-SR68cfBZYc,421
|
|
20
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=
|
|
22
|
+
bloqade/cirq_utils/noise/model.py,sha256=tKzK_d1u81miQu1LMeum7wKRXeuyP1M182SEJ8lNTbo,18605
|
|
23
23
|
bloqade/cirq_utils/noise/transform.py,sha256=pauFnOKbk2QjxeyXEV_x2zyRGypr5wiQ6ySirU7C2zg,2278
|
|
24
24
|
bloqade/native/__init__.py,sha256=MtQZmq7KqNGkjxsO_22DpY-13X23Ovw8JKs7lfuv55w,443
|
|
25
25
|
bloqade/native/_prelude.py,sha256=znle4mSTLZtRMCmmiZ-bCPfHqNdgVxsKuY64Fgj2kko,1258
|
|
@@ -32,10 +32,10 @@ bloqade/native/stdlib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3h
|
|
|
32
32
|
bloqade/native/stdlib/broadcast.py,sha256=0DEK6pRcz0IG5BZHt0sV1wZpDvlJgvw4-Qwd1xYLSYM,6141
|
|
33
33
|
bloqade/native/stdlib/simple.py,sha256=mK_p9x_TUr4g-q-Q4LfbVBtXxBS21XPh1meyCC4to_k,5416
|
|
34
34
|
bloqade/pyqrack/__init__.py,sha256=OV8-2fw44gP_JgY8mAUiwISO_qYxS-t0fKsbuUB-r9Y,861
|
|
35
|
-
bloqade/pyqrack/base.py,sha256=
|
|
35
|
+
bloqade/pyqrack/base.py,sha256=Q2GjAcqEZBo-Lhe2jpXuNCB0xXVIdwtdy6cUmDM_OZI,4623
|
|
36
36
|
bloqade/pyqrack/device.py,sha256=ruseNWt3scvjw0KyHZjwnM6Z6lFjROgmW3Zdi1lucgQ,15195
|
|
37
37
|
bloqade/pyqrack/native.py,sha256=ErbVQCatn_JT3Ej-iQzMMfb_q50JF_K1Iv1vRYvu5VA,1857
|
|
38
|
-
bloqade/pyqrack/reg.py,sha256=
|
|
38
|
+
bloqade/pyqrack/reg.py,sha256=75XW6qJLYOJp9BtpyYMUFmpqFfGrCydNLS40bKcghGM,1853
|
|
39
39
|
bloqade/pyqrack/target.py,sha256=c78VtLWAiDNp_0sXwvVzhaEoeFsr1fUVsupxWuo6p3s,3661
|
|
40
40
|
bloqade/pyqrack/task.py,sha256=nRmI3tM_y4134_Uld-D9xwNXG9ie-OHNAqwRT5Ss-Y0,5266
|
|
41
41
|
bloqade/pyqrack/noise/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -47,11 +47,11 @@ bloqade/pyqrack/qasm2/parallel.py,sha256=ITetuXOH2KUDpDOBuFnJoz2DhduvyBC72cOAOOi
|
|
|
47
47
|
bloqade/pyqrack/qasm2/uop.py,sha256=bLZONsEK15ymFGIQwy7muQv-TX0mvLrECuMp1Y3XTfA,8612
|
|
48
48
|
bloqade/pyqrack/squin/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
49
49
|
bloqade/pyqrack/squin/op.py,sha256=m9QiQgQnKy1tYvrieU6MjXf_b9i2fovj4r2novcQwIc,5535
|
|
50
|
-
bloqade/pyqrack/squin/qubit.py,sha256=
|
|
50
|
+
bloqade/pyqrack/squin/qubit.py,sha256=M32AhO3HRc_-FrOj7h_1Arj6jr9WiaHoxc4aeU1KoIY,2859
|
|
51
51
|
bloqade/pyqrack/squin/runtime.py,sha256=3iVCN3XMUL8uk-bm0y4HSaVU7i5xZsNm5sY285rUKQE,15583
|
|
52
52
|
bloqade/pyqrack/squin/wire.py,sha256=rqlAeU-r_EHOwJMqHrEAxpZ_rKsvUpwGG7MP4BW75Nw,1658
|
|
53
53
|
bloqade/pyqrack/squin/noise/__init__.py,sha256=uXgRQPOrHNRp3k2ff2HD8mheUEaqxZPKEnwV-s4BiV4,31
|
|
54
|
-
bloqade/pyqrack/squin/noise/native.py,sha256=
|
|
54
|
+
bloqade/pyqrack/squin/noise/native.py,sha256=gs2At4fDKTN3LJl5DVZ-Z3Pn3YTSwZCQCAoPrMJxEcQ,2287
|
|
55
55
|
bloqade/qasm2/__init__.py,sha256=W9dR4Qnvigc7e7Ay7puSJHAIuiQk8vWqY-W64SMu5oU,515
|
|
56
56
|
bloqade/qasm2/_qasm_loading.py,sha256=dSfjlB6Bm1ednfxc9L42dEa48s5q4N5SGQ9Iw21sBZQ,4753
|
|
57
57
|
bloqade/qasm2/_wrappers.py,sha256=4x3fldC4sV2K_XZ0FPZOorQKAbs_7pualListXtak4A,11148
|
|
@@ -141,7 +141,7 @@ bloqade/squin/_typeinfer.py,sha256=bilWfC6whTMwewFCqDgB6vDHZsgXPr3azNOYqqnvtB4,7
|
|
|
141
141
|
bloqade/squin/groups.py,sha256=RXGJnNZUSXF_f5ljjhZ9At8UhaijayoxFoWvxEsUOWc,1310
|
|
142
142
|
bloqade/squin/lowering.py,sha256=bfrPjx6t2mnd1qoBshF_RW-FXMWg3TOUA6XKUeONyig,2560
|
|
143
143
|
bloqade/squin/parallel.py,sha256=X6Ps9kQIgnFMlZO14y2ntdxvivqbIP28PAWF8KmxByM,5172
|
|
144
|
-
bloqade/squin/qubit.py,sha256=
|
|
144
|
+
bloqade/squin/qubit.py,sha256=eX24PLk0CILaooQZDD6gv5MwSAXSncazv86M-cyT3cc,5649
|
|
145
145
|
bloqade/squin/types.py,sha256=T3lkqid4HEWuAK_wRns_p-K5DbLDwlldoyZtVay7A3o,119
|
|
146
146
|
bloqade/squin/wire.py,sha256=GZhF0EHCu7OU70zTV_N83yann-eQnYG_lM2u0QYFoAs,6596
|
|
147
147
|
bloqade/squin/analysis/__init__.py,sha256=DvnFHmEqMxRG92jVT3ZWwAQDTb6DC4fZDTV8ZSLZgP0,43
|
|
@@ -152,7 +152,7 @@ bloqade/squin/analysis/nsites/analysis.py,sha256=rIe1RU1MZRItcE2aB8DYahLrv73HfD3
|
|
|
152
152
|
bloqade/squin/analysis/nsites/impls.py,sha256=wSNWjNmgwCP35FgmreyLKmRYedxlebWi7LhsEq9jPs4,3097
|
|
153
153
|
bloqade/squin/analysis/nsites/lattice.py,sha256=ruh0808SHtj3ecuT-C3AZTsLY2j3DRhtezGiTZvcuVs,942
|
|
154
154
|
bloqade/squin/cirq/__init__.py,sha256=7OYYboSl5lPwdWOKk4AJgm1s1lBX_WAstVqPfaynSv8,10156
|
|
155
|
-
bloqade/squin/cirq/lowering.py,sha256=
|
|
155
|
+
bloqade/squin/cirq/lowering.py,sha256=i5-IakuJGo3CYw7VNHqB0uM3AiFMw__a3oizKce3F7I,17937
|
|
156
156
|
bloqade/squin/cirq/emit/emit_circuit.py,sha256=JVFXiaSB7A9kamRwCjLqs03Sel4PVCBT-6kRNRWX-jo,4393
|
|
157
157
|
bloqade/squin/cirq/emit/noise.py,sha256=rESjGC_66s2Y4FwwYda4rY3mYHYjbqLlKE_vnqpZDYI,1534
|
|
158
158
|
bloqade/squin/cirq/emit/op.py,sha256=u1FoOlbz7NNXPlU-hMbnX_yRB5suKbsEm2jF3Ts4f68,5764
|
|
@@ -243,7 +243,7 @@ bloqade/visual/animation/runtime/atoms.py,sha256=EmjxhujLiHHPS_HtH_B-7TiqeHgvW5u
|
|
|
243
243
|
bloqade/visual/animation/runtime/ppoly.py,sha256=JB9IP53N1w6adBJEue6J5Nmj818Id9JvrlgrmiQTU1I,1385
|
|
244
244
|
bloqade/visual/animation/runtime/qpustate.py,sha256=rlmxQeJSvaohXrTpXQL5y-NJcpvfW33xPaYM1slv7cc,4270
|
|
245
245
|
bloqade/visual/animation/runtime/utils.py,sha256=ju9IzOWX-vKwfpqUjlUKu3Ssr_UFPFFq-tzH_Nqyo_c,1212
|
|
246
|
-
bloqade_circuit-0.7.
|
|
247
|
-
bloqade_circuit-0.7.
|
|
248
|
-
bloqade_circuit-0.7.
|
|
249
|
-
bloqade_circuit-0.7.
|
|
246
|
+
bloqade_circuit-0.7.8.dist-info/METADATA,sha256=svrqjS1xWz1xDQDyERLzAfIUnKfY-9uVedF-S_aGS3U,3724
|
|
247
|
+
bloqade_circuit-0.7.8.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
248
|
+
bloqade_circuit-0.7.8.dist-info/licenses/LICENSE,sha256=S5GIJwR6QCixPA9wryYb44ZEek0Nz4rt_zLUqP05UbU,13160
|
|
249
|
+
bloqade_circuit-0.7.8.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|