cirq-core 1.5.0.dev20250324234903__py3-none-any.whl → 1.5.0.dev20250325074340__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.

@@ -11,11 +11,11 @@
11
11
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
-
14
+ import itertools
15
15
  import pytest
16
16
 
17
- import cirq
18
17
  import numpy as np
18
+ import cirq
19
19
 
20
20
  from cirq.experiments.single_qubit_readout_calibration_test import NoisySingleQubitReadoutSampler
21
21
  from cirq.experiments import random_quantum_circuit_generation as rqcg
@@ -23,26 +23,34 @@ from cirq.experiments import SingleQubitReadoutCalibrationResult
23
23
  from cirq.study import ResultDict
24
24
 
25
25
 
26
+ def _create_test_circuits(qubits: list[cirq.Qid], n_circuits: int) -> list[cirq.Circuit]:
27
+ """Helper function to generate circuits for testing."""
28
+ if len(qubits) < 2:
29
+ raise ValueError(
30
+ "Need at least two qubits to generate two-qubit circuits."
31
+ ) # pragma: no cover
32
+ two_qubit_gates = [cirq.ISWAP**0.5, cirq.CNOT**0.5]
33
+ input_circuits = []
34
+ qubit_pairs = list(itertools.combinations(qubits, 2))
35
+ num_pairs = len(qubit_pairs)
36
+ for i in range(n_circuits):
37
+ gate = two_qubit_gates[i % len(two_qubit_gates)]
38
+ q0, q1 = qubit_pairs[i % num_pairs]
39
+ circuits = rqcg.generate_library_of_2q_circuits(
40
+ n_library_circuits=5, two_qubit_gate=gate, q0=q0, q1=q1
41
+ )
42
+ for circuit in circuits:
43
+ circuit.append(cirq.measure(*qubits, key="m"))
44
+ input_circuits.extend(circuits)
45
+ return input_circuits
46
+
47
+
26
48
  def test_shuffled_circuits_with_readout_benchmarking_errors_no_noise():
27
49
  """Test shuffled circuits with readout benchmarking with no noise from sampler."""
28
50
  qubits = cirq.LineQubit.range(5)
29
51
 
30
52
  # Generate random input circuits
31
- input_circuits = []
32
- input_circuits += rqcg.generate_library_of_2q_circuits(
33
- n_library_circuits=5, two_qubit_gate=cirq.ISWAP**0.5, q0=qubits[0], q1=qubits[2]
34
- )
35
- input_circuits += rqcg.generate_library_of_2q_circuits(
36
- n_library_circuits=5, two_qubit_gate=cirq.CNOT**0.5, q0=qubits[1], q1=qubits[3]
37
- )
38
- input_circuits += rqcg.generate_library_of_2q_circuits(
39
- n_library_circuits=5, two_qubit_gate=cirq.CNOT**0.5, q0=qubits[0], q1=qubits[4]
40
- )
41
- input_circuits += rqcg.generate_library_of_2q_circuits(
42
- n_library_circuits=5, two_qubit_gate=cirq.ISWAP**0.5, q0=qubits[2], q1=qubits[4]
43
- )
44
- for circuit in input_circuits:
45
- circuit.append(cirq.measure(*qubits, key="m"))
53
+ input_circuits = _create_test_circuits(qubits, 3)
46
54
 
47
55
  sampler = cirq.Simulator()
48
56
  circuit_repetitions = 1
@@ -64,12 +72,15 @@ def test_shuffled_circuits_with_readout_benchmarking_errors_no_noise():
64
72
  for measurement in measurements:
65
73
  assert isinstance(measurement, ResultDict)
66
74
 
67
- assert isinstance(readout_calibration_results, SingleQubitReadoutCalibrationResult)
75
+ for qlist, readout_calibration_result in readout_calibration_results.items():
76
+ assert isinstance(qlist, tuple)
77
+ assert all(isinstance(q, cirq.Qid) for q in qlist)
78
+ assert isinstance(readout_calibration_result, SingleQubitReadoutCalibrationResult)
68
79
 
