cirq-core 1.5.0.dev20240823014143__py3-none-any.whl → 1.5.0.dev20240823202236__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 +1 -1
- cirq/_version_test.py +1 -1
- cirq/circuits/circuit.py +1 -1
- cirq/circuits/circuit_operation.py +2 -2
- cirq/circuits/qasm_output.py +2 -2
- cirq/contrib/acquaintance/bipartite.py +3 -3
- cirq/contrib/acquaintance/executor.py +2 -2
- cirq/contrib/acquaintance/gates.py +12 -2
- cirq/contrib/acquaintance/inspection_utils.py +2 -2
- cirq/contrib/acquaintance/permutation.py +3 -2
- cirq/contrib/acquaintance/shift.py +2 -2
- cirq/contrib/acquaintance/shift_swap_network.py +2 -2
- cirq/contrib/bayesian_network/bayesian_network_gate.py +2 -2
- cirq/contrib/paulistring/separate.py +2 -2
- cirq/experiments/random_quantum_circuit_generation.py +2 -1
- cirq/interop/quirk/cells/control_cells.py +1 -1
- cirq/interop/quirk/cells/parse.py +3 -1
- cirq/ops/diagonal_gate.py +1 -1
- cirq/ops/fsim_gate.py +3 -3
- cirq/ops/linear_combinations.py +1 -1
- cirq/ops/parity_gates.py +3 -3
- cirq/ops/pauli_interaction_gate.py +2 -2
- cirq/ops/pauli_measurement_gate.py +2 -1
- cirq/ops/pauli_string_phasor.py +1 -1
- cirq/ops/permutation_gate.py +2 -2
- cirq/ops/phased_iswap_gate.py +2 -2
- cirq/ops/phased_x_z_gate.py +3 -2
- cirq/ops/projector.py +2 -1
- cirq/ops/raw_types.py +1 -1
- cirq/ops/three_qubit_gates.py +3 -2
- cirq/ops/two_qubit_diagonal_gate.py +2 -2
- cirq/ops/uniform_superposition_gate.py +2 -2
- cirq/sim/state_vector_test.py +27 -32
- cirq/transformers/eject_phased_paulis.py +2 -2
- cirq/transformers/eject_z.py +2 -2
- cirq/transformers/transformer_primitives_test.py +3 -3
- cirq/value/linear_dict.py +6 -4
- cirq/vis/heatmap.py +9 -1
- cirq/vis/state_histogram.py +2 -1
- {cirq_core-1.5.0.dev20240823014143.dist-info → cirq_core-1.5.0.dev20240823202236.dist-info}/METADATA +1 -1
- {cirq_core-1.5.0.dev20240823014143.dist-info → cirq_core-1.5.0.dev20240823202236.dist-info}/RECORD +44 -44
- {cirq_core-1.5.0.dev20240823014143.dist-info → cirq_core-1.5.0.dev20240823202236.dist-info}/LICENSE +0 -0
- {cirq_core-1.5.0.dev20240823014143.dist-info → cirq_core-1.5.0.dev20240823202236.dist-info}/WHEEL +0 -0
- {cirq_core-1.5.0.dev20240823014143.dist-info → cirq_core-1.5.0.dev20240823202236.dist-info}/top_level.txt +0 -0
cirq/_version.py
CHANGED
cirq/_version_test.py
CHANGED
cirq/circuits/circuit.py
CHANGED
|
@@ -2014,7 +2014,7 @@ class Circuit(AbstractCircuit):
|
|
|
2014
2014
|
if callable(qubit_map):
|
|
2015
2015
|
transform = qubit_map
|
|
2016
2016
|
elif isinstance(qubit_map, dict):
|
|
2017
|
-
transform = lambda q: qubit_map.get(q, q)
|
|
2017
|
+
transform = lambda q: qubit_map.get(q, q)
|
|
2018
2018
|
else:
|
|
2019
2019
|
raise TypeError('qubit_map must be a function or dict mapping qubits to qubits.')
|
|
2020
2020
|
|
|
@@ -267,7 +267,7 @@ class CircuitOperation(ops.Operation):
|
|
|
267
267
|
'repeat_until': self.repeat_until,
|
|
268
268
|
**changes,
|
|
269
269
|
}
|
|
270
|
-
return CircuitOperation(**kwargs)
|
|
270
|
+
return CircuitOperation(**kwargs)
|
|
271
271
|
|
|
272
272
|
def __eq__(self, other) -> bool:
|
|
273
273
|
if not isinstance(other, type(self)):
|
|
@@ -688,7 +688,7 @@ class CircuitOperation(ops.Operation):
|
|
|
688
688
|
if callable(qubit_map):
|
|
689
689
|
transform = qubit_map
|
|
690
690
|
elif isinstance(qubit_map, dict):
|
|
691
|
-
transform = lambda q: qubit_map.get(q, q)
|
|
691
|
+
transform = lambda q: qubit_map.get(q, q)
|
|
692
692
|
else:
|
|
693
693
|
raise TypeError('qubit_map must be a function or dict mapping qubits to qubits.')
|
|
694
694
|
new_map = {}
|
cirq/circuits/qasm_output.py
CHANGED
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
|
|
15
15
|
"""Utility classes for representing QASM."""
|
|
16
16
|
|
|
17
|
-
from typing import Callable, Dict, Optional, Sequence, Set, Tuple, Union, TYPE_CHECKING
|
|
17
|
+
from typing import Callable, Dict, Iterator, Optional, Sequence, Set, Tuple, Union, TYPE_CHECKING
|
|
18
18
|
|
|
19
19
|
import re
|
|
20
20
|
import numpy as np
|
|
@@ -126,7 +126,7 @@ class QasmTwoQubitGate(ops.Gate):
|
|
|
126
126
|
def _unitary_(self):
|
|
127
127
|
return protocols.unitary(self.kak)
|
|
128
128
|
|
|
129
|
-
def _decompose_(self, qubits: Sequence['cirq.Qid']) -> 'cirq.OP_TREE':
|
|
129
|
+
def _decompose_(self, qubits: Sequence['cirq.Qid']) -> Iterator['cirq.OP_TREE']:
|
|
130
130
|
q0, q1 = qubits
|
|
131
131
|
x, y, z = self.kak.interaction_coefficients
|
|
132
132
|
a = x * -2 / np.pi + 0.5
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
|
|
15
15
|
import enum
|
|
16
16
|
import itertools
|
|
17
|
-
from typing import Dict, Sequence, Tuple, Union, TYPE_CHECKING
|
|
17
|
+
from typing import Dict, Iterator, Sequence, Tuple, Union, TYPE_CHECKING
|
|
18
18
|
|
|
19
19
|
from cirq import ops
|
|
20
20
|
|
|
@@ -72,7 +72,7 @@ class BipartiteSwapNetworkGate(PermutationGate):
|
|
|
72
72
|
)
|
|
73
73
|
self.swap_gate = swap_gate
|
|
74
74
|
|
|
75
|
-
def decompose_complete(self, qubits: Sequence['cirq.Qid']) -> 'cirq.OP_TREE':
|
|
75
|
+
def decompose_complete(self, qubits: Sequence['cirq.Qid']) -> Iterator['cirq.OP_TREE']:
|
|
76
76
|
swap_gate = SwapPermutationGate(self.swap_gate)
|
|
77
77
|
if self.part_size == 1:
|
|
78
78
|
yield acquaint(*qubits)
|
|
@@ -87,7 +87,7 @@ class BipartiteSwapNetworkGate(PermutationGate):
|
|
|
87
87
|
yield acquaint(*qubits[x : x + 2])
|
|
88
88
|
yield swap_gate(*qubits[x : x + 2])
|
|
89
89
|
|
|
90
|
-
def decompose_matching(self, qubits: Sequence['cirq.Qid']) -> 'cirq.OP_TREE':
|
|
90
|
+
def decompose_matching(self, qubits: Sequence['cirq.Qid']) -> Iterator['cirq.OP_TREE']:
|
|
91
91
|
swap_gate = SwapPermutationGate(self.swap_gate)
|
|
92
92
|
for k in range(-self.part_size + 1, self.part_size):
|
|
93
93
|
for x in range(abs(k), 2 * self.part_size - abs(k), 2):
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
|
-
from typing import DefaultDict, Dict, Sequence, TYPE_CHECKING, Optional
|
|
15
|
+
from typing import DefaultDict, Dict, Iterator, Sequence, TYPE_CHECKING, Optional
|
|
16
16
|
|
|
17
17
|
import abc
|
|
18
18
|
from collections import defaultdict
|
|
@@ -208,7 +208,7 @@ class GreedyExecutionStrategy(ExecutionStrategy):
|
|
|
208
208
|
|
|
209
209
|
def get_operations(
|
|
210
210
|
self, indices: Sequence[LogicalIndex], qubits: Sequence['cirq.Qid']
|
|
211
|
-
) -> 'cirq.OP_TREE':
|
|
211
|
+
) -> Iterator['cirq.OP_TREE']:
|
|
212
212
|
index_set = frozenset(indices)
|
|
213
213
|
if index_set in self.index_set_to_gates:
|
|
214
214
|
gates = self.index_set_to_gates.pop(index_set)
|
|
@@ -16,7 +16,17 @@ import functools
|
|
|
16
16
|
import itertools
|
|
17
17
|
import math
|
|
18
18
|
import operator
|
|
19
|
-
from typing import
|
|
19
|
+
from typing import (
|
|
20
|
+
Dict,
|
|
21
|
+
Iterable,
|
|
22
|
+
Iterator,
|
|
23
|
+
List,
|
|
24
|
+
NamedTuple,
|
|
25
|
+
Optional,
|
|
26
|
+
Sequence,
|
|
27
|
+
Tuple,
|
|
28
|
+
TYPE_CHECKING,
|
|
29
|
+
)
|
|
20
30
|
|
|
21
31
|
from cirq import ops, protocols, value
|
|
22
32
|
|
|
@@ -276,7 +286,7 @@ class SwapNetworkGate(PermutationGate):
|
|
|
276
286
|
self.part_lens = tuple(part_lens)
|
|
277
287
|
self.acquaintance_size = acquaintance_size
|
|
278
288
|
|
|
279
|
-
def _decompose_(self, qubits: Sequence['cirq.Qid']) -> 'cirq.OP_TREE':
|
|
289
|
+
def _decompose_(self, qubits: Sequence['cirq.Qid']) -> Iterator['cirq.OP_TREE']:
|
|
280
290
|
qubit_to_position = {q: i for i, q in enumerate(qubits)}
|
|
281
291
|
mapping = dict(qubit_to_position)
|
|
282
292
|
parts = []
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
|
-
from typing import FrozenSet, Sequence, Set, TYPE_CHECKING
|
|
15
|
+
from typing import FrozenSet, Iterator, Sequence, Set, TYPE_CHECKING
|
|
16
16
|
|
|
17
17
|
from cirq import devices
|
|
18
18
|
|
|
@@ -46,7 +46,7 @@ class LogicalAnnotator(ExecutionStrategy):
|
|
|
46
46
|
|
|
47
47
|
def get_operations(
|
|
48
48
|
self, indices: Sequence[LogicalIndex], qubits: Sequence['cirq.Qid']
|
|
49
|
-
) -> 'cirq.OP_TREE':
|
|
49
|
+
) -> Iterator['cirq.OP_TREE']:
|
|
50
50
|
yield AcquaintanceOperation(qubits, indices)
|
|
51
51
|
|
|
52
52
|
|
|
@@ -18,6 +18,7 @@ from typing import (
|
|
|
18
18
|
cast,
|
|
19
19
|
Dict,
|
|
20
20
|
Iterable,
|
|
21
|
+
Iterator,
|
|
21
22
|
Optional,
|
|
22
23
|
Sequence,
|
|
23
24
|
Tuple,
|
|
@@ -152,7 +153,7 @@ class SwapPermutationGate(PermutationGate):
|
|
|
152
153
|
def permutation(self) -> Dict[int, int]:
|
|
153
154
|
return {0: 1, 1: 0}
|
|
154
155
|
|
|
155
|
-
def _decompose_(self, qubits: Sequence['cirq.Qid']) -> 'cirq.OP_TREE':
|
|
156
|
+
def _decompose_(self, qubits: Sequence['cirq.Qid']) -> Iterator['cirq.OP_TREE']:
|
|
156
157
|
yield self.swap_gate(*qubits)
|
|
157
158
|
|
|
158
159
|
def __repr__(self) -> str:
|
|
@@ -201,7 +202,7 @@ class LinearPermutationGate(PermutationGate):
|
|
|
201
202
|
def permutation(self) -> Dict[int, int]:
|
|
202
203
|
return self._permutation
|
|
203
204
|
|
|
204
|
-
def _decompose_(self, qubits: Sequence['cirq.Qid']) -> 'cirq.OP_TREE':
|
|
205
|
+
def _decompose_(self, qubits: Sequence['cirq.Qid']) -> Iterator['cirq.OP_TREE']:
|
|
205
206
|
swap_gate = SwapPermutationGate(self.swap_gate)
|
|
206
207
|
n_qubits = len(qubits)
|
|
207
208
|
mapping = {i: self._permutation.get(i, i) for i in range(n_qubits)}
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
15
|
import itertools
|
|
16
|
-
from typing import Any, Dict, Sequence, Tuple, TYPE_CHECKING
|
|
16
|
+
from typing import Any, Dict, Iterator, Sequence, Tuple, TYPE_CHECKING
|
|
17
17
|
|
|
18
18
|
from cirq import ops, value
|
|
19
19
|
from cirq.contrib.acquaintance.permutation import SwapPermutationGate, PermutationGate
|
|
@@ -47,7 +47,7 @@ class CircularShiftGate(PermutationGate):
|
|
|
47
47
|
def _value_equality_values_(self) -> Any:
|
|
48
48
|
return self.shift, self.swap_gate, self.num_qubits()
|
|
49
49
|
|
|
50
|
-
def _decompose_(self, qubits: Sequence['cirq.Qid']) -> 'cirq.OP_TREE':
|
|
50
|
+
def _decompose_(self, qubits: Sequence['cirq.Qid']) -> Iterator['cirq.OP_TREE']:
|
|
51
51
|
n = len(qubits)
|
|
52
52
|
left_shift = self.shift % n
|
|
53
53
|
right_shift = n - left_shift
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
|
|
15
15
|
import functools
|
|
16
16
|
import itertools
|
|
17
|
-
from typing import Dict, Iterable, Optional, Sequence, Tuple, TYPE_CHECKING
|
|
17
|
+
from typing import Dict, Iterable, Iterator, Optional, Sequence, Tuple, TYPE_CHECKING
|
|
18
18
|
|
|
19
19
|
from cirq import ops
|
|
20
20
|
from cirq.contrib.acquaintance.gates import acquaint
|
|
@@ -65,7 +65,7 @@ class ShiftSwapNetworkGate(PermutationGate):
|
|
|
65
65
|
def acquaintance_size(self) -> int:
|
|
66
66
|
return sum(max(self.part_lens[side]) for side in ('left', 'right'))
|
|
67
67
|
|
|
68
|
-
def _decompose_(self, qubits: Sequence['cirq.Qid']) -> 'cirq.OP_TREE':
|
|
68
|
+
def _decompose_(self, qubits: Sequence['cirq.Qid']) -> Iterator['cirq.OP_TREE']:
|
|
69
69
|
part_lens = list(itertools.chain(*(self.part_lens[side] for side in ('left', 'right'))))
|
|
70
70
|
|
|
71
71
|
n_qubits = 0
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
15
|
import math
|
|
16
|
-
from typing import Any, cast, Dict, List, Optional, Sequence, Tuple, TYPE_CHECKING, Union
|
|
16
|
+
from typing import Any, cast, Dict, Iterator, List, Optional, Sequence, Tuple, TYPE_CHECKING, Union
|
|
17
17
|
|
|
18
18
|
from sympy.combinatorics import GrayCode
|
|
19
19
|
|
|
@@ -158,7 +158,7 @@ class BayesianNetworkGate(raw_types.Gate):
|
|
|
158
158
|
raise ValueError('Conditional prob should be between 0 and 1.')
|
|
159
159
|
self._arc_probs = arc_probs
|
|
160
160
|
|
|
161
|
-
def _decompose_(self, qubits: Sequence['raw_types.Qid']) -> 'cirq.OP_TREE':
|
|
161
|
+
def _decompose_(self, qubits: Sequence['raw_types.Qid']) -> Iterator['cirq.OP_TREE']:
|
|
162
162
|
parameter_names = [init_prob[0] for init_prob in self._init_probs]
|
|
163
163
|
qubit_map = dict(zip(parameter_names, qubits))
|
|
164
164
|
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
|
-
from typing import Tuple
|
|
15
|
+
from typing import Iterator, Tuple
|
|
16
16
|
|
|
17
17
|
from cirq import ops, circuits, transformers
|
|
18
18
|
|
|
@@ -89,7 +89,7 @@ def pauli_string_half(circuit: circuits.Circuit) -> circuits.Circuit:
|
|
|
89
89
|
)
|
|
90
90
|
|
|
91
91
|
|
|
92
|
-
def _pull_non_clifford_before(circuit: circuits.Circuit) -> ops.OP_TREE:
|
|
92
|
+
def _pull_non_clifford_before(circuit: circuits.Circuit) -> Iterator[ops.OP_TREE]:
|
|
93
93
|
def _iter_ops_range_reversed(moment_end):
|
|
94
94
|
for i in reversed(range(moment_end)):
|
|
95
95
|
moment = circuit[i]
|
|
@@ -21,6 +21,7 @@ from typing import (
|
|
|
21
21
|
Container,
|
|
22
22
|
Dict,
|
|
23
23
|
Iterable,
|
|
24
|
+
Iterator,
|
|
24
25
|
List,
|
|
25
26
|
Sequence,
|
|
26
27
|
TYPE_CHECKING,
|
|
@@ -691,7 +692,7 @@ def _two_qubit_layer(
|
|
|
691
692
|
],
|
|
692
693
|
layer: GridInteractionLayer,
|
|
693
694
|
prng: 'np.random.RandomState',
|
|
694
|
-
) -> 'cirq.OP_TREE':
|
|
695
|
+
) -> Iterator['cirq.OP_TREE']:
|
|
695
696
|
for a, b in coupled_qubit_pairs:
|
|
696
697
|
if (a, b) in layer or (b, a) in layer:
|
|
697
698
|
yield two_qubit_op_factory(a, b, prng)
|
|
@@ -109,7 +109,7 @@ class ParityControlCell(Cell):
|
|
|
109
109
|
elif gate is not None:
|
|
110
110
|
column[i] = gate.controlled_by(self.qubits[0])
|
|
111
111
|
|
|
112
|
-
def basis_change(self) -> 'cirq.OP_TREE':
|
|
112
|
+
def basis_change(self) -> Iterator['cirq.OP_TREE']:
|
|
113
113
|
yield from self._basis_change
|
|
114
114
|
|
|
115
115
|
# Temporarily move the ZZZ..Z parity observable onto a single qubit.
|
|
@@ -191,7 +191,9 @@ def _parse_formula_using_token_map(
|
|
|
191
191
|
elif token.unary_action is not None:
|
|
192
192
|
burn_ops(token.priority)
|
|
193
193
|
vals.append(None)
|
|
194
|
-
|
|
194
|
+
# this avoids mypy complaint about None not being callable
|
|
195
|
+
token_unary_action = token.unary_action
|
|
196
|
+
ops.append(_HangingNode(func=lambda _, b: token_unary_action(b), weight=np.inf))
|
|
195
197
|
elif token.binary_action is not None:
|
|
196
198
|
raise ValueError("Bad expression: binary op in bad spot.\ntext={text!r}")
|
|
197
199
|
|
cirq/ops/diagonal_gate.py
CHANGED
|
@@ -166,7 +166,7 @@ class DiagonalGate(raw_types.Gate):
|
|
|
166
166
|
self, index: int, bit_flip: int, theta: 'cirq.TParamVal', qubits: Sequence['cirq.Qid']
|
|
167
167
|
) -> Iterator[Union['cirq.ZPowGate', 'cirq.CXPowGate']]:
|
|
168
168
|
if index == 0:
|
|
169
|
-
return
|
|
169
|
+
return
|
|
170
170
|
largest_digit = self._num_qubits_() - (len(bin(index)) - 2)
|
|
171
171
|
yield common_gates.rz(2 * theta)(qubits[largest_digit])
|
|
172
172
|
_flip_bit = self._num_qubits_() - bit_flip - 1
|
cirq/ops/fsim_gate.py
CHANGED
|
@@ -23,7 +23,7 @@ applies more generally to fermions, thus the name of the gate.
|
|
|
23
23
|
|
|
24
24
|
import cmath
|
|
25
25
|
import math
|
|
26
|
-
from typing import AbstractSet, Any, Dict, Optional, Tuple
|
|
26
|
+
from typing import AbstractSet, Any, Dict, Iterator, Optional, Tuple
|
|
27
27
|
|
|
28
28
|
import numpy as np
|
|
29
29
|
import sympy
|
|
@@ -187,7 +187,7 @@ class FSimGate(gate_features.InterchangeableQubitsGate, raw_types.Gate):
|
|
|
187
187
|
out[ii] *= cmath.exp(-1j * self.phi)
|
|
188
188
|
return out
|
|
189
189
|
|
|
190
|
-
def _decompose_(self, qubits) -> 'cirq.OP_TREE':
|
|
190
|
+
def _decompose_(self, qubits) -> Iterator['cirq.OP_TREE']:
|
|
191
191
|
a, b = qubits
|
|
192
192
|
xx = cirq.XXPowGate(exponent=self.theta / np.pi, global_shift=-0.5)
|
|
193
193
|
yy = cirq.YYPowGate(exponent=self.theta / np.pi, global_shift=-0.5)
|
|
@@ -452,7 +452,7 @@ class PhasedFSimGate(gate_features.InterchangeableQubitsGate, raw_types.Gate):
|
|
|
452
452
|
out[ii] *= f * f
|
|
453
453
|
return out
|
|
454
454
|
|
|
455
|
-
def _decompose_(self, qubits) -> 'cirq.OP_TREE':
|
|
455
|
+
def _decompose_(self, qubits) -> Iterator['cirq.OP_TREE']:
|
|
456
456
|
"""Decomposes self into Z rotations and FSimGate.
|
|
457
457
|
|
|
458
458
|
Note that Z rotations returned by this method have unusual global phase
|
cirq/ops/linear_combinations.py
CHANGED
|
@@ -805,7 +805,7 @@ class PauliSum:
|
|
|
805
805
|
if not isinstance(other, (numbers.Complex, PauliString, PauliSum)):
|
|
806
806
|
return NotImplemented
|
|
807
807
|
if isinstance(other, numbers.Complex):
|
|
808
|
-
self._linear_dict *= other
|
|
808
|
+
self._linear_dict *= complex(other)
|
|
809
809
|
elif isinstance(other, PauliString):
|
|
810
810
|
temp = PauliSum.from_pauli_strings([term * other for term in self])
|
|
811
811
|
self._linear_dict = temp._linear_dict
|
cirq/ops/parity_gates.py
CHANGED
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
|
|
15
15
|
"""Quantum gates that phase with respect to product-of-pauli observables."""
|
|
16
16
|
|
|
17
|
-
from typing import Any, Dict, List, Optional, Tuple, Union, TYPE_CHECKING, Sequence
|
|
17
|
+
from typing import Any, Dict, List, Iterator, Optional, Tuple, Union, TYPE_CHECKING, Sequence
|
|
18
18
|
from typing_extensions import Self
|
|
19
19
|
|
|
20
20
|
import numpy as np
|
|
@@ -118,7 +118,7 @@ class XXPowGate(gate_features.InterchangeableQubitsGate, eigen_gate.EigenGate):
|
|
|
118
118
|
def _has_stabilizer_effect_(self) -> bool:
|
|
119
119
|
return self.exponent % 2 in (0, 0.5, 1, 1.5)
|
|
120
120
|
|
|
121
|
-
def _decompose_(self, qubits: Tuple['cirq.Qid', ...]) -> 'cirq.OP_TREE':
|
|
121
|
+
def _decompose_(self, qubits: Tuple['cirq.Qid', ...]) -> Iterator['cirq.OP_TREE']:
|
|
122
122
|
yield common_gates.YPowGate(exponent=-0.5).on_each(*qubits)
|
|
123
123
|
yield ZZPowGate(exponent=self.exponent, global_shift=self.global_shift)(*qubits)
|
|
124
124
|
yield common_gates.YPowGate(exponent=0.5).on_each(*qubits)
|
|
@@ -227,7 +227,7 @@ class YYPowGate(gate_features.InterchangeableQubitsGate, eigen_gate.EigenGate):
|
|
|
227
227
|
def _has_stabilizer_effect_(self) -> bool:
|
|
228
228
|
return self.exponent % 2 in (0, 0.5, 1, 1.5)
|
|
229
229
|
|
|
230
|
-
def _decompose_(self, qubits: Tuple['cirq.Qid', ...]) -> 'cirq.OP_TREE':
|
|
230
|
+
def _decompose_(self, qubits: Tuple['cirq.Qid', ...]) -> Iterator['cirq.OP_TREE']:
|
|
231
231
|
yield common_gates.XPowGate(exponent=0.5).on_each(*qubits)
|
|
232
232
|
yield ZZPowGate(exponent=self.exponent, global_shift=self.global_shift)(*qubits)
|
|
233
233
|
yield common_gates.XPowGate(exponent=-0.5).on_each(*qubits)
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
|
-
from typing import Any, Dict, List, Sequence, TYPE_CHECKING, Tuple
|
|
15
|
+
from typing import Any, Dict, Iterator, List, Sequence, TYPE_CHECKING, Tuple
|
|
16
16
|
|
|
17
17
|
import numpy as np
|
|
18
18
|
|
|
@@ -108,7 +108,7 @@ class PauliInteractionGate(gate_features.InterchangeableQubitsGate, eigen_gate.E
|
|
|
108
108
|
comp0 = np.eye(4) - comp1
|
|
109
109
|
return [(0, comp0), (1, comp1)]
|
|
110
110
|
|
|
111
|
-
def _decompose_(self, qubits: Sequence['cirq.Qid']) -> 'cirq.OP_TREE':
|
|
111
|
+
def _decompose_(self, qubits: Sequence['cirq.Qid']) -> Iterator['cirq.OP_TREE']:
|
|
112
112
|
q0, q1 = qubits
|
|
113
113
|
right_gate0 = SingleQubitCliffordGate.from_single_map(z_to=(self.pauli0, self.invert0))
|
|
114
114
|
right_gate1 = SingleQubitCliffordGate.from_single_map(z_to=(self.pauli1, self.invert1))
|
|
@@ -17,6 +17,7 @@ from typing import (
|
|
|
17
17
|
Dict,
|
|
18
18
|
FrozenSet,
|
|
19
19
|
Iterable,
|
|
20
|
+
Iterator,
|
|
20
21
|
Mapping,
|
|
21
22
|
Tuple,
|
|
22
23
|
Sequence,
|
|
@@ -144,7 +145,7 @@ class PauliMeasurementGate(raw_types.Gate):
|
|
|
144
145
|
|
|
145
146
|
def _decompose_(
|
|
146
147
|
self, qubits: Tuple['cirq.Qid', ...]
|
|
147
|
-
) -> 'protocols.decompose_protocol.DecomposeResult':
|
|
148
|
+
) -> Iterator['protocols.decompose_protocol.DecomposeResult']:
|
|
148
149
|
any_qubit = qubits[0]
|
|
149
150
|
to_z_ops = op_tree.freeze_op_tree(self._observable.on(*qubits).to_z_basis_ops())
|
|
150
151
|
xor_decomp = tuple(pauli_string_phasor.xor_nonlocal_decompose(qubits, any_qubit))
|
cirq/ops/pauli_string_phasor.py
CHANGED
|
@@ -351,7 +351,7 @@ class PauliStringPhasorGate(raw_types.Gate):
|
|
|
351
351
|
"""Returns operations to convert the qubits to the computational basis."""
|
|
352
352
|
return self.dense_pauli_string.on(*qubits).to_z_basis_ops()
|
|
353
353
|
|
|
354
|
-
def _decompose_(self, qubits: Sequence['cirq.Qid']) -> 'cirq.OP_TREE':
|
|
354
|
+
def _decompose_(self, qubits: Sequence['cirq.Qid']) -> Iterator['cirq.OP_TREE']:
|
|
355
355
|
if len(self.dense_pauli_string) <= 0:
|
|
356
356
|
return
|
|
357
357
|
any_qubit = qubits[0]
|
cirq/ops/permutation_gate.py
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
|
-
from typing import Any, Dict, Sequence, Tuple, TYPE_CHECKING
|
|
15
|
+
from typing import Any, Dict, Iterator, Sequence, Tuple, TYPE_CHECKING
|
|
16
16
|
|
|
17
17
|
from cirq import protocols, value
|
|
18
18
|
from cirq.ops import raw_types, swap_gates
|
|
@@ -73,7 +73,7 @@ class QubitPermutationGate(raw_types.Gate):
|
|
|
73
73
|
def _has_unitary_(self):
|
|
74
74
|
return True
|
|
75
75
|
|
|
76
|
-
def _decompose_(self, qubits: Sequence['cirq.Qid']) -> 'cirq.OP_TREE':
|
|
76
|
+
def _decompose_(self, qubits: Sequence['cirq.Qid']) -> Iterator['cirq.OP_TREE']:
|
|
77
77
|
permutation = [p for p in self.permutation]
|
|
78
78
|
|
|
79
79
|
for i in range(len(permutation)):
|
cirq/ops/phased_iswap_gate.py
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
"""ISWAPPowGate conjugated by tensor product Rz(phi) and Rz(-phi)."""
|
|
15
15
|
|
|
16
|
-
from typing import AbstractSet, Any, cast, Dict, List, Optional, Sequence, Tuple, Union
|
|
16
|
+
from typing import AbstractSet, Any, cast, Dict, Iterator, List, Optional, Sequence, Tuple, Union
|
|
17
17
|
|
|
18
18
|
import numpy as np
|
|
19
19
|
import sympy
|
|
@@ -157,7 +157,7 @@ class PhasedISwapPowGate(eigen_gate.EigenGate):
|
|
|
157
157
|
)
|
|
158
158
|
return args.available_buffer
|
|
159
159
|
|
|
160
|
-
def _decompose_(self, qubits: Sequence['cirq.Qid']) -> 'cirq.OP_TREE':
|
|
160
|
+
def _decompose_(self, qubits: Sequence['cirq.Qid']) -> Iterator['cirq.OP_TREE']:
|
|
161
161
|
if len(qubits) != 2:
|
|
162
162
|
raise ValueError(f'Expected two qubits, got {len(qubits)}')
|
|
163
163
|
a, b = qubits
|
cirq/ops/phased_x_z_gate.py
CHANGED
|
@@ -11,7 +11,8 @@
|
|
|
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
|
+
|
|
15
|
+
from typing import AbstractSet, Any, Dict, Iterator, Optional, Sequence, Tuple, TYPE_CHECKING, Union
|
|
15
16
|
import numbers
|
|
16
17
|
|
|
17
18
|
import numpy as np
|
|
@@ -188,7 +189,7 @@ class PhasedXZGate(raw_types.Gate):
|
|
|
188
189
|
z_post = protocols.unitary(ops.Z ** (self._axis_phase_exponent + self._z_exponent))
|
|
189
190
|
return z_post @ x @ z_pre
|
|
190
191
|
|
|
191
|
-
def _decompose_(self, qubits: Sequence['cirq.Qid']) -> 'cirq.OP_TREE':
|
|
192
|
+
def _decompose_(self, qubits: Sequence['cirq.Qid']) -> Iterator['cirq.OP_TREE']:
|
|
192
193
|
q = qubits[0]
|
|
193
194
|
yield ops.Z(q) ** -self._axis_phase_exponent
|
|
194
195
|
yield ops.X(q) ** self._x_exponent
|
cirq/ops/projector.py
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
# pylint: disable=wrong-or-nonexistent-copyright-notice
|
|
2
2
|
import itertools
|
|
3
|
+
import math
|
|
3
4
|
from typing import Any, Dict, Iterable, List, Mapping, Optional, Union
|
|
4
5
|
|
|
5
6
|
import numpy as np
|
|
@@ -61,7 +62,7 @@ class ProjectorString:
|
|
|
61
62
|
for qid in projector_qids
|
|
62
63
|
]
|
|
63
64
|
|
|
64
|
-
total_d =
|
|
65
|
+
total_d = math.prod(qid.dimension for qid in projector_qids)
|
|
65
66
|
|
|
66
67
|
ones_idx = []
|
|
67
68
|
for idx in itertools.product(*idx_to_keep):
|
cirq/ops/raw_types.py
CHANGED
|
@@ -580,7 +580,7 @@ class Operation(metaclass=abc.ABCMeta):
|
|
|
580
580
|
if callable(qubit_map):
|
|
581
581
|
transform = qubit_map
|
|
582
582
|
elif isinstance(qubit_map, dict):
|
|
583
|
-
transform = lambda q: qubit_map.get(q, q)
|
|
583
|
+
transform = lambda q: qubit_map.get(q, q)
|
|
584
584
|
else:
|
|
585
585
|
raise TypeError('qubit_map must be a function or dict mapping qubits to qubits.')
|
|
586
586
|
return self.with_qubits(*(transform(q) for q in self.qubits))
|
cirq/ops/three_qubit_gates.py
CHANGED
|
@@ -19,6 +19,7 @@ from typing import (
|
|
|
19
19
|
Any,
|
|
20
20
|
Collection,
|
|
21
21
|
Dict,
|
|
22
|
+
Iterator,
|
|
22
23
|
List,
|
|
23
24
|
Optional,
|
|
24
25
|
Sequence,
|
|
@@ -573,7 +574,7 @@ class CSwapGate(gate_features.InterchangeableQubitsGate, raw_types.Gate):
|
|
|
573
574
|
|
|
574
575
|
def _decompose_inside_control(
|
|
575
576
|
self, target1: 'cirq.Qid', control: 'cirq.Qid', target2: 'cirq.Qid'
|
|
576
|
-
) -> 'cirq.OP_TREE':
|
|
577
|
+
) -> Iterator['cirq.OP_TREE']:
|
|
577
578
|
"""A decomposition assuming the control separates the targets.
|
|
578
579
|
|
|
579
580
|
target1: ─@─X───────T──────@────────@─────────X───@─────X^-0.5─
|
|
@@ -617,7 +618,7 @@ class CSwapGate(gate_features.InterchangeableQubitsGate, raw_types.Gate):
|
|
|
617
618
|
|
|
618
619
|
def _decompose_outside_control(
|
|
619
620
|
self, control: 'cirq.Qid', near_target: 'cirq.Qid', far_target: 'cirq.Qid'
|
|
620
|
-
) -> 'cirq.OP_TREE':
|
|
621
|
+
) -> Iterator['cirq.OP_TREE']:
|
|
621
622
|
"""A decomposition assuming one of the targets is in the middle.
|
|
622
623
|
|
|
623
624
|
control: ───T──────@────────@───@────────────@────────────────
|
|
@@ -18,7 +18,7 @@ The gate is used to create a 4x4 matrix with the diagonal elements
|
|
|
18
18
|
passed as a list.
|
|
19
19
|
"""
|
|
20
20
|
|
|
21
|
-
from typing import AbstractSet, Any, Dict, Tuple, Optional, Sequence, TYPE_CHECKING
|
|
21
|
+
from typing import AbstractSet, Any, Dict, Iterator, Tuple, Optional, Sequence, TYPE_CHECKING
|
|
22
22
|
import numpy as np
|
|
23
23
|
import sympy
|
|
24
24
|
|
|
@@ -93,7 +93,7 @@ class TwoQubitDiagonalGate(raw_types.Gate):
|
|
|
93
93
|
return None
|
|
94
94
|
return np.diag([np.exp(1j * angle) for angle in self._diag_angles_radians])
|
|
95
95
|
|
|
96
|
-
def _decompose_(self, qubits: Sequence['cirq.Qid']) -> 'cirq.OP_TREE':
|
|
96
|
+
def _decompose_(self, qubits: Sequence['cirq.Qid']) -> Iterator['cirq.OP_TREE']:
|
|
97
97
|
x0, x1, x2, x3 = self._diag_angles_radians
|
|
98
98
|
q0, q1 = qubits
|
|
99
99
|
yield common_gates.ZPowGate(exponent=x2 / np.pi).on(q0)
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
|
-
from typing import Sequence, Any, Dict, TYPE_CHECKING
|
|
15
|
+
from typing import Iterator, Sequence, Any, Dict, TYPE_CHECKING
|
|
16
16
|
|
|
17
17
|
import numpy as np
|
|
18
18
|
from cirq.ops.common_gates import H, ry
|
|
@@ -58,7 +58,7 @@ class UniformSuperpositionGate(raw_types.Gate):
|
|
|
58
58
|
self._m_value = m_value
|
|
59
59
|
self._num_qubits = num_qubits
|
|
60
60
|
|
|
61
|
-
def _decompose_(self, qubits: Sequence["cirq.Qid"]) -> "cirq.OP_TREE":
|
|
61
|
+
def _decompose_(self, qubits: Sequence["cirq.Qid"]) -> Iterator["cirq.OP_TREE"]:
|
|
62
62
|
"""Decomposes the gate into a sequence of standard gates.
|
|
63
63
|
Implements the construction from https://arxiv.org/pdf/2306.11747.
|
|
64
64
|
"""
|
cirq/sim/state_vector_test.py
CHANGED
|
@@ -14,16 +14,24 @@
|
|
|
14
14
|
"""Tests for state_vector.py"""
|
|
15
15
|
|
|
16
16
|
import itertools
|
|
17
|
-
from typing import Optional
|
|
18
|
-
import
|
|
17
|
+
from typing import Iterator, Optional
|
|
18
|
+
from unittest import mock
|
|
19
19
|
|
|
20
20
|
import numpy as np
|
|
21
|
+
import pytest
|
|
21
22
|
|
|
22
23
|
import cirq
|
|
23
24
|
import cirq.testing
|
|
24
25
|
from cirq import linalg
|
|
25
26
|
|
|
26
27
|
|
|
28
|
+
@pytest.fixture
|
|
29
|
+
def use_np_transpose(request) -> Iterator[bool]:
|
|
30
|
+
value: bool = request.param
|
|
31
|
+
with mock.patch.object(linalg, 'can_numpy_support_shape', lambda shape: value):
|
|
32
|
+
yield value
|
|
33
|
+
|
|
34
|
+
|
|
27
35
|
def test_state_mixin():
|
|
28
36
|
class TestClass(cirq.StateVectorMixin):
|
|
29
37
|
def state_vector(self, copy: Optional[bool] = None) -> np.ndarray:
|
|
@@ -173,9 +181,10 @@ def test_sample_no_indices_repetitions():
|
|
|
173
181
|
)
|
|
174
182
|
|
|
175
183
|
|
|
176
|
-
@pytest.mark.parametrize('use_np_transpose', [False, True])
|
|
184
|
+
@pytest.mark.parametrize('use_np_transpose', [False, True], indirect=True)
|
|
177
185
|
def test_measure_state_computational_basis(use_np_transpose: bool):
|
|
178
|
-
|
|
186
|
+
# verify patching of can_numpy_support_shape in the use_np_transpose fixture
|
|
187
|
+
assert linalg.can_numpy_support_shape([1]) is use_np_transpose
|
|
179
188
|
results = []
|
|
180
189
|
for x in range(8):
|
|
181
190
|
initial_state = cirq.to_valid_state_vector(x, 3)
|
|
@@ -186,9 +195,8 @@ def test_measure_state_computational_basis(use_np_transpose: bool):
|
|
|
186
195
|
assert results == expected
|
|
187
196
|
|
|
188
197
|
|
|
189
|
-
@pytest.mark.parametrize('use_np_transpose', [False, True])
|
|
198
|
+
@pytest.mark.parametrize('use_np_transpose', [False, True], indirect=True)
|
|
190
199
|
def test_measure_state_reshape(use_np_transpose: bool):
|
|
191
|
-
linalg.can_numpy_support_shape = lambda s: use_np_transpose
|
|
192
200
|
results = []
|
|
193
201
|
for x in range(8):
|
|
194
202
|
initial_state = np.reshape(cirq.to_valid_state_vector(x, 3), [2] * 3)
|
|
@@ -199,9 +207,8 @@ def test_measure_state_reshape(use_np_transpose: bool):
|
|
|
199
207
|
assert results == expected
|
|
200
208
|
|
|
201
209
|
|
|
202
|
-
@pytest.mark.parametrize('use_np_transpose', [False, True])
|
|
210
|
+
@pytest.mark.parametrize('use_np_transpose', [False, True], indirect=True)
|
|
203
211
|
def test_measure_state_partial_indices(use_np_transpose: bool):
|
|
204
|
-
linalg.can_numpy_support_shape = lambda s: use_np_transpose
|
|
205
212
|
for index in range(3):
|
|
206
213
|
for x in range(8):
|
|
207
214
|
initial_state = cirq.to_valid_state_vector(x, 3)
|
|
@@ -210,9 +217,8 @@ def test_measure_state_partial_indices(use_np_transpose: bool):
|
|
|
210
217
|
assert bits == [bool(1 & (x >> (2 - index)))]
|
|
211
218
|
|
|
212
219
|
|
|
213
|
-
@pytest.mark.parametrize('use_np_transpose', [False, True])
|
|
220
|
+
@pytest.mark.parametrize('use_np_transpose', [False, True], indirect=True)
|
|
214
221
|
def test_measure_state_partial_indices_order(use_np_transpose: bool):
|
|
215
|
-
linalg.can_numpy_support_shape = lambda s: use_np_transpose
|
|
216
222
|
for x in range(8):
|
|
217
223
|
initial_state = cirq.to_valid_state_vector(x, 3)
|
|
218
224
|
bits, state = cirq.measure_state_vector(initial_state, [2, 1])
|
|
@@ -220,9 +226,8 @@ def test_measure_state_partial_indices_order(use_np_transpose: bool):
|
|
|
220
226
|
assert bits == [bool(1 & (x >> 0)), bool(1 & (x >> 1))]
|
|
221
227
|
|
|
222
228
|
|
|
223
|
-
@pytest.mark.parametrize('use_np_transpose', [False, True])
|
|
229
|
+
@pytest.mark.parametrize('use_np_transpose', [False, True], indirect=True)
|
|
224
230
|
def test_measure_state_partial_indices_all_orders(use_np_transpose: bool):
|
|
225
|
-
linalg.can_numpy_support_shape = lambda s: use_np_transpose
|
|
226
231
|
for perm in itertools.permutations([0, 1, 2]):
|
|
227
232
|
for x in range(8):
|
|
228
233
|
initial_state = cirq.to_valid_state_vector(x, 3)
|
|
@@ -231,9 +236,8 @@ def test_measure_state_partial_indices_all_orders(use_np_transpose: bool):
|
|
|
231
236
|
assert bits == [bool(1 & (x >> (2 - p))) for p in perm]
|
|
232
237
|
|
|
233
238
|
|
|
234
|
-
@pytest.mark.parametrize('use_np_transpose', [False, True])
|
|
239
|
+
@pytest.mark.parametrize('use_np_transpose', [False, True], indirect=True)
|
|
235
240
|
def test_measure_state_collapse(use_np_transpose: bool):
|
|
236
|
-
linalg.can_numpy_support_shape = lambda s: use_np_transpose
|
|
237
241
|
initial_state = np.zeros(8, dtype=np.complex64)
|
|
238
242
|
initial_state[0] = 1 / np.sqrt(2)
|
|
239
243
|
initial_state[2] = 1 / np.sqrt(2)
|
|
@@ -256,9 +260,8 @@ def test_measure_state_collapse(use_np_transpose: bool):
|
|
|
256
260
|
assert bits == [False]
|
|
257
261
|
|
|
258
262
|
|
|
259
|
-
@pytest.mark.parametrize('use_np_transpose', [False, True])
|
|
263
|
+
@pytest.mark.parametrize('use_np_transpose', [False, True], indirect=True)
|
|
260
264
|
def test_measure_state_seed(use_np_transpose: bool):
|
|
261
|
-
linalg.can_numpy_support_shape = lambda s: use_np_transpose
|
|
262
265
|
n = 10
|
|
263
266
|
initial_state = np.ones(2**n) / 2 ** (n / 2)
|
|
264
267
|
|
|
@@ -277,9 +280,8 @@ def test_measure_state_seed(use_np_transpose: bool):
|
|
|
277
280
|
np.testing.assert_allclose(state1, state2)
|
|
278
281
|
|
|
279
282
|
|
|
280
|
-
@pytest.mark.parametrize('use_np_transpose', [False, True])
|
|
283
|
+
@pytest.mark.parametrize('use_np_transpose', [False, True], indirect=True)
|
|
281
284
|
def test_measure_state_out_is_state(use_np_transpose: bool):
|
|
282
|
-
linalg.can_numpy_support_shape = lambda s: use_np_transpose
|
|
283
285
|
initial_state = np.zeros(8, dtype=np.complex64)
|
|
284
286
|
initial_state[0] = 1 / np.sqrt(2)
|
|
285
287
|
initial_state[2] = 1 / np.sqrt(2)
|
|
@@ -290,9 +292,8 @@ def test_measure_state_out_is_state(use_np_transpose: bool):
|
|
|
290
292
|
assert state is initial_state
|
|
291
293
|
|
|
292
294
|
|
|
293
|
-
@pytest.mark.parametrize('use_np_transpose', [False, True])
|
|
295
|
+
@pytest.mark.parametrize('use_np_transpose', [False, True], indirect=True)
|
|
294
296
|
def test_measure_state_out_is_not_state(use_np_transpose: bool):
|
|
295
|
-
linalg.can_numpy_support_shape = lambda s: use_np_transpose
|
|
296
297
|
initial_state = np.zeros(8, dtype=np.complex64)
|
|
297
298
|
initial_state[0] = 1 / np.sqrt(2)
|
|
298
299
|
initial_state[2] = 1 / np.sqrt(2)
|
|
@@ -302,18 +303,16 @@ def test_measure_state_out_is_not_state(use_np_transpose: bool):
|
|
|
302
303
|
assert out is state
|
|
303
304
|
|
|
304
305
|
|
|
305
|
-
@pytest.mark.parametrize('use_np_transpose', [False, True])
|
|
306
|
+
@pytest.mark.parametrize('use_np_transpose', [False, True], indirect=True)
|
|
306
307
|
def test_measure_state_not_power_of_two(use_np_transpose: bool):
|
|
307
|
-
linalg.can_numpy_support_shape = lambda s: use_np_transpose
|
|
308
308
|
with pytest.raises(ValueError, match='3'):
|
|
309
309
|
_, _ = cirq.measure_state_vector(np.array([1, 0, 0]), [1])
|
|
310
310
|
with pytest.raises(ValueError, match='5'):
|
|
311
311
|
cirq.measure_state_vector(np.array([0, 1, 0, 0, 0]), [1])
|
|
312
312
|
|
|
313
313
|
|
|
314
|
-
@pytest.mark.parametrize('use_np_transpose', [False, True])
|
|
314
|
+
@pytest.mark.parametrize('use_np_transpose', [False, True], indirect=True)
|
|
315
315
|
def test_measure_state_index_out_of_range(use_np_transpose: bool):
|
|
316
|
-
linalg.can_numpy_support_shape = lambda s: use_np_transpose
|
|
317
316
|
state = cirq.to_valid_state_vector(0, 3)
|
|
318
317
|
with pytest.raises(IndexError, match='-2'):
|
|
319
318
|
cirq.measure_state_vector(state, [-2])
|
|
@@ -321,18 +320,16 @@ def test_measure_state_index_out_of_range(use_np_transpose: bool):
|
|
|
321
320
|
cirq.measure_state_vector(state, [3])
|
|
322
321
|
|
|
323
322
|
|
|
324
|
-
@pytest.mark.parametrize('use_np_transpose', [False, True])
|
|
323
|
+
@pytest.mark.parametrize('use_np_transpose', [False, True], indirect=True)
|
|
325
324
|
def test_measure_state_no_indices(use_np_transpose: bool):
|
|
326
|
-
linalg.can_numpy_support_shape = lambda s: use_np_transpose
|
|
327
325
|
initial_state = cirq.to_valid_state_vector(0, 3)
|
|
328
326
|
bits, state = cirq.measure_state_vector(initial_state, [])
|
|
329
327
|
assert [] == bits
|
|
330
328
|
np.testing.assert_almost_equal(state, initial_state)
|
|
331
329
|
|
|
332
330
|
|
|
333
|
-
@pytest.mark.parametrize('use_np_transpose', [False, True])
|
|
331
|
+
@pytest.mark.parametrize('use_np_transpose', [False, True], indirect=True)
|
|
334
332
|
def test_measure_state_no_indices_out_is_state(use_np_transpose: bool):
|
|
335
|
-
linalg.can_numpy_support_shape = lambda s: use_np_transpose
|
|
336
333
|
initial_state = cirq.to_valid_state_vector(0, 3)
|
|
337
334
|
bits, state = cirq.measure_state_vector(initial_state, [], out=initial_state)
|
|
338
335
|
assert [] == bits
|
|
@@ -340,9 +337,8 @@ def test_measure_state_no_indices_out_is_state(use_np_transpose: bool):
|
|
|
340
337
|
assert state is initial_state
|
|
341
338
|
|
|
342
339
|
|
|
343
|
-
@pytest.mark.parametrize('use_np_transpose', [False, True])
|
|
340
|
+
@pytest.mark.parametrize('use_np_transpose', [False, True], indirect=True)
|
|
344
341
|
def test_measure_state_no_indices_out_is_not_state(use_np_transpose: bool):
|
|
345
|
-
linalg.can_numpy_support_shape = lambda s: use_np_transpose
|
|
346
342
|
initial_state = cirq.to_valid_state_vector(0, 3)
|
|
347
343
|
out = np.zeros_like(initial_state)
|
|
348
344
|
bits, state = cirq.measure_state_vector(initial_state, [], out=out)
|
|
@@ -352,9 +348,8 @@ def test_measure_state_no_indices_out_is_not_state(use_np_transpose: bool):
|
|
|
352
348
|
assert out is not initial_state
|
|
353
349
|
|
|
354
350
|
|
|
355
|
-
@pytest.mark.parametrize('use_np_transpose', [False, True])
|
|
351
|
+
@pytest.mark.parametrize('use_np_transpose', [False, True], indirect=True)
|
|
356
352
|
def test_measure_state_empty_state(use_np_transpose: bool):
|
|
357
|
-
linalg.can_numpy_support_shape = lambda s: use_np_transpose
|
|
358
353
|
initial_state = np.array([1.0])
|
|
359
354
|
bits, state = cirq.measure_state_vector(initial_state, [])
|
|
360
355
|
assert [] == bits
|
|
@@ -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 Optional, cast, TYPE_CHECKING, Iterable, Tuple, Dict
|
|
17
|
+
from typing import Optional, cast, TYPE_CHECKING, Iterable, Iterator, Tuple, Dict
|
|
18
18
|
import sympy
|
|
19
19
|
import numpy as np
|
|
20
20
|
|
|
@@ -127,7 +127,7 @@ def _absorb_z_into_w(
|
|
|
127
127
|
|
|
128
128
|
def _dump_held(
|
|
129
129
|
qubits: Iterable[ops.Qid], held_w_phases: Dict[ops.Qid, value.TParamVal]
|
|
130
|
-
) -> 'cirq.OP_TREE':
|
|
130
|
+
) -> Iterator['cirq.OP_TREE']:
|
|
131
131
|
# Note: sorting is to avoid non-determinism in the insertion order.
|
|
132
132
|
for q in sorted(qubits):
|
|
133
133
|
p = held_w_phases.get(q)
|
cirq/transformers/eject_z.py
CHANGED
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
|
|
15
15
|
"""Transformer pass that pushes Z gates later and later in the circuit."""
|
|
16
16
|
|
|
17
|
-
from typing import Dict, Iterable, Optional, Tuple, TYPE_CHECKING
|
|
17
|
+
from typing import Dict, Iterable, Iterator, Optional, Tuple, TYPE_CHECKING
|
|
18
18
|
from collections import defaultdict
|
|
19
19
|
import numpy as np
|
|
20
20
|
|
|
@@ -76,7 +76,7 @@ def eject_z(
|
|
|
76
76
|
lambda: None
|
|
77
77
|
)
|
|
78
78
|
|
|
79
|
-
def dump_tracked_phase(qubits: Iterable[ops.Qid]) -> 'cirq.OP_TREE':
|
|
79
|
+
def dump_tracked_phase(qubits: Iterable[ops.Qid]) -> Iterator['cirq.OP_TREE']:
|
|
80
80
|
"""Zeroes qubit_phase entries by emitting Z gates."""
|
|
81
81
|
for q in qubits:
|
|
82
82
|
p, key = qubit_phase[q], last_phased_xz_op[q]
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
|
-
from typing import
|
|
15
|
+
from typing import Iterator, List, Optional
|
|
16
16
|
import pytest
|
|
17
17
|
|
|
18
18
|
import cirq
|
|
@@ -64,7 +64,7 @@ def test_map_operations_does_not_insert_too_many_moments():
|
|
|
64
64
|
q = cirq.LineQubit.range(5)
|
|
65
65
|
c_orig = cirq.Circuit(cirq.CX(q[0], q[1]), cirq.CX(q[3], q[2]), cirq.CX(q[3], q[4]))
|
|
66
66
|
|
|
67
|
-
def map_func(op: cirq.Operation, _: int) -> cirq.OP_TREE:
|
|
67
|
+
def map_func(op: cirq.Operation, _: int) -> Iterator[cirq.OP_TREE]:
|
|
68
68
|
yield cirq.Z.on_each(*op.qubits)
|
|
69
69
|
yield cirq.CX(*op.qubits)
|
|
70
70
|
yield cirq.Z.on_each(*op.qubits)
|
|
@@ -130,7 +130,7 @@ def test_map_operations_deep_subcircuits():
|
|
|
130
130
|
.with_tags("external")
|
|
131
131
|
)
|
|
132
132
|
|
|
133
|
-
def map_func(op: cirq.Operation, _: int) -> cirq.OP_TREE:
|
|
133
|
+
def map_func(op: cirq.Operation, _: int) -> Iterator[cirq.OP_TREE]:
|
|
134
134
|
yield (
|
|
135
135
|
[cirq.Z.on_each(*op.qubits), cirq.CX(*op.qubits), cirq.Z.on_each(*op.qubits)]
|
|
136
136
|
if op.gate == cirq.CX
|
cirq/value/linear_dict.py
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
15
|
"""Linear combination represented as mapping of things to coefficients."""
|
|
16
|
-
|
|
16
|
+
|
|
17
17
|
from typing import (
|
|
18
18
|
Any,
|
|
19
19
|
Callable,
|
|
@@ -34,7 +34,9 @@ from typing import (
|
|
|
34
34
|
)
|
|
35
35
|
from typing_extensions import Self
|
|
36
36
|
|
|
37
|
-
|
|
37
|
+
import numpy as np
|
|
38
|
+
|
|
39
|
+
Scalar = Union[complex, np.number]
|
|
38
40
|
TVector = TypeVar('TVector')
|
|
39
41
|
|
|
40
42
|
TDefault = TypeVar('TDefault')
|
|
@@ -124,7 +126,7 @@ class LinearDict(Generic[TVector], MutableMapping[TVector, Scalar]):
|
|
|
124
126
|
|
|
125
127
|
def clean(self, *, atol: float = 1e-9) -> Self:
|
|
126
128
|
"""Remove terms with coefficients of absolute value atol or less."""
|
|
127
|
-
negligible = [v for v, c in self._terms.items() if abs(c) <= atol]
|
|
129
|
+
negligible = [v for v, c in self._terms.items() if abs(complex(c)) <= atol]
|
|
128
130
|
for v in negligible:
|
|
129
131
|
del self._terms[v]
|
|
130
132
|
return self
|
|
@@ -245,7 +247,7 @@ class LinearDict(Generic[TVector], MutableMapping[TVector, Scalar]):
|
|
|
245
247
|
result *= a
|
|
246
248
|
return result
|
|
247
249
|
|
|
248
|
-
def __rmul__(self, a: Scalar) -> Self:
|
|
250
|
+
def __rmul__(self, a: Scalar) -> Self: # type: ignore
|
|
249
251
|
return self.__mul__(a)
|
|
250
252
|
|
|
251
253
|
def __truediv__(self, a: Scalar) -> Self:
|
cirq/vis/heatmap.py
CHANGED
|
@@ -11,6 +11,9 @@
|
|
|
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
|
+
|
|
15
|
+
from __future__ import annotations
|
|
16
|
+
|
|
14
17
|
import copy
|
|
15
18
|
from dataclasses import astuple, dataclass
|
|
16
19
|
from typing import (
|
|
@@ -25,6 +28,7 @@ from typing import (
|
|
|
25
28
|
SupportsFloat,
|
|
26
29
|
Tuple,
|
|
27
30
|
Union,
|
|
31
|
+
TYPE_CHECKING,
|
|
28
32
|
)
|
|
29
33
|
|
|
30
34
|
import matplotlib as mpl
|
|
@@ -36,6 +40,9 @@ from mpl_toolkits import axes_grid1
|
|
|
36
40
|
from cirq.devices import grid_qubit
|
|
37
41
|
from cirq.vis import vis_utils
|
|
38
42
|
|
|
43
|
+
if TYPE_CHECKING:
|
|
44
|
+
from numpy.typing import ArrayLike
|
|
45
|
+
|
|
39
46
|
QubitTuple = Tuple[grid_qubit.GridQubit, ...]
|
|
40
47
|
|
|
41
48
|
Polygon = Sequence[Tuple[float, float]]
|
|
@@ -233,13 +240,14 @@ class Heatmap:
|
|
|
233
240
|
ax: plt.Axes,
|
|
234
241
|
) -> None:
|
|
235
242
|
"""Writes annotations to the center of cells. Internal."""
|
|
243
|
+
facecolor: ArrayLike
|
|
236
244
|
for (center, annotation), facecolor in zip(centers_and_annot, collection.get_facecolor()):
|
|
237
245
|
# Calculate the center of the cell, assuming that it is a square
|
|
238
246
|
# centered at (x=col, y=row).
|
|
239
247
|
if not annotation:
|
|
240
248
|
continue
|
|
241
249
|
x, y = center
|
|
242
|
-
face_luminance = vis_utils.relative_luminance(facecolor)
|
|
250
|
+
face_luminance = vis_utils.relative_luminance(facecolor)
|
|
243
251
|
text_color = 'black' if face_luminance > 0.4 else 'white'
|
|
244
252
|
text_kwargs: Dict[str, Any] = dict(color=text_color, ha="center", va="center")
|
|
245
253
|
text_kwargs.update(self._config.get('annotation_text_kwargs', {}))
|
cirq/vis/state_histogram.py
CHANGED
|
@@ -90,7 +90,8 @@ def plot_state_histogram(
|
|
|
90
90
|
if isinstance(data, result.Result):
|
|
91
91
|
values = get_state_histogram(data)
|
|
92
92
|
elif isinstance(data, collections.Counter):
|
|
93
|
-
tick_label,
|
|
93
|
+
tick_label, counts = zip(*sorted(data.items()))
|
|
94
|
+
values = np.asarray(counts)
|
|
94
95
|
else:
|
|
95
96
|
values = np.array(data)
|
|
96
97
|
if tick_label is None:
|
{cirq_core-1.5.0.dev20240823014143.dist-info → cirq_core-1.5.0.dev20240823202236.dist-info}/METADATA
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: cirq-core
|
|
3
|
-
Version: 1.5.0.
|
|
3
|
+
Version: 1.5.0.dev20240823202236
|
|
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
|
{cirq_core-1.5.0.dev20240823014143.dist-info → cirq_core-1.5.0.dev20240823202236.dist-info}/RECORD
RENAMED
|
@@ -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=
|
|
8
|
-
cirq/_version_test.py,sha256
|
|
7
|
+
cirq/_version.py,sha256=uaGhZkeL79MtoC6D7pZ2um3GMHGp_uak0AS4Q8A9QhA,1206
|
|
8
|
+
cirq/_version_test.py,sha256=wxtN3zuBxxteFI1ehg0I_MYAWknJe8ZXQx97iScz_ek,147
|
|
9
9
|
cirq/conftest.py,sha256=X7yLFL8GLhg2CjPw0hp5e_dGASfvHx1-QT03aUbhKJw,1168
|
|
10
10
|
cirq/json_resolver_cache.py,sha256=ytePZtNZgKjOF2NiVpUTuotB-JKZmQNOFIFdvXqsxHw,13271
|
|
11
11
|
cirq/py.typed,sha256=VFSlmh_lNwnaXzwY-ZuW-C2Ws5PkuDoVgBdNCs0jXJE,63
|
|
@@ -17,8 +17,8 @@ cirq/circuits/_box_drawing_character_data.py,sha256=QLoCXwcLL7091RdxEKO259goxt4R
|
|
|
17
17
|
cirq/circuits/_box_drawing_character_data_test.py,sha256=XO94z0piwZRHaNZHTf-5tKHQ4MKcDruMeRIKdT8GbYA,1624
|
|
18
18
|
cirq/circuits/_bucket_priority_queue.py,sha256=hxFuii2fKD8G6EKT_aVLEsA7FmSfqFXPwIbA0KsoSC4,6745
|
|
19
19
|
cirq/circuits/_bucket_priority_queue_test.py,sha256=t6u_hG7K2e2WKWrgCsKxNRtp4ghKwiCrp0_WSY0W25k,5288
|
|
20
|
-
cirq/circuits/circuit.py,sha256=
|
|
21
|
-
cirq/circuits/circuit_operation.py,sha256=
|
|
20
|
+
cirq/circuits/circuit.py,sha256=uDm3vkFesQbNLnKevL8bgcV850GZedMtqtLOzTdiUck,114604
|
|
21
|
+
cirq/circuits/circuit_operation.py,sha256=3CfJd7zhEMub792vgb2VO545rsj68yX_YEYMirySI3U,34705
|
|
22
22
|
cirq/circuits/circuit_operation_test.py,sha256=u-23dDZ6htNSiP8oXR67rmtb-XDBmObvbJjJrARhmis,44646
|
|
23
23
|
cirq/circuits/circuit_test.py,sha256=sRZC558PZZZUHByZ1R00_j8ez6TL9l5ZmT8YLGopH_Q,160117
|
|
24
24
|
cirq/circuits/frozen_circuit.py,sha256=s-OWD4ngioE41NG1jQJbLrJd7dP283aYn7IOahbJQw4,9259
|
|
@@ -29,7 +29,7 @@ cirq/circuits/moment.py,sha256=ABYiqNVUKbUrZUDxGvKLZKOq8pgoZgf3K6DzPSGtaQw,26180
|
|
|
29
29
|
cirq/circuits/moment_test.py,sha256=SAZR-BxNiFaYaPLKLN59LCBqxvBMrVJWa-js1kfhOZA,26905
|
|
30
30
|
cirq/circuits/optimization_pass.py,sha256=uw3ne0-ebZo6GNjwfQMuQ3b5u9RCgyaXRfhpbljlxao,6468
|
|
31
31
|
cirq/circuits/optimization_pass_test.py,sha256=eQB0NBJ9EvqjgSFGQMgaHIh5niQhksdnvqSXhsj3nOg,5947
|
|
32
|
-
cirq/circuits/qasm_output.py,sha256=
|
|
32
|
+
cirq/circuits/qasm_output.py,sha256=Ry3sFtvdOSourjeYMLYm2rxeLS9jGXmQBtfsNkOj_7c,12052
|
|
33
33
|
cirq/circuits/qasm_output_test.py,sha256=pQjA8bsiT9MryXZqiWOiN5uIYsI5k22XowcZx0bcKDk,12539
|
|
34
34
|
cirq/circuits/text_diagram_drawer.py,sha256=ctZUG5fk2pf4XswHTJG4kteQYzzH0TefL9JWUagLJvc,17232
|
|
35
35
|
cirq/circuits/text_diagram_drawer_test.py,sha256=2bSoBIeQajRi0aQxqYDpbMlT2eqpx_f-Cmg9XO6A9Jk,10750
|
|
@@ -37,24 +37,24 @@ cirq/contrib/__init__.py,sha256=q8NwuMeqIzKaLsO9L6eKuZbGpldBsvaiIPWou37sZjo,1006
|
|
|
37
37
|
cirq/contrib/json.py,sha256=zX1l2tVWECSub076q8BmTLEZGl5FUS3Hnf-L2hQblsg,753
|
|
38
38
|
cirq/contrib/json_test.py,sha256=I9t_WpBfTBaIxKVo0HjK806V_FguTSBR95Y2gu-qYBo,1117
|
|
39
39
|
cirq/contrib/acquaintance/__init__.py,sha256=ggeEgdL-XaBQeEiAcKgknHN4WEwWSu7jAe24GNgG3-o,2233
|
|
40
|
-
cirq/contrib/acquaintance/bipartite.py,sha256=
|
|
40
|
+
cirq/contrib/acquaintance/bipartite.py,sha256=iEElNihoQ0m1pt5f0bPOIubPnRqqbPJSEhc-WumIJgM,6526
|
|
41
41
|
cirq/contrib/acquaintance/bipartite_test.py,sha256=hjdJfjDsd2pnUdpph5n9kTWEclSvocsAEmnTbBT21Ak,15648
|
|
42
42
|
cirq/contrib/acquaintance/devices.py,sha256=1hWW9_WF5TZQXFMu9-yXNTk3GfSETyjikNboPQvPYWk,3031
|
|
43
43
|
cirq/contrib/acquaintance/devices_test.py,sha256=icl_9SOp8PuZu7msfW5H7zP7_-zfTwTjyPPkajDu-w4,1088
|
|
44
|
-
cirq/contrib/acquaintance/executor.py,sha256=
|
|
44
|
+
cirq/contrib/acquaintance/executor.py,sha256=cdj8U9Wiv8HAupU_hezEaMbeFSq1nMgqPfWrk-8XsrI,8609
|
|
45
45
|
cirq/contrib/acquaintance/executor_test.py,sha256=ir-LKuQTfHm5WCcjmLriJ8qCT89YnltLpFx89Q3bF_I,7837
|
|
46
|
-
cirq/contrib/acquaintance/gates.py,sha256=
|
|
46
|
+
cirq/contrib/acquaintance/gates.py,sha256=o6drWh7kEBga6SWt5_E_UaSsqxFcKJ-twJv-tXTXJoU,13493
|
|
47
47
|
cirq/contrib/acquaintance/gates_test.py,sha256=5FVX7zAtZSUqDPNsXk_Wm7LwDmHIApzgNhjAIX1IQBM,15010
|
|
48
|
-
cirq/contrib/acquaintance/inspection_utils.py,sha256
|
|
48
|
+
cirq/contrib/acquaintance/inspection_utils.py,sha256=-olAKpSZPm4Q9xhaQwAjT2ovUqZQd5zXAJ0ImkffOWk,2607
|
|
49
49
|
cirq/contrib/acquaintance/inspection_utils_test.py,sha256=N5WyOkZaP7Vy0DRoiq6ZtQ1S99j5F7XyRPnyRLJqmtM,1250
|
|
50
50
|
cirq/contrib/acquaintance/mutation_utils.py,sha256=HM9mjXufOYRrCO1ydusiJuCh4RnzJkB0876kDilMsqg,4732
|
|
51
51
|
cirq/contrib/acquaintance/mutation_utils_test.py,sha256=r_0IdvjSqres1KWs4o4HEb8a5WATovIBOUIAjVeIzns,7848
|
|
52
52
|
cirq/contrib/acquaintance/optimizers.py,sha256=xAdmecOLiO4-GDO8v5O3uYNAjjSKSDk8_vz7rm7Mjm4,2092
|
|
53
53
|
cirq/contrib/acquaintance/optimizers_test.py,sha256=-MBJT0JkvxjEwknHA6Q6PoAzrC_JwRBjAfpMwQjWoj0,2455
|
|
54
|
-
cirq/contrib/acquaintance/permutation.py,sha256=
|
|
54
|
+
cirq/contrib/acquaintance/permutation.py,sha256=0Qfg6UYmEJDgHCFaedFHzdmgsqCGwzKnJC0pCBt-EJE,11870
|
|
55
55
|
cirq/contrib/acquaintance/permutation_test.py,sha256=ASeOCXr4oiIK31L31uWsDokZemp5fHoMtWrPVEZcfmk,11503
|
|
56
|
-
cirq/contrib/acquaintance/shift.py,sha256=
|
|
57
|
-
cirq/contrib/acquaintance/shift_swap_network.py,sha256=
|
|
56
|
+
cirq/contrib/acquaintance/shift.py,sha256=9t2YQn5sfMNfyOuc9LonrL3rjB-HwqmTS8TP2Ebg-kE,3059
|
|
57
|
+
cirq/contrib/acquaintance/shift_swap_network.py,sha256=XQaF8akqi4F_zb1_dYmV3u_T9Yumnene36AtkqcEtQo,5283
|
|
58
58
|
cirq/contrib/acquaintance/shift_swap_network_test.py,sha256=lFbP4ATIc1R-MXc3xwoC9TKvJOBu2aWo-8KX-M5ti5c,11590
|
|
59
59
|
cirq/contrib/acquaintance/shift_test.py,sha256=FnY-D0i4CZsE0v1GLf30u_JyIYDtzV06O-Hd0tDnuXc,4555
|
|
60
60
|
cirq/contrib/acquaintance/testing.py,sha256=auzzDDTTBiE6-0PGnJs-etYwozGqBoJ7JVlPuXcky-E,1582
|
|
@@ -67,7 +67,7 @@ cirq/contrib/acquaintance/strategies/cubic_test.py,sha256=0ZgDl8uNv9lG1TxQSaCEjN
|
|
|
67
67
|
cirq/contrib/acquaintance/strategies/quartic_paired.py,sha256=V1XQE9hkVACcYo5Ar-TBLzxuovio-QIbwSfJLPtdBpI,2559
|
|
68
68
|
cirq/contrib/acquaintance/strategies/quartic_paired_test.py,sha256=zIMocEKc6rcCSJlyBsI2EJqiNY_iLVrNqruzqiQFDMk,2129
|
|
69
69
|
cirq/contrib/bayesian_network/__init__.py,sha256=FhDrnKmiOzWmFbOOdMk8M3qNe81N7cuEsxe92o6Gg6c,669
|
|
70
|
-
cirq/contrib/bayesian_network/bayesian_network_gate.py,sha256=
|
|
70
|
+
cirq/contrib/bayesian_network/bayesian_network_gate.py,sha256=WchaOQe6zPQe72I1UA2o5plnnckoyyp3VU5rvUQ7ono,9157
|
|
71
71
|
cirq/contrib/bayesian_network/bayesian_network_gate_test.py,sha256=d263Wm3yGedN87SraSlea9OMb0yy3ZkNRnaEYZd8AcU,5876
|
|
72
72
|
cirq/contrib/circuitdag/__init__.py,sha256=YE8_jiIhGZ6_W13QyCLiCuqDgNhVyHgRxH_8gj6pNe0,721
|
|
73
73
|
cirq/contrib/circuitdag/circuit_dag.py,sha256=cZo6yW8b09-p8L8F5Z7aQQyZ5e5vnFXnn9XrWRD3dok,6977
|
|
@@ -101,7 +101,7 @@ cirq/contrib/paulistring/pauli_string_optimize.py,sha256=81MDk6rKl0jmw7DXFkA02Ym
|
|
|
101
101
|
cirq/contrib/paulistring/pauli_string_optimize_test.py,sha256=f1BWjg8IGw5ChXFYNVhYKNIrFul8PgvpnOEadkRm-3Q,2897
|
|
102
102
|
cirq/contrib/paulistring/recombine.py,sha256=SU6DNj3Y9Wicf9pMP3IYzdWV7Fuz1DA_1v2AtUVnuF4,4355
|
|
103
103
|
cirq/contrib/paulistring/recombine_test.py,sha256=hJ083nR67JsIs38TfmCjmBLnhqyG0rBfqtBhTptDlic,1895
|
|
104
|
-
cirq/contrib/paulistring/separate.py,sha256=
|
|
104
|
+
cirq/contrib/paulistring/separate.py,sha256=2g4l78mXYJDR6xkv51VExZDb-rm5JEvhYrpMPgWa0Us,3961
|
|
105
105
|
cirq/contrib/paulistring/separate_test.py,sha256=FzR78MSHDhNJxizbXreK6u3BeYhT7xn7W1QyHfEZ34E,1267
|
|
106
106
|
cirq/contrib/qasm_import/__init__.py,sha256=mCO3gwxM4y95TkTs5P-donhvqbKZsRguOLM8gnXRWJw,706
|
|
107
107
|
cirq/contrib/qasm_import/_lexer.py,sha256=busw1Td1pJR-MBNGW-km1i9t2XKEqZTZ3zJnG6vXkmA,2943
|
|
@@ -186,7 +186,7 @@ cirq/experiments/purity_estimation.py,sha256=6D1UwFlQRzHeajXMTyTUfBYAc0jJQ8Cfz4l
|
|
|
186
186
|
cirq/experiments/purity_estimation_test.py,sha256=xlBGp0NOBYR0IhTy3bckHPgi81FkGSGxKqk9hwXG-I8,923
|
|
187
187
|
cirq/experiments/qubit_characterizations.py,sha256=-a-krc7Pw68VjsVvQmeZ92oXrpeME31j4cVrAkKFkr4,36730
|
|
188
188
|
cirq/experiments/qubit_characterizations_test.py,sha256=b_ONqxyW6s01Ts8T65BEdb4e8Xy24Qp4zTGXWesL0ic,9733
|
|
189
|
-
cirq/experiments/random_quantum_circuit_generation.py,sha256=
|
|
189
|
+
cirq/experiments/random_quantum_circuit_generation.py,sha256=GIA4qdrgECcZlvGOiWtKL0hGyuNJbRtzhrzPJXKI0iQ,28167
|
|
190
190
|
cirq/experiments/random_quantum_circuit_generation_test.py,sha256=1rvgN8-Ajedn_70FyYKVzjvzR6NVpHj6KQgo6tra-Jc,15995
|
|
191
191
|
cirq/experiments/readout_confusion_matrix.py,sha256=jIyikXfYWGbVrOjU1pbV2VZL-m03VTFYS18KT1Cf2qk,21404
|
|
192
192
|
cirq/experiments/readout_confusion_matrix_test.py,sha256=ETvKHVuJWvq8KuL0l6w22UOfZHhBNH-TVeWAKqjSQEc,10632
|
|
@@ -216,7 +216,7 @@ cirq/interop/quirk/cells/cell.py,sha256=Ait9MhNPiCrdSefNYMy8kavbkaFuhek3hDhPRfbO
|
|
|
216
216
|
cirq/interop/quirk/cells/cell_test.py,sha256=-HDH3PIn8DPtaeUWlfR4bpLWQ-LqF6WQcjFUolUvXCg,2276
|
|
217
217
|
cirq/interop/quirk/cells/composite_cell.py,sha256=3qlh6q6aTRucWPJ4hioPoHYUVPWn8RnZgItY0Rh7Mm8,5352
|
|
218
218
|
cirq/interop/quirk/cells/composite_cell_test.py,sha256=oPFKTothfcqjq47ccFNT2dGA3libKnpVM4LwguYE3hs,5308
|
|
219
|
-
cirq/interop/quirk/cells/control_cells.py,sha256=
|
|
219
|
+
cirq/interop/quirk/cells/control_cells.py,sha256=WDXGjcUk4sOzphJcnXGC-Bvzxcq0BaZJBZxd1ETB8sg,5579
|
|
220
220
|
cirq/interop/quirk/cells/control_cells_test.py,sha256=rqCmmjE5ym5wqzpTrEGso8dCgrIC6JxnMHqzuk4hfsc,4673
|
|
221
221
|
cirq/interop/quirk/cells/frequency_space_cells.py,sha256=80JKJx9WvLsOfaUHkfH7SQOR_OxB7F4cp_OVL5X-Kdg,1890
|
|
222
222
|
cirq/interop/quirk/cells/frequency_space_cells_test.py,sha256=fPAjxnD8sKnuxNdY89K66pdbV4Hi3IxhdeWWni5-Uno,1812
|
|
@@ -228,7 +228,7 @@ cirq/interop/quirk/cells/input_rotation_cells.py,sha256=mo75TGkbtD_phNPM-ZPFs2VJ
|
|
|
228
228
|
cirq/interop/quirk/cells/input_rotation_cells_test.py,sha256=1jmEBHbHpmSSB3grPbn8LFzMEwkc6Or3kAULxVofTEg,6318
|
|
229
229
|
cirq/interop/quirk/cells/measurement_cells.py,sha256=1jLtGMHCbxfNN9r5E_GWPIqz7fLdNKJK0WgrcjXsS3I,1504
|
|
230
230
|
cirq/interop/quirk/cells/measurement_cells_test.py,sha256=AYYzjn3BrQbk-Rg1L3WjCOQN9eGLRQzqwYr6i8UH0Fk,1574
|
|
231
|
-
cirq/interop/quirk/cells/parse.py,sha256=
|
|
231
|
+
cirq/interop/quirk/cells/parse.py,sha256=BtLxG7utfS-G4xpr5N-ZpZNyJePiFfkNS9ebt2T3gWQ,11886
|
|
232
232
|
cirq/interop/quirk/cells/parse_test.py,sha256=xCTS6lKv4i8HAuTSivH2Tjwun1yMQbnl7HLfB-nEKY4,7473
|
|
233
233
|
cirq/interop/quirk/cells/qubit_permutation_cells.py,sha256=F9Br_SFB1ys4pP-hYlpPRMXH_4Cd8LePtOl4aTE_p8g,3390
|
|
234
234
|
cirq/interop/quirk/cells/qubit_permutation_cells_test.py,sha256=n0veQKx0EdFzu_gdY_AVjwqyoHae7JGkDFX6qhLeGrQ,4460
|
|
@@ -285,13 +285,13 @@ cirq/ops/controlled_operation.py,sha256=sbT1PGUQjV8a014e8TOeZY2N1q6QXF4n0RVJswBt
|
|
|
285
285
|
cirq/ops/controlled_operation_test.py,sha256=ioAq2we54vDPAf6ttoUPLWqt1nQzLmkcQ9GQRL60t88,16459
|
|
286
286
|
cirq/ops/dense_pauli_string.py,sha256=SPrNsgeC2-ETqD2wbZ7R7lOltIUWITqBUHH02dVaMzA,24525
|
|
287
287
|
cirq/ops/dense_pauli_string_test.py,sha256=duvgzhgTV9wuem4kDSwtL62SEUCThkz1tdP984-C4_s,21504
|
|
288
|
-
cirq/ops/diagonal_gate.py,sha256=
|
|
288
|
+
cirq/ops/diagonal_gate.py,sha256=_-Pzt3T6U1Oq6DwExIjCmVYBBSWY6EoBNCKHpzWIRzk,9021
|
|
289
289
|
cirq/ops/diagonal_gate_test.py,sha256=cPHxjc7g2oTcXt5UFm470oo0eJupubSNzs4TccKHlSc,6223
|
|
290
290
|
cirq/ops/eigen_gate.py,sha256=YFb42bTPkt9EkH6kx2u3gUQT97S1BK5a4YOzZcCnsmw,18350
|
|
291
291
|
cirq/ops/eigen_gate_test.py,sha256=-7l6GmAd1EYzHoGREQN1n7J1VOQKbThH2mA88TRODs8,13928
|
|
292
292
|
cirq/ops/fourier_transform.py,sha256=pynO07OcZSVCeL8L0pNQ9m_y5_wrpTWOMf99BHpjXdU,7579
|
|
293
293
|
cirq/ops/fourier_transform_test.py,sha256=PIK4bWnCIy2TuX0fgclHeU1CBDT6zRVoQpv1v1jt62c,6220
|
|
294
|
-
cirq/ops/fsim_gate.py,sha256=
|
|
294
|
+
cirq/ops/fsim_gate.py,sha256=eAQP2XPWW_1nItjzv__75eqhruCbKkFB1Y_eL1ov10c,18725
|
|
295
295
|
cirq/ops/fsim_gate_test.py,sha256=owW1VpXntJqxlzhtppnyfaS9gQKFNA6UzCHksgPHaHU,25165
|
|
296
296
|
cirq/ops/gate_features.py,sha256=414mSi3kgKSwLOeAG_WEZKn8ZMaLtOowed7os1qSnM4,1049
|
|
297
297
|
cirq/ops/gate_features_test.py,sha256=mnlqJnSpllcOnTUdvmUs_ssnPRhAIgHhKIAK2Z86Dfg,2347
|
|
@@ -307,7 +307,7 @@ cirq/ops/identity.py,sha256=vS4Gown5dJWm89gNKBZ9vXQL3ijwAJZ9JFu7NtfAQw8,5827
|
|
|
307
307
|
cirq/ops/identity_test.py,sha256=-z5TjxNaD3_z73nGdR3RbHt6ytaYOAyYggCzwZtlQDw,7568
|
|
308
308
|
cirq/ops/kraus_channel.py,sha256=tCPAEzr_GAL5vTwI43rBoiOnT04l-ebZanuuEuYWDo8,5085
|
|
309
309
|
cirq/ops/kraus_channel_test.py,sha256=qH2Y9cngXzKCabd-Mq5xBYcM_wyL8c6KkrXw8kZr7Dc,4726
|
|
310
|
-
cirq/ops/linear_combinations.py,sha256=
|
|
310
|
+
cirq/ops/linear_combinations.py,sha256=WqQ2STxGpgO6KUj4yc6LfSI9OWCdzlmWMt6BkTkf2wA,39694
|
|
311
311
|
cirq/ops/linear_combinations_test.py,sha256=qpzRo53mJtcidYE11loKMP2b9guKMGtzrKWQ_u0jr4Y,66387
|
|
312
312
|
cirq/ops/matrix_gates.py,sha256=8ARvpHWYFgwmlT99-Gxoa24i_mxKLvdj_RhoQvglKQw,9290
|
|
313
313
|
cirq/ops/matrix_gates_test.py,sha256=m5rMwq_sqVvsmkc5opVr3Ikd1ERuULmSRNAvGZUg7ds,14224
|
|
@@ -323,31 +323,31 @@ cirq/ops/op_tree.py,sha256=iXsIFcQCciU7C9SiPxhd_zrp4TBGCsmnqxKDjUl1aEo,6159
|
|
|
323
323
|
cirq/ops/op_tree_test.py,sha256=h4phqrxQwYAfyu8o4f_fLi3WP2kdVuzWqrSCWGLHo_c,5575
|
|
324
324
|
cirq/ops/parallel_gate.py,sha256=RSj1SuiwbDCMWxvTmi3xz7oE2QXBFgA59emijh4JPkE,6335
|
|
325
325
|
cirq/ops/parallel_gate_test.py,sha256=M6o3AyXFQrwyiOTtGxlYH09TbHdjtTxCuMjmn-ALnn0,6298
|
|
326
|
-
cirq/ops/parity_gates.py,sha256=
|
|
326
|
+
cirq/ops/parity_gates.py,sha256=tmyb42wBRwaUzELwUcxhRDPfqwM-6KMIO2OcynsFnFA,14384
|
|
327
327
|
cirq/ops/parity_gates_test.py,sha256=7C0BmJl1HuoyVzfA8-lVCTiE1qNYQhMtyQlVx2uvFKA,11244
|
|
328
328
|
cirq/ops/pauli_gates.py,sha256=sqqQEKEU89cmb1pzLPnrZ5XC0LchSXid8tHLQs8xJnk,6984
|
|
329
329
|
cirq/ops/pauli_gates_test.py,sha256=bHt7A2w0auWxN9gyKAVeimT1KeOHz5C_CjFHSK1V-Co,7752
|
|
330
|
-
cirq/ops/pauli_interaction_gate.py,sha256=
|
|
330
|
+
cirq/ops/pauli_interaction_gate.py,sha256=Ep7XwZMVP81Qq1J2MTc3kJ79h26daOZcLPxqN3KTYFk,5519
|
|
331
331
|
cirq/ops/pauli_interaction_gate_test.py,sha256=U9ORW5Ayx5PESPFiGESzWY-02qHklYcM1mYW56RWe_A,4544
|
|
332
|
-
cirq/ops/pauli_measurement_gate.py,sha256=
|
|
332
|
+
cirq/ops/pauli_measurement_gate.py,sha256=AS9tzLGAOhJzRzVsW9m-WPz5Wx0sMS1jzhppn5qtW84,7239
|
|
333
333
|
cirq/ops/pauli_measurement_gate_test.py,sha256=uh3J0Ps3V3578V8qkRiEgIl6jBiv8DsXlk_vzLvOEhQ,6720
|
|
334
334
|
cirq/ops/pauli_string.py,sha256=WSBDv939ujl51KiE0UDsYHUk3d5B9degjNLCuFvyQ6c,67519
|
|
335
|
-
cirq/ops/pauli_string_phasor.py,sha256=
|
|
335
|
+
cirq/ops/pauli_string_phasor.py,sha256=qcQZqjg8Ua-_KmiHQYYt9X_vELjs_oXsyUwlYfrmcL0,17614
|
|
336
336
|
cirq/ops/pauli_string_phasor_test.py,sha256=HGEPjPc7ySeshOnMJHNjtyckFuEXLvxgy-TtnU6fETM,27582
|
|
337
337
|
cirq/ops/pauli_string_raw_types.py,sha256=6CgdPWYmOziP4uZbrIsRW0sDSMmV1GioGdAk0owFITU,2240
|
|
338
338
|
cirq/ops/pauli_string_raw_types_test.py,sha256=SZPluslZPGffPq93F5apESBygWZ2cj7BEX6dQuawRQE,2648
|
|
339
339
|
cirq/ops/pauli_string_test.py,sha256=ekj755Fe5up8-0nXCozUlne6NCxvb8FrwZ8Qp6CAmRI,74583
|
|
340
340
|
cirq/ops/pauli_sum_exponential.py,sha256=n3fhKWJVMudzGuOcdPHskVNx3fHE2MAblVdkzbDtcz4,4909
|
|
341
341
|
cirq/ops/pauli_sum_exponential_test.py,sha256=wVnJ3FSpEimHT8ERVkmljALrgSuuDYo6GRg91uJ7ztk,5370
|
|
342
|
-
cirq/ops/permutation_gate.py,sha256=
|
|
342
|
+
cirq/ops/permutation_gate.py,sha256=2h8n76N2M3nu5MA8JkRQgVLByq5cOEluKUN042ClSRs,4196
|
|
343
343
|
cirq/ops/permutation_gate_test.py,sha256=SwXRgsZNLn5jnGhfcKPJ0J0CIssNzElbFaqylV2TXD8,3281
|
|
344
|
-
cirq/ops/phased_iswap_gate.py,sha256=
|
|
344
|
+
cirq/ops/phased_iswap_gate.py,sha256=j55nFjdF0r63oaT7cGw0YtosavaV24qUjC9T-8Y4Ghw,8997
|
|
345
345
|
cirq/ops/phased_iswap_gate_test.py,sha256=oH3RQ8tlSD0sU5Cf3M0uR92y3M1Xd7Yk3ayOoca9Neg,6708
|
|
346
346
|
cirq/ops/phased_x_gate.py,sha256=QCDhn4tDm_zhjorYWLpP5xOYNByXiaT35nOspJWt5vY,9980
|
|
347
347
|
cirq/ops/phased_x_gate_test.py,sha256=IpY-Z-MsqtYbyIEdxWu1NqgAJF2B7nddxPc2Hxafr4s,10202
|
|
348
|
-
cirq/ops/phased_x_z_gate.py,sha256=
|
|
348
|
+
cirq/ops/phased_x_z_gate.py,sha256=wh12AXeeDvMojtZd-zecV13Yur_QSBYc4kvYBdcfBBA,11555
|
|
349
349
|
cirq/ops/phased_x_z_gate_test.py,sha256=KK5-FD5zoaqZkw7p6UKxFddzaFWoxnQnE8LpCiKtIk8,10690
|
|
350
|
-
cirq/ops/projector.py,sha256=
|
|
350
|
+
cirq/ops/projector.py,sha256=Eftqti8lwHvzsSFMUzcC8XGaMeH6fdGUdcWprZoMfX8,5686
|
|
351
351
|
cirq/ops/projector_test.py,sha256=Wq7ddj-PV30yUXJxJoT3XIw2sIUC1AilnZ9m9N5Ejr8,9063
|
|
352
352
|
cirq/ops/qid_util.py,sha256=SxyoMy_s070lcqXV7ny6vE8pp082OrTjBtawZtHOhXs,2071
|
|
353
353
|
cirq/ops/qid_util_test.py,sha256=JdViBgFfH4bZJyPKTjUf9MuPxMQe08JV_Tl6tusekfk,1061
|
|
@@ -358,7 +358,7 @@ cirq/ops/qubit_order_or_list.py,sha256=WVnhQcOYCgAhiB4t47Kji-pN1tnvs--X5deCQwwGV
|
|
|
358
358
|
cirq/ops/qubit_order_test.py,sha256=B9xMIxlaI7YjRUNA6AkHJuUCFejGYw-lT7ZaSl31yTU,4238
|
|
359
359
|
cirq/ops/random_gate_channel.py,sha256=gKDqZa6AwdCIuuh2UOvO5oxCdGRDOInA7fI3ZLQ-LTY,5121
|
|
360
360
|
cirq/ops/random_gate_channel_test.py,sha256=U3EAaAlCZkgFIYxqwcSkPsaVGrKA2PSeG_DK2ou--AE,8606
|
|
361
|
-
cirq/ops/raw_types.py,sha256=
|
|
361
|
+
cirq/ops/raw_types.py,sha256=Lx2BvHc7K_PIOwtHkB_oq7ktv37PeBgd1lQ98UjsOwA,40274
|
|
362
362
|
cirq/ops/raw_types_test.py,sha256=RWUiB2TypXxbDTVaetQ7h-buGScUcQgY6YsFkmodZGY,33484
|
|
363
363
|
cirq/ops/state_preparation_channel.py,sha256=PjVtoLbjBAy_XqnFAY40Am-NifeuCFVVLW6RJxph5sQ,4778
|
|
364
364
|
cirq/ops/state_preparation_channel_test.py,sha256=yKUvLw_ft6cvIgRJcFQ779wZS-V6V-pzQq-rZRWdCmU,5922
|
|
@@ -366,11 +366,11 @@ cirq/ops/swap_gates.py,sha256=9eJMGyOiA8W9k2xJ_w5PaLOCHGvB6C4T2RLddIZ5qE8,11601
|
|
|
366
366
|
cirq/ops/swap_gates_test.py,sha256=_CihLf6rY4PNphCkH-S5mLJQYZW9ILjnnwUyQ9b0Blg,7452
|
|
367
367
|
cirq/ops/tags.py,sha256=B3nEsZQTurGPJodH7aDoreNSatqawTxwsmw8fSKaIlc,2294
|
|
368
368
|
cirq/ops/tags_test.py,sha256=4V9twOuCXd7Glvj9p3RW-tZ4-bfLtC1tmonR4soKNA0,1158
|
|
369
|
-
cirq/ops/three_qubit_gates.py,sha256=
|
|
369
|
+
cirq/ops/three_qubit_gates.py,sha256=6AM1-5e9qBYbnJXDqdoDhx2HnhtlwAumat0GjwHyFNg,28516
|
|
370
370
|
cirq/ops/three_qubit_gates_test.py,sha256=iQfQ4p4TwtyHYCqaWOEeZsqszF_Mp49VwlIKRydClMk,11778
|
|
371
|
-
cirq/ops/two_qubit_diagonal_gate.py,sha256=
|
|
371
|
+
cirq/ops/two_qubit_diagonal_gate.py,sha256=7ALyJs1ueE3i3v8FesFraaQC8nPp8h73tqeYIuNUVfU,5396
|
|
372
372
|
cirq/ops/two_qubit_diagonal_gate_test.py,sha256=qiuREluCDKMok3ormBOdDYCFlOS9u1zFLqTsORO5JtM,4000
|
|
373
|
-
cirq/ops/uniform_superposition_gate.py,sha256=
|
|
373
|
+
cirq/ops/uniform_superposition_gate.py,sha256=WTO2AUBWIpUtcPGG2eI0r3KWG-pO_tuCV0J_Ka4Chvw,4725
|
|
374
374
|
cirq/ops/uniform_superposition_gate_test.py,sha256=9N8woRmaFWeuaPMy2K1JlXyTG8bICIpsfmOzXc3NysU,3551
|
|
375
375
|
cirq/ops/wait_gate.py,sha256=ZJ9cqRysAyUYgfswVWO5C2OkDZ9MFEQjSemLw0w3drA,5654
|
|
376
376
|
cirq/ops/wait_gate_test.py,sha256=2Uw8ZjFkYGhDosoxbJr_IW2wWdxY8kXR-CLyC69DYRg,3543
|
|
@@ -918,7 +918,7 @@ cirq/sim/state_vector_simulation_state.py,sha256=e4it_DT1J-30S3OX_gfMJiWAttFaVOM
|
|
|
918
918
|
cirq/sim/state_vector_simulation_state_test.py,sha256=UtGMIurlV6N74nX7qoVnGoRhwF35-ghDEIP7Mj5AXmI,9841
|
|
919
919
|
cirq/sim/state_vector_simulator.py,sha256=j1Dcu6k3gtX2cHedVlJiSgDQ_WQ2UUUyFnAEeHrOF88,8201
|
|
920
920
|
cirq/sim/state_vector_simulator_test.py,sha256=wJq1OZRzKokeM9cJyaJXi6wHH2qi97h0HmJlYOEBDzU,7864
|
|
921
|
-
cirq/sim/state_vector_test.py,sha256=
|
|
921
|
+
cirq/sim/state_vector_test.py,sha256=AF5LbyRymSjuFDG19gPetp7morKLl8v5yfgf17TFCNg,16586
|
|
922
922
|
cirq/sim/clifford/__init__.py,sha256=lD7l6JuE5n0xwvOYNYH-giCH3qAEVH1SUwDrZM1jKKY,636
|
|
923
923
|
cirq/sim/clifford/clifford_simulator.py,sha256=JgwXOpdmiaMnsxfjodNi2OX03IpAKRrIEMZszXxKXZw,9749
|
|
924
924
|
cirq/sim/clifford/clifford_simulator_test.py,sha256=pgLz8-SSFLBq6kcJ516ufQMJiJI2dG9NM2nkmzwY124,20380
|
|
@@ -1031,9 +1031,9 @@ cirq/transformers/drop_negligible_operations.py,sha256=8eyOMy7bra2wJAjORbk6QjwHi
|
|
|
1031
1031
|
cirq/transformers/drop_negligible_operations_test.py,sha256=gqL6RoDPm6Zf4RxtprBenFyIsZQPUxmPur9oRl0Yr3U,3823
|
|
1032
1032
|
cirq/transformers/dynamical_decoupling.py,sha256=OSaJy55nYJmCVgan0VBlxcXeTKPuiJMJDTnnsaKGBFs,12329
|
|
1033
1033
|
cirq/transformers/dynamical_decoupling_test.py,sha256=kXngZhzV_58cPqpx-zhMmabGzaUKEN_9iS3YV7U7fEE,28410
|
|
1034
|
-
cirq/transformers/eject_phased_paulis.py,sha256=
|
|
1034
|
+
cirq/transformers/eject_phased_paulis.py,sha256=usuPCxHgZf6Aw6pqIU4vOvaOypH4SiT2lY8VwAnlObs,13975
|
|
1035
1035
|
cirq/transformers/eject_phased_paulis_test.py,sha256=-mXsfbi3V0ojC_YqoQM5otzdW4kjGusCx6F-kCv8M98,15834
|
|
1036
|
-
cirq/transformers/eject_z.py,sha256=
|
|
1036
|
+
cirq/transformers/eject_z.py,sha256=d53z1siUVCPrtNbPls6_RSujz6d2gF77_AQAWhnJmVM,5823
|
|
1037
1037
|
cirq/transformers/eject_z_test.py,sha256=U0BMdW6nW1cI18I5tE__1YpCvtzDwYGECgqUph5Fc8I,13302
|
|
1038
1038
|
cirq/transformers/expand_composite.py,sha256=nASRoP4qfjsnX_t2a2hBw8BE7B_JD-0XLGIIXxbIdbc,2387
|
|
1039
1039
|
cirq/transformers/expand_composite_test.py,sha256=4Gn6LVqr0DeuUumde80O4esOLGIoo86_S_Mk-HwnMfk,8640
|
|
@@ -1058,7 +1058,7 @@ cirq/transformers/synchronize_terminal_measurements_test.py,sha256=VTiw5S3s_Y31q
|
|
|
1058
1058
|
cirq/transformers/transformer_api.py,sha256=f95sfOr-KYXLt4yxAaFXoG0-oEc8IKApzG4pyXsm3YY,16956
|
|
1059
1059
|
cirq/transformers/transformer_api_test.py,sha256=f-Vup0VCUvTqJKm5kWHf6xet7sFTerLMGYzJHy8Rc5s,13045
|
|
1060
1060
|
cirq/transformers/transformer_primitives.py,sha256=ZiQjYLfksI8ZxqvTvhUN0R9X1WvKEYwAo6NymoKGvzw,37658
|
|
1061
|
-
cirq/transformers/transformer_primitives_test.py,sha256=
|
|
1061
|
+
cirq/transformers/transformer_primitives_test.py,sha256=5N23aI-DGRBj2T6Xd7VUiLBXWU6pgNsvmjZXJ3wwous,41725
|
|
1062
1062
|
cirq/transformers/analytical_decompositions/__init__.py,sha256=ZNtETntol3G_n6uqzGxOmBanGMbCj0QAc-5vicN2jkM,2724
|
|
1063
1063
|
cirq/transformers/analytical_decompositions/clifford_decomposition.py,sha256=DsuuP91pm2dX0CO4rWwmJAJyAfuXMcA1UJK0g8krp7k,6726
|
|
1064
1064
|
cirq/transformers/analytical_decompositions/clifford_decomposition_test.py,sha256=AAZh_9vEb5f2E_EItPZTlMRNdv0d47AwqTn4BytX0UI,7102
|
|
@@ -1137,7 +1137,7 @@ cirq/value/digits.py,sha256=pUQi6PIA1FMbXUOWknefb6dBApCyLsTkpLFrhvNgE0Q,6024
|
|
|
1137
1137
|
cirq/value/digits_test.py,sha256=evx-y619LfjSN_gUO1B6K7O80X5HJmxxBPl61RrOovo,3812
|
|
1138
1138
|
cirq/value/duration.py,sha256=isNzA1TuKb5rSaAYy4JpgT91Zt9_5XLQBSmMkuWCtD4,10358
|
|
1139
1139
|
cirq/value/duration_test.py,sha256=C7nwg7IlHoQOUhWa_aX8vy7_qp654ZIDtmnKF35UiqE,8244
|
|
1140
|
-
cirq/value/linear_dict.py,sha256=
|
|
1140
|
+
cirq/value/linear_dict.py,sha256=RyCxuUyoJCTUtTIw3vtVYd2TYKOmcMj7IKOSZcwgU0k,10635
|
|
1141
1141
|
cirq/value/linear_dict_test.py,sha256=uEHbvobWV4EypOXQGe6B4xh6atLbQq8YSOomNHgv38o,17107
|
|
1142
1142
|
cirq/value/measurement_key.py,sha256=glvyn36NylWMdtHYLFsD72jPZJsnKpFqQXKh8XpOX4Q,5200
|
|
1143
1143
|
cirq/value/measurement_key_test.py,sha256=GnEX5QdEVbmi0dR9URcgXQH23aqW7Y_PKmTb2eIdRCg,4466
|
|
@@ -1157,11 +1157,11 @@ cirq/value/value_equality_attr_test.py,sha256=k_nl5hWxo4yMO6WNu0wU68wyeb-RN9Ua_I
|
|
|
1157
1157
|
cirq/vis/__init__.py,sha256=e3Z1PI-Ay0hDHhIgFZEDwQIuO8C_aayNdL-EByF0J4o,1001
|
|
1158
1158
|
cirq/vis/density_matrix.py,sha256=kMAPcRh6f0ghZKSe86nB_2iFngrDsw0pNael1EZ5BEw,4819
|
|
1159
1159
|
cirq/vis/density_matrix_test.py,sha256=Xg41NQZBfoyrkaX3n9pW4q1LIxWpOW3Cr_I_Wx51GlQ,6965
|
|
1160
|
-
cirq/vis/heatmap.py,sha256=
|
|
1160
|
+
cirq/vis/heatmap.py,sha256=lyx1CfPAM8NSv5LcpQM05TFS20QDuzadsffC923_Hls,17821
|
|
1161
1161
|
cirq/vis/heatmap_test.py,sha256=5kWIxJZZbZcc93XZrZ18lF2gRUleR1iqYbWfHs4cvu4,20531
|
|
1162
1162
|
cirq/vis/histogram.py,sha256=gQUrcebsk5wgPT38pWFW55jG9zaKhxp8zLRGmmVDk8s,5107
|
|
1163
1163
|
cirq/vis/histogram_test.py,sha256=Qlw0e3amw_MFga-hNweiLzRCH174W9bB2qkmX_RiS-U,1904
|
|
1164
|
-
cirq/vis/state_histogram.py,sha256=
|
|
1164
|
+
cirq/vis/state_histogram.py,sha256=adIlRVHz6UdvgGzEQ6qs25HVqitU3p6jIs-JBHGQe5A,4300
|
|
1165
1165
|
cirq/vis/state_histogram_test.py,sha256=KzxDJedwE-KZR-K_TZlMh01DroSnZPArZPOo4CBEYWI,3761
|
|
1166
1166
|
cirq/vis/vis_utils.py,sha256=CsNHb9vMBF9UjxZ2k5XqMESbATOx0FXhWAwxFbq-9pQ,1239
|
|
1167
1167
|
cirq/vis/vis_utils_test.py,sha256=-aiL5WmhPDs_5BF2lDol1koD4JuHTiYxLK2ofyWrbCU,939
|
|
@@ -1184,8 +1184,8 @@ cirq/work/sampler.py,sha256=JEAeQQRF3bqlO9AkOf4XbrTATDI5f5JgyM_FAUCNxao,19751
|
|
|
1184
1184
|
cirq/work/sampler_test.py,sha256=B2ZsuqGT854gQtBIAh8k0LiG9Vj5wSzcGvkxOUoTcW4,13217
|
|
1185
1185
|
cirq/work/zeros_sampler.py,sha256=x1C7cup66a43n-3tm8QjhiqJa07qcJW10FxNp9jJ59Q,2356
|
|
1186
1186
|
cirq/work/zeros_sampler_test.py,sha256=JIkpBBFPJe5Ba4142vzogyWyboG1Q1ZAm0UVGgOoZn8,3279
|
|
1187
|
-
cirq_core-1.5.0.
|
|
1188
|
-
cirq_core-1.5.0.
|
|
1189
|
-
cirq_core-1.5.0.
|
|
1190
|
-
cirq_core-1.5.0.
|
|
1191
|
-
cirq_core-1.5.0.
|
|
1187
|
+
cirq_core-1.5.0.dev20240823202236.dist-info/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
|
|
1188
|
+
cirq_core-1.5.0.dev20240823202236.dist-info/METADATA,sha256=klsq1CGGRho9Ux06bwHfvXSxxHu7Ua7jFRLDkklfIus,1992
|
|
1189
|
+
cirq_core-1.5.0.dev20240823202236.dist-info/WHEEL,sha256=eOLhNAGa2EW3wWl_TU484h7q1UNgy0JXjjoqKoxAAQc,92
|
|
1190
|
+
cirq_core-1.5.0.dev20240823202236.dist-info/top_level.txt,sha256=Sz9iOxHU0IEMLSFGwiwOCaN2e9K-jFbBbtpPN1hB73g,5
|
|
1191
|
+
cirq_core-1.5.0.dev20240823202236.dist-info/RECORD,,
|
{cirq_core-1.5.0.dev20240823014143.dist-info → cirq_core-1.5.0.dev20240823202236.dist-info}/LICENSE
RENAMED
|
File without changes
|
{cirq_core-1.5.0.dev20240823014143.dist-info → cirq_core-1.5.0.dev20240823202236.dist-info}/WHEEL
RENAMED
|
File without changes
|
|
File without changes
|