cirq-core 1.5.0.dev20250312165047__py3-none-any.whl → 1.5.0.dev20250312174327__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 CHANGED
@@ -28,4 +28,4 @@ if sys.version_info < (3, 10, 0): # pragma: no cover
28
28
  'of cirq (e.g. "python -m pip install cirq==1.1.*")'
29
29
  )
30
30
 
31
- __version__ = "1.5.0.dev20250312165047"
31
+ __version__ = "1.5.0.dev20250312174327"
cirq/_version_test.py CHANGED
@@ -3,4 +3,4 @@ import cirq
3
3
 
4
4
 
5
5
  def test_version():
6
- assert cirq.__version__ == "1.5.0.dev20250312165047"
6
+ assert cirq.__version__ == "1.5.0.dev20250312174327"
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 cirq.is_parameterized(self):
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
- for q in all_qubits:
994
- pauli = ps.get(q)
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
- * self.coefficient
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, cirq.CliffordGate):
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
- pauli_map = dict(self._qubit_pauli_map)
1104
- should_negate = False
1105
- for op in ops:
1106
- if pauli_map.keys().isdisjoint(set(op.qubits)):
1107
- continue
1108
- decomposed = _decompose_into_cliffords(op)
1109
- if not after_to_before:
1110
- decomposed = decomposed[::-1]
1111
- for clifford_op in decomposed:
1112
- if pauli_map.keys().isdisjoint(set(clifford_op.qubits)):
1113
- continue
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 cirq.PauliString()
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 after.pass_operations_over([op], after_to_before=True) == before
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():
@@ -58,19 +58,53 @@ def _small_sample_qubit_pauli_maps():
58
58
 
59
59
 
60
60
  def assert_conjugation(
61
- input_ps: cirq.PauliString, ops: cirq.OP_TREE, expected: cirq.PauliString | None
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
- else: # Compares the unitary of the conjugation result and the expected unitary.
67
- op_list = list(cirq.flatten_to_ops(ops))
68
- qubits_of_clifford = [q for op in op_list for q in op.qubits]
69
- clifford = cirq.CliffordGate.from_op_list(op_list, qubits_of_clifford)
70
- actual_unitary = cirq.unitary(conjugation.dense(qubits_of_clifford))
71
- c = cirq.unitary(clifford)
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
- pass
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(TypeError, match='not a known Clifford'):
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
- assert_conjugation(ps, [cirq.SWAP(c, d), cirq.SWAP(b, c)], cirq.X(a) * cirq.Z(d))
1527
- assert_conjugation(ps, [cirq.SWAP(b, c), cirq.SWAP(c, d)], cirq.X(a) * cirq.Z(c))
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), None)
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), None)
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([OrderSensitiveGate().on(a, b)])
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([OrderSensitiveGate().on(a, b)], after_to_before=True)
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
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cirq-core
3
- Version: 1.5.0.dev20250312165047
3
+ Version: 1.5.0.dev20250312174327
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
@@ -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=VQxk2g1sWEn_8YXUP8gbpf7HeQHJhWO6-aFrAf1Sy4M,1206
8
- cirq/_version_test.py,sha256=vIpq3Juh3HROax8NXtDNZ9YSSXCWmcqmoYArhPoIYIc,147
7
+ cirq/_version.py,sha256=91z6OhJoy8rrnUtoWShElNNhOzKkR6s4vsAwp6ZngiM,1206
8
+ cirq/_version_test.py,sha256=pifpWkNUlgav4dAg_ELFZ-lDXR-zpVBSG1Q_v0B4P5g,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
@@ -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=sGs0TZt1mtGUarDphJkTkNvKppdV1mB67eSJkKwQiug,70032
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=91YXIm9RbqrG8dPdA18E9i4G7JT1epGvM4BZu6_YVzw,27796
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=sE2Kje6qmHJzhdVja3fa3Er8g3XJ8l_8hzjgioSFIn4,75742
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.dev20250312165047.dist-info/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
1208
- cirq_core-1.5.0.dev20250312165047.dist-info/METADATA,sha256=_LRbqdYXqIYKyRB_MVfTZb42-79oHf3ir-6JfSSmte8,4817
1209
- cirq_core-1.5.0.dev20250312165047.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
1210
- cirq_core-1.5.0.dev20250312165047.dist-info/top_level.txt,sha256=Sz9iOxHU0IEMLSFGwiwOCaN2e9K-jFbBbtpPN1hB73g,5
1211
- cirq_core-1.5.0.dev20250312165047.dist-info/RECORD,,
1207
+ cirq_core-1.5.0.dev20250312174327.dist-info/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
1208
+ cirq_core-1.5.0.dev20250312174327.dist-info/METADATA,sha256=W4wbVXZhTtBaWZO3zYb35MO5GqS7u2qA7NbFG2wzqtQ,4817
1209
+ cirq_core-1.5.0.dev20250312174327.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
1210
+ cirq_core-1.5.0.dev20250312174327.dist-info/top_level.txt,sha256=Sz9iOxHU0IEMLSFGwiwOCaN2e9K-jFbBbtpPN1hB73g,5
1211
+ cirq_core-1.5.0.dev20250312174327.dist-info/RECORD,,