69
- assert readout_calibration_results.zero_state_errors == {q: 0 for q in qubits}
70
- assert readout_calibration_results.one_state_errors == {q: 0 for q in qubits}
71
- assert readout_calibration_results.repetitions == readout_repetitions
72
- assert isinstance(readout_calibration_results.timestamp, float)
80
+ assert readout_calibration_result.zero_state_errors == {q: 0 for q in qubits}
81
+ assert readout_calibration_result.one_state_errors == {q: 0 for q in qubits}
82
+ assert readout_calibration_result.repetitions == readout_repetitions
83
+ assert isinstance(readout_calibration_result.timestamp, float)
73
84
 
74
85
 
75
86
  def test_shuffled_circuits_with_readout_benchmarking_errors_with_noise():
@@ -77,24 +88,7 @@ def test_shuffled_circuits_with_readout_benchmarking_errors_with_noise():
77
88
  qubits = cirq.LineQubit.range(6)
78
89
 
79
90
  # Generate random input circuits
80
- input_circuits = []
81
- input_circuits += rqcg.generate_library_of_2q_circuits(
82
- n_library_circuits=5, two_qubit_gate=cirq.ISWAP**0.5, q0=qubits[0], q1=qubits[1]
83
- )
84
- input_circuits += rqcg.generate_library_of_2q_circuits(
85
- n_library_circuits=5, two_qubit_gate=cirq.CNOT**0.5, q0=qubits[1], q1=qubits[3]
86
- )
87
- input_circuits += rqcg.generate_library_of_2q_circuits(
88
- n_library_circuits=5, two_qubit_gate=cirq.CNOT**0.5, q0=qubits[0], q1=qubits[4]
89
- )
90
- input_circuits += rqcg.generate_library_of_2q_circuits(
91
- n_library_circuits=5, two_qubit_gate=cirq.ISWAP**0.5, q0=qubits[2], q1=qubits[4]
92
- )
93
- input_circuits += rqcg.generate_library_of_2q_circuits(
94
- n_library_circuits=5, two_qubit_gate=cirq.ISWAP**0.5, q0=qubits[2], q1=qubits[5]
95
- )
96
- for circuit in input_circuits:
97
- circuit.append(cirq.measure(*qubits, key="m"))
91
+ input_circuits = _create_test_circuits(qubits, 6)
98
92
 
99
93
  sampler = NoisySingleQubitReadoutSampler(p0=0.1, p1=0.2, seed=1234)
100
94
  circuit_repetitions = 1
@@ -115,14 +109,17 @@ def test_shuffled_circuits_with_readout_benchmarking_errors_with_noise():
115
109
  for measurement in measurements:
116
110
  assert isinstance(measurement, ResultDict)
117
111
 
118
- assert isinstance(readout_calibration_results, SingleQubitReadoutCalibrationResult)
112
+ for qlist, readout_calibration_result in readout_calibration_results.items():
113
+ assert isinstance(qlist, tuple)
114
+ assert all(isinstance(q, cirq.Qid) for q in qlist)
115
+ assert isinstance(readout_calibration_result, SingleQubitReadoutCalibrationResult)
119
116
 
120
- for error in readout_calibration_results.zero_state_errors.values():
121
- assert 0.08 < error < 0.12
122
- for error in readout_calibration_results.one_state_errors.values():
123
- assert 0.18 < error < 0.22
124
- assert readout_calibration_results.repetitions == readout_repetitions
125
- assert isinstance(readout_calibration_results.timestamp, float)
117
+ for error in readout_calibration_result.zero_state_errors.values():
118
+ assert 0.08 < error < 0.12
119
+ for error in readout_calibration_result.one_state_errors.values():
120
+ assert 0.18 < error < 0.22
121
+ assert readout_calibration_result.repetitions == readout_repetitions
122
+ assert isinstance(readout_calibration_result.timestamp, float)
126
123
 
127
124
 
128
125
  def test_shuffled_circuits_with_readout_benchmarking_errors_with_noise_and_input_qubits():
@@ -131,24 +128,50 @@ def test_shuffled_circuits_with_readout_benchmarking_errors_with_noise_and_input
131
128
  readout_qubits = qubits[:4]
