cirq-core 1.7.0.dev20250904220130__py3-none-any.whl → 1.7.0.dev20250905003713__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, 11, 0): # pragma: no cover
28
28
  'of Cirq (e.g. "python -m pip install cirq==1.5.0")'
29
29
  )
30
30
 
31
- __version__ = "1.7.0.dev20250904220130"
31
+ __version__ = "1.7.0.dev20250905003713"
cirq/_version_test.py CHANGED
@@ -3,4 +3,4 @@ import cirq
3
3
 
4
4
 
5
5
  def test_version() -> None:
6
- assert cirq.__version__ == "1.7.0.dev20250904220130"
6
+ assert cirq.__version__ == "1.7.0.dev20250905003713"
@@ -614,13 +614,13 @@ def _as_pauli_mask(val: Iterable[cirq.PAULI_GATE_LIKE] | np.ndarray) -> np.ndarr
614
614
 
615
615
 
616
616
  def _attempt_value_to_pauli_index(v: cirq.Operation) -> tuple[int, int] | None:
617
- if not isinstance(v, raw_types.Operation):
617
+ if (ps := pauli_string._try_interpret_as_pauli_string(v)) is None:
618
618
  return None
619
619
 
620
- if not isinstance(v.gate, pauli_gates.Pauli):
620
+ if len(ps.qubits) != 1:
621
621
  return None # pragma: no cover
622
622
 
623
- q = v.qubits[0]
623
+ q = ps.qubits[0]
624
624
  from cirq import devices
625
625
 
626
626
  if not isinstance(q, devices.LineQubit):
@@ -629,7 +629,7 @@ def _attempt_value_to_pauli_index(v: cirq.Operation) -> tuple[int, int] | None:
629
629
  'other than `cirq.LineQubit` so its dense index is ambiguous.\n'
630
630
  f'v={repr(v)}.'
631
631
  )
632
- return pauli_string.PAULI_GATE_LIKE_TO_INDEX_MAP[v.gate], q.x
632
+ return pauli_string.PAULI_GATE_LIKE_TO_INDEX_MAP[ps[q]], q.x
633
633
 
634
634
 
635
635
  def _vectorized_pauli_mul_phase(lhs: int | np.ndarray, rhs: int | np.ndarray) -> complex:
@@ -507,6 +507,10 @@ def test_commutes() -> None:
507
507
  assert cirq.commutes(f('IIIXII'), cirq.X(cirq.LineQubit(2)))
508
508
  assert not cirq.commutes(f('IIIXII'), cirq.Z(cirq.LineQubit(3)))
509
509
  assert cirq.commutes(f('IIIXII'), cirq.Z(cirq.LineQubit(2)))
510
+ assert cirq.commutes(f('IIIXII'), cirq.X(cirq.LineQubit(3)) ** 3)
511
+ assert cirq.commutes(f('IIIXII'), cirq.X(cirq.LineQubit(2)) ** 3)
512
+ assert not cirq.commutes(f('IIIXII'), cirq.Z(cirq.LineQubit(3)) ** 3)
513
+ assert cirq.commutes(f('IIIXII'), cirq.Z(cirq.LineQubit(2)) ** 3)
510
514
 
511
515
  assert cirq.commutes(f('XX'), "test", default=NotImplemented) is NotImplemented
512
516
 
