cirq-core 1.6.0.dev20250617235202__py3-none-any.whl → 1.6.0.dev20250623075308__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.6.0.dev20250617235202"
31
+ __version__ = "1.6.0.dev20250623075308"
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.6.0.dev20250617235202"
6
+ assert cirq.__version__ == "1.6.0.dev20250623075308"
@@ -653,7 +653,7 @@ def test_tagged_operation_forwards_protocols() -> None:
653
653
  np.testing.assert_equal(cirq.unitary(tagged_h), cirq.unitary(h))
654
654
  assert cirq.has_unitary(tagged_h)
655
655
  assert cirq.decompose(tagged_h) == cirq.decompose(h)
656
- assert [*tagged_h._decompose_()] == cirq.decompose(h)
656
+ assert [*tagged_h._decompose_()] == cirq.decompose_once(h)
657
657
  assert cirq.pauli_expansion(tagged_h) == cirq.pauli_expansion(h)
658
658
  assert cirq.equal_up_to_global_phase(h, tagged_h)
659
659
  assert np.isclose(cirq.kraus(h), cirq.kraus(tagged_h)).all()
@@ -22,7 +22,6 @@ from typing import Any, cast, Iterable, TypeVar
22
22
  import numpy as np
23
23
  from typing_extensions import Protocol
24
24
 
25
- from cirq import linalg
26
25
  from cirq._doc import doc_private
27
26
  from cirq.protocols import qid_shape_protocol
28
27
  from cirq.protocols.apply_unitary_protocol import apply_unitary, ApplyUnitaryArgs