132
129
 
133
130
  # Generate random input circuits
134
- input_circuits = []
135
- input_circuits += rqcg.generate_library_of_2q_circuits(
136
- n_library_circuits=5, two_qubit_gate=cirq.ISWAP**0.5, q0=qubits[0], q1=qubits[1]
137
- )
138
- input_circuits += rqcg.generate_library_of_2q_circuits(
139
- n_library_circuits=5, two_qubit_gate=cirq.CNOT**0.5, q0=qubits[1], q1=qubits[3]
140
- )
141
- input_circuits += rqcg.generate_library_of_2q_circuits(
142
- n_library_circuits=5, two_qubit_gate=cirq.CNOT**0.5, q0=qubits[0], q1=qubits[4]
143
- )
144
- input_circuits += rqcg.generate_library_of_2q_circuits(
145
- n_library_circuits=5, two_qubit_gate=cirq.ISWAP**0.5, q0=qubits[2], q1=qubits[4]
146
- )
147
- input_circuits += rqcg.generate_library_of_2q_circuits(
148
- n_library_circuits=5, two_qubit_gate=cirq.ISWAP**0.5, q0=qubits[2], q1=qubits[5]
131
+ input_circuits = _create_test_circuits(qubits, 6)
132
+
133
+ sampler = NoisySingleQubitReadoutSampler(p0=0.1, p1=0.3, seed=1234)
134
+ circuit_repetitions = 1
135
+ rng = np.random.default_rng()
136
+ readout_repetitions = 1000
137
+
138
+ measurements, readout_calibration_results = (
139
+ cirq.contrib.shuffle_circuits.run_shuffled_with_readout_benchmarking(
140
+ input_circuits,
141
+ sampler,
142
+ circuit_repetitions,
143
+ rng,
144
+ num_random_bitstrings=100,
145
+ readout_repetitions=readout_repetitions,
146
+ qubits=readout_qubits,
147
+ )
149
148
  )
150
- for circuit in input_circuits:
151
- circuit.append(cirq.measure(*qubits, key="m"))
149
+
150
+ for measurement in measurements:
151
+ assert isinstance(measurement, ResultDict)
152
+
153
+ for qlist, readout_calibration_result in readout_calibration_results.items():
154
+ assert isinstance(qlist, tuple)
155
+ assert all(isinstance(q, cirq.Qid) for q in qlist)
156
+ assert isinstance(readout_calibration_result, SingleQubitReadoutCalibrationResult)
157
+
158
+ for error in readout_calibration_result.zero_state_errors.values():
159
+ assert 0.08 < error < 0.12
160
+ for error in readout_calibration_result.one_state_errors.values():
161
+ assert 0.28 < error < 0.32
162
+ assert readout_calibration_result.repetitions == readout_repetitions
163
+ assert isinstance(readout_calibration_result.timestamp, float)
164
+
165
+
166
+ def test_shuffled_circuits_with_readout_benchmarking_errors_with_noise_and_lists_input_qubits():
167
+ """Test shuffled circuits with readout benchmarking with noise from sampler and input qubits."""
168
+ qubits_1 = cirq.LineQubit.range(3)
169
+ qubits_2 = cirq.LineQubit.range(4)
170
+
171
+ readout_qubits = [qubits_1, qubits_2]
172
+
173
+ # Generate random input circuits and append measurements
174
+ input_circuits = _create_test_circuits(qubits_1, 6) + _create_test_circuits(qubits_2, 4)
152
175
 
153
176
  sampler = NoisySingleQubitReadoutSampler(p0=0.1, p1=0.3, seed=1234)
154
177
  circuit_repetitions = 1
@@ -170,14 +193,50 @@ def test_shuffled_circuits_with_readout_benchmarking_errors_with_noise_and_input
170
193
  for measurement in measurements:
171
194
  assert isinstance(measurement, ResultDict)
172
195
 
173
- assert isinstance(readout_calibration_results, SingleQubitReadoutCalibrationResult)
196
+ for qlist, readout_calibration_result in readout_calibration_results.items():
197
+ assert isinstance(qlist, tuple)
198
+ assert all(isinstance(q, cirq.Qid) for q in qlist)
199
+ assert isinstance(readout_calibration_result, SingleQubitReadoutCalibrationResult)
200
+
201
+ for error in readout_calibration_result.zero_state_errors.values():
202
+ assert 0.08 < error < 0.12
203
+ for error in readout_calibration_result.one_state_errors.values():
204
+ assert 0.28 < error < 0.32
205
+ assert readout_calibration_result.repetitions == readout_repetitions
206
+ assert isinstance(readout_calibration_result.timestamp, float)
207
+
208
+
209
+ def test_can_handle_zero_random_bitstring():
210
+ """Test shuffled circuits without readout benchmarking."""
211
+ qubits_1 = cirq.LineQubit.range(3)
212
+ qubits_2 = cirq.LineQubit.range(4)
174
213
 
175
- for error in readout_calibration_results.zero_state_errors.values():
176
- assert 0.08 < error < 0.12
177
- for error in readout_calibration_results.one_state_errors.values():
178
- assert 0.28 < error < 0.32
179
- assert readout_calibration_results.repetitions == readout_repetitions
180
- assert isinstance(readout_calibration_results.timestamp, float)
214
+ readout_qubits = [qubits_1, qubits_2]
215
+
216
+ # Generate random input circuits and append measurements
217
+ input_circuits = _create_test_circuits(qubits_1, 6) + _create_test_circuits(qubits_2, 4)
218
+
219
+ sampler = NoisySingleQubitReadoutSampler(p0=0.1, p1=0.3, seed=1234)
220
+ circuit_repetitions = 1
221
+ rng = np.random.default_rng()
222
+ readout_repetitions = 1000
223
+
224
+ measurements, readout_calibration_results = (
225
+ cirq.contrib.shuffle_circuits.run_shuffled_with_readout_benchmarking(
226
+ input_circuits,
227
+ sampler,
228
+ circuit_repetitions,
229
+ rng,
230
+ num_random_bitstrings=0,
231
+ readout_repetitions=readout_repetitions,
232
+ qubits=readout_qubits,
233
+ )
234
+ )
235
+
236
+ for measurement in measurements:
237
+ assert isinstance(measurement, ResultDict)
238
+ # Check that the readout_calibration_results is empty
239
+ assert len(readout_calibration_results.items()) == 0
181
240
 
182
241
 
183
242
  def test_empty_input_circuits():
@@ -256,16 +315,16 @@ def test_mismatch_circuit_repetitions():
256
315
 
257
316
 
258
317
  def test_zero_num_random_bitstrings():
259
- """Test that the number of random bitstrings is zero."""
318
+ """Test that the number of random bitstrings is smaller than zero."""
260
319
  q = cirq.LineQubit(0)
261
320
  circuit = cirq.Circuit(cirq.H(q), cirq.measure(q))
262
- with pytest.raises(ValueError, match="Must provide non-zero num_random_bitstrings."):
321
+ with pytest.raises(ValueError, match="Must provide zero or more num_random_bitstrings."):
263
322
  cirq.contrib.shuffle_circuits.run_shuffled_with_readout_benchmarking(
264
323
  [circuit],
265
324
  cirq.ZerosSampler(),
266
325
  circuit_repetitions=10,
267
326
  rng_or_seed=np.random.default_rng(456),
268
- num_random_bitstrings=0,
327
+ num_random_bitstrings=-1,
269
328
  readout_repetitions=100,
270
329
  )
271
330
 
@@ -15,6 +15,7 @@
15
15
  """Utility methods for transforming matrices or vectors."""
16
16
 
17
17
  import dataclasses
18
+ import functools
18
19
  from typing import Any, List, Optional, Sequence, Tuple, Union
19
20
 
20
21
  import numpy as np
@@ -29,8 +30,6 @@ from cirq.linalg import predicates
29
30
  # user provides a different np.array([]) value.
30
31
  RaiseValueErrorIfNotProvided: np.ndarray = np.array([])
31
32
 
32
- _NPY_MAXDIMS = 32 # Should be changed once numpy/numpy#5744 is resolved.
33
-
34
33
 
35
34
  def reflection_matrix_pow(reflection_matrix: np.ndarray, exponent: float):
36
35
  """Raises a matrix with two opposing eigenvalues to a power.
@@ -807,6 +806,15 @@ def transpose_flattened_array(t: np.ndarray, shape: Sequence[int], axes: Sequenc
807
806
  return ret
808
807
 
809
808
 
809
+ @functools.cache
810
+ def _can_numpy_support_dims(num_dims: int) -> bool:
811
+ try:
812
+ _ = np.empty((1,) * num_dims)
813
+ return True
814
+ except ValueError: # pragma: no cover
815
+ return False
816
+
817
+
810
818
  def can_numpy_support_shape(shape: Sequence[int]) -> bool:
811
819
  """Returns whether numpy supports the given shape or not numpy/numpy#5744."""
812
- return len(shape) <= _NPY_MAXDIMS
820
+ return min(shape, default=0) >= 0 and _can_numpy_support_dims(len(shape))
@@ -648,3 +648,8 @@ def test_transpose_flattened_array(num_dimensions):
648
648
  assert np.array_equal(want, got)
649
649
  got = linalg.transpose_flattened_array(A.reshape(shape), shape, axes).reshape(want.shape)
650
650
  assert np.array_equal(want, got)
651
+
652
+
653
+ @pytest.mark.parametrize('shape, result', [((), True), (30 * (1,), True), ((-3, 1, -1), False)])
654
+ def test_can_numpy_support_shape(shape: tuple[int, ...], result: bool) -> None:
655
+ assert linalg.can_numpy_support_shape(shape) is result
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cirq-core
3
- Version: 1.5.0.dev20250324234903
3
+ Version: 1.5.0.dev20250325074340
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=CKf5e9FPigFBsj8-Feztwl0kFYSjqLK28NvTBzfwD1U,1206
8
- cirq/_version_test.py,sha256=iHq-bizjPdWGL3hvLdanaduLUlC6X_GB8k9YepwWjwI,147
7
+ cirq/_version.py,sha256=FqvSKFCY0JY6NO_MihCqtRLkYy1LvVi_3UCOocfvOSg,1206
8
+ cirq/_version_test.py,sha256=Q5vQq5HyGp_mnRU123IHaXi7_tUE9UYyNLhY3gl69ro,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
@@ -87,7 +87,7 @@ cirq/contrib/hacks/disable_validation_test.py,sha256=nuDfktj3bD7oFlae3R0Jf_qcAo8
87
87
  cirq/contrib/noise_models/__init__.py,sha256=O3wvaQ6kyNZzwsCnMMZvr2EyS76LpO9xnVZ69a2obv0,957
88
88
  cirq/contrib/noise_models/noise_models.py,sha256=qFisVwg94-YqGoru5z5bqy_9_PHBI124rI4Gy34ogHI,7658
89
89
  cirq/contrib/noise_models/noise_models_test.py,sha256=nELHWYWbRp6RCurjTSEAumpZPMY2gNN3S4Mhho3pwJ0,10488
90
- cirq/contrib/paulistring/__init__.py,sha256=5KmN-WfpVgQoHJEznRZA-gBXOP5i7hn42juzUEcWlto,1618
90
+ cirq/contrib/paulistring/__init__.py,sha256=1k2_MYLTMPn8AFoJvSgpN-F-6xgmDjKXRhb-FdDsFoQ,1761
91
91
  cirq/contrib/paulistring/clifford_optimize.py,sha256=q2lTMivOGoxncxnQ8CxnwlV9kSsHzETsTWG705FG9qw,7849
92
92
  cirq/contrib/paulistring/clifford_optimize_test.py,sha256=IttwXaYRftUb84Sz3fEJFDl9fZ8NwzcbNsuFAJeLR_8,3890
93
93
  cirq/contrib/paulistring/clifford_target_gateset.py,sha256=r2Nkq3gbENGyeRrRHtjdx5_uoSR0UfXojlTLhNNGTL8,6353
@@ -96,6 +96,8 @@ cirq/contrib/paulistring/optimize.py,sha256=qhBOGxLYovUua_xVqXWgVDPRRmv4VOmyFgKV
96
96
  cirq/contrib/paulistring/optimize_test.py,sha256=jie0UomSCIj90TMv3MIi4hd32iTjttQ8-zr7ZDs0tug,3560
97
97
  cirq/contrib/paulistring/pauli_string_dag.py,sha256=vg0994h84zHIejSdwfqR-mdwmHOWWOAOOcGuStfKPdk,1106
98
98
  cirq/contrib/paulistring/pauli_string_dag_test.py,sha256=rlwbuh0DvFv1GlJIqEG1OI_geY77dzxo4bb7qqDkz8M,1125
99
+ cirq/contrib/paulistring/pauli_string_measurement_with_readout_mitigation.py,sha256=ULhFIH8LBbDNHpPd0ulXTCm-hGqpbZBxrQLolSKfBg4,15675
100
+ cirq/contrib/paulistring/pauli_string_measurement_with_readout_mitigation_test.py,sha256=srkjiczY5WLfwzltmc0cn0J6atZyJ8qWL-oiUZuGPDI,21717
99
101
  cirq/contrib/paulistring/pauli_string_optimize.py,sha256=81MDk6rKl0jmw7DXFkA02YmluiXLLznuuCTvca7mVoY,2815
100
102
  cirq/contrib/paulistring/pauli_string_optimize_test.py,sha256=f1BWjg8IGw5ChXFYNVhYKNIrFul8PgvpnOEadkRm-3Q,2897
101
103
  cirq/contrib/paulistring/recombine.py,sha256=SU6DNj3Y9Wicf9pMP3IYzdWV7Fuz1DA_1v2AtUVnuF4,4355
@@ -147,8 +149,8 @@ cirq/contrib/routing/swap_network_test.py,sha256=XxbjIvOowvtOVwT2RN4e7YWlLebLm98
147
149
  cirq/contrib/routing/utils.py,sha256=P0_PnaGfy4Rm6CVl9FE7RpdZ0YzGtimcW1acduvp5rU,3761
148
150
  cirq/contrib/routing/utils_test.py,sha256=1oGEDAd70uQ2OrBwbaQd1DYoPcMSZsBQ2l5VLJBtXBM,2021
149
151
  cirq/contrib/shuffle_circuits/__init__.py,sha256=AL-V3OaZiaF596WTLlyxDPk0t1WMpTHpQrpRW_A9t48,832
150
- cirq/contrib/shuffle_circuits/shuffle_circuits_with_readout_benchmarking.py,sha256=ly4O2xhukp8xkBbk-a0ukSykd1G1yR-L91XNxdePBWU,9660
151
- cirq/contrib/shuffle_circuits/shuffle_circuits_with_readout_benchmarking_test.py,sha256=3SQO5bjrfs1ZRbDNTa_D90f8gx_HL6WCZs1d0IPdEMQ,11790
152
+ cirq/contrib/shuffle_circuits/shuffle_circuits_with_readout_benchmarking.py,sha256=eQmB7hoWaPqqUV3xgcUKIPTtGpv0ze_dM01ygQt33XU,10844
153
+ cirq/contrib/shuffle_circuits/shuffle_circuits_with_readout_benchmarking_test.py,sha256=L2Mx3LV_chDxg_v4NDnIF7ciHYqvKt04ulgwu0J4vMM,13862
152
154
  cirq/contrib/svg/__init__.py,sha256=m7d-CNT2j74uNQdmM2xJ1a7HG6v0FZMt8eAwW4rPJpI,148
153
155
  cirq/contrib/svg/svg.py,sha256=d4_XgDNb8o1lDINVJA44XXunGmK71qTAlqw2sc_UnAo,9366
154
156
  cirq/contrib/svg/svg_test.py,sha256=gBHXeosNRHzrKWVo-JwhZLguHbksKQSiFwZ8fUXp-a8,2379
@@ -258,8 +260,8 @@ cirq/linalg/predicates.py,sha256=Q8BTlR4EvPg2KP9VodK78UEWYJbSCOTqRahn1DnFmSc,120
258
260
  cirq/linalg/predicates_test.py,sha256=UVDkNH2ujI80JwJwsDjbTgyALZUQJAVVCoFN1T_LLf0,21503
259
261
  cirq/linalg/tolerance.py,sha256=yHYVSHx2aoRci1aac9ZiM8OH1Bvy1Em-Rybnar701nE,1870
260
262
  cirq/linalg/tolerance_test.py,sha256=wnmuXIGEn_mugGoNm3AigSgjV2DMFdj8xpgRTMBbO7A,2355
261
- cirq/linalg/transformations.py,sha256=zWNDn55-1qLI-S6Z4K-E_cGhcBvd7HonWFbTEtdk0MI,32119
262
- cirq/linalg/transformations_test.py,sha256=ofrqw8H9109vVDBelSGkMjTPkmNinYsin4rvUE_iSn4,25095
263
+ cirq/linalg/transformations.py,sha256=5iNg4IOcYqfqDTYo5i983IxweyHiMwcHW8jdk9hpG34,32303
264
+ cirq/linalg/transformations_test.py,sha256=GsqD8_X0N88ECKr44t0O9wAJ6-uJJi0wExivn0Okf7M,25333
263
265
  cirq/neutral_atoms/__init__.py,sha256=VoQBkmZ5m4TPxjxShRixjqJbnc-IAnAWkGOPu8MBS5o,813
264
266
  cirq/neutral_atoms/convert_to_neutral_atom_gates.py,sha256=SsXFh1-NoBGqp4yX8-jIbIw-AK40baA-qh-iTL1wS6Q,1070
265
267
  cirq/neutral_atoms/convert_to_neutral_atom_gates_test.py,sha256=mIeGevxs9NoYpfTF_znHL67RrJKVQyQP-DPhn7t9SUA,1862
@@ -1204,8 +1206,8 @@ cirq/work/sampler.py,sha256=bE5tmVkcR6cZZMLETxDfHehdsYUMbx2RvBeIBetehI4,19187
1204
1206
  cirq/work/sampler_test.py,sha256=hL2UWx3dz2ukZVNxWftiKVvJcQoLplLZdQm-k1QcA40,13282
1205
1207
  cirq/work/zeros_sampler.py,sha256=x1C7cup66a43n-3tm8QjhiqJa07qcJW10FxNp9jJ59Q,2356
1206
1208
  cirq/work/zeros_sampler_test.py,sha256=JIkpBBFPJe5Ba4142vzogyWyboG1Q1ZAm0UVGgOoZn8,3279
1207
- cirq_core-1.5.0.dev20250324234903.dist-info/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
1208
- cirq_core-1.5.0.dev20250324234903.dist-info/METADATA,sha256=ZnLWenNj_-pBwx1KbGW7aevTP-yKdL5YuwpfDpihUTM,4817
1209
- cirq_core-1.5.0.dev20250324234903.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
1210
- cirq_core-1.5.0.dev20250324234903.dist-info/top_level.txt,sha256=Sz9iOxHU0IEMLSFGwiwOCaN2e9K-jFbBbtpPN1hB73g,5
1211
- cirq_core-1.5.0.dev20250324234903.dist-info/RECORD,,
1209
+ cirq_core-1.5.0.dev20250325074340.dist-info/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
1210
+ cirq_core-1.5.0.dev20250325074340.dist-info/METADATA,sha256=f97pAN3tUlzTcB1Ttb8wHeGNB9bPg7SNP9kC6JYEbh0,4817
1211
+ cirq_core-1.5.0.dev20250325074340.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
1212
+ cirq_core-1.5.0.dev20250325074340.dist-info/top_level.txt,sha256=Sz9iOxHU0IEMLSFGwiwOCaN2e9K-jFbBbtpPN1hB73g,5
1213
+ cirq_core-1.5.0.dev20250325074340.dist-info/RECORD,,