cirq-core 1.5.0.dev20250312165047__py3-none-any.whl → 1.5.0.dev20250312231723__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 cirq-core might be problematic. Click here for more details.
- cirq/_version.py +1 -1
- cirq/_version_test.py +1 -1
- cirq/circuits/insert_strategy.py +10 -0
- cirq/circuits/insert_strategy_test.py +19 -0
- cirq/ops/pauli_string.py +19 -26
- cirq/ops/pauli_string_phasor_test.py +4 -2
- cirq/ops/pauli_string_test.py +64 -19
- {cirq_core-1.5.0.dev20250312165047.dist-info → cirq_core-1.5.0.dev20250312231723.dist-info}/METADATA +1 -1
- {cirq_core-1.5.0.dev20250312165047.dist-info → cirq_core-1.5.0.dev20250312231723.dist-info}/RECORD +12 -12
- {cirq_core-1.5.0.dev20250312165047.dist-info → cirq_core-1.5.0.dev20250312231723.dist-info}/LICENSE +0 -0
- {cirq_core-1.5.0.dev20250312165047.dist-info → cirq_core-1.5.0.dev20250312231723.dist-info}/WHEEL +0 -0
- {cirq_core-1.5.0.dev20250312165047.dist-info → cirq_core-1.5.0.dev20250312231723.dist-info}/top_level.txt +0 -0
cirq/_version.py
CHANGED
cirq/_version_test.py
CHANGED
cirq/circuits/insert_strategy.py
CHANGED
|
@@ -23,6 +23,16 @@ class InsertStrategy:
|
|
|
23
23
|
INLINE: 'InsertStrategy'
|
|
24
24
|
EARLIEST: 'InsertStrategy'
|
|
25
25
|
|
|
26
|
+
def __new__(cls, name: str, doc: str) -> 'InsertStrategy':
|
|
27
|
+
inst = getattr(cls, name, None)
|
|
28
|
+
if not inst or not isinstance(inst, cls):
|
|
29
|
+
inst = super().__new__(cls)
|
|
30
|
+
return inst
|
|
31
|
+
|
|
32
|
+
def __getnewargs__(self):
|
|
33
|
+
"""Returns a tuple of args to pass to __new__ when unpickling."""
|
|
34
|
+
return (self.name, self.__doc__)
|
|
35
|
+
|
|
26
36
|
def __init__(self, name: str, doc: str):
|
|
27
37
|
self.name = name
|
|
28
38
|
self.__doc__ = doc
|
|
@@ -12,8 +12,27 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
|
+
import pickle
|
|
16
|
+
|
|
17
|
+
import pytest
|
|
18
|
+
|
|
15
19
|
import cirq
|
|
16
20
|
|
|
17
21
|
|
|
18
22
|
def test_repr():
|
|
19
23
|
assert repr(cirq.InsertStrategy.NEW) == 'cirq.InsertStrategy.NEW'
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
@pytest.mark.parametrize(
|
|
27
|
+
'strategy',
|
|
28
|
+
[
|
|
29
|
+
cirq.InsertStrategy.NEW,
|
|
30
|
+
cirq.InsertStrategy.NEW_THEN_INLINE,
|
|
31
|
+
cirq.InsertStrategy.INLINE,
|
|
32
|
+
cirq.InsertStrategy.EARLIEST,
|
|
33
|
+
],
|
|
34
|
+
ids=lambda strategy: strategy.name,
|
|
35
|
+
)
|
|
36
|
+
def test_identity_after_pickling(strategy: cirq.InsertStrategy):
|
|
37
|
+
unpickled_strategy = pickle.loads(pickle.dumps(strategy))
|
|
38
|
+
assert unpickled_strategy is strategy
|
cirq/ops/pauli_string.py
CHANGED
|
@@ -41,7 +41,6 @@ from typing import (
|
|
|
41
41
|
import numpy as np
|
|
42
42
|
import sympy
|
|
43
43
|
|
|
44
|
-
import cirq
|
|
45
44
|
from cirq import value, protocols, linalg, qis, _compat
|
|
46
45
|
from cirq._doc import document
|
|
47
46
|
from cirq._import import LazyLoader
|
|
@@ -496,7 +495,7 @@ class PauliString(raw_types.Operation, Generic[TKey]):
|
|
|
496
495
|
"""
|
|
497
496
|
qubits = self.qubits if qubits is None else qubits
|
|
498
497
|
factors = [self.get(q, default=identity.I) for q in qubits]
|
|
499
|
-
if
|
|
498
|
+
if protocols.is_parameterized(self):
|
|
500
499
|
raise NotImplementedError('Cannot express as matrix when parameterized')
|
|
501
500
|
assert isinstance(self.coefficient, complex)
|
|
502
501
|
return linalg.kron(self.coefficient, *[protocols.unitary(f) for f in factors])
|
|
@@ -981,7 +980,6 @@ class PauliString(raw_types.Operation, Generic[TKey]):
|
|
|
981
980
|
ps = PauliString(qubit_pauli_map=self._qubit_pauli_map, coefficient=self.coefficient)
|
|
982
981
|
all_ops = list(op_tree.flatten_to_ops(clifford))
|
|
983
982
|
all_qubits = set.union(set(self.qubits), [q for op in all_ops for q in op.qubits])
|
|
984
|
-
|
|
985
983
|
# Iteratively calculate the conjugation in reverse order of ops.
|
|
986
984
|
for op in all_ops[::-1]:
|
|
987
985
|
# To calcuate the conjugation of P (`ps`) with respect to C (`op`)
|
|
@@ -989,23 +987,21 @@ class PauliString(raw_types.Operation, Generic[TKey]):
|
|
|
989
987
|
# Then the conjugation = (C^{-1}⊗I·Pc⊗R·C⊗I) = (C^{-1}·Pc·C)⊗R.
|
|
990
988
|
|
|
991
989
|
# Isolate R
|
|
992
|
-
remain: 'cirq.PauliString' = PauliString(
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
if pauli is not None and not q in op.qubits:
|
|
996
|
-
remain *= pauli(q)
|
|
990
|
+
remain: 'cirq.PauliString' = PauliString(
|
|
991
|
+
*(pauli(q) for q in all_qubits - set(op.qubits) if (pauli := ps.get(q)) is not None)
|
|
992
|
+
)
|
|
997
993
|
|
|
998
994
|
# Initialize the conjugation of Pc.
|
|
999
995
|
conjugated: 'cirq.DensePauliString' = (
|
|
1000
996
|
dense_pauli_string.DensePauliString(pauli_mask=[identity.I for _ in op.qubits])
|
|
1001
|
-
*
|
|
997
|
+
* ps.coefficient
|
|
1002
998
|
)
|
|
1003
999
|
|
|
1004
1000
|
# Calculate the conjugation via CliffordGate's clifford_tableau.
|
|
1005
1001
|
# Note the clifford_tableau in CliffordGate represents C·P·C^-1 instead of C^-1·P·C.
|
|
1006
1002
|
# So we take the inverse of the tableau to match the definition of the conjugation here.
|
|
1007
1003
|
gate_in_clifford: 'cirq.CliffordGate'
|
|
1008
|
-
if isinstance(op.gate,
|
|
1004
|
+
if isinstance(op.gate, clifford_gate.CliffordGate):
|
|
1009
1005
|
gate_in_clifford = op.gate
|
|
1010
1006
|
else:
|
|
1011
1007
|
# Convert the clifford gate to CliffordGate type.
|
|
@@ -1020,7 +1016,7 @@ class PauliString(raw_types.Operation, Generic[TKey]):
|
|
|
1020
1016
|
# Puali X_k's conjugation is from the destabilzer table;
|
|
1021
1017
|
# Puali Z_k's conjugation is from the stabilzer table;
|
|
1022
1018
|
# Puali Y_k's conjugation is calcluated according to Y = iXZ. E.g., for the kth qubit,
|
|
1023
|
-
# C^{-1}·Y_k⊗I·C = C^{-1}·(iX_k⊗I·Z_k⊗I)·C = i (C^{-1}·X_k⊗I·C)·(C^{-1}·Z_k⊗I·C)
|
|
1019
|
+
# C^{-1}·Y_k⊗I·C = C^{-1}·(iX_k⊗I·Z_k⊗I)·C = i (C^{-1}·X_k⊗I·C)·(C^{-1}·Z_k⊗I·C).
|
|
1024
1020
|
for qid, qubit in enumerate(op.qubits):
|
|
1025
1021
|
pauli = ps.get(qubit)
|
|
1026
1022
|
match pauli:
|
|
@@ -1100,20 +1096,17 @@ class PauliString(raw_types.Operation, Generic[TKey]):
|
|
|
1100
1096
|
pauli string, instead of before (and so are moving in the
|
|
1101
1097
|
opposite direction).
|
|
1102
1098
|
"""
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
|
|
1114
|
-
should_negate ^= _pass_operation_over(pauli_map, clifford_op, after_to_before)
|
|
1115
|
-
coef = -self._coefficient if should_negate else self.coefficient
|
|
1116
|
-
return PauliString(qubit_pauli_map=pauli_map, coefficient=coef)
|
|
1099
|
+
# TODO(#6946): deprecate this method.
|
|
1100
|
+
# Note: This method is supposed to be replaced by conjugated_by()
|
|
1101
|
+
# (see #2351 for details).
|
|
1102
|
+
if after_to_before:
|
|
1103
|
+
return self.after(ops)
|
|
1104
|
+
|
|
1105
|
+
if isinstance(ops, gate_operation.GateOperation):
|
|
1106
|
+
return self.before(ops)
|
|
1107
|
+
|
|
1108
|
+
all_ops = list(op_tree.flatten_to_ops(ops))
|
|
1109
|
+
return self.before(all_ops[::-1])
|
|
1117
1110
|
|
|
1118
1111
|
def _is_parameterized_(self) -> bool:
|
|
1119
1112
|
return protocols.is_parameterized(self.coefficient)
|
|
@@ -1179,7 +1172,7 @@ def _try_interpret_as_pauli_string(op: Any):
|
|
|
1179
1172
|
if (pauli := gates.get(type(op.gate), None)) is not None:
|
|
1180
1173
|
exponent = op.gate.exponent # type: ignore
|
|
1181
1174
|
if exponent % 2 == 0:
|
|
1182
|
-
return
|
|
1175
|
+
return PauliString()
|
|
1183
1176
|
if exponent % 2 == 1:
|
|
1184
1177
|
return pauli.on(op.qubits[0])
|
|
1185
1178
|
return None
|
|
@@ -163,8 +163,10 @@ def test_pass_operations_over():
|
|
|
163
163
|
ps_after = cirq.PauliString({q0: cirq.Z, q1: cirq.Y}, -1)
|
|
164
164
|
before = cirq.PauliStringPhasor(ps_before, exponent_neg=0.1)
|
|
165
165
|
after = cirq.PauliStringPhasor(ps_after, exponent_neg=0.1)
|
|
166
|
-
assert before.pass_operations_over([op]) == after
|
|
167
|
-
assert
|
|
166
|
+
assert before.pass_operations_over([op]).pauli_string == after.pauli_string
|
|
167
|
+
assert (
|
|
168
|
+
after.pass_operations_over([op], after_to_before=True).pauli_string == before.pauli_string
|
|
169
|
+
)
|
|
168
170
|
|
|
169
171
|
|
|
170
172
|
def test_extrapolate_effect():
|
cirq/ops/pauli_string_test.py
CHANGED
|
@@ -58,19 +58,53 @@ def _small_sample_qubit_pauli_maps():
|
|
|
58
58
|
|
|
59
59
|
|
|
60
60
|
def assert_conjugation(
|
|
61
|
-
input_ps: cirq.PauliString,
|
|
61
|
+
input_ps: cirq.PauliString,
|
|
62
|
+
op: cirq.Operation,
|
|
63
|
+
expected: cirq.PauliString | None = None,
|
|
64
|
+
force_checking_unitary=True,
|
|
65
|
+
):
|
|
66
|
+
"""Verifies that conjugating `input_ps` by `op` results in `expected`.
|
|
67
|
+
|
|
68
|
+
Also ensures that the unitary representation of the Pauli string is
|
|
69
|
+
preserved under the conjugation.
|
|
70
|
+
"""
|
|
71
|
+
|
|
72
|
+
def _ps_on_qubits(ps: cirq.PauliString, qubits: tuple[cirq.Qid, ...]):
|
|
73
|
+
"""Extracts a sub-PauliString from a given PauliString, restricted to
|
|
74
|
+
a specified subset of qubits.
|
|
75
|
+
"""
|
|
76
|
+
pauli_map = {}
|
|
77
|
+
for q, pauli in ps.items():
|
|
78
|
+
if q in qubits:
|
|
79
|
+
pauli_map[q] = pauli
|
|
80
|
+
return cirq.PauliString(qubit_pauli_map=pauli_map, coefficient=ps.coefficient)
|
|
81
|
+
|
|
82
|
+
conjugation = input_ps.conjugated_by(op)
|
|
83
|
+
if expected is None or force_checking_unitary:
|
|
84
|
+
# Compares the unitary of the conjugation result and the expected unitary.
|
|
85
|
+
clifford = cirq.CliffordGate.from_op_list([op], op.qubits)
|
|
86
|
+
actual_unitary = cirq.unitary(_ps_on_qubits(conjugation, op.qubits).dense(op.qubits))
|
|
87
|
+
c = cirq.unitary(clifford)
|
|
88
|
+
expected_unitary = (
|
|
89
|
+
np.conj(c.T) @ cirq.unitary(_ps_on_qubits(input_ps, op.qubits).dense(op.qubits)) @ c
|
|
90
|
+
)
|
|
91
|
+
assert np.allclose(actual_unitary, expected_unitary, atol=1e-8)
|
|
92
|
+
if expected is not None:
|
|
93
|
+
assert conjugation == expected
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
def assert_conjugation_multi_ops(
|
|
97
|
+
input_ps: cirq.PauliString, ops: list[cirq.Operation], expected: cirq.PauliString | None = None
|
|
62
98
|
):
|
|
63
99
|
conjugation = input_ps.conjugated_by(ops)
|
|
64
100
|
if expected is not None:
|
|
65
101
|
assert conjugation == expected
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
expected_unitary = np.conj(c.T) @ cirq.unitary(input_ps.dense(qubits_of_clifford)) @ c
|
|
73
|
-
assert np.allclose(actual_unitary, expected_unitary, atol=1e-8)
|
|
102
|
+
# conj_by(op_{n-1}).conj_by(op_{n-1}).....conj_by(op_0)
|
|
103
|
+
conj_in_order = input_ps
|
|
104
|
+
for op in ops[::-1]:
|
|
105
|
+
assert_conjugation(conj_in_order, op)
|
|
106
|
+
conj_in_order = conj_in_order.conjugated_by(op)
|
|
107
|
+
assert conjugation == conj_in_order
|
|
74
108
|
|
|
75
109
|
|
|
76
110
|
def test_eq_ne_hash():
|
|
@@ -741,26 +775,31 @@ def test_pass_operations_over_double(shift: int, t_or_f1: bool, t_or_f2: bool, n
|
|
|
741
775
|
op0 = cirq.PauliInteractionGate(Z, t_or_f1, X, t_or_f2)(q0, q1)
|
|
742
776
|
ps_before = cirq.PauliString(qubit_pauli_map={q0: Z, q2: Y}, coefficient=sign)
|
|
743
777
|
ps_after = cirq.PauliString(qubit_pauli_map={q0: Z, q2: Y}, coefficient=sign)
|
|
778
|
+
assert_conjugation(ps_before, op0, ps_after, True)
|
|
744
779
|
_assert_pass_over([op0], ps_before, ps_after)
|
|
745
780
|
|
|
746
781
|
op0 = cirq.PauliInteractionGate(Y, t_or_f1, X, t_or_f2)(q0, q1)
|
|
747
782
|
ps_before = cirq.PauliString({q0: Z, q2: Y}, sign)
|
|
748
|
-
ps_after = cirq.PauliString({q0: Z, q2: Y, q1: X}, sign)
|
|
783
|
+
ps_after = cirq.PauliString({q0: Z, q2: Y, q1: X}, -sign if t_or_f2 else sign)
|
|
784
|
+
assert_conjugation(ps_before, op0, ps_after, True)
|
|
749
785
|
_assert_pass_over([op0], ps_before, ps_after)
|
|
750
786
|
|
|
751
787
|
op0 = cirq.PauliInteractionGate(Z, t_or_f1, X, t_or_f2)(q0, q1)
|
|
752
788
|
ps_before = cirq.PauliString({q0: Z, q1: Y}, sign)
|
|
753
|
-
ps_after = cirq.PauliString({q1: Y}, sign)
|
|
789
|
+
ps_after = cirq.PauliString({q1: Y}, -sign if t_or_f1 else sign)
|
|
790
|
+
assert_conjugation(ps_before, op0, ps_after, True)
|
|
754
791
|
_assert_pass_over([op0], ps_before, ps_after)
|
|
755
792
|
|
|
756
793
|
op0 = cirq.PauliInteractionGate(Y, t_or_f1, X, t_or_f2)(q0, q1)
|
|
757
794
|
ps_before = cirq.PauliString({q0: Z, q1: Y}, sign)
|
|
758
795
|
ps_after = cirq.PauliString({q0: X, q1: Z}, -1 if neg ^ t_or_f1 ^ t_or_f2 else +1)
|
|
796
|
+
assert_conjugation(ps_before, op0, ps_after, True)
|
|
759
797
|
_assert_pass_over([op0], ps_before, ps_after)
|
|
760
798
|
|
|
761
799
|
op0 = cirq.PauliInteractionGate(X, t_or_f1, X, t_or_f2)(q0, q1)
|
|
762
800
|
ps_before = cirq.PauliString({q0: Z, q1: Y}, sign)
|
|
763
801
|
ps_after = cirq.PauliString({q0: Y, q1: Z}, +1 if neg ^ t_or_f1 ^ t_or_f2 else -1)
|
|
802
|
+
assert_conjugation(ps_before, op0, ps_after, True)
|
|
764
803
|
_assert_pass_over([op0], ps_before, ps_after)
|
|
765
804
|
|
|
766
805
|
|
|
@@ -774,7 +813,9 @@ def test_pass_operations_over_cz():
|
|
|
774
813
|
|
|
775
814
|
def test_pass_operations_over_no_common_qubits():
|
|
776
815
|
class ExampleGate(cirq.testing.SingleQubitGate):
|
|
777
|
-
|
|
816
|
+
|
|
817
|
+
def _decompose_(self, qubits):
|
|
818
|
+
return cirq.X(qubits[0])
|
|
778
819
|
|
|
779
820
|
q0, q1 = _make_qubits(2)
|
|
780
821
|
op0 = ExampleGate()(q1)
|
|
@@ -786,7 +827,11 @@ def test_pass_operations_over_no_common_qubits():
|
|
|
786
827
|
def test_pass_unsupported_operations_over():
|
|
787
828
|
(q0,) = _make_qubits(1)
|
|
788
829
|
pauli_string = cirq.PauliString({q0: cirq.X})
|
|
789
|
-
with pytest.raises(
|
|
830
|
+
with pytest.raises(
|
|
831
|
+
ValueError,
|
|
832
|
+
match='Clifford Gate can only be constructed from the operations'
|
|
833
|
+
' that has stabilizer effect.',
|
|
834
|
+
):
|
|
790
835
|
pauli_string.pass_operations_over([cirq.T(q0)])
|
|
791
836
|
|
|
792
837
|
|
|
@@ -1523,8 +1568,8 @@ def test_conjugated_by_clifford_composite():
|
|
|
1523
1568
|
def test_conjugated_by_move_into_uninvolved():
|
|
1524
1569
|
a, b, c, d = cirq.LineQubit.range(4)
|
|
1525
1570
|
ps = cirq.X(a) * cirq.Z(b)
|
|
1526
|
-
|
|
1527
|
-
|
|
1571
|
+
assert_conjugation_multi_ops(ps, [cirq.SWAP(c, d), cirq.SWAP(b, c)], cirq.X(a) * cirq.Z(d))
|
|
1572
|
+
assert_conjugation_multi_ops(ps, [cirq.SWAP(b, c), cirq.SWAP(c, d)], cirq.X(a) * cirq.Z(c))
|
|
1528
1573
|
|
|
1529
1574
|
|
|
1530
1575
|
def test_conjugated_by_common_single_qubit_gates():
|
|
@@ -1549,7 +1594,7 @@ def test_conjugated_by_common_single_qubit_gates():
|
|
|
1549
1594
|
# pauli gate on a, clifford on b: pauli gate preserves.
|
|
1550
1595
|
assert_conjugation(p(a), g(b), p(a))
|
|
1551
1596
|
# pauli gate on a, clifford on a: check conjugation in matrices.
|
|
1552
|
-
assert_conjugation(p(a), g(a)
|
|
1597
|
+
assert_conjugation(p(a), g(a))
|
|
1553
1598
|
|
|
1554
1599
|
|
|
1555
1600
|
def test_conjugated_by_common_two_qubit_gates():
|
|
@@ -1580,7 +1625,7 @@ def test_conjugated_by_common_two_qubit_gates():
|
|
|
1580
1625
|
assert_conjugation(p, g(c, d), p)
|
|
1581
1626
|
# pauli_string on (a,b), clifford on (a,b): compare unitaries of
|
|
1582
1627
|
# the conjugated_by and actual matrix conjugation.
|
|
1583
|
-
assert_conjugation(p, g.on(a, b)
|
|
1628
|
+
assert_conjugation(p, g.on(a, b))
|
|
1584
1629
|
|
|
1585
1630
|
|
|
1586
1631
|
def test_conjugated_by_ordering():
|
|
@@ -1602,7 +1647,7 @@ def test_pass_operations_over_ordering():
|
|
|
1602
1647
|
|
|
1603
1648
|
a, b = cirq.LineQubit.range(2)
|
|
1604
1649
|
inp = cirq.Z(b)
|
|
1605
|
-
out1 = inp.pass_operations_over(
|
|
1650
|
+
out1 = inp.pass_operations_over(OrderSensitiveGate().on(a, b))
|
|
1606
1651
|
out2 = inp.pass_operations_over([cirq.CNOT(a, b), cirq.Y(a) ** -0.5])
|
|
1607
1652
|
out3 = inp.pass_operations_over([cirq.CNOT(a, b)]).pass_operations_over([cirq.Y(a) ** -0.5])
|
|
1608
1653
|
assert out1 == out2 == out3 == cirq.X(a) * cirq.Z(b)
|
|
@@ -1618,7 +1663,7 @@ def test_pass_operations_over_ordering_reversed():
|
|
|
1618
1663
|
|
|
1619
1664
|
a, b = cirq.LineQubit.range(2)
|
|
1620
1665
|
inp = cirq.X(a) * cirq.Z(b)
|
|
1621
|
-
out1 = inp.pass_operations_over(
|
|
1666
|
+
out1 = inp.pass_operations_over(OrderSensitiveGate().on(a, b), after_to_before=True)
|
|
1622
1667
|
out2 = inp.pass_operations_over([cirq.Y(a) ** -0.5, cirq.CNOT(a, b)], after_to_before=True)
|
|
1623
1668
|
out3 = inp.pass_operations_over([cirq.Y(a) ** -0.5], after_to_before=True).pass_operations_over(
|
|
1624
1669
|
[cirq.CNOT(a, b)], after_to_before=True
|
{cirq_core-1.5.0.dev20250312165047.dist-info → cirq_core-1.5.0.dev20250312231723.dist-info}/METADATA
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: cirq-core
|
|
3
|
-
Version: 1.5.0.
|
|
3
|
+
Version: 1.5.0.dev20250312231723
|
|
4
4
|
Summary: A framework for creating, editing, and invoking Noisy Intermediate Scale Quantum (NISQ) circuits.
|
|
5
5
|
Home-page: http://github.com/quantumlib/cirq
|
|
6
6
|
Author: The Cirq Developers
|
{cirq_core-1.5.0.dev20250312165047.dist-info → cirq_core-1.5.0.dev20250312231723.dist-info}/RECORD
RENAMED
|
@@ -4,8 +4,8 @@ cirq/_compat_test.py,sha256=Qq3ZcfgD-Nb81cEppQdJqhAyrVqXKtfXZYGXT0p-Wh0,34718
|
|
|
4
4
|
cirq/_doc.py,sha256=yDyWUD_2JDS0gShfGRb-rdqRt9-WeL7DhkqX7np0Nko,2879
|
|
5
5
|
cirq/_import.py,sha256=p9gMHJscbtDDkfHOaulvd3Aer0pwUF5AXpL89XR8dNw,8402
|
|
6
6
|
cirq/_import_test.py,sha256=6K_v0riZJXOXUphHNkGA8MY-JcmGlezFaGmvrNhm3OQ,1015
|
|
7
|
-
cirq/_version.py,sha256=
|
|
8
|
-
cirq/_version_test.py,sha256=
|
|
7
|
+
cirq/_version.py,sha256=z3PMGsFFc9loMC8ptHlwdYk8UGjhaVuEedK4uq5i-Yk,1206
|
|
8
|
+
cirq/_version_test.py,sha256=BZSiO6dH779EPZbO1948wunnJ0f4MFOYnuUlL1Ax8ps,147
|
|
9
9
|
cirq/conftest.py,sha256=X7yLFL8GLhg2CjPw0hp5e_dGASfvHx1-QT03aUbhKJw,1168
|
|
10
10
|
cirq/json_resolver_cache.py,sha256=p-vEOa-8GQ2cFIAdze-kd6C1un1uRvtujVPljVKaHBg,13557
|
|
11
11
|
cirq/py.typed,sha256=VFSlmh_lNwnaXzwY-ZuW-C2Ws5PkuDoVgBdNCs0jXJE,63
|
|
@@ -22,8 +22,8 @@ cirq/circuits/circuit_operation_test.py,sha256=SFyM12Ky7-OVwl-jK3OTMMN0DD5hR6tWf
|
|
|
22
22
|
cirq/circuits/circuit_test.py,sha256=AN81b3nvLGOshSaBIDt4-7lghr1MmFtdTa2XePUll6I,163314
|
|
23
23
|
cirq/circuits/frozen_circuit.py,sha256=qSbLHqIszCbVipNZQy4N829v_mWf8N2926cYRzpxGqE,9243
|
|
24
24
|
cirq/circuits/frozen_circuit_test.py,sha256=rHyii8hLhOQ6jdA8dC1OcYPGnyeBC4uY5Q53XspkkCk,4133
|
|
25
|
-
cirq/circuits/insert_strategy.py,sha256=
|
|
26
|
-
cirq/circuits/insert_strategy_test.py,sha256=
|
|
25
|
+
cirq/circuits/insert_strategy.py,sha256=JU_KPe74P3OpbVQei5iDPgEpOjpts5JFKXU5Xy1QYHE,3211
|
|
26
|
+
cirq/circuits/insert_strategy_test.py,sha256=LVtUECfTe59tYO2piuD1kCA6lhI7ioerF7tp2cQ3bnk,1136
|
|
27
27
|
cirq/circuits/moment.py,sha256=Sv1Xxo1LIChH0Da2iHegbthOWd2Ibq0fsnj5ZrqqEkQ,26191
|
|
28
28
|
cirq/circuits/moment_test.py,sha256=oNHNXhiPEoCKbzeh16tRwiW1qZWlg4X2O_uiVDP1D58,27375
|
|
29
29
|
cirq/circuits/optimization_pass.py,sha256=uw3ne0-ebZo6GNjwfQMuQ3b5u9RCgyaXRfhpbljlxao,6468
|
|
@@ -333,12 +333,12 @@ cirq/ops/pauli_interaction_gate.py,sha256=Ep7XwZMVP81Qq1J2MTc3kJ79h26daOZcLPxqN3
|
|
|
333
333
|
cirq/ops/pauli_interaction_gate_test.py,sha256=U9ORW5Ayx5PESPFiGESzWY-02qHklYcM1mYW56RWe_A,4544
|
|
334
334
|
cirq/ops/pauli_measurement_gate.py,sha256=AS9tzLGAOhJzRzVsW9m-WPz5Wx0sMS1jzhppn5qtW84,7239
|
|
335
335
|
cirq/ops/pauli_measurement_gate_test.py,sha256=uh3J0Ps3V3578V8qkRiEgIl6jBiv8DsXlk_vzLvOEhQ,6720
|
|
336
|
-
cirq/ops/pauli_string.py,sha256=
|
|
336
|
+
cirq/ops/pauli_string.py,sha256=mTVfWcqhypF7yQ3EkdHPMrtbJIvCYSBq5RRfA5Q83eg,69675
|
|
337
337
|
cirq/ops/pauli_string_phasor.py,sha256=M5AGwwMueY-y7bl50KJHiYql7PF4AcsdBBZhsxkhCWE,17519
|
|
338
|
-
cirq/ops/pauli_string_phasor_test.py,sha256=
|
|
338
|
+
cirq/ops/pauli_string_phasor_test.py,sha256=BzmlFH5p-15kxEwLFrrwGaG3JtARZq8gXz2NZPmUfDk,27864
|
|
339
339
|
cirq/ops/pauli_string_raw_types.py,sha256=6CgdPWYmOziP4uZbrIsRW0sDSMmV1GioGdAk0owFITU,2240
|
|
340
340
|
cirq/ops/pauli_string_raw_types_test.py,sha256=SZPluslZPGffPq93F5apESBygWZ2cj7BEX6dQuawRQE,2648
|
|
341
|
-
cirq/ops/pauli_string_test.py,sha256=
|
|
341
|
+
cirq/ops/pauli_string_test.py,sha256=JlS0nxddL0L3uv6-kjT7RgSaiN2ME0j-XcLulQL0JTg,77371
|
|
342
342
|
cirq/ops/pauli_sum_exponential.py,sha256=_9JERthST1PRwunplPQKIaJaOL45Kbl1oJ5CYUJWlTU,4876
|
|
343
343
|
cirq/ops/pauli_sum_exponential_test.py,sha256=wVnJ3FSpEimHT8ERVkmljALrgSuuDYo6GRg91uJ7ztk,5370
|
|
344
344
|
cirq/ops/permutation_gate.py,sha256=2h8n76N2M3nu5MA8JkRQgVLByq5cOEluKUN042ClSRs,4196
|
|
@@ -1204,8 +1204,8 @@ cirq/work/sampler.py,sha256=bE5tmVkcR6cZZMLETxDfHehdsYUMbx2RvBeIBetehI4,19187
|
|
|
1204
1204
|
cirq/work/sampler_test.py,sha256=hL2UWx3dz2ukZVNxWftiKVvJcQoLplLZdQm-k1QcA40,13282
|
|
1205
1205
|
cirq/work/zeros_sampler.py,sha256=x1C7cup66a43n-3tm8QjhiqJa07qcJW10FxNp9jJ59Q,2356
|
|
1206
1206
|
cirq/work/zeros_sampler_test.py,sha256=JIkpBBFPJe5Ba4142vzogyWyboG1Q1ZAm0UVGgOoZn8,3279
|
|
1207
|
-
cirq_core-1.5.0.
|
|
1208
|
-
cirq_core-1.5.0.
|
|
1209
|
-
cirq_core-1.5.0.
|
|
1210
|
-
cirq_core-1.5.0.
|
|
1211
|
-
cirq_core-1.5.0.
|
|
1207
|
+
cirq_core-1.5.0.dev20250312231723.dist-info/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
|
|
1208
|
+
cirq_core-1.5.0.dev20250312231723.dist-info/METADATA,sha256=4CnLvSMX4vKnQBmMMDqbH9HTeUbDczPIDuyLZa0eJsI,4817
|
|
1209
|
+
cirq_core-1.5.0.dev20250312231723.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
|
|
1210
|
+
cirq_core-1.5.0.dev20250312231723.dist-info/top_level.txt,sha256=Sz9iOxHU0IEMLSFGwiwOCaN2e9K-jFbBbtpPN1hB73g,5
|
|
1211
|
+
cirq_core-1.5.0.dev20250312231723.dist-info/RECORD,,
|
{cirq_core-1.5.0.dev20250312165047.dist-info → cirq_core-1.5.0.dev20250312231723.dist-info}/LICENSE
RENAMED
|
File without changes
|
{cirq_core-1.5.0.dev20250312165047.dist-info → cirq_core-1.5.0.dev20250312231723.dist-info}/WHEEL
RENAMED
|
File without changes
|
|
File without changes
|