@@ -332,32 +331,6 @@ def _apply_unitary_strat(
332
331
  return right_result
333
332
 
334
333
 
335
- def _apply_unitary_from_matrix_strat(
336
- val: np.ndarray, args: ApplyMixtureArgs, is_density_matrix: bool
337
- ) -> np.ndarray | None:
338
- """Used to enact mixture tuples that are given as (probability, np.ndarray)
339
-
340
- If `val` does not support `apply_unitary` returns None.
341
- """
342
- qid_shape = tuple(args.target_tensor.shape[i] for i in args.left_axes)
343
- matrix_tensor = np.reshape(val.astype(args.target_tensor.dtype), qid_shape * 2)
344
- linalg.targeted_left_multiply(
345
- matrix_tensor, args.target_tensor, args.left_axes, out=args.auxiliary_buffer0
346
- )
347
-
348
- if not is_density_matrix:
349
- return args.auxiliary_buffer0
350
- # No need to transpose as we are acting on the tensor
351
- # representation of matrix, so transpose is done for us.
352
- linalg.targeted_left_multiply(
353
- np.conjugate(matrix_tensor),
354
- args.auxiliary_buffer0,
355
- cast(tuple[int], args.right_axes),
356
- out=args.target_tensor,
357
- )
358
- return args.target_tensor
359
-
360
-
361
334
  def _apply_mixture_from_mixture_strat(
362
335
  val: Any, args: ApplyMixtureArgs, is_density_matrix: bool
363
336
  ) -> np.ndarray | None:
@@ -373,8 +346,6 @@ def _apply_mixture_from_mixture_strat(
373
346
  for prob, op in prob_mix:
374
347
  np.copyto(dst=args.target_tensor, src=args.auxiliary_buffer1)
375
348
  right_result = _apply_unitary_strat(op, args, is_density_matrix)
376
- if right_result is None:
377
- right_result = _apply_unitary_from_matrix_strat(op, args, is_density_matrix)
378
349
 
379
350
  args.out_buffer += prob * right_result
380
351
 
@@ -469,15 +469,20 @@ def _apply_unitary_from_matrix(matrix: np.ndarray, unitary_value: Any, args: App
469
469
  def _strat_apply_unitary_from_unitary(
470
470
  unitary_value: Any, args: ApplyUnitaryArgs
471
471
  ) -> np.ndarray | None:
472
- # Check for magic method.
473
- method = getattr(unitary_value, '_unitary_', None)
474
- if method is None:
475
- return NotImplemented
476
-
477
- # Attempt to get the unitary matrix.
478
- matrix = method()
479
- if matrix is NotImplemented or matrix is None:
480
- return matrix
472
+ if isinstance(unitary_value, np.ndarray):
473
+ matrix = unitary_value
474
+ if not linalg.is_unitary(matrix):
475
+ return None
476
+ else:
477
+ # Check for magic method.
478
+ method = getattr(unitary_value, '_unitary_', None)
479
+ if method is None:
480
+ return NotImplemented
481
+
482
+ # Attempt to get the unitary matrix.
483
+ matrix = method()
484
+ if matrix is NotImplemented or matrix is None:
485
+ return matrix
481
486
 
482
487
  return _apply_unitary_from_matrix(matrix, unitary_value, args)
483
488
 
@@ -56,12 +56,13 @@ def test_apply_unitary_presence_absence():
56
56
  args.target_tensor[one] *= -1
57
57
  return args.target_tensor
58
58
 
59
- fails = [NoUnitaryEffect(), HasApplyReturnsNotImplemented()]
59
+ fails = [NoUnitaryEffect(), HasApplyReturnsNotImplemented(), m * 2]
60
60
  passes = [
61
61
  HasUnitary(),
62
62
  HasApplyReturnsNotImplementedButHasUnitary(),
63
63
  HasApplyOutputInBuffer(),
64
64
  HasApplyMutateInline(),
65
+ m,
65
66
  ]
66
67
 
67
68
  def make_input():
@@ -19,7 +19,7 @@ from typing import Any, TypeVar
19
19
  import numpy as np
20
20
  from typing_extensions import Protocol
21
21
 
22
- from cirq import qis
22
+ from cirq import linalg, qis
23
23
  from cirq._doc import doc_private
24
24
  from cirq.protocols import qid_shape_protocol
25
25
  from cirq.protocols.apply_unitary_protocol import ApplyUnitaryArgs
@@ -112,6 +112,8 @@ def has_unitary(val: Any, *, allow_decompose: bool = True) -> bool:
112
112
 
113
113
  def _strat_has_unitary_from_has_unitary(val: Any) -> bool | None:
114
114
  """Attempts to infer a value's unitary-ness via its _has_unitary_ method."""
115
+ if isinstance(val, np.ndarray):
116
+ return linalg.is_unitary(val)
115
117
  if hasattr(val, '_has_unitary_'):
116
118
  result = val._has_unitary_()
117
119
  if result is NotImplemented:
@@ -61,10 +61,13 @@ def test_via_unitary() -> None:
61
61
  def _unitary_(self):
62
62
  return np.array([[1]])
63
63
 
64
+ m = np.diag([1, -1])
64
65
  assert not cirq.has_unitary(No1())
65
66
  assert not cirq.has_unitary(No2())
67
+ assert not cirq.has_unitary(m * 2)
66
68
  assert cirq.has_unitary(Yes())
67
69
  assert cirq.has_unitary(Yes(), allow_decompose=False)
70
+ assert cirq.has_unitary(m)
68
71
 
69
72
 
70
73
  def test_via_apply_unitary() -> None:
@@ -148,9 +148,7 @@ def kraus(
148
148
  mixture_getter = getattr(val, '_mixture_', None)
149
149
  mixture_result = NotImplemented if mixture_getter is None else mixture_getter()
150
150
  if mixture_result is not NotImplemented and mixture_result is not None:
151
- return tuple(
152
- np.sqrt(p) * (u if isinstance(u, np.ndarray) else unitary(u)) for p, u in mixture_result
153
- )
151
+ return tuple(np.sqrt(p) * unitary(u) for p, u in mixture_result)
154
152
 
155
153
  unitary_getter = getattr(val, '_unitary_', None)
156
154
  unitary_result = NotImplemented if unitary_getter is None else unitary_getter()
@@ -94,7 +94,7 @@ def mixture(
94
94
  mixture_getter = getattr(val, '_mixture_', None)
95
95
  result = NotImplemented if mixture_getter is None else mixture_getter()
96
96
  if result is not NotImplemented and result is not None:
97
- return tuple((p, u if isinstance(u, np.ndarray) else unitary(u)) for p, u in result)
97
+ return tuple((p, unitary(u)) for p, u in result)
98
98
 
99
99
  unitary_getter = getattr(val, '_unitary_', None)
100
100
  result = NotImplemented if unitary_getter is None else unitary_getter()
@@ -19,8 +19,8 @@ import pytest
19
19
 
20
20
  import cirq
21
21
 
22
- a = np.array([1])
23
- b = np.array([1j])
22
+ a = np.array([[1]])
23
+ b = np.array([[1j]])
24
24
 
25
25
 
26
26
  class NoMethod:
@@ -54,7 +54,7 @@ class HasQuditUnitary:
54
54
 
55
55
 
56
56
  @pytest.mark.parametrize(
57
- 'val', (NoMethod(), ReturnsNotImplemented(), HasQuditUnitary(), 123, np.eye(2), object(), cirq)
57
+ 'val', (NoMethod(), ReturnsNotImplemented(), HasQuditUnitary(), 123, object(), cirq)
58
58
  )
59
59
  def test_raises_no_pauli_expansion(val) -> None:
60
60
  assert cirq.pauli_expansion(val, default=None) is None
@@ -20,6 +20,7 @@ from typing import Any, TypeVar
20
20
  import numpy as np
21
21
  from typing_extensions import Protocol
22
22
 
23
+ from cirq import linalg
23
24
  from cirq._doc import doc_private
24
25
  from cirq.protocols import qid_shape_protocol
25
26
  from cirq.protocols.apply_unitary_protocol import apply_unitaries, ApplyUnitaryArgs
@@ -84,6 +85,7 @@ def unitary(
84
85
 
85
86
  The matrix is determined by any one of the following techniques:
86
87
 
88
+ - If the value is a numpy array, it is returned directly.
87
89
  - The value has a `_unitary_` method that returns something besides None or
88
90
  NotImplemented. The matrix is whatever the method returned.
89
91
  - The value has a `_decompose_` method that returns a list of operations,
@@ -110,7 +112,13 @@ def unitary(
110
112
  Raises:
111
113
  TypeError: `val` doesn't have a unitary effect and no default value was
112
114
  specified.
115
+ ValueError: `val` is a numpy array that is not unitary.
113
116
  """
117
+ if isinstance(val, np.ndarray):
118
+ if not linalg.is_unitary(val):
119
+ raise ValueError("The provided numpy array is not unitary.")
120
+ return val
121
+
114
122
  strats = [
115
123
  _strat_unitary_from_unitary,
116
124
  _strat_unitary_from_apply_unitary,
@@ -161,6 +161,15 @@ def test_unitary():
161
161
  _ = cirq.unitary(ReturnsNotImplemented())
162
162
  assert cirq.unitary(ReturnsMatrix()) is m1
163
163
 
164
+ # Test that numpy arrays are handled directly
165
+ test_matrix = np.array([[1, 0], [0, 1]])
166
+ assert cirq.unitary(test_matrix, NotImplemented) is test_matrix
167
+
168
+ # Test that non-unitary numpy arrays raise ValueError
169
+ non_unitary_matrix = np.array([[1, 1], [0, 1]])
170
+ with pytest.raises(ValueError, match="The provided numpy array is not unitary"):
171
+ _ = cirq.unitary(non_unitary_matrix)
172
+
164
173
  assert cirq.unitary(NoMethod(), None) is None
165
174
  assert cirq.unitary(ReturnsNotImplemented(), None) is None
166
175
  assert cirq.unitary(ReturnsMatrix(), None) is m1
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cirq-core
3
- Version: 1.6.0.dev20250617235202
3
+ Version: 1.6.0.dev20250623075308
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=DAW8LEf4vLpC1OOxWWHw_ReVqUpFny2UOAMlWahuEq0,1206
8
- cirq/_version_test.py,sha256=Hwfvm55CewQiFvDuFWqKAiI7kh3IptDdP7Uyugq8V0w,155
7
+ cirq/_version.py,sha256=rQ8SR18Bi9_XEKtAw9HbjwIJQ5ukHssynTukdGAlU-s,1206
8
+ cirq/_version_test.py,sha256=5_gt10Bhdsfc4dNiirWxGz85TOkhTqfPjxflavat7xw,155
9
9
  cirq/conftest.py,sha256=X7yLFL8GLhg2CjPw0hp5e_dGASfvHx1-QT03aUbhKJw,1168
10
10
  cirq/json_resolver_cache.py,sha256=hYyG53VJeV61X0oukK5ndZYega8lkL2FyaL1m0j6h5M,13556
11
11
  cirq/py.typed,sha256=VFSlmh_lNwnaXzwY-ZuW-C2Ws5PkuDoVgBdNCs0jXJE,63
@@ -367,7 +367,7 @@ cirq/ops/qubit_order_test.py,sha256=8uOW9oLLQcjbYvd2DdXZLCbRS2sJuH6b8Bal3SgPo5M,
367
367
  cirq/ops/random_gate_channel.py,sha256=i4eg9GA4CF6ZWQRrICa5lfYqvdZzN8oLEWwXHcxRStM,5115
368
368
  cirq/ops/random_gate_channel_test.py,sha256=p-xtDOMIYBJ1wVHLJmrALi-ZU978l3AVuX0kgoan1Ac,8523
369
369
  cirq/ops/raw_types.py,sha256=2QoHkWlVGAY3Yzkvlkop0GhLRdTMlHPGCIZNzffDjcI,43626
370
- cirq/ops/raw_types_test.py,sha256=SHQCxqriYaQHc63ORvrTAWGyhinZ0Zn5JvdCdyZIVAQ,35408
370
+ cirq/ops/raw_types_test.py,sha256=ROi20W_gtt5lmDV0-z7LWhEQm93Icg4AzA8OEvlMJVg,35413
371
371
  cirq/ops/state_preparation_channel.py,sha256=3qbqrrYaVN2eHL1qiBHcItj1Pzjxhtq10tSEkRz9GNM,4781
372
372
  cirq/ops/state_preparation_channel_test.py,sha256=xFi6nOFPoQatxvnorCXujmhMvtf65lmyFfxbGlTKo4c,6039
373
373
  cirq/ops/swap_gates.py,sha256=mEDVB4pdBsbenaOahrNtAcE2B1ZPW-4vGq079rECxf4,11743
@@ -387,10 +387,10 @@ cirq/protocols/act_on_protocol.py,sha256=YE92pdK_TAoeCNiAiKjkz8XwQCGbFcjo1Wst1e6
387
387
  cirq/protocols/act_on_protocol_test.py,sha256=X7GNM9mGPCpWukW9_7kF88g12RdqsWhcniIw5LW1tC4,3215
388
388
  cirq/protocols/apply_channel_protocol.py,sha256=-FkwzW2FKDY713lGOTIJ0yMIPKp3ZzWqLBl_yhmOGdk,15615
389
389
  cirq/protocols/apply_channel_protocol_test.py,sha256=THW95ZzW1y8UtBIuzVJ872wEOZqIcFdPbXocBUzAiWw,10618
390
- cirq/protocols/apply_mixture_protocol.py,sha256=bB2EJOrGccuMBuHR4paZnguYavL4KanzTTiLUgzM1eM,16438
390
+ cirq/protocols/apply_mixture_protocol.py,sha256=a5St6DR5kIcXqDxXblBPYFuoSeAT8N1roJguTidGMyM,15321
391
391
  cirq/protocols/apply_mixture_protocol_test.py,sha256=_ftefdRBYj73OC_m3179VX8U1-xDesAOHu94tx3d-gU,11142
392
- cirq/protocols/apply_unitary_protocol.py,sha256=bvqGe_Yt_pnJiVRlj9Kq0_sf557BrA1iUgr8fEJeB9g,29714
393
- cirq/protocols/apply_unitary_protocol_test.py,sha256=po1z7a-r4kbfLg7_7XKgFMrsFIzQCFgceCwn-lyBEOA,26172
392
+ cirq/protocols/apply_unitary_protocol.py,sha256=NBq_RqzSAlqHaNi90MKN9uncHUyKpgQ2t9Wa8c-rHdA,29899
393
+ cirq/protocols/apply_unitary_protocol_test.py,sha256=nuGgoN3LYaPUwPKmLQK3LhUqNAJVIQmda5PZN0ocIUg,26190
394
394
  cirq/protocols/approximate_equality_protocol.py,sha256=DZ4eNCSwl_MI1LIo6tosFFqw0Gl9snM51C2vR5X1mdA,6293
395
395
  cirq/protocols/approximate_equality_protocol_test.py,sha256=qVw2TzKRTZC7fDg6DK_fVEvJzJGmlzBi6JidlJrR_Fc,9212
396
396
  cirq/protocols/circuit_diagram_info_protocol.py,sha256=jttsQgG7DDYJDcVC3kV-jZxrkJrE5HKrZB8VnyVsziE,17164
@@ -405,23 +405,23 @@ cirq/protocols/equal_up_to_global_phase_protocol.py,sha256=y-GPOImHgdjVqXF-qE3SU
405
405
  cirq/protocols/equal_up_to_global_phase_protocol_test.py,sha256=EDfWnCuYAVfcvBXHYoZ0lDukNEGG2c53vzP7s8jHLKA,6050
406
406
  cirq/protocols/has_stabilizer_effect_protocol.py,sha256=T_CVVpvckp3ZTsWi089mPqbmwOPLlF6GalEKrVK7Hvs,4309
407
407
  cirq/protocols/has_stabilizer_effect_protocol_test.py,sha256=T6-vtMO-eBXIMRur1nlmAzi4ty4-F1BP59ZRWR_d0HQ,3955
408
- cirq/protocols/has_unitary_protocol.py,sha256=M2GzrmlJT4Zu4H-Z-PPrwVyGAXNMM7etwwMLnHOgFyE,5386
409
- cirq/protocols/has_unitary_protocol_test.py,sha256=X78xt3SP-Tx5pflit5X-ZiC5zf9EmuUdwXXApuGNASM,5861
408
+ cirq/protocols/has_unitary_protocol.py,sha256=7dSbLcY8ojqf1Svi8bekf057fNkKl30hFVZiaTJHCZ0,5468
409
+ cirq/protocols/has_unitary_protocol_test.py,sha256=FifK9oCMMyXHsZJNsDNutbKvty-p3jfcwVZzxyWoZ74,5956
410
410
  cirq/protocols/hash_from_pickle_test.py,sha256=ghLwtXySQgya5flt4rSNiuK4nqRfiFlZh7d9o7nmeXc,4642
411
411
  cirq/protocols/inverse_protocol.py,sha256=tHaY8-dfd0SD59v3DZ_zpwz7lwFrraPExEnIgn1T0RI,3965
412
412
  cirq/protocols/inverse_protocol_test.py,sha256=5RoZfSRzBvpGpLdg1XKYdB6qy-GkDvZsATUvxdFrLJ0,2067
413
413
  cirq/protocols/json_serialization.py,sha256=z7Yu2vsNabRkdeYyIuNCoXATHkrOGreTRShNyN0Fjuc,24520
414
414
  cirq/protocols/json_serialization_test.py,sha256=xDRylmud660G3A-mSv8FLZvRiG59mBsY6qK-j3gwvP4,28109
415
- cirq/protocols/kraus_protocol.py,sha256=ssojYrkve1dtnodTqqCzBje1fsTec5utxIQMsxtZ1Ow,9310
415
+ cirq/protocols/kraus_protocol.py,sha256=ptiRkEnDgBnEdxobs6wZdZsOAhVzF6bhhSHuNqLKFJo,9250
416
416
  cirq/protocols/kraus_protocol_test.py,sha256=51eJ3r3Kx10rG-1hPjcfcODeUO3PFQmwU9ATMnhTWDw,5495
417
417
  cirq/protocols/measurement_key_protocol.py,sha256=JU7XbZfR7o6Wcv5qRJisp3ZAWwW9Fx7OHtxNMrWtZoQ,13351
418
418
  cirq/protocols/measurement_key_protocol_test.py,sha256=PqSU9uB4t2yvPz9hZBLby2mZnZo-DOLlx3HIicyPeLo,8768
419
- cirq/protocols/mixture_protocol.py,sha256=K34KJ0HUaecaml3E6JfpYrJXJTu9i0vXcXzhP0n_v5s,6464
420
- cirq/protocols/mixture_protocol_test.py,sha256=OtIRulKt6mTwLxLWzfGh6FTwc4CA5CiYoKSAW6bX1Is,3854
419
+ cirq/protocols/mixture_protocol.py,sha256=A8J-kkwUqiQphw6d3DK3QZ-lP31DTWv475ZzdeqYA0w,6428
420
+ cirq/protocols/mixture_protocol_test.py,sha256=Sa0XzglMnVZRJir0EKTTiNJ2yBGVSrGvD8fDoKfYFQg,3858
421
421
  cirq/protocols/mul_protocol.py,sha256=Jv7Qq5SejO0F6kpnFcTBML3rjZd-LTmrUJJ_D7PRpR4,2749
422
422
  cirq/protocols/mul_protocol_test.py,sha256=J2jvKPr4Doy9Fx7RNCXbjvTkyBu1fcsxfRH-I6OzE34,2172
423
423
  cirq/protocols/pauli_expansion_protocol.py,sha256=haLt7_FJUt-jK0im4R25Gku6Zhiyu6Zt-CeB_WonXK4,3768
424
- cirq/protocols/pauli_expansion_protocol_test.py,sha256=qKMMeJ7a8cT2xrNDdXtVabd9Hmcc5wLMOXo88_mkBM4,2780
424
+ cirq/protocols/pauli_expansion_protocol_test.py,sha256=TATNum73ccpG_SbK6FWxcD7rj5kw92mKpzzK1oNZkk8,2769
425
425
  cirq/protocols/phase_protocol.py,sha256=e_xsYDgs4K5poWcTBipziiz3Asuc7tGiVSBgD__Mooo,3648
426
426
  cirq/protocols/phase_protocol_test.py,sha256=brLHtnnAhB28ErwgdkVDZlXTFsF5M7vSyNz-lxe8D0Y,1983
427
427
  cirq/protocols/pow_protocol.py,sha256=q_Y3MMdkOXiB1D6V34lQGNf8vlvc5btZfDeO8M0jZd0,3151
@@ -434,8 +434,8 @@ cirq/protocols/resolve_parameters.py,sha256=KAMkSoctbyl_S775T567_mL0Fb46upElSEzk
434
434
  cirq/protocols/resolve_parameters_test.py,sha256=2R2T2p4NkbD4IV2_4i8WkvSHu3OqjXo-Bf856Rwb-3w,4933
435
435
  cirq/protocols/trace_distance_bound.py,sha256=aE8fopaFTFS1baWTgrH-tbdSUz0btgOrxZAWg82LgoM,4179
436
436
  cirq/protocols/trace_distance_bound_test.py,sha256=0bI9uYttJj5eayM05kShPh9qkxeKG1egcZ9fXJPZWNU,1980
437
- cirq/protocols/unitary_protocol.py,sha256=aAcKDa3BM4OXB64V6WwxL7IpKtG9hsQdpUK_lg5W2_k,8144
438
- cirq/protocols/unitary_protocol_test.py,sha256=tZOc6-oKfLASjx9AaQlr-DMhnBjxTuBwuWEHCL5Biwc,10214
437
+ cirq/protocols/unitary_protocol.py,sha256=DZx3cIURlCYzxNj49mfAqDjV7IDnf-8X_vOBYjq2TRA,8462
438
+ cirq/protocols/unitary_protocol_test.py,sha256=ZiU-74fCQ5CJ_KvGOBDtIu7A8K5f9lh1FZerx291Gek,10619
439
439
  cirq/protocols/json_test_data/AmplitudeDampingChannel.json,sha256=x3szAuG8j_1uAK5ghFapaB410g0twQ83aQNsvItXVdo,60
440
440
  cirq/protocols/json_test_data/AmplitudeDampingChannel.repr,sha256=n_tJNGHkWlxYunXGMFtFO6-RuIv0y8Ki0YqE8w3hOl0,30
441
441
  cirq/protocols/json_test_data/AnyIntegerPowerGateFamily.json,sha256=Qf8FTwvPV7en7WcPbhP1kvjLUUPYgbICoPFqT6w86hw,68
@@ -1220,8 +1220,8 @@ cirq/work/sampler.py,sha256=rxbMWvrhu3gfNSBjZKozw28lLKVvBAS_1EGyPdYe8Xg,19041
1220
1220
  cirq/work/sampler_test.py,sha256=SsMrRvLDYELyOAWLKISjkdEfrBwLYWRsT6D8WrsLM3Q,13533
1221
1221
  cirq/work/zeros_sampler.py,sha256=Fs2JWwq0n9zv7_G5Rm-9vPeHUag7uctcMOHg0JTkZpc,2371
1222
1222
  cirq/work/zeros_sampler_test.py,sha256=lQLgQDGBLtfImryys2HzQ2jOSGxHgc7-koVBUhv8qYk,3345
1223
- cirq_core-1.6.0.dev20250617235202.dist-info/licenses/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
1224
- cirq_core-1.6.0.dev20250617235202.dist-info/METADATA,sha256=0Mkz-_pWOE6ULwSvbecsNQMwJ72cNZqTuQoG4G0-1Rk,4857
1225
- cirq_core-1.6.0.dev20250617235202.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
1226
- cirq_core-1.6.0.dev20250617235202.dist-info/top_level.txt,sha256=Sz9iOxHU0IEMLSFGwiwOCaN2e9K-jFbBbtpPN1hB73g,5
1227
- cirq_core-1.6.0.dev20250617235202.dist-info/RECORD,,
1223
+ cirq_core-1.6.0.dev20250623075308.dist-info/licenses/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
1224
+ cirq_core-1.6.0.dev20250623075308.dist-info/METADATA,sha256=plFpjsDUIPcsHNSJHDnnh9YijTZTw_2DRRu8LNiNm6Q,4857
1225
+ cirq_core-1.6.0.dev20250623075308.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
1226
+ cirq_core-1.6.0.dev20250623075308.dist-info/top_level.txt,sha256=Sz9iOxHU0IEMLSFGwiwOCaN2e9K-jFbBbtpPN1hB73g,5
1227
+ cirq_core-1.6.0.dev20250623075308.dist-info/RECORD,,