cirq-core 1.2.0.dev20230712233101__py3-none-any.whl → 1.2.0.dev20230717131509__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
@@ -1 +1 @@
1
- __version__ = "1.2.0.dev20230712233101"
1
+ __version__ = "1.2.0.dev20230717131509"
cirq/testing/__init__.py CHANGED
@@ -109,3 +109,5 @@ from cirq.testing.routing_devices import (
109
109
  from cirq.testing.sample_circuits import nonoptimal_toffoli_circuit
110
110
 
111
111
  from cirq.testing.sample_gates import PhaseUsingCleanAncilla, PhaseUsingDirtyAncilla
112
+
113
+ from cirq.testing.consistent_unitary import assert_unitary_is_consistent
@@ -40,8 +40,17 @@ def assert_decompose_is_consistent_with_unitary(val: Any, ignoring_global_phase:
40
40
  # If there's no decomposition, it's vacuously consistent.
41
41
  return
42
42
 
43
- actual = circuits.Circuit(dec).unitary(qubit_order=qubits)
44
-
43
+ c = circuits.Circuit(dec)
44
+ if len(c.all_qubits().difference(qubits)):
45
+ # The decomposition contains ancilla qubits.
46
+ ancilla = tuple(c.all_qubits().difference(qubits))
47
+ qubit_order = ancilla + qubits
48
+ actual = c.unitary(qubit_order=qubit_order)
49
+ qid_shape = protocols.qid_shape(qubits)
50
+ vol = np.prod(qid_shape, dtype=np.int64)
51
+ actual = actual[:vol, :vol]
52
+ else:
53
+ actual = c.unitary(qubit_order=qubits)
45
54
  if ignoring_global_phase:
46
55
  lin_alg_utils.assert_allclose_up_to_global_phase(actual, expected, atol=1e-8)
47
56
  else:
@@ -43,6 +43,14 @@ def test_assert_decompose_is_consistent_with_unitary():
43
43
  GoodGateDecompose().on(cirq.NamedQubit('q'))
44
44
  )
45
45
 
46
+ cirq.testing.assert_decompose_is_consistent_with_unitary(
47
+ cirq.testing.PhaseUsingCleanAncilla(theta=0.1, ancilla_bitsize=3)
48
+ )
49
+
50
+ cirq.testing.assert_decompose_is_consistent_with_unitary(
51
+ cirq.testing.PhaseUsingDirtyAncilla(phase_state=1, ancilla_bitsize=4)
52
+ )
53
+
46
54
  with pytest.raises(AssertionError):
47
55
  cirq.testing.assert_decompose_is_consistent_with_unitary(BadGateDecompose())
48
56
 
@@ -83,7 +91,6 @@ class ParameterizedGate(cirq.Gate):
83
91
 
84
92
 
85
93
  def test_assert_decompose_ends_at_default_gateset():
86
-
87
94
  cirq.testing.assert_decompose_ends_at_default_gateset(GateDecomposesToDefaultGateset())
88
95
  cirq.testing.assert_decompose_ends_at_default_gateset(
89
96
  GateDecomposesToDefaultGateset().on(*cirq.LineQubit.range(2))
@@ -37,6 +37,7 @@ from cirq.testing.consistent_resolve_parameters import assert_consistent_resolve
37
37
  from cirq.testing.consistent_specified_has_unitary import assert_specifies_has_unitary_if_unitary
38
38
  from cirq.testing.equivalent_repr_eval import assert_equivalent_repr
39
39
  from cirq.testing.consistent_controlled_gate_op import assert_controlled_and_controlled_by_identical
40
+ from cirq.testing.consistent_unitary import assert_unitary_is_consistent
40
41
 
41
42
 
42
43
  def assert_implements_consistent_protocols(
@@ -153,6 +154,7 @@ def _assert_meets_standards_helper(
153
154
  assert_qasm_is_consistent_with_unitary(val)
154
155
  assert_has_consistent_trace_distance_bound(val)
155
156
  assert_decompose_is_consistent_with_unitary(val, ignoring_global_phase=ignoring_global_phase)
157
+ assert_unitary_is_consistent(val, ignoring_global_phase=ignoring_global_phase)
156
158
  if not ignore_decompose_to_default_gateset:
157
159
  assert_decompose_ends_at_default_gateset(val)
158
160
  assert_phase_by_is_consistent_with_unitary(val)
@@ -0,0 +1,85 @@
1
+ # Copyright 2023 The Cirq Developers
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # https://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+
16
+ from typing import Any
17
+ import cirq
18
+ import numpy as np
19
+
20
+
21
+ def assert_unitary_is_consistent(val: Any, ignoring_global_phase: bool = False):
22
+ if not isinstance(val, (cirq.Operation, cirq.Gate)):
23
+ return
24
+
25
+ if not cirq.has_unitary(val):
26
+ return
27
+
28
+ # Ensure that `u` is a unitary.
29
+ u = cirq.unitary(val)
30
+ assert not (u is None or u is NotImplemented)
31
+ assert cirq.is_unitary(u)
32
+
33
+ if isinstance(val, cirq.Operation):
34
+ qubits = val.qubits
35
+ decomposition = cirq.decompose_once(val, default=None)
36
+ else:
37
+ qubits = tuple(cirq.LineQid.for_gate(val))
38
+ decomposition = cirq.decompose_once_with_qubits(val, qubits, default=None)
39
+
40
+ if decomposition is None or decomposition is NotImplemented:
41
+ return
42
+
43
+ c = cirq.Circuit(decomposition)
44
+ if len(c.all_qubits().difference(qubits)) == 0:
45
+ return
46
+
47
+ clean_qubits = tuple(q for q in c.all_qubits() if isinstance(q, cirq.ops.CleanQubit))
48
+ borrowable_qubits = tuple(q for q in c.all_qubits() if isinstance(q, cirq.ops.BorrowableQubit))
49
+ qubit_order = clean_qubits + borrowable_qubits + qubits
50
+
51
+ # Check that the decomposition uses all data qubits in addition to
52
+ # clean and/or borrowable qubits.
53
+ assert set(qubit_order) == c.all_qubits()
54
+
55
+ qid_shape = cirq.qid_shape(qubit_order)
56
+ full_unitary = cirq.apply_unitaries(
57
+ decomposition,
58
+ qubits=qubit_order,
59
+ args=cirq.ApplyUnitaryArgs.for_unitary(qid_shape=qid_shape),
60
+ default=None,
61
+ )
62
+ if full_unitary is None:
63
+ raise ValueError(f'apply_unitaries failed on the decomposition of {val}')
64
+ vol = np.prod(qid_shape, dtype=np.int64)
65
+ full_unitary = full_unitary.reshape((vol, vol))
66
+
67
+ vol = np.prod(cirq.qid_shape(borrowable_qubits + qubits), dtype=np.int64)
68
+
69
+ # Extract the submatrix acting on the |0..0> subspace of clean qubits.
70
+ # This submatirx must be a unitary.
71
+ clean_qubits_zero_subspace = full_unitary[:vol, :vol]
72
+
73
+ # If the borrowable qubits are restored to their initial state, then
74
+ # the decomposition's effect on it is the identity matrix.
75
+ # This means that the `clean_qubits_zero_subspace` must be I \otimes u.
76
+ # So checking that `clean_qubits_zero_subspace` is I \otimes u checks correctness
77
+ # for both clean and borrowable qubits at the same time.
78
+ expected = np.kron(np.eye(2 ** len(borrowable_qubits), dtype=np.complex128), u)
79
+
80
+ if ignoring_global_phase:
81
+ cirq.testing.assert_allclose_up_to_global_phase(
82
+ clean_qubits_zero_subspace, expected, atol=1e-8
83
+ )
84
+ else:
85
+ np.testing.assert_allclose(clean_qubits_zero_subspace, expected, atol=1e-8)
@@ -0,0 +1,96 @@
1
+ # Copyright 2023 The Cirq Developers
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # https://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ import cirq
16
+
17
+ import pytest
18
+ import numpy as np
19
+
20
+
21
+ class InconsistentGate(cirq.Gate):
22
+ def _num_qubits_(self) -> int:
23
+ return 1
24
+
25
+ def _unitary_(self) -> np.ndarray:
26
+ return np.eye(2, dtype=np.complex128)
27
+
28
+ def _decompose_with_context_(self, qubits, *, context):
29
+ (q,) = context.qubit_manager.qalloc(1)
30
+ yield cirq.X(q)
31
+ yield cirq.CNOT(q, qubits[0])
32
+
33
+
34
+ class FailsOnDecompostion(cirq.Gate):
35
+ def _num_qubits_(self) -> int:
36
+ return 1
37
+
38
+ def _unitary_(self) -> np.ndarray:
39
+ return np.eye(2, dtype=np.complex128)
40
+
41
+ def _has_unitary_(self) -> bool:
42
+ return True
43
+
44
+ def _decompose_with_context_(self, qubits, *, context):
45
+ (q,) = context.qubit_manager.qalloc(1)
46
+ yield cirq.X(q)
47
+ yield cirq.measure(qubits[0])
48
+
49
+
50
+ class CleanCorrectButBorrowableIncorrectGate(cirq.Gate):
51
+ """Ancilla type determines if the decomposition is correct or not."""
52
+
53
+ def __init__(self, use_clean_ancilla: bool) -> None:
54
+ self.ancillas_are_clean = use_clean_ancilla
55
+
56
+ def _num_qubits_(self):
57
+ return 2
58
+
59
+ def _decompose_with_context_(self, qubits, *, context):
60
+ if self.ancillas_are_clean:
61
+ anc = context.qubit_manager.qalloc(1)
62
+ else:
63
+ anc = context.qubit_manager.qborrow(1)
64
+ yield cirq.CCNOT(*qubits, *anc)
65
+ yield cirq.Z(*anc)
66
+ yield cirq.CCNOT(*qubits, *anc)
67
+ context.qubit_manager.qfree(anc)
68
+
69
+
70
+ @pytest.mark.parametrize('ignore_phase', [False, True])
71
+ @pytest.mark.parametrize(
72
+ 'g,is_consistent',
73
+ [
74
+ (cirq.testing.PhaseUsingCleanAncilla(theta=0.1, ancilla_bitsize=3), True),
75
+ (cirq.testing.PhaseUsingDirtyAncilla(phase_state=1, ancilla_bitsize=4), True),
76
+ (InconsistentGate(), False),
77
+ (CleanCorrectButBorrowableIncorrectGate(use_clean_ancilla=True), True),
78
+ (CleanCorrectButBorrowableIncorrectGate(use_clean_ancilla=False), False),
79
+ ],
80
+ )
81
+ def test_assert_unitary_is_consistent(g, ignore_phase, is_consistent):
82
+ if is_consistent:
83
+ cirq.testing.assert_unitary_is_consistent(g, ignore_phase)
84
+ cirq.testing.assert_unitary_is_consistent(g.on(*cirq.LineQid.for_gate(g)), ignore_phase)
85
+ else:
86
+ with pytest.raises(AssertionError):
87
+ cirq.testing.assert_unitary_is_consistent(g, ignore_phase)
88
+ with pytest.raises(AssertionError):
89
+ cirq.testing.assert_unitary_is_consistent(g.on(*cirq.LineQid.for_gate(g)), ignore_phase)
90
+
91
+
92
+ def test_failed_decomposition():
93
+ with pytest.raises(ValueError):
94
+ cirq.testing.assert_unitary_is_consistent(FailsOnDecompostion())
95
+
96
+ _ = cirq.testing.assert_unitary_is_consistent(cirq.Circuit())
@@ -15,7 +15,7 @@ import dataclasses
15
15
 
16
16
  import cirq
17
17
  import numpy as np
18
- from cirq import ops, qis
18
+ from cirq import ops, qis, protocols
19
19
 
20
20
 
21
21
  def _matrix_for_phasing_state(num_qubits, phase_state, phase):
@@ -39,8 +39,8 @@ class PhaseUsingCleanAncilla(ops.Gate):
39
39
  def _num_qubits_(self):
40
40
  return self.target_bitsize
41
41
 
42
- def _decompose_(self, qubits):
43
- anc = ops.NamedQubit.range(self.ancilla_bitsize, prefix="anc")
42
+ def _decompose_with_context_(self, qubits, *, context: protocols.DecompositionContext):
43
+ anc = context.qubit_manager.qalloc(self.ancilla_bitsize)
44
44
  cv = [int(x) for x in f'{self.phase_state:0{self.target_bitsize}b}']
45
45
  cnot_ladder = [cirq.CNOT(anc[i - 1], anc[i]) for i in range(1, self.ancilla_bitsize)]
46
46
 
@@ -65,8 +65,8 @@ class PhaseUsingDirtyAncilla(ops.Gate):
65
65
  def _num_qubits_(self):
66
66
  return self.target_bitsize
67
67
 
68
- def _decompose_(self, qubits):
69
- anc = ops.NamedQubit.range(self.ancilla_bitsize, prefix="anc")
68
+ def _decompose_with_context_(self, qubits, *, context: protocols.DecompositionContext):
69
+ anc = context.qubit_manager.qalloc(self.ancilla_bitsize)
70
70
  cv = [int(x) for x in f'{self.phase_state:0{self.target_bitsize}b}']
71
71
  cnot_ladder = [cirq.CNOT(anc[i - 1], anc[i]) for i in range(1, self.ancilla_bitsize)]
72
72
  yield ops.X(anc[0]).controlled_by(*qubits, control_values=cv)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cirq-core
3
- Version: 1.2.0.dev20230712233101
3
+ Version: 1.2.0.dev20230717131509
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,7 +4,7 @@ cirq/_compat_test.py,sha256=tFt1lskrZi_Pmn8ZDeMxxfCNTivqVGzKiIYrskK0dE4,33898
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=yzW5fCWOEqzpiO03c0juYR6Sd0YmGNzP04VMceYnCvI,40
7
+ cirq/_version.py,sha256=QQD_zp2Pz0RjGtHznPQGYTcKwoDhcAb9nl0tOqHjiKU,40
8
8
  cirq/_version_test.py,sha256=ZM9GLAiU02rzyJQ_HOT2o_tZixJ0lMXs4tCkOareqTA,133
9
9
  cirq/conftest.py,sha256=mHCDs5--u17oLFDAfIlkTS4TRGSc35eLnZ2CXuIuB7I,1175
10
10
  cirq/json_resolver_cache.py,sha256=JJiO1dhHsEqYClUv68eg-hiOzbb_C1QiQ-BCcvoe4Ck,13067
@@ -924,7 +924,7 @@ cirq/study/sweepable.py,sha256=BMgq8lxVnyJGBeu4gFUt_0P_v4gFwKgazZFftRUEwnA,4185
924
924
  cirq/study/sweepable_test.py,sha256=xjUksIurfbh240fEC7Al_TuiHGz7xZGktQUh86XBG9U,4772
925
925
  cirq/study/sweeps.py,sha256=IzonyU-LgEcMpvQrKZbl14v-BHi01oncp9CmHtLw0J4,19813
926
926
  cirq/study/sweeps_test.py,sha256=IqZp0ywYA430nNE_slBfc4vdKjULttzPl8ytxHLlgWo,11966
927
- cirq/testing/__init__.py,sha256=j0fTBwpqzz_CW9dnkkSQMnaUkPRQAhikpXJxZwhbaQY,3691
927
+ cirq/testing/__init__.py,sha256=fYJsFpYtz_4JY3ClCh647oZY7ev27lebzwJ4hXDevXQ,3765
928
928
  cirq/testing/circuit_compare.py,sha256=Daor8s6gVQKRO9JX0vOi3rU4hWu7_a0sWKc1E7sypOk,19350
929
929
  cirq/testing/circuit_compare_test.py,sha256=6Xw1hrBUDavhji_ygpCKLBHUt_0melvy2VTjH2VcJwk,19743
930
930
  cirq/testing/consistent_act_on.py,sha256=bgV2LzqTG8rcxMephuWqoAhd_Q2rPWNGHOnbLRg6KT4,7854
@@ -933,19 +933,21 @@ cirq/testing/consistent_channels.py,sha256=hrPRjaabPko2l0xqqkJ8F3OM7pornkDNCP-St
933
933
  cirq/testing/consistent_channels_test.py,sha256=Xpm0KA5ArxGKh3h1GJ9sdDrLuyDCrnkVZgzPZOQYsTY,3485
934
934
  cirq/testing/consistent_controlled_gate_op.py,sha256=mU3h3OtpPzqntRcKn8SqaaYU_evw2MpoB_jQywECsnI,2206
935
935
  cirq/testing/consistent_controlled_gate_op_test.py,sha256=K2oqmMQvMepQ_SM1sre-E7wNeQlCATKvuGG7rwJUhGQ,2941
936
- cirq/testing/consistent_decomposition.py,sha256=srPFMIHTXv-sxdQQC99b8kX4wLn4E7zYAA2gopv-SIg,3325
937
- cirq/testing/consistent_decomposition_test.py,sha256=-GpUKAjMdKUKso_5xNbgqg8d0YVuI-r0_PWGEkwqoq0,3531
936
+ cirq/testing/consistent_decomposition.py,sha256=UxXW0Mn6XyDcVtL5-JcPC2f7BAkndyU1HNokQj8PB_Y,3731
937
+ cirq/testing/consistent_decomposition_test.py,sha256=6GUPhZQI4FVHM9fYZbHr62-TrwiK0jOPMTOznDellFw,3820
938
938
  cirq/testing/consistent_pauli_expansion.py,sha256=NVloOg1I8LGGIEoZxvtUQIUHRvMgo9CNgw5-atuXGsE,1580
939
939
  cirq/testing/consistent_pauli_expansion_test.py,sha256=Gy95osE-L4uQs1E1oxAKHCgVguXl-hjI5UNQJW5cEdI,2402
940
940
  cirq/testing/consistent_phase_by.py,sha256=oSZcZnKMOIJnBS0HgYi-8aRaVJmHGgI--WAUGC5JxQ8,2085
941
941
  cirq/testing/consistent_phase_by_test.py,sha256=YbI0n0FpWpBkbgYp0-yGZSeesDZEst0cmYtXgJE2LQY,3273
942
- cirq/testing/consistent_protocols.py,sha256=9apl2Ed1j2FeWDh-tPNOdnGQhOLbwmSojINPD3YL1OA,7473
942
+ cirq/testing/consistent_protocols.py,sha256=dFixwCjCeXmu9EXv4QjIUBXnl1K1UYeMjBUQcZgBD_o,7629
943
943
  cirq/testing/consistent_protocols_test.py,sha256=vRRWpp2nqtbIJEvAvRLpKbrfZgTsl1fOm8hv4zlJBiE,10126
944
944
  cirq/testing/consistent_qasm.py,sha256=QjawKbxbKhcnbybLqls2OoQ7AusU14H1afv1qj-uxzM,5191
945
945
  cirq/testing/consistent_qasm_test.py,sha256=PGXPXexT6sjbbgKdouWWZ9pyXvwRA0HaMrtUzE-yyiQ,2890
946
946
  cirq/testing/consistent_resolve_parameters.py,sha256=hYbp6kbXrOLCc1DMDRC2zTAx1qlvCCJMuzZ7a5cGhmA,1973
947
947
  cirq/testing/consistent_specified_has_unitary.py,sha256=WY2YPFvRTGoj5gxtbs4jtB18S-yj5MIJkdz2gVda9Gw,1237
948
948
  cirq/testing/consistent_specified_has_unitary_test.py,sha256=qMar7K1CoubcX_rl9i3iQdI-LpF-OxvY8V4h7k_f26A,2571
949
+ cirq/testing/consistent_unitary.py,sha256=JWUNy4HeWbs4JjPm6kLTKfqNq1wP2e3WYQxpDabkfZU,3247
950
+ cirq/testing/consistent_unitary_test.py,sha256=MS0cHzR7gwy4zM_AHiYqNErj7bhqmQX78eIuaYORO6Q,3260
949
951
  cirq/testing/deprecation.py,sha256=neyww8gBZZmgwPX8xPw8Mg4HgG0OXwSixhOAHnIU2ks,2152
950
952
  cirq/testing/deprecation_test.py,sha256=bWq_VY-rGnfvdeJVqdkMIDzMtxQRj9rdR6gu0kCHtzo,2166
951
953
  cirq/testing/devices.py,sha256=fA0rcpZxMU0fVObtLcsDJa4XS_QBzi6uH58W0PAYOoA,3259
@@ -978,7 +980,7 @@ cirq/testing/routing_devices.py,sha256=uIm0j7GcChiHog9-c7kyIw9qdfBEmLLETRF37UwLv
978
980
  cirq/testing/routing_devices_test.py,sha256=iyNZp3J8fUt8bOktXZNhDgxR6L8UBRphgzYmDsmHvTw,5598
979
981
  cirq/testing/sample_circuits.py,sha256=8HTrY_RWoPHV18q7aLz6e5Fjd2Twkt9Wkc_IDBzTE1o,1585
980
982
  cirq/testing/sample_circuits_test.py,sha256=IMz72CMXJeRt7Eg1rRB68hFV1v3k7OQpYUyhqmfjNpo,876
981
- cirq/testing/sample_gates.py,sha256=xhFeAMWt-VZWjYW4UEnmlXuZYZIlvLx7idbalT1gor4,3164
983
+ cirq/testing/sample_gates.py,sha256=qSCZhb-A-Mwm_J81Su2sUFyEUdvqfq7Je66dsk8cFy0,3277
982
984
  cirq/testing/sample_gates_test.py,sha256=mkfYPNo4WFH6y33Vr_f9zy2Ry1oq5yYLpB__sqSCkjQ,2377
983
985
  cirq/testing/_compat_test_data/__init__.py,sha256=yIe0dUE7-FT1bxYjc0hcoOZQkecBdYN5onC6KOpsx8U,3040
984
986
  cirq/testing/_compat_test_data/module_a/__init__.py,sha256=klpfbI8BVz2BA5TwhUDGqMSM0Sjw6ABIA_4hpyADHaE,386
@@ -1138,8 +1140,8 @@ cirq/work/sampler.py,sha256=JVv1vvfa6EgFiR3UeDk44U186dCrioH2NZXueCgsb9w,19828
1138
1140
  cirq/work/sampler_test.py,sha256=zo1Hj6sn6fLs_WZMxYRApBqgBsldmptn74NL0jhNukc,12325
1139
1141
  cirq/work/zeros_sampler.py,sha256=D3hbNZC-jXKuNAWg2OUiUuT8pmDV_WFnEfMank6In4o,2357
1140
1142
  cirq/work/zeros_sampler_test.py,sha256=JIkpBBFPJe5Ba4142vzogyWyboG1Q1ZAm0UVGgOoZn8,3279
1141
- cirq_core-1.2.0.dev20230712233101.dist-info/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
1142
- cirq_core-1.2.0.dev20230712233101.dist-info/METADATA,sha256=-qt8i5CFsCs6yaRtIQ8KttPxzi2MxEetd0HFSTzD0BU,2095
1143
- cirq_core-1.2.0.dev20230712233101.dist-info/WHEEL,sha256=pkctZYzUS4AYVn6dJ-7367OJZivF2e8RA9b_ZBjif18,92
1144
- cirq_core-1.2.0.dev20230712233101.dist-info/top_level.txt,sha256=Sz9iOxHU0IEMLSFGwiwOCaN2e9K-jFbBbtpPN1hB73g,5
1145
- cirq_core-1.2.0.dev20230712233101.dist-info/RECORD,,
1143
+ cirq_core-1.2.0.dev20230717131509.dist-info/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
1144
+ cirq_core-1.2.0.dev20230717131509.dist-info/METADATA,sha256=bSlKWub-9LcGFV10b2VqNPinYWWU8WLsBNXvVIILi64,2095
1145
+ cirq_core-1.2.0.dev20230717131509.dist-info/WHEEL,sha256=pkctZYzUS4AYVn6dJ-7367OJZivF2e8RA9b_ZBjif18,92
1146
+ cirq_core-1.2.0.dev20230717131509.dist-info/top_level.txt,sha256=Sz9iOxHU0IEMLSFGwiwOCaN2e9K-jFbBbtpPN1hB73g,5
1147
+ cirq_core-1.2.0.dev20230717131509.dist-info/RECORD,,