@@ -352,3 +352,38 @@ def test_clifford_protocols(
352
352
  else:
353
353
  assert not cirq.has_stabilizer_effect(gate)
354
354
  assert gate._decompose_into_clifford_with_qubits_(cirq.LineQubit.range(2)) is NotImplemented
355
+
356
+
357
+ def test_parity_gate_multiplication():
358
+ q1, q2, q3 = cirq.LineQubit.range(3)
359
+
360
+ # XX gate
361
+ xx_12 = cirq.XX(q1, q2)
362
+ xx_23 = cirq.XX(q2, q3)
363
+ result = xx_12 * xx_23
364
+ expected = cirq.PauliString({q1: cirq.X, q3: cirq.X})
365
+ assert result == expected
366
+
367
+ # YY gate
368
+ yy_12 = cirq.YY(q1, q2)
369
+ yy_23 = cirq.YY(q2, q3)
370
+ result_yy = yy_12 * yy_23
371
+ expected_yy = cirq.PauliString({q1: cirq.Y, q3: cirq.Y})
372
+ assert result_yy == expected_yy
373
+
374
+ # ZZ gate
375
+ zz_12 = cirq.ZZ(q1, q2)
376
+ zz_23 = cirq.ZZ(q2, q3)
377
+ result_zz = zz_12 * zz_23
378
+ expected_zz = cirq.PauliString({q1: cirq.Z, q3: cirq.Z})
379
+ assert result_zz == expected_zz
380
+
381
+
382
+ def test_parity_gate_multiplication_same_qubits():
383
+ q1, q2 = cirq.LineQubit.range(2)
384
+
385
+ # XX * XX should be identity
386
+ xx = cirq.XX(q1, q2)
387
+ result = xx * xx
388
+ expected = cirq.PauliString({q1: cirq.I, q2: cirq.I})
389
+ assert result == expected
cirq/ops/pauli_string.py CHANGED
@@ -266,16 +266,9 @@ class PauliString(raw_types.Operation, Generic[TKey]):
266
266
  pass
267
267
 
268
268
  def __mul__(self, other):
269
- known = False
270
- if isinstance(other, raw_types.Operation) and isinstance(other.gate, identity.IdentityGate):
271
- known = True
272
- elif isinstance(other, (PauliString, numbers.Number)):
273
- known = True
274
- if known:
269
+ if isinstance(other, (PauliString, numbers.Number)):
275
270
  return PauliString(
276
- cast(PAULI_STRING_LIKE, other),
277
- qubit_pauli_map=self._qubit_pauli_map,
278
- coefficient=self.coefficient,
271
+ other, qubit_pauli_map=self._qubit_pauli_map, coefficient=self.coefficient
279
272
  )
280
273
  return NotImplemented
281
274
 
@@ -295,9 +288,6 @@ class PauliString(raw_types.Operation, Generic[TKey]):
295
288
  qubit_pauli_map=self._qubit_pauli_map, coefficient=self._coefficient * other
296
289
  )
297
290
 
298
- if isinstance(other, raw_types.Operation) and isinstance(other.gate, identity.IdentityGate):
299
- return self # pragma: no cover
300
-
301
291
  # Note: PauliString case handled by __mul__.
302
292
  return NotImplemented
303
293
 
@@ -1100,21 +1090,16 @@ def _validate_qubit_mapping(
1100
1090
  )
1101
1091
 
1102
1092
 
1103
- def _try_interpret_as_pauli_string(op: Any):
1093
+ def _try_interpret_as_pauli_string(op: Any) -> PauliString | None:
1104
1094
  """Return a reprepresentation of an operation as a pauli string, if it is possible."""
1105
- if isinstance(op, gate_operation.GateOperation):
1106
- gates = {
1107
- common_gates.XPowGate: pauli_gates.X,
1108
- common_gates.YPowGate: pauli_gates.Y,
1109
- common_gates.ZPowGate: pauli_gates.Z,
1110
- }
1111
- if (pauli := gates.get(type(op.gate), None)) is not None:
1112
- exponent = op.gate.exponent # type: ignore
1113
- if exponent % 2 == 0:
1114
- return PauliString()
1115
- if exponent % 2 == 1:
1116
- return pauli.on(op.qubits[0])
1117
- return None
1095
+ if not isinstance(op, raw_types.Operation):
1096
+ return None
1097
+
1098
+ pauli_expansion_op = protocols.pauli_expansion(op, default=None)
1099
+ if pauli_expansion_op is None or len(pauli_expansion_op) != 1:
1100
+ return None
1101
+ gates, coef = next(iter(pauli_expansion_op.items()))
1102
+ return PauliString(dict(zip(op.qubits, gates)), coefficient=coef)
1118
1103
 
1119
1104
 
1120
1105
  # Ignoring type because mypy believes `with_qubits` methods are incompatible.
