cirq-core 1.5.0.dev20250317215005__py3-none-any.whl → 1.5.0.dev20250318031515__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/moment.py +11 -22
- cirq/circuits/moment_test.py +97 -2
- cirq/ops/raw_types.py +76 -35
- {cirq_core-1.5.0.dev20250317215005.dist-info → cirq_core-1.5.0.dev20250318031515.dist-info}/METADATA +1 -1
- {cirq_core-1.5.0.dev20250317215005.dist-info → cirq_core-1.5.0.dev20250318031515.dist-info}/RECORD +10 -10
- {cirq_core-1.5.0.dev20250317215005.dist-info → cirq_core-1.5.0.dev20250318031515.dist-info}/LICENSE +0 -0
- {cirq_core-1.5.0.dev20250317215005.dist-info → cirq_core-1.5.0.dev20250318031515.dist-info}/WHEEL +0 -0
- {cirq_core-1.5.0.dev20250317215005.dist-info → cirq_core-1.5.0.dev20250318031515.dist-info}/top_level.txt +0 -0
cirq/_version.py
CHANGED
cirq/_version_test.py
CHANGED
cirq/circuits/moment.py
CHANGED
|
@@ -49,7 +49,7 @@ if TYPE_CHECKING:
|
|
|
49
49
|
import cirq
|
|
50
50
|
|
|
51
51
|
# Lazy imports to break circular dependencies.
|
|
52
|
-
|
|
52
|
+
circuit = LazyLoader("circuit", globals(), "cirq.circuits.circuit")
|
|
53
53
|
op_tree = LazyLoader("op_tree", globals(), "cirq.ops.op_tree")
|
|
54
54
|
text_diagram_drawer = LazyLoader(
|
|
55
55
|
"text_diagram_drawer", globals(), "cirq.circuits.text_diagram_drawer"
|
|
@@ -525,7 +525,7 @@ class Moment:
|
|
|
525
525
|
return cls.from_ops(*operations)
|
|
526
526
|
|
|
527
527
|
def __add__(self, other: 'cirq.OP_TREE') -> 'cirq.Moment':
|
|
528
|
-
if isinstance(other,
|
|
528
|
+
if isinstance(other, circuit.AbstractCircuit):
|
|
529
529
|
return NotImplemented # Delegate to Circuit.__radd__.
|
|
530
530
|
return self.with_operations(other)
|
|
531
531
|
|
|
@@ -659,37 +659,26 @@ class Moment:
|
|
|
659
659
|
return diagram.render()
|
|
660
660
|
|
|
661
661
|
def _commutes_(self, other: Any, *, atol: float = 1e-8) -> Union[bool, NotImplementedType]:
|
|
662
|
-
"""Determines whether Moment commutes with the Operation.
|
|
662
|
+
"""Determines whether Moment commutes with the other Moment or Operation.
|
|
663
663
|
|
|
664
664
|
Args:
|
|
665
|
-
other: An Operation
|
|
666
|
-
In case a different type is specified, NotImplemented is
|
|
667
|
-
returned.
|
|
665
|
+
other: An Operation or Moment object to test for commutativity.
|
|
668
666
|
atol: Absolute error tolerance. If all entries in v1@v2 - v2@v1
|
|
669
667
|
have a magnitude less than this tolerance, v1 and v2 can be
|
|
670
668
|
reported as commuting. Defaults to 1e-8.
|
|
671
669
|
|
|
672
670
|
Returns:
|
|
673
|
-
True: The Moment
|
|
674
|
-
|
|
671
|
+
True: The Moment commutes with Moment or Operation OR they don't
|
|
672
|
+
have shared qubits.
|
|
675
673
|
False: The two values do not commute.
|
|
676
674
|
NotImplemented: In case we don't know how to check this, e.g.
|
|
677
|
-
the parameter type is not supported
|
|
675
|
+
the parameter type is not supported or commutativity cannot be
|
|
676
|
+
determined.
|
|
678
677
|
"""
|
|
679
|
-
if not isinstance(other, ops.Operation):
|
|
678
|
+
if not isinstance(other, (ops.Operation, Moment)):
|
|
680
679
|
return NotImplemented
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
for op in self.operations:
|
|
684
|
-
if not other_qubits.intersection(set(op.qubits)):
|
|
685
|
-
continue
|
|
686
|
-
|
|
687
|
-
commutes = protocols.commutes(op, other, atol=atol, default=NotImplemented)
|
|
688
|
-
|
|
689
|
-
if not commutes or commutes is NotImplemented:
|
|
690
|
-
return commutes
|
|
691
|
-
|
|
692
|
-
return True
|
|
680
|
+
other_operations = other.operations if isinstance(other, Moment) else (other,)
|
|
681
|
+
return raw_types._operations_commutes_impl(self.operations, other_operations, atol=atol)
|
|
693
682
|
|
|
694
683
|
|
|
695
684
|
class _SortByValFallbackToType:
|
cirq/circuits/moment_test.py
CHANGED
|
@@ -680,7 +680,7 @@ def test_text_diagram_does_not_depend_on_insertion_order():
|
|
|
680
680
|
assert str(m1) == str(m2)
|
|
681
681
|
|
|
682
682
|
|
|
683
|
-
def
|
|
683
|
+
def test_commutes_moment_and_operation():
|
|
684
684
|
a = cirq.NamedQubit('a')
|
|
685
685
|
b = cirq.NamedQubit('b')
|
|
686
686
|
c = cirq.NamedQubit('c')
|
|
@@ -688,7 +688,7 @@ def test_commutes():
|
|
|
688
688
|
|
|
689
689
|
moment = cirq.Moment([cirq.X(a), cirq.Y(b), cirq.H(c)])
|
|
690
690
|
|
|
691
|
-
assert
|
|
691
|
+
assert cirq.commutes(moment, a, default=None) is None
|
|
692
692
|
|
|
693
693
|
assert cirq.commutes(moment, cirq.X(a))
|
|
694
694
|
assert cirq.commutes(moment, cirq.Y(b))
|
|
@@ -700,6 +700,101 @@ def test_commutes():
|
|
|
700
700
|
assert not cirq.commutes(moment, cirq.H(b))
|
|
701
701
|
assert not cirq.commutes(moment, cirq.X(c))
|
|
702
702
|
|
|
703
|
+
# Empty moment commutes with everything
|
|
704
|
+
moment = cirq.Moment()
|
|
705
|
+
assert cirq.commutes(moment, cirq.X(a))
|
|
706
|
+
assert cirq.commutes(moment, cirq.measure(b))
|
|
707
|
+
|
|
708
|
+
# Two qubit operation
|
|
709
|
+
moment = cirq.Moment(cirq.Z(a), cirq.Z(b))
|
|
710
|
+
assert cirq.commutes(moment, cirq.XX(a, b))
|
|
711
|
+
|
|
712
|
+
|
|
713
|
+
def test_commutes_moment_and_moment():
|
|
714
|
+
a = cirq.NamedQubit('a')
|
|
715
|
+
b = cirq.NamedQubit('b')
|
|
716
|
+
c = cirq.NamedQubit('c')
|
|
717
|
+
|
|
718
|
+
# Test cases where individual operations don't commute but moments do
|
|
719
|
+
# Two Z gates (Z⊗Z) commutes with RXX even though individual Z's don't
|
|
720
|
+
assert not cirq.commutes(cirq.Moment(cirq.Z(a)), cirq.Moment(cirq.XX(a, b)))
|
|
721
|
+
assert cirq.commutes(cirq.Moment(cirq.Z(a), cirq.Z(b)), cirq.Moment(cirq.XX(a, b)))
|
|
722
|
+
|
|
723
|
+
# Moments that do not commute if acting on same qubits
|
|
724
|
+
assert cirq.commutes(cirq.Moment(cirq.X(a)), cirq.Moment(cirq.Y(b)))
|
|
725
|
+
assert not cirq.commutes(cirq.Moment(cirq.X(a)), cirq.Moment(cirq.Y(a)))
|
|
726
|
+
|
|
727
|
+
# Moments commute with themselves
|
|
728
|
+
assert cirq.commutes(
|
|
729
|
+
cirq.Moment([cirq.X(a), cirq.Y(b), cirq.H(c)]),
|
|
730
|
+
cirq.Moment([cirq.X(a), cirq.Y(b), cirq.H(c)]),
|
|
731
|
+
)
|
|
732
|
+
|
|
733
|
+
|
|
734
|
+
def test_commutes_moment_with_controls():
|
|
735
|
+
a, b = cirq.LineQubit.range(2)
|
|
736
|
+
assert cirq.commutes(
|
|
737
|
+
cirq.Moment(cirq.measure(a, key='k0')), cirq.Moment(cirq.X(b).with_classical_controls('k1'))
|
|
738
|
+
)
|
|
739
|
+
assert cirq.commutes(
|
|
740
|
+
cirq.Moment(cirq.X(b).with_classical_controls('k1')), cirq.Moment(cirq.measure(a, key='k0'))
|
|
741
|
+
)
|
|
742
|
+
assert cirq.commutes(
|
|
743
|
+
cirq.Moment(cirq.X(a).with_classical_controls('k0')),
|
|
744
|
+
cirq.Moment(cirq.H(b).with_classical_controls('k0')),
|
|
745
|
+
)
|
|
746
|
+
assert cirq.commutes(
|
|
747
|
+
cirq.Moment(cirq.X(a).with_classical_controls('k0')),
|
|
748
|
+
cirq.Moment(cirq.X(a).with_classical_controls('k0')),
|
|
749
|
+
)
|
|
750
|
+
assert not cirq.commutes(
|
|
751
|
+
cirq.Moment(cirq.measure(a, key='k0')), cirq.Moment(cirq.X(b).with_classical_controls('k0'))
|
|
752
|
+
)
|
|
753
|
+
assert not cirq.commutes(
|
|
754
|
+
cirq.Moment(cirq.X(b).with_classical_controls('k0')), cirq.Moment(cirq.measure(a, key='k0'))
|
|
755
|
+
)
|
|
756
|
+
assert not cirq.commutes(
|
|
757
|
+
cirq.Moment(cirq.X(a).with_classical_controls('k0')),
|
|
758
|
+
cirq.Moment(cirq.H(a).with_classical_controls('k0')),
|
|
759
|
+
)
|
|
760
|
+
|
|
761
|
+
|
|
762
|
+
def test_commutes_moment_and_moment_comprehensive():
|
|
763
|
+
a, b, c, d = cirq.LineQubit.range(4)
|
|
764
|
+
|
|
765
|
+
# Basic Z⊗Z commuting with XX at different angles
|
|
766
|
+
m1 = cirq.Moment([cirq.Z(a), cirq.Z(b)])
|
|
767
|
+
m2 = cirq.Moment([cirq.XXPowGate(exponent=0.5)(a, b)])
|
|
768
|
+
assert cirq.commutes(m1, m2)
|
|
769
|
+
|
|
770
|
+
# Disjoint qubit sets
|
|
771
|
+
m1 = cirq.Moment([cirq.X(a), cirq.Y(b)])
|
|
772
|
+
m2 = cirq.Moment([cirq.Z(c), cirq.H(d)])
|
|
773
|
+
assert cirq.commutes(m1, m2)
|
|
774
|
+
|
|
775
|
+
# Mixed case - some commute individually, some as group
|
|
776
|
+
m1 = cirq.Moment([cirq.Z(a), cirq.Z(b), cirq.X(c)])
|
|
777
|
+
m2 = cirq.Moment([cirq.XXPowGate(exponent=0.5)(a, b), cirq.X(c)])
|
|
778
|
+
assert cirq.commutes(m1, m2)
|
|
779
|
+
|
|
780
|
+
# Non-commuting case: X on first qubit, Z on second with XX gate
|
|
781
|
+
m1 = cirq.Moment([cirq.X(a), cirq.Z(b)])
|
|
782
|
+
m2 = cirq.Moment([cirq.XX(a, b)])
|
|
783
|
+
assert not cirq.commutes(m1, m2)
|
|
784
|
+
|
|
785
|
+
# Complex case requiring unitary calculation - non-commuting case
|
|
786
|
+
m1 = cirq.Moment([cirq.Z(a), cirq.Z(b), cirq.Z(c)])
|
|
787
|
+
m2 = cirq.Moment([cirq.XXPowGate(exponent=0.5)(a, b), cirq.X(c)])
|
|
788
|
+
assert not cirq.commutes(m1, m2) # Z⊗Z⊗Z doesn't commute with XX⊗X
|
|
789
|
+
|
|
790
|
+
|
|
791
|
+
def test_commutes_handles_non_unitary_operation():
|
|
792
|
+
a = cirq.NamedQubit('a')
|
|
793
|
+
op_damp_a = cirq.AmplitudeDampingChannel(gamma=0.1).on(a)
|
|
794
|
+
assert cirq.commutes(cirq.Moment(cirq.X(a)), op_damp_a, default=None) is None
|
|
795
|
+
assert cirq.commutes(cirq.Moment(cirq.X(a)), cirq.Moment(op_damp_a), default=None) is None
|
|
796
|
+
assert cirq.commutes(cirq.Moment(op_damp_a), cirq.Moment(op_damp_a))
|
|
797
|
+
|
|
703
798
|
|
|
704
799
|
def test_transform_qubits():
|
|
705
800
|
a, b = cirq.LineQubit.range(2)
|
cirq/ops/raw_types.py
CHANGED
|
@@ -688,41 +688,7 @@ class Operation(metaclass=abc.ABCMeta):
|
|
|
688
688
|
"""Determine if this Operation commutes with the object"""
|
|
689
689
|
if not isinstance(other, Operation):
|
|
690
690
|
return NotImplemented
|
|
691
|
-
|
|
692
|
-
self_keys = protocols.measurement_key_objs(self)
|
|
693
|
-
other_keys = protocols.measurement_key_objs(other)
|
|
694
|
-
if (
|
|
695
|
-
not self_keys.isdisjoint(other_keys)
|
|
696
|
-
or not protocols.control_keys(self).isdisjoint(other_keys)
|
|
697
|
-
or not protocols.control_keys(other).isdisjoint(self_keys)
|
|
698
|
-
):
|
|
699
|
-
return False
|
|
700
|
-
|
|
701
|
-
if hasattr(other, 'qubits') and set(self.qubits).isdisjoint(other.qubits):
|
|
702
|
-
return True
|
|
703
|
-
|
|
704
|
-
from cirq import circuits
|
|
705
|
-
|
|
706
|
-
# Remove the classical controls to validate the quantum commutativity. This can be done
|
|
707
|
-
# because during execution, the two operations will either both be run, in which case they
|
|
708
|
-
# behave like the suboperations, so if the suboperations commute then these commute. Or
|
|
709
|
-
# one of them is cold in which case it behaves like the identity, which always commutes.
|
|
710
|
-
self_raw = self.without_classical_controls()
|
|
711
|
-
other_raw = other.without_classical_controls()
|
|
712
|
-
circuit12 = circuits.Circuit(self_raw, other_raw)
|
|
713
|
-
circuit21 = circuits.Circuit(other_raw, self_raw)
|
|
714
|
-
|
|
715
|
-
# Don't create gigantic matrices.
|
|
716
|
-
shape = protocols.qid_shape_protocol.qid_shape(circuit12)
|
|
717
|
-
if np.prod(shape, dtype=np.int64) > 2**10:
|
|
718
|
-
return NotImplemented # pragma: no cover
|
|
719
|
-
|
|
720
|
-
m12 = protocols.unitary_protocol.unitary(circuit12, default=None)
|
|
721
|
-
m21 = protocols.unitary_protocol.unitary(circuit21, default=None)
|
|
722
|
-
if m12 is None or m21 is None:
|
|
723
|
-
return NotImplemented
|
|
724
|
-
|
|
725
|
-
return np.allclose(m12, m21, atol=atol)
|
|
691
|
+
return _operations_commutes_impl([self], [other], atol=atol)
|
|
726
692
|
|
|
727
693
|
@property
|
|
728
694
|
def classical_controls(self) -> FrozenSet['cirq.Condition']:
|
|
@@ -1112,3 +1078,78 @@ def _validate_qid_shape(val: Any, qubits: Sequence['cirq.Qid']) -> None:
|
|
|
1112
1078
|
raise ValueError(
|
|
1113
1079
|
f'Duplicate qids for <{val!r}>. Expected unique qids but got <{qubits!r}>.'
|
|
1114
1080
|
)
|
|
1081
|
+
|
|
1082
|
+
|
|
1083
|
+
def _operations_commutes_impl(
|
|
1084
|
+
ops1: Collection[Operation], ops2: Collection[Operation], *, atol: float
|
|
1085
|
+
) -> Union[bool, NotImplementedType]:
|
|
1086
|
+
"""Determine if two collections of non-overlapping Operations commute.
|
|
1087
|
+
|
|
1088
|
+
This function implements the commutes protocol for the Operation and Moment classes
|
|
1089
|
+
and is not intended for other use.
|
|
1090
|
+
|
|
1091
|
+
Args:
|
|
1092
|
+
ops1: The first collection of operations. It is assumed each operation
|
|
1093
|
+
acts on different qubits, i.e., the operations can form a Moment.
|
|
1094
|
+
ops2: The second collection of operations to be checked for commutation
|
|
1095
|
+
with `ops1`. It is assumed each operation acts on different qubits,
|
|
1096
|
+
i.e., the operations can form a Moment.
|
|
1097
|
+
atol: Absolute error tolerance. If all entries in ops1@ops2 - ops2@ops1
|
|
1098
|
+
have a magnitude less than this tolerance, ops1 and ops2 are considered
|
|
1099
|
+
to commute.
|
|
1100
|
+
|
|
1101
|
+
Returns:
|
|
1102
|
+
True: `ops1` and `ops2` commute (or approximately commute).
|
|
1103
|
+
False: `ops1` and `ops2` do not commute.
|
|
1104
|
+
NotImplemented: The commutativity cannot be determined here.
|
|
1105
|
+
"""
|
|
1106
|
+
ops1_keys = frozenset(k for op in ops1 for k in protocols.measurement_key_objs(op))
|
|
1107
|
+
ops2_keys = frozenset(k for op in ops2 for k in protocols.measurement_key_objs(op))
|
|
1108
|
+
ops1_control_keys = frozenset(k for op in ops1 for k in protocols.control_keys(op))
|
|
1109
|
+
ops2_control_keys = frozenset(k for op in ops2 for k in protocols.control_keys(op))
|
|
1110
|
+
if (
|
|
1111
|
+
not ops1_keys.isdisjoint(ops2_keys)
|
|
1112
|
+
or not ops1_control_keys.isdisjoint(ops2_keys)
|
|
1113
|
+
or not ops2_control_keys.isdisjoint(ops1_keys)
|
|
1114
|
+
):
|
|
1115
|
+
return False
|
|
1116
|
+
|
|
1117
|
+
ops1_qubits = frozenset().union(*(op.qubits for op in ops1))
|
|
1118
|
+
ops2_qubits = frozenset().union(*(op.qubits for op in ops2))
|
|
1119
|
+
if ops1_qubits.isdisjoint(ops2_qubits):
|
|
1120
|
+
return True
|
|
1121
|
+
|
|
1122
|
+
from cirq import circuits
|
|
1123
|
+
|
|
1124
|
+
# Remove the classical controls to validate the quantum commutativity. This can be done
|
|
1125
|
+
# because during execution, the two operations will either both be run, in which case they
|
|
1126
|
+
# behave like the suboperations, so if the suboperations commute then these commute. Or
|
|
1127
|
+
# one of them is cold in which case it behaves like the identity, which always commutes.
|
|
1128
|
+
shared_qubits = ops1_qubits.intersection(ops2_qubits)
|
|
1129
|
+
ops1_raw = [
|
|
1130
|
+
op.without_classical_controls() for op in ops1 if not shared_qubits.isdisjoint(op.qubits)
|
|
1131
|
+
]
|
|
1132
|
+
ops2_raw = [
|
|
1133
|
+
op.without_classical_controls() for op in ops2 if not shared_qubits.isdisjoint(op.qubits)
|
|
1134
|
+
]
|
|
1135
|
+
moment1 = circuits.Moment(ops1_raw)
|
|
1136
|
+
moment2 = circuits.Moment(ops2_raw)
|
|
1137
|
+
|
|
1138
|
+
# shortcut if we have equal moments
|
|
1139
|
+
if moment1 == moment2:
|
|
1140
|
+
return True
|
|
1141
|
+
|
|
1142
|
+
circuit12 = circuits.Circuit(moment1, moment2)
|
|
1143
|
+
circuit21 = circuits.Circuit(moment2, moment1)
|
|
1144
|
+
|
|
1145
|
+
# Don't create gigantic matrices.
|
|
1146
|
+
shape = protocols.qid_shape_protocol.qid_shape(circuit12)
|
|
1147
|
+
if np.prod(shape, dtype=np.int64) > 2**10:
|
|
1148
|
+
return NotImplemented # pragma: no cover
|
|
1149
|
+
|
|
1150
|
+
m12 = protocols.unitary_protocol.unitary(circuit12, default=None)
|
|
1151
|
+
m21 = protocols.unitary_protocol.unitary(circuit21, default=None)
|
|
1152
|
+
if m12 is None or m21 is None:
|
|
1153
|
+
return NotImplemented
|
|
1154
|
+
|
|
1155
|
+
return np.allclose(m12, m21, atol=atol)
|
{cirq_core-1.5.0.dev20250317215005.dist-info → cirq_core-1.5.0.dev20250318031515.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.dev20250318031515
|
|
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.dev20250317215005.dist-info → cirq_core-1.5.0.dev20250318031515.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=1rDc_Ds5yDVJYk5-ThsuTbQEIRp3wO2VfuiPYOckCxU,1206
|
|
8
|
+
cirq/_version_test.py,sha256=oaX9pelu0JTLxk6lLoc9nf4q9MwE26XTKFka7yffd4I,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
|
|
@@ -24,8 +24,8 @@ cirq/circuits/frozen_circuit.py,sha256=qSbLHqIszCbVipNZQy4N829v_mWf8N2926cYRzpxG
|
|
|
24
24
|
cirq/circuits/frozen_circuit_test.py,sha256=rHyii8hLhOQ6jdA8dC1OcYPGnyeBC4uY5Q53XspkkCk,4133
|
|
25
25
|
cirq/circuits/insert_strategy.py,sha256=JU_KPe74P3OpbVQei5iDPgEpOjpts5JFKXU5Xy1QYHE,3211
|
|
26
26
|
cirq/circuits/insert_strategy_test.py,sha256=LVtUECfTe59tYO2piuD1kCA6lhI7ioerF7tp2cQ3bnk,1136
|
|
27
|
-
cirq/circuits/moment.py,sha256=
|
|
28
|
-
cirq/circuits/moment_test.py,sha256=
|
|
27
|
+
cirq/circuits/moment.py,sha256=eFlncWc5o72RuvzwQBE-q40I2LGuhN-AELRE93Lc4U0,25997
|
|
28
|
+
cirq/circuits/moment_test.py,sha256=672QcwLSTuuJzXIISH9UyMIOX89aYZZD3odvhyzhxLo,31116
|
|
29
29
|
cirq/circuits/optimization_pass.py,sha256=uw3ne0-ebZo6GNjwfQMuQ3b5u9RCgyaXRfhpbljlxao,6468
|
|
30
30
|
cirq/circuits/optimization_pass_test.py,sha256=eQB0NBJ9EvqjgSFGQMgaHIh5niQhksdnvqSXhsj3nOg,5947
|
|
31
31
|
cirq/circuits/qasm_output.py,sha256=fHbD2OeRzC0ZIvpN551JMaXDMTih7z9ZUIeCY6zQDQU,13090
|
|
@@ -360,7 +360,7 @@ cirq/ops/qubit_order_or_list.py,sha256=WVnhQcOYCgAhiB4t47Kji-pN1tnvs--X5deCQwwGV
|
|
|
360
360
|
cirq/ops/qubit_order_test.py,sha256=B9xMIxlaI7YjRUNA6AkHJuUCFejGYw-lT7ZaSl31yTU,4238
|
|
361
361
|
cirq/ops/random_gate_channel.py,sha256=gKDqZa6AwdCIuuh2UOvO5oxCdGRDOInA7fI3ZLQ-LTY,5121
|
|
362
362
|
cirq/ops/random_gate_channel_test.py,sha256=U3EAaAlCZkgFIYxqwcSkPsaVGrKA2PSeG_DK2ou--AE,8606
|
|
363
|
-
cirq/ops/raw_types.py,sha256=
|
|
363
|
+
cirq/ops/raw_types.py,sha256=tKfLpWWbfJT9p9oqG2bJBBX-OuRzZYgGvbFlhYk3oxo,43854
|
|
364
364
|
cirq/ops/raw_types_test.py,sha256=U2sAzc6DjpOmgHafGv94VJXqZHm7J898khmJoHAawHQ,33940
|
|
365
365
|
cirq/ops/state_preparation_channel.py,sha256=PjVtoLbjBAy_XqnFAY40Am-NifeuCFVVLW6RJxph5sQ,4778
|
|
366
366
|
cirq/ops/state_preparation_channel_test.py,sha256=yKUvLw_ft6cvIgRJcFQ779wZS-V6V-pzQq-rZRWdCmU,5922
|
|
@@ -1204,8 +1204,8 @@ cirq/work/sampler.py,sha256=bE5tmVkcR6cZZMLETxDfHehdsYUMbx2RvBeIBetehI4,19187
|
|
|
1204
1204
|
cirq/work/sampler_test.py,sha256=hL2UWx3dz2ukZVNxWftiKVvJcQoLplLZdQm-k1QcA40,13282
|
|
1205
1205
|
cirq/work/zeros_sampler.py,sha256=x1C7cup66a43n-3tm8QjhiqJa07qcJW10FxNp9jJ59Q,2356
|
|
1206
1206
|
cirq/work/zeros_sampler_test.py,sha256=JIkpBBFPJe5Ba4142vzogyWyboG1Q1ZAm0UVGgOoZn8,3279
|
|
1207
|
-
cirq_core-1.5.0.
|
|
1208
|
-
cirq_core-1.5.0.
|
|
1209
|
-
cirq_core-1.5.0.
|
|
1210
|
-
cirq_core-1.5.0.
|
|
1211
|
-
cirq_core-1.5.0.
|
|
1207
|
+
cirq_core-1.5.0.dev20250318031515.dist-info/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
|
|
1208
|
+
cirq_core-1.5.0.dev20250318031515.dist-info/METADATA,sha256=KEJD-shPtgKuKrVh-T1d_I_3lnC-HFnpKRerqnnseBo,4817
|
|
1209
|
+
cirq_core-1.5.0.dev20250318031515.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
|
|
1210
|
+
cirq_core-1.5.0.dev20250318031515.dist-info/top_level.txt,sha256=Sz9iOxHU0IEMLSFGwiwOCaN2e9K-jFbBbtpPN1hB73g,5
|
|
1211
|
+
cirq_core-1.5.0.dev20250318031515.dist-info/RECORD,,
|
{cirq_core-1.5.0.dev20250317215005.dist-info → cirq_core-1.5.0.dev20250318031515.dist-info}/LICENSE
RENAMED
|
File without changes
|
{cirq_core-1.5.0.dev20250317215005.dist-info → cirq_core-1.5.0.dev20250318031515.dist-info}/WHEEL
RENAMED
|
File without changes
|
|
File without changes
|