cirq-core 1.5.0.dev20250407181219__py3-none-any.whl → 1.5.0.dev20250407210732__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.dev20250407181219"
31
+ __version__ = "1.5.0.dev20250407210732"
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.dev20250407181219"
6
+ assert cirq.__version__ == "1.5.0.dev20250407210732"
cirq/ops/common_gates.py CHANGED
@@ -289,9 +289,7 @@ class XPowGate(eigen_gate.EigenGate):
289
289
 
290
290
  def _phase_by_(self, phase_turns, qubit_index):
291
291
  """See `cirq.SupportsPhase`."""
292
- return cirq.ops.phased_x_gate.PhasedXPowGate(
293
- exponent=self._exponent, phase_exponent=phase_turns * 2
294
- )
292
+ return _phased_x_or_pauli_gate(exponent=self._exponent, phase_exponent=phase_turns * 2)
295
293
 
296
294
  def _has_stabilizer_effect_(self) -> Optional[bool]:
297
295
  if self._is_parameterized_() or self._dimension != 2:
@@ -484,7 +482,7 @@ class YPowGate(eigen_gate.EigenGate):
484
482
 
485
483
  def _phase_by_(self, phase_turns, qubit_index):
486
484
  """See `cirq.SupportsPhase`."""
487
- return cirq.ops.phased_x_gate.PhasedXPowGate(
485
+ return _phased_x_or_pauli_gate(
488
486
  exponent=self._exponent, phase_exponent=0.5 + phase_turns * 2
489
487
  )
490
488
 
@@ -1542,3 +1540,17 @@ document(
1542
1540
  $$
1543
1541
  """,
1544
1542
  )
1543
+
1544
+
1545
+ def _phased_x_or_pauli_gate(
1546
+ exponent: Union[float, sympy.Expr], phase_exponent: Union[float, sympy.Expr]
1547
+ ) -> Union['cirq.PhasedXPowGate', 'cirq.XPowGate', 'cirq.YPowGate']:
1548
+ """Return PhasedXPowGate or X or Y gate if equivalent at the given phase_exponent."""
1549
+ if not isinstance(phase_exponent, sympy.Expr) or phase_exponent.is_constant():
1550
+ half_turns = value.canonicalize_half_turns(float(phase_exponent))
1551
+ match half_turns:
1552
+ case 0.0:
1553
+ return XPowGate(exponent=exponent)
1554
+ case 0.5:
1555
+ return YPowGate(exponent=exponent)
1556
+ return cirq.ops.PhasedXPowGate(exponent=exponent, phase_exponent=phase_exponent)
cirq/ops/phased_x_gate.py CHANGED
@@ -24,10 +24,10 @@ import sympy
24
24
  import cirq
25
25
  from cirq import protocols, value
26
26
  from cirq._compat import proper_repr
27
- from cirq.ops import common_gates, raw_types
27
+ from cirq.ops import raw_types
28
28
 
29
29
 
30
- @value.value_equality(manual_cls=True, approximate=True)
30
+ @value.value_equality(approximate=True)
31
31
  class PhasedXPowGate(raw_types.Gate):
32
32
  r"""A gate equivalent to $Z^{-p} X^t Z^{p}$ (in time order).
33
33
 
@@ -241,22 +241,7 @@ class PhasedXPowGate(raw_types.Gate):
241
241
 
242
242
  return self._exponent % period
243
243
 
244
- def _value_equality_values_cls_(self):
245
- if self.phase_exponent == 0:
246
- return common_gates.XPowGate
247
- if self.phase_exponent == 0.5:
248
- return common_gates.YPowGate
249
- return PhasedXPowGate
250
-
251
244
  def _value_equality_values_(self):
252
- if self.phase_exponent == 0:
253
- return common_gates.XPowGate(
254
- exponent=self._exponent, global_shift=self._global_shift
255
- )._value_equality_values_()
256
- if self.phase_exponent == 0.5:
257
- return common_gates.YPowGate(
258
- exponent=self._exponent, global_shift=self._global_shift
259
- )._value_equality_values_()
260
245
  return self.phase_exponent, self._canonical_exponent, self._global_shift
261
246
 
262
247
  def _json_dict_(self) -> Dict[str, Any]:
@@ -79,16 +79,17 @@ def test_eq():
79
79
  cirq.PhasedXPowGate(exponent=1, phase_exponent=0),
80
80
  cirq.PhasedXPowGate(exponent=1, phase_exponent=2),
81
81
  cirq.PhasedXPowGate(exponent=1, phase_exponent=-2),
82
- cirq.X,
83
82
  )
83
+ eq.add_equality_group(cirq.X)
84
84
  eq.add_equality_group(cirq.PhasedXPowGate(exponent=1, phase_exponent=2, global_shift=0.1))
85
85
 
86
86
  eq.add_equality_group(
87
87
  cirq.PhasedXPowGate(phase_exponent=0.5, exponent=1),
88
88
  cirq.PhasedXPowGate(phase_exponent=2.5, exponent=3),
89
- cirq.Y,
90
89
  )
91
- eq.add_equality_group(cirq.PhasedXPowGate(phase_exponent=0.5, exponent=0.25), cirq.Y**0.25)
90
+ eq.add_equality_group(cirq.Y)
91
+ eq.add_equality_group(cirq.PhasedXPowGate(phase_exponent=0.5, exponent=0.25))
92
+ eq.add_equality_group(cirq.Y**0.25)
92
93
 
93
94
  eq.add_equality_group(cirq.PhasedXPowGate(phase_exponent=0.25, exponent=0.25, global_shift=0.1))
94
95
  eq.add_equality_group(cirq.PhasedXPowGate(phase_exponent=2.25, exponent=0.25, global_shift=0.2))
@@ -266,3 +267,18 @@ def test_exponent_consistency(exponent, phase_exponent):
266
267
  u = cirq.protocols.unitary(g)
267
268
  u2 = cirq.protocols.unitary(g2)
268
269
  assert np.all(u == u2)
270
+
271
+
272
+ def test_approx_eq_for_close_phase_exponents():
273
+ gate1 = cirq.PhasedXPowGate(phase_exponent=0)
274
+ gate2 = cirq.PhasedXPowGate(phase_exponent=1e-12)
275
+ gate3 = cirq.PhasedXPowGate(phase_exponent=2e-12)
276
+ gate4 = cirq.PhasedXPowGate(phase_exponent=0.345)
277
+
278
+ assert cirq.approx_eq(gate2, gate3)
279
+ assert cirq.approx_eq(gate2, gate1)
280
+ assert not cirq.approx_eq(gate2, gate4)
281
+
282
+ assert cirq.equal_up_to_global_phase(gate2, gate3)
283
+ assert cirq.equal_up_to_global_phase(gate2, gate1)
284
+ assert not cirq.equal_up_to_global_phase(gate2, gate4)
@@ -14,7 +14,7 @@
14
14
 
15
15
  """Transformer pass that pushes 180° rotations around axes in the XY plane later in the circuit."""
16
16
 
17
- from typing import cast, Dict, Iterable, Iterator, Optional, Tuple, TYPE_CHECKING
17
+ from typing import cast, Dict, Iterable, Iterator, Optional, Tuple, TYPE_CHECKING, Union
18
18
 
19
19
  import numpy as np
20
20
  import sympy
@@ -63,7 +63,7 @@ def eject_phased_paulis(
63
63
  def map_func(op: 'cirq.Operation', _: int) -> 'cirq.OP_TREE':
64
64
  # Dump if `op` marked with a no compile tag.
65
65
  if set(op.tags) & tags_to_ignore:
66
- return [_dump_held(op.qubits, held_w_phases), op]
66
+ return [_dump_held(op.qubits, held_w_phases, atol), op]
67
67
 
68
68
  # Collect, phase, and merge Ws.
69
69
  w = _try_get_known_phased_pauli(op, no_symbolic=not eject_parameterized)
@@ -71,7 +71,7 @@ def eject_phased_paulis(
71
71
  return (
72
72
  _potential_cross_whole_w(op, atol, held_w_phases)
73
73
  if single_qubit_decompositions.is_negligible_turn((w[0] - 1) / 2, atol)
74
- else _potential_cross_partial_w(op, held_w_phases)
74
+ else _potential_cross_partial_w(op, held_w_phases, atol)
75
75
  )
76
76
 
77
77
  affected = [q for q in op.qubits if q in held_w_phases]
@@ -96,12 +96,12 @@ def eject_phased_paulis(
96
96
  )
97
97
 
98
98
  # Don't know how to handle this situation. Dump the gates.
99
- return [_dump_held(op.qubits, held_w_phases), op]
99
+ return [_dump_held(op.qubits, held_w_phases, atol), op]
100
100
 
101
101
  # Map operations and put anything that's still held at the end of the circuit.
102
102
  return circuits.Circuit(
103
103
  transformer_primitives.map_operations_and_unroll(circuit, map_func),
104
- _dump_held(held_w_phases.keys(), held_w_phases),
104
+ _dump_held(held_w_phases.keys(), held_w_phases, atol),
105
105
  )
106
106
 
107
107
 
@@ -127,14 +127,14 @@ def _absorb_z_into_w(
127
127
 
128
128
 
129
129
  def _dump_held(
130
- qubits: Iterable[ops.Qid], held_w_phases: Dict[ops.Qid, value.TParamVal]
130
+ qubits: Iterable[ops.Qid], held_w_phases: Dict[ops.Qid, value.TParamVal], atol: float
131
131
  ) -> Iterator['cirq.OP_TREE']:
132
132
  # Note: sorting is to avoid non-determinism in the insertion order.
133
133
  for q in sorted(qubits):
134
134
  p = held_w_phases.get(q)
135
135
  if p is not None:
136
- dump_op = ops.PhasedXPowGate(phase_exponent=p).on(q)
137
- yield dump_op
136
+ gate = _phased_x_or_pauli_gate(exponent=1.0, phase_exponent=p, atol=atol)
137
+ yield gate.on(q)
138
138
  held_w_phases.pop(q, None)
139
139
 
140
140
 
@@ -184,7 +184,7 @@ def _potential_cross_whole_w(
184
184
 
185
185
 
186
186
  def _potential_cross_partial_w(
187
- op: ops.Operation, held_w_phases: Dict[ops.Qid, value.TParamVal]
187
+ op: ops.Operation, held_w_phases: Dict[ops.Qid, value.TParamVal], atol: float
188
188
  ) -> 'cirq.OP_TREE':
189
189
  """Cross the held W over a partial W gate.
190
190
 
@@ -204,10 +204,10 @@ def _potential_cross_partial_w(
204
204
  exponent, phase_exponent = cast(
205
205
  Tuple[value.TParamVal, value.TParamVal], _try_get_known_phased_pauli(op)
206
206
  )
207
- new_op = ops.PhasedXPowGate(exponent=exponent, phase_exponent=2 * a - phase_exponent).on(
208
- op.qubits[0]
207
+ gate = _phased_x_or_pauli_gate(
208
+ exponent=exponent, phase_exponent=2 * a - phase_exponent, atol=atol
209
209
  )
210
- return new_op
210
+ return gate.on(op.qubits[0])
211
211
 
212
212
 
213
213
  def _single_cross_over_cz(op: ops.Operation, qubit_with_w: 'cirq.Qid') -> 'cirq.OP_TREE':
@@ -351,3 +351,16 @@ def _try_get_known_z_half_turns(
351
351
  if no_symbolic and isinstance(h, sympy.Basic):
352
352
  return None
353
353
  return h
354
+
355
+
356
+ def _phased_x_or_pauli_gate(
357
+ exponent: Union[float, sympy.Expr], phase_exponent: Union[float, sympy.Expr], atol: float
358
+ ) -> Union['cirq.PhasedXPowGate', 'cirq.XPowGate', 'cirq.YPowGate']:
359
+ """Return PhasedXPowGate or X or Y gate if equivalent within atol in z-axis turns."""
360
+ if not isinstance(phase_exponent, sympy.Expr) or phase_exponent.is_constant():
361
+ half_turns = value.canonicalize_half_turns(float(phase_exponent))
362
+ if abs(half_turns / 2) <= atol:
363
+ return ops.XPowGate(exponent=exponent)
364
+ if abs((half_turns - 0.5) / 2) <= atol:
365
+ return ops.YPowGate(exponent=exponent)
366
+ return ops.PhasedXPowGate(exponent=exponent, phase_exponent=phase_exponent)
@@ -212,11 +212,7 @@ def test_crosses_czs():
212
212
  [cirq.CZ(a, b) ** 0.25],
213
213
  ),
214
214
  expected=quick_circuit(
215
- [cirq.CZ(a, b) ** 0.25],
216
- [
217
- cirq.PhasedXPowGate(phase_exponent=0.5).on(b),
218
- cirq.PhasedXPowGate(phase_exponent=0.25).on(a),
219
- ],
215
+ [cirq.CZ(a, b) ** 0.25], [cirq.Y(b), cirq.PhasedXPowGate(phase_exponent=0.25).on(a)]
220
216
  ),
221
217
  )
222
218
  assert_optimizes(
@@ -387,8 +383,7 @@ def test_phases_partial_ws():
387
383
  assert_optimizes(
388
384
  before=quick_circuit([cirq.PhasedXPowGate(phase_exponent=0.25).on(q)], [cirq.X(q) ** 0.5]),
389
385
  expected=quick_circuit(
390
- [cirq.PhasedXPowGate(phase_exponent=0.5, exponent=0.5).on(q)],
391
- [cirq.PhasedXPowGate(phase_exponent=0.25).on(q)],
386
+ [cirq.Y(q) ** 0.5], [cirq.PhasedXPowGate(phase_exponent=0.25).on(q)]
392
387
  ),
393
388
  )
394
389
 
@@ -51,10 +51,10 @@ def assert_optimizes(
51
51
  cirq.Moment(cirq.CircuitOperation(before.freeze()).repeat(3).with_tags("preserve_tag")),
52
52
  )
53
53
  c_expected = cirq.Circuit(
54
- cirq.PhasedXPowGate(phase_exponent=0, exponent=0.25).on_each(*q),
54
+ (cirq.X**0.25).on_each(*q),
55
55
  (cirq.Z**0.5).on_each(*q),
56
56
  cirq.Moment(cirq.CircuitOperation(before.freeze()).repeat(2).with_tags("ignore")),
57
- cirq.PhasedXPowGate(phase_exponent=0, exponent=0.25).on_each(*q),
57
+ (cirq.X**0.25).on_each(*q),
58
58
  (cirq.Z**0.5).on_each(*q),
59
59
  cirq.Moment(cirq.CircuitOperation(expected.freeze()).repeat(3).with_tags("preserve_tag")),
60
60
  )
@@ -45,7 +45,7 @@ def test_merge_single_qubit_gates_to_phased_x_and_z():
45
45
  optimized=cirq.merge_single_qubit_gates_to_phased_x_and_z(c),
46
46
  expected=cirq.Circuit(
47
47
  cirq.PhasedXPowGate(phase_exponent=1)(a),
48
- cirq.Y(b) ** 0.5,
48
+ cirq.PhasedXPowGate(phase_exponent=0.5)(b) ** 0.5,
49
49
  cirq.CZ(a, b),
50
50
  (cirq.PhasedXPowGate(phase_exponent=-0.5)(a)) ** 0.5,
51
51
  cirq.measure(b, key="m"),
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cirq-core
3
- Version: 1.5.0.dev20250407181219
3
+ Version: 1.5.0.dev20250407210732
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=0m3sYIyxRNv9jvAo6rzJ-cnbpny3KGnAByrbU7bApgQ,34720
4
4
  cirq/_doc.py,sha256=yDyWUD_2JDS0gShfGRb-rdqRt9-WeL7DhkqX7np0Nko,2879
5
5
  cirq/_import.py,sha256=cfocxtT1BJ4HkfZ-VO8YyIhPP-xfqHDkLrzz6eeO5U0,8421
6
6
  cirq/_import_test.py,sha256=6K_v0riZJXOXUphHNkGA8MY-JcmGlezFaGmvrNhm3OQ,1015
7
- cirq/_version.py,sha256=MyGQ-o7IKqBwsxuTth4PeWd2oBtT9wPBZM51k57b0tk,1206
8
- cirq/_version_test.py,sha256=GVxoelvoMO8ztKn9z0Xn5W8PqWPb0IN-zaybP4Bq7k8,147
7
+ cirq/_version.py,sha256=XNJPC2YqEByjqq7QB_SY0Biz1p6Vz68JiL_vG-Ii0xw,1206
8
+ cirq/_version_test.py,sha256=RLpRiRXwv5_4NRx-ObmveVFG10t-vOFIJO5XFgmigFE,147
9
9
  cirq/conftest.py,sha256=X7yLFL8GLhg2CjPw0hp5e_dGASfvHx1-QT03aUbhKJw,1168
10
10
  cirq/json_resolver_cache.py,sha256=YVamU72nCUT5dG0bhAvRKVX5lXcZMNTwP3H36v-cYag,13615
11
11
  cirq/py.typed,sha256=VFSlmh_lNwnaXzwY-ZuW-C2Ws5PkuDoVgBdNCs0jXJE,63
@@ -280,7 +280,7 @@ cirq/ops/common_channels.py,sha256=lGDOSdstoK57DingL-lo2n49-a51MshhJOl4LOcpQfg,3
280
280
  cirq/ops/common_channels_test.py,sha256=nQsSSxu7vtedb3ZUuw4hNKIX7MYI4x8lxvLyWMZNt10,30079
281
281
  cirq/ops/common_gate_families.py,sha256=2E31Qr_Yv1zI-r_MNWmr1xJYrEHHU45274iDrt_oKPE,8611
282
282
  cirq/ops/common_gate_families_test.py,sha256=bEF6Q6GtEOTc9kHM5WC1UIULPGnMPXdtm8gzLT_aNBI,5276
283
- cirq/ops/common_gates.py,sha256=nZ5gOd4JPnq7k6jrnNILacMnG-43OzdQQj5W1Vw5JKI,57846
283
+ cirq/ops/common_gates.py,sha256=WFNrvxaHQdfS_2sm0-Kuq4VaH-qcgbJOFi2_PBecBX0,58481
284
284
  cirq/ops/common_gates_test.py,sha256=bASPqAkuN92Ij3CCAVwOftL0heIu3J5VPcCtmm6nVU0,46873
285
285
  cirq/ops/control_values.py,sha256=Loi_voLNOzPJpjD6AnQz8JrqJLOAUe0jvV3XB_0tTGE,13430
286
286
  cirq/ops/control_values_test.py,sha256=K8tbKM6b6PqMEL_lHLFzdrnWF1SkLN0Scft6YMT7FlE,12907
@@ -348,8 +348,8 @@ cirq/ops/permutation_gate.py,sha256=2h8n76N2M3nu5MA8JkRQgVLByq5cOEluKUN042ClSRs,
348
348
  cirq/ops/permutation_gate_test.py,sha256=qroZ88JYhSU6rxuQsJ2pS2XqPFJ1BGvXYVy3cnpUc9k,3281
349
349
  cirq/ops/phased_iswap_gate.py,sha256=Q-1PuSc4F3gsZL9UUN8EgrO31Ix6mA-7HoUIndvePbk,8990
350
350
  cirq/ops/phased_iswap_gate_test.py,sha256=tB1MqH8Y0Kgr0QIxs1kq1yl2g0mKYI7Q_AaadBhFe2U,7360
351
- cirq/ops/phased_x_gate.py,sha256=jSXLaDpAB3JqHsy-xuMQN3WEgFsPyyL8043oiQCujCw,9980
352
- cirq/ops/phased_x_gate_test.py,sha256=IpY-Z-MsqtYbyIEdxWu1NqgAJF2B7nddxPc2Hxafr4s,10202
351
+ cirq/ops/phased_x_gate.py,sha256=ykYG1wxKh1649B9V1vJPOUsE5Z3hmm5t0sa9mCdn530,9331
352
+ cirq/ops/phased_x_gate_test.py,sha256=g_qbhl2OesKgXkzECv-7FJPMlOBzv9-AzkVZgfflxbE,10821
353
353
  cirq/ops/phased_x_z_gate.py,sha256=E96p1za5rN3Q2jwOfV1HWnkvb9mcxdV9ZaV8FzcpJHE,11518
354
354
  cirq/ops/phased_x_z_gate_test.py,sha256=KK5-FD5zoaqZkw7p6UKxFddzaFWoxnQnE8LpCiKtIk8,10690
355
355
  cirq/ops/projector.py,sha256=y3ignrYFmthdPm_pjJ0Y0xp8SGPviqcT07Y9KEZ231Y,5646
@@ -1052,10 +1052,10 @@ cirq/transformers/drop_negligible_operations.py,sha256=pd9fkVRrP4TX7MxwKfmFPiwuv
1052
1052
  cirq/transformers/drop_negligible_operations_test.py,sha256=gqL6RoDPm6Zf4RxtprBenFyIsZQPUxmPur9oRl0Yr3U,3823
1053
1053
  cirq/transformers/dynamical_decoupling.py,sha256=dIh5mgE8OKA6RDBvWW4MDbTzs2R-lG1QDc6QHa6ppMc,14700
1054
1054
  cirq/transformers/dynamical_decoupling_test.py,sha256=7iPpgEgA6pZ_x6we8JnqwIzTUrg-IN6ItK8Fp1kIw0Q,44692
1055
- cirq/transformers/eject_phased_paulis.py,sha256=UtPXH0-RFFfyhli3zoyYVJ7v4bJJyi-LJhiOHB4xwnE,13976
1056
- cirq/transformers/eject_phased_paulis_test.py,sha256=8060yn2XILik6V3kBPH4BcwoWkWuQEtQ6vDUo5IbObo,15834
1055
+ cirq/transformers/eject_phased_paulis.py,sha256=zOvCiSXKBNex-zWB8BnhiIY8E34Za8XvnNSMmN3BCu4,14780
1056
+ cirq/transformers/eject_phased_paulis_test.py,sha256=nALOTD4leNU8RBsjdyzTsrqOFZR6h2Z56SiWebmXM4Q,15682
1057
1057
  cirq/transformers/eject_z.py,sha256=Ja5lU8RMSSrnUr8n8_15Miqruq4L-Y-r4x6jB3rwCUU,5824
1058
- cirq/transformers/eject_z_test.py,sha256=P1NLIU3-gavB6_Dcy2KYVuf9bGuAHhDn8iftQKMIdQw,13302
1058
+ cirq/transformers/eject_z_test.py,sha256=f0H_oxe-whPlrrg7vaHRmjVWoRIyh_xuvVk3WjxuzhQ,13226
1059
1059
  cirq/transformers/expand_composite.py,sha256=nASRoP4qfjsnX_t2a2hBw8BE7B_JD-0XLGIIXxbIdbc,2387
1060
1060
  cirq/transformers/expand_composite_test.py,sha256=4Gn6LVqr0DeuUumde80O4esOLGIoo86_S_Mk-HwnMfk,8640
1061
1061
  cirq/transformers/insertion_sort.py,sha256=biwPNET6LlFnnzzHks1pjQda7OMNRnzwNQjYYJVL820,2612
@@ -1065,7 +1065,7 @@ cirq/transformers/measurement_transformers_test.py,sha256=VXXqJIfXJcduJXXXz0_yq7
1065
1065
  cirq/transformers/merge_k_qubit_gates.py,sha256=c6F33qJeTlwRxneNkgcQoLFgR7MyiY1yaTEfV12A_hM,4390
1066
1066
  cirq/transformers/merge_k_qubit_gates_test.py,sha256=k_ROZvUebHgPy5vsNnWNMBYU4kfIkrunPsw39ZngMwo,13920
1067
1067
  cirq/transformers/merge_single_qubit_gates.py,sha256=TFlW-iZuUnlGTsnj6BI_z8P16ZkZbHUi69iHyi-0HPs,5826
1068
- cirq/transformers/merge_single_qubit_gates_test.py,sha256=SWf1Il7Bz0iUCDM7JoDG2Yxe4p2yYr2PgViQpjByFm0,9914
1068
+ cirq/transformers/merge_single_qubit_gates_test.py,sha256=O0my-DZ_KdBZn1ACf_TDgdlsYdf4b46C_6ov6vWJHBM,9947
1069
1069
  cirq/transformers/noise_adding.py,sha256=UPqLAqXxeDkj0HeYGhFE6oCKGRdT7mQOA60UbUH9zl4,4440
1070
1070
  cirq/transformers/noise_adding_test.py,sha256=8bTcxE4oiqmZ3H1QJhjP_VImdBVpmdI1b9dxQ-Mz-Pk,2135
1071
1071
  cirq/transformers/optimize_for_target_gateset.py,sha256=Kawt_ltBP7DX0Wo-f4U6_lEDGfSfCDYU_Qj5mvHdM7k,7229
@@ -1209,8 +1209,8 @@ cirq/work/sampler.py,sha256=sW0RhIelGABAKbqTM58shwyyCPgf86JIv9IGdJe__js,19186
1209
1209
  cirq/work/sampler_test.py,sha256=mdk1J-WrvbPUYhY41VhWf9_te4DnXr_XMPcugWwc4-I,13281
1210
1210
  cirq/work/zeros_sampler.py,sha256=8_Ne6dBkDANtTZuql7Eb0Qg_E_P3-_gu-ybFzxTbKAQ,2356
1211
1211
  cirq/work/zeros_sampler_test.py,sha256=JIkpBBFPJe5Ba4142vzogyWyboG1Q1ZAm0UVGgOoZn8,3279
1212
- cirq_core-1.5.0.dev20250407181219.dist-info/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
1213
- cirq_core-1.5.0.dev20250407181219.dist-info/METADATA,sha256=-egJJRYxY24ejJGZnIMkjDSQZelk9rcridbBU3eytMg,4584
1214
- cirq_core-1.5.0.dev20250407181219.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
1215
- cirq_core-1.5.0.dev20250407181219.dist-info/top_level.txt,sha256=Sz9iOxHU0IEMLSFGwiwOCaN2e9K-jFbBbtpPN1hB73g,5
1216
- cirq_core-1.5.0.dev20250407181219.dist-info/RECORD,,
1212
+ cirq_core-1.5.0.dev20250407210732.dist-info/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
1213
+ cirq_core-1.5.0.dev20250407210732.dist-info/METADATA,sha256=sro4XuCo8p2N2qcMWQCqv2nEy8DaboIXqxZGtyTBk3M,4584
1214
+ cirq_core-1.5.0.dev20250407210732.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
1215
+ cirq_core-1.5.0.dev20250407210732.dist-info/top_level.txt,sha256=Sz9iOxHU0IEMLSFGwiwOCaN2e9K-jFbBbtpPN1hB73g,5
1216
+ cirq_core-1.5.0.dev20250407210732.dist-info/RECORD,,