@@ -1148,28 +1133,6 @@ class SingleQubitPauliStringGateOperation( # type: ignore
1148
1133
  assert len(self.qubits) == 1
1149
1134
  return self.qubits[0]
1150
1135
 
1151
- def _as_pauli_string(self) -> PauliString:
1152
- return PauliString(qubit_pauli_map={self.qubit: self.pauli})
1153
-
1154
- def __mul__(self, other):
1155
- if isinstance(other, SingleQubitPauliStringGateOperation):
1156
- return self._as_pauli_string() * other._as_pauli_string()
1157
- if isinstance(other, (PauliString, numbers.Complex)):
1158
- return self._as_pauli_string() * other
1159
- if (as_pauli_string := _try_interpret_as_pauli_string(other)) is not None:
1160
- return self * as_pauli_string
1161
- return NotImplemented
1162
-
1163
- def __rmul__(self, other):
1164
- if isinstance(other, (PauliString, numbers.Complex)):
1165
- return other * self._as_pauli_string()
1166
- if (as_pauli_string := _try_interpret_as_pauli_string(other)) is not None:
1167
- return as_pauli_string * self
1168
- return NotImplemented
1169
-
1170
- def __neg__(self):
1171
- return -self._as_pauli_string()
1172
-
1173
1136
  def _json_dict_(self) -> dict[str, Any]:
1174
1137
  return protocols.obj_to_dict_helper(self, ['pauli', 'qubit'])
1175
1138
 
@@ -2097,3 +2097,44 @@ def test_pauli_ops_identity_gate_operation(gate1: cirq.Pauli, gate2: cirq.Pauli)
2097
2097
  subtraction = pauli1 - pauli2
2098
2098
  assert isinstance(subtraction, cirq.PauliSum)
2099
2099
  assert np.array_equal(subtraction.matrix(), unitary1 - unitary2)
2100
+
2101
+
2102
+ def test_pauli_gate_multiplication_with_power():
2103
+ q = cirq.LineQubit(0)
2104
+
2105
+ # Test all Pauli gates (X, Y, Z)
2106
+ pauli_gates = [cirq.X, cirq.Y, cirq.Z]
2107
+ for pauli_gate in pauli_gates:
2108
+ gate = pauli_gate(q)
2109
+
2110
+ # Test multiplication
2111
+ assert gate**2 * gate * gate * gate == gate**5
2112
+ assert gate * gate**2 * gate * gate == gate**5
2113
+ assert gate * gate * gate**2 * gate == gate**5
2114
+ assert gate * gate * gate * gate**2 == gate**5
2115
+
2116
+ # Test with different powers
2117
+ assert gate**0 * gate**5 == gate**5
2118
+ assert gate**1 * gate**4 == gate**5
2119
+ assert gate**2 * gate**3 == gate**5
2120
+ assert gate**3 * gate**2 == gate**5
2121
+ assert gate**4 * gate**1 == gate**5
2122
+ assert gate**5 * gate**0 == gate**5
2123
+
2124
+
2125
+ def test_try_interpret_as_pauli_string():
2126
+ from cirq.ops.pauli_string import _try_interpret_as_pauli_string
2127
+
2128
+ q = cirq.LineQubit(0)
2129
+
2130
+ # Pauli gate operation
2131
+ x_gate = cirq.X(q)
2132
+ assert _try_interpret_as_pauli_string(x_gate) == cirq.PauliString({q: cirq.X})
2133
+
2134
+ # powered gates
2135
+ x_squared = x_gate**2
2136
+ assert _try_interpret_as_pauli_string(x_squared) == cirq.PauliString({q: cirq.I})
2137
+
2138
+ # non-Pauli operation
2139
+ h_gate = cirq.H(q)
2140
+ assert _try_interpret_as_pauli_string(h_gate) is None
cirq/ops/raw_types.py CHANGED
@@ -482,10 +482,18 @@ class Gate(metaclass=value.ABCMetaImplementAnyOneOf):
482
482
 
483
483
  def _mul_with_qubits(self, qubits: tuple[cirq.Qid, ...], other):
484
484
  """cirq.GateOperation.__mul__ delegates to this method."""
485
+ from cirq.ops.pauli_string import _try_interpret_as_pauli_string
486
+
487
+ if (as_pauli_string := _try_interpret_as_pauli_string(self.on(*qubits))) is not None:
488
+ return as_pauli_string * other
485
489
  return NotImplemented
486
490
 
487
491
  def _rmul_with_qubits(self, qubits: tuple[cirq.Qid, ...], other):
488
492
  """cirq.GateOperation.__rmul__ delegates to this method."""
493
+ from cirq.ops.pauli_string import _try_interpret_as_pauli_string
494
+
495
+ if (as_pauli_string := _try_interpret_as_pauli_string(self.on(*qubits))) is not None:
496
+ return other * as_pauli_string
489
497
  return NotImplemented
490
498
 
491
499
  def _json_dict_(self) -> dict[str, Any]:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cirq-core
3
- Version: 1.7.0.dev20250904220130
3
+ Version: 1.7.0.dev20250905003713
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=emXpdD5ZvwLRlFAoQB8YatmZyU3b4e9jg6FppMTUhkU,33900
4
4
  cirq/_doc.py,sha256=BrnoABo1hk5RgB3Cgww4zLHUfiyFny0F1V-tOMCbdaU,2909
5
5
  cirq/_import.py,sha256=ixBu4EyGl46Ram2cP3p5eZVEFDW5L2DS-VyTjz4N9iw,8429
6
6
  cirq/_import_test.py,sha256=oF4izzOVZLc7NZ0aZHFcGv-r01eiFFt_JORx_x7_D4s,1089
7
- cirq/_version.py,sha256=45GbvWjprecP47R0sU5-7IRfoKv2fkifFMxMjzKGno4,1206
8
- cirq/_version_test.py,sha256=GEdYGs4CuRGMN6h0mg_ToCTxPV77d8sta8xQJ7VjS58,155
7
+ cirq/_version.py,sha256=2td_SW0o4k_dVeIeehxNpyyQ_b0GOAqZBKa2fPxHExE,1206
8
+ cirq/_version_test.py,sha256=RV9N2nrdM1YFCgzFBLI_PMfN3XHyL9cnWvQE9EpCCdQ,155
9
9
  cirq/conftest.py,sha256=wSDKNdIQRDfLnXvOCWD3erheOw8JHRhdfQ53EyTUIXg,1239
10
10
  cirq/json_resolver_cache.py,sha256=A5DIgFAY1hUNt9vai_C3-gGBv24116CJMzQxMcXOax4,13726
11
11
  cirq/py.typed,sha256=VFSlmh_lNwnaXzwY-ZuW-C2Ws5PkuDoVgBdNCs0jXJE,63
@@ -303,8 +303,8 @@ cirq/ops/controlled_gate.py,sha256=3Hex9AdY6c_DedKoCqqpS4gx9rAgm9KZITbwUBXsoYg,1
303
303
  cirq/ops/controlled_gate_test.py,sha256=jmIOlCx8dC3VId4NynX1ZYy7s7tkLav_d-fjiIZyVh0,29308
304
304
  cirq/ops/controlled_operation.py,sha256=KAbQGf6-AXm-DV9nk05S3sqJumOgvG9P6jO4Zx1gxec,13561
305
305
  cirq/ops/controlled_operation_test.py,sha256=hTqK6R0so-ZmZLcqS9xQl39ekNZ82UVYPbhmfbbh6vg,16699
306
- cirq/ops/dense_pauli_string.py,sha256=v4naX_wlHaXROIO-ONY5ZMYbqGijDlne3heafrLNE6U,24209
307
- cirq/ops/dense_pauli_string_test.py,sha256=Wh2YIpydze9GAxIDEPIo6YbdKxjvHLBoqAaVO-DqbmQ,22037
306
+ cirq/ops/dense_pauli_string.py,sha256=lfnSfRhwgNLBknXDm11FTpAULGOvw7jd4-r9IuB8v04,24211
307
+ cirq/ops/dense_pauli_string_test.py,sha256=XlGZuLw_O10hJPhg1EMuvgZd2lAFNF-QbYWl_qxUIAU,22321
308
308
  cirq/ops/diagonal_gate.py,sha256=HNMxcgKgfZ2ZcXGaPhcBp6yOwu_stpSN3_GtNeWnR5s,8909
309
309
  cirq/ops/diagonal_gate_test.py,sha256=JRQWrL4cEYzVjwal-EewyIPgThUwLdrE6f9i7ifd6Rk,6319
310
310
  cirq/ops/eigen_gate.py,sha256=OoUpOwHw6VZ2CpH0Qb-eQLD4c-cjj8wFwBr8NEc7C0g,17788
@@ -344,19 +344,19 @@ cirq/ops/op_tree_test.py,sha256=npk2P6asFc3Z-K_xQ0l9JNam4uBwWMZTGT8rDO5xUmQ,6104
344
344
  cirq/ops/parallel_gate.py,sha256=B6uwL0lPJLiv_TL62U4HGyv7FZn_CvljSUK7jKTuu-M,6257
345
345
  cirq/ops/parallel_gate_test.py,sha256=ruFdVnB8PS9LOPQLPZACdf0nh3l-sApQe9bk10EDBJI,6463
346
346
  cirq/ops/parity_gates.py,sha256=aBvAn-04K6PpcGGPbESqk2lbkPweiuHSJhK-Q1KUq84,14260
347
- cirq/ops/parity_gates_test.py,sha256=-hnUpof7lKrBz1i06wQ8H3RsIy03gFczaVq3xK8s-HY,11587
347
+ cirq/ops/parity_gates_test.py,sha256=z2i3qXtc1LBBFyYuoNFGONAXyFre9W7VzqYcqN0imTc,12509
348
348
  cirq/ops/pauli_gates.py,sha256=hXChuK9F56DEft2KHcMhjf6cPyEHHB5BKy10Dsk0FNM,6776
349
349
  cirq/ops/pauli_gates_test.py,sha256=YYzQBojxoZTM6WH7pD3PNwmQrIO6U7FTG6AaZ-6z-To,8334
350
350
  cirq/ops/pauli_interaction_gate.py,sha256=1drxD57PLCmp7dI9p5oDX2HPzsqwh0rrqHltUjtbWZU,5539
351
351
  cirq/ops/pauli_interaction_gate_test.py,sha256=9IGQjf4cRNe1EAsxVJjTMysoO2TxUhDlp-6lXJuAYD8,4643
352
352
  cirq/ops/pauli_measurement_gate.py,sha256=OzbQeMzr9cHQsai8K-usg3Il74o8gdXZLksLuYr8RcU,7113
353
353
  cirq/ops/pauli_measurement_gate_test.py,sha256=IDnbQgyaj-nbYw_sslPBccl8aRGTlMrADc_EEiAvluk,6929
354
- cirq/ops/pauli_string.py,sha256=FaigNkmYOizcxEEgV_sZyAxffG7_JnyB6fbbeUyTEqk,64071
354
+ cirq/ops/pauli_string.py,sha256=xKOfmvm4Kh2VhAYvdHMskjfCo07CwNfonxyv5_GFV_s,62611
355
355
  cirq/ops/pauli_string_phasor.py,sha256=5Tm_OoR_v44Kb3AQAw5XIxpcmKtompdbq5ZefYGEUmk,18207
356
356
  cirq/ops/pauli_string_phasor_test.py,sha256=ZIoraHH3kOFjtEfThXDS-sxUvSU8MYZ2avtdiPcyN6w,28309
357
357
  cirq/ops/pauli_string_raw_types.py,sha256=mBOAwfBT_y7yiSyC6Hr-ofLyIkjyOH5urmK-gitD3-Y,2226
358
358
  cirq/ops/pauli_string_raw_types_test.py,sha256=ZcOZ31KSVIc7ReZoO8WZEX8MOyPOhUWaYLppvGTE4-8,2761
359
- cirq/ops/pauli_string_test.py,sha256=i_SkDlRuoYB5AZZ-KW4aFJBHp14AzMXlx-ZIJzPkDT8,78278
359
+ cirq/ops/pauli_string_test.py,sha256=miI50nAuQ4fM7jKNR7JRNgvSlYmiOZKTbz4EIMqNdlA,79568
360
360
  cirq/ops/pauli_sum_exponential.py,sha256=Zq8YBMZ7sLLEPQuoX4uR95I9VY4C38Ma8FtOEjQGr3k,4861
361
361
  cirq/ops/pauli_sum_exponential_test.py,sha256=u9fVBUMuiIb6xOPC2GRTR3zFUeO6N3vanejUk5_u9_8,5485
362
362
  cirq/ops/permutation_gate.py,sha256=mTCKrLSNP3nm2hPebfBJNR5mHO6qb1ZqDT3pFA0zM_M,4218
@@ -378,7 +378,7 @@ cirq/ops/qubit_order_or_list.py,sha256=5kChRv1gUnBKB-kF6okXoXcCa5CXbJ6HoB6ETpfl3
378
378
  cirq/ops/qubit_order_test.py,sha256=8uOW9oLLQcjbYvd2DdXZLCbRS2sJuH6b8Bal3SgPo5M,4372
379
379
  cirq/ops/random_gate_channel.py,sha256=i4eg9GA4CF6ZWQRrICa5lfYqvdZzN8oLEWwXHcxRStM,5115
380
380
  cirq/ops/random_gate_channel_test.py,sha256=p-xtDOMIYBJ1wVHLJmrALi-ZU978l3AVuX0kgoan1Ac,8523
381
- cirq/ops/raw_types.py,sha256=T90X1zF5B0aJVHDw8JVCv7VwZDeiLejcUQhQwC_RAOE,43414
381
+ cirq/ops/raw_types.py,sha256=OcRK1pv5k9f14R2z920Wg0mqV114iPGaJNuVF2T7Ilk,43836
382
382
  cirq/ops/raw_types_test.py,sha256=CoooLVSYidx1QkAFWJM4gNbs3CwkHHtVKE8HW6gPAxs,35408
383
383
  cirq/ops/state_preparation_channel.py,sha256=3qbqrrYaVN2eHL1qiBHcItj1Pzjxhtq10tSEkRz9GNM,4781
384
384
  cirq/ops/state_preparation_channel_test.py,sha256=xFi6nOFPoQatxvnorCXujmhMvtf65lmyFfxbGlTKo4c,6039
@@ -1234,8 +1234,8 @@ cirq/work/sampler.py,sha256=rxbMWvrhu3gfNSBjZKozw28lLKVvBAS_1EGyPdYe8Xg,19041
1234
1234
  cirq/work/sampler_test.py,sha256=SsMrRvLDYELyOAWLKISjkdEfrBwLYWRsT6D8WrsLM3Q,13533
1235
1235
  cirq/work/zeros_sampler.py,sha256=Fs2JWwq0n9zv7_G5Rm-9vPeHUag7uctcMOHg0JTkZpc,2371
1236
1236
  cirq/work/zeros_sampler_test.py,sha256=lQLgQDGBLtfImryys2HzQ2jOSGxHgc7-koVBUhv8qYk,3345
1237
- cirq_core-1.7.0.dev20250904220130.dist-info/licenses/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
1238
- cirq_core-1.7.0.dev20250904220130.dist-info/METADATA,sha256=svvgQ0fsioqphfBNXLFiosRPv0tJdsyQ_yJf1JnmUyY,4758
1239
- cirq_core-1.7.0.dev20250904220130.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
1240
- cirq_core-1.7.0.dev20250904220130.dist-info/top_level.txt,sha256=Sz9iOxHU0IEMLSFGwiwOCaN2e9K-jFbBbtpPN1hB73g,5
1241
- cirq_core-1.7.0.dev20250904220130.dist-info/RECORD,,
1237
+ cirq_core-1.7.0.dev20250905003713.dist-info/licenses/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
1238
+ cirq_core-1.7.0.dev20250905003713.dist-info/METADATA,sha256=PDoADT3dkGaaQErbjm8gobHac_uGwoJVyeN8BdUP6fc,4758
1239
+ cirq_core-1.7.0.dev20250905003713.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
1240
+ cirq_core-1.7.0.dev20250905003713.dist-info/top_level.txt,sha256=Sz9iOxHU0IEMLSFGwiwOCaN2e9K-jFbBbtpPN1hB73g,5
1241
+ cirq_core-1.7.0.dev20250905003713.dist-info/RECORD,,