cirq-core 1.5.0.dev20241118215502__py3-none-any.whl → 1.5.0.dev20241119000519__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 +14 -4
- cirq/circuits/circuit_test.py +21 -1
- cirq/circuits/qasm_output.py +21 -9
- cirq/circuits/qasm_output_test.py +1 -1
- cirq/ops/classically_controlled_operation.py +1 -1
- cirq/ops/common_channels.py +1 -1
- cirq/ops/common_gates.py +9 -9
- cirq/ops/identity.py +1 -1
- cirq/ops/matrix_gates.py +1 -1
- cirq/ops/measurement_gate.py +5 -2
- cirq/ops/phased_x_gate.py +1 -1
- cirq/ops/swap_gates.py +1 -1
- cirq/ops/three_qubit_gates.py +3 -3
- {cirq_core-1.5.0.dev20241118215502.dist-info → cirq_core-1.5.0.dev20241119000519.dist-info}/METADATA +1 -1
- {cirq_core-1.5.0.dev20241118215502.dist-info → cirq_core-1.5.0.dev20241119000519.dist-info}/RECORD +20 -20
- {cirq_core-1.5.0.dev20241118215502.dist-info → cirq_core-1.5.0.dev20241119000519.dist-info}/LICENSE +0 -0
- {cirq_core-1.5.0.dev20241118215502.dist-info → cirq_core-1.5.0.dev20241119000519.dist-info}/WHEEL +0 -0
- {cirq_core-1.5.0.dev20241118215502.dist-info → cirq_core-1.5.0.dev20241119000519.dist-info}/top_level.txt +0 -0
cirq/_version.py
CHANGED
cirq/_version_test.py
CHANGED
cirq/circuits/circuit.py
CHANGED
|
@@ -1318,14 +1318,19 @@ class AbstractCircuit(abc.ABC):
|
|
|
1318
1318
|
return self
|
|
1319
1319
|
return self._from_moments(resolved_moments)
|
|
1320
1320
|
|
|
1321
|
-
def _qasm_(self) -> str:
|
|
1322
|
-
|
|
1321
|
+
def _qasm_(self, args: Optional['cirq.QasmArgs'] = None) -> str:
|
|
1322
|
+
if args is None:
|
|
1323
|
+
output = self._to_qasm_output()
|
|
1324
|
+
else:
|
|
1325
|
+
output = self._to_qasm_output(precision=args.precision, version=args.version)
|
|
1326
|
+
return str(output)
|
|
1323
1327
|
|
|
1324
1328
|
def _to_qasm_output(
|
|
1325
1329
|
self,
|
|
1326
1330
|
header: Optional[str] = None,
|
|
1327
1331
|
precision: int = 10,
|
|
1328
1332
|
qubit_order: 'cirq.QubitOrderOrList' = ops.QubitOrder.DEFAULT,
|
|
1333
|
+
version: str = '2.0',
|
|
1329
1334
|
) -> 'cirq.QasmOutput':
|
|
1330
1335
|
"""Returns a QASM object equivalent to the circuit.
|
|
1331
1336
|
|
|
@@ -1335,6 +1340,8 @@ class AbstractCircuit(abc.ABC):
|
|
|
1335
1340
|
precision: Number of digits to use when representing numbers.
|
|
1336
1341
|
qubit_order: Determines how qubits are ordered in the QASM
|
|
1337
1342
|
register.
|
|
1343
|
+
version: Version of OpenQASM to render as output. Defaults
|
|
1344
|
+
to OpenQASM 2.0. For OpenQASM 3.0, set this to '3.0'.
|
|
1338
1345
|
"""
|
|
1339
1346
|
if header is None:
|
|
1340
1347
|
header = f'Generated from Cirq v{cirq._version.__version__}'
|
|
@@ -1344,7 +1351,7 @@ class AbstractCircuit(abc.ABC):
|
|
|
1344
1351
|
qubits=qubits,
|
|
1345
1352
|
header=header,
|
|
1346
1353
|
precision=precision,
|
|
1347
|
-
version=
|
|
1354
|
+
version=version,
|
|
1348
1355
|
)
|
|
1349
1356
|
|
|
1350
1357
|
def to_qasm(
|
|
@@ -1352,6 +1359,7 @@ class AbstractCircuit(abc.ABC):
|
|
|
1352
1359
|
header: Optional[str] = None,
|
|
1353
1360
|
precision: int = 10,
|
|
1354
1361
|
qubit_order: 'cirq.QubitOrderOrList' = ops.QubitOrder.DEFAULT,
|
|
1362
|
+
version: str = '2.0',
|
|
1355
1363
|
) -> str:
|
|
1356
1364
|
"""Returns QASM equivalent to the circuit.
|
|
1357
1365
|
|
|
@@ -1361,9 +1369,11 @@ class AbstractCircuit(abc.ABC):
|
|
|
1361
1369
|
precision: Number of digits to use when representing numbers.
|
|
1362
1370
|
qubit_order: Determines how qubits are ordered in the QASM
|
|
1363
1371
|
register.
|
|
1372
|
+
version: Version of OpenQASM to output. Defaults to OpenQASM 2.0.
|
|
1373
|
+
Specify '3.0' if OpenQASM 3.0 is desired.
|
|
1364
1374
|
"""
|
|
1365
1375
|
|
|
1366
|
-
return str(self._to_qasm_output(header, precision, qubit_order))
|
|
1376
|
+
return str(self._to_qasm_output(header, precision, qubit_order, version))
|
|
1367
1377
|
|
|
1368
1378
|
def save_qasm(
|
|
1369
1379
|
self,
|
cirq/circuits/circuit_test.py
CHANGED
|
@@ -3579,7 +3579,7 @@ def test_insert_operations_errors():
|
|
|
3579
3579
|
@pytest.mark.parametrize('circuit_cls', [cirq.Circuit, cirq.FrozenCircuit])
|
|
3580
3580
|
def test_to_qasm(circuit_cls):
|
|
3581
3581
|
q0 = cirq.NamedQubit('q0')
|
|
3582
|
-
circuit = circuit_cls(cirq.X(q0))
|
|
3582
|
+
circuit = circuit_cls(cirq.X(q0), cirq.measure(q0, key='mmm'))
|
|
3583
3583
|
assert circuit.to_qasm() == cirq.qasm(circuit)
|
|
3584
3584
|
assert (
|
|
3585
3585
|
circuit.to_qasm()
|
|
@@ -3591,9 +3591,29 @@ include "qelib1.inc";
|
|
|
3591
3591
|
|
|
3592
3592
|
// Qubits: [q0]
|
|
3593
3593
|
qreg q[1];
|
|
3594
|
+
creg m_mmm[1];
|
|
3595
|
+
|
|
3596
|
+
|
|
3597
|
+
x q[0];
|
|
3598
|
+
measure q[0] -> m_mmm[0];
|
|
3599
|
+
"""
|
|
3600
|
+
)
|
|
3601
|
+
assert circuit.to_qasm(version="3.0") == cirq.qasm(circuit, args=cirq.QasmArgs(version="3.0"))
|
|
3602
|
+
assert (
|
|
3603
|
+
circuit.to_qasm(version="3.0")
|
|
3604
|
+
== f"""// Generated from Cirq v{cirq.__version__}
|
|
3605
|
+
|
|
3606
|
+
OPENQASM 3.0;
|
|
3607
|
+
include "stdgates.inc";
|
|
3608
|
+
|
|
3609
|
+
|
|
3610
|
+
// Qubits: [q0]
|
|
3611
|
+
qubit[1] q;
|
|
3612
|
+
bit[1] m_mmm;
|
|
3594
3613
|
|
|
3595
3614
|
|
|
3596
3615
|
x q[0];
|
|
3616
|
+
m_mmm[0] = measure q[0];
|
|
3597
3617
|
"""
|
|
3598
3618
|
)
|
|
3599
3619
|
|
cirq/circuits/qasm_output.py
CHANGED
|
@@ -54,7 +54,7 @@ class QasmUGate(ops.Gate):
|
|
|
54
54
|
return True
|
|
55
55
|
|
|
56
56
|
def _qasm_(self, qubits: Tuple['cirq.Qid', ...], args: 'cirq.QasmArgs') -> str:
|
|
57
|
-
args.validate_version('2.0')
|
|
57
|
+
args.validate_version('2.0', '3.0')
|
|
58
58
|
return args.format(
|
|
59
59
|
'u3({0:half_turns},{1:half_turns},{2:half_turns}) {3};\n',
|
|
60
60
|
self.theta,
|
|
@@ -246,7 +246,7 @@ class QasmOutput:
|
|
|
246
246
|
return ''.join(output)
|
|
247
247
|
|
|
248
248
|
def _write_qasm(self, output_func: Callable[[str], None]) -> None:
|
|
249
|
-
self.args.validate_version('2.0')
|
|
249
|
+
self.args.validate_version('2.0', '3.0')
|
|
250
250
|
|
|
251
251
|
# Generate nice line spacing
|
|
252
252
|
line_gap = [0]
|
|
@@ -267,8 +267,12 @@ class QasmOutput:
|
|
|
267
267
|
output('\n')
|
|
268
268
|
|
|
269
269
|
# Version
|
|
270
|
-
output('OPENQASM
|
|
271
|
-
|
|
270
|
+
output(f'OPENQASM {self.args.version};\n')
|
|
271
|
+
if self.args.version == '2.0':
|
|
272
|
+
output('include "qelib1.inc";\n')
|
|
273
|
+
else:
|
|
274
|
+
output('include "stdgates.inc";\n')
|
|
275
|
+
|
|
272
276
|
output_line_gap(2)
|
|
273
277
|
|
|
274
278
|
# Function definitions
|
|
@@ -276,9 +280,13 @@ class QasmOutput:
|
|
|
276
280
|
|
|
277
281
|
# Register definitions
|
|
278
282
|
# Qubit registers
|
|
283
|
+
|
|
279
284
|
output(f"// Qubits: [{', '.join(map(str, self.qubits))}]\n")
|
|
280
285
|
if len(self.qubits) > 0:
|
|
281
|
-
|
|
286
|
+
if self.args.version == '2.0':
|
|
287
|
+
output(f'qreg q[{len(self.qubits)}];\n')
|
|
288
|
+
else:
|
|
289
|
+
output(f'qubit[{len(self.qubits)}] q;\n')
|
|
282
290
|
# Classical registers
|
|
283
291
|
# Pick an id for the creg that will store each measurement
|
|
284
292
|
already_output_keys: Set[str] = set()
|
|
@@ -288,11 +296,15 @@ class QasmOutput:
|
|
|
288
296
|
continue
|
|
289
297
|
already_output_keys.add(key)
|
|
290
298
|
meas_id = self.args.meas_key_id_map[key]
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
299
|
+
if self.meas_comments[key] is not None:
|
|
300
|
+
comment = f' // Measurement: {self.meas_comments[key]}'
|
|
301
|
+
else:
|
|
302
|
+
comment = ''
|
|
303
|
+
|
|
304
|
+
if self.args.version == '2.0':
|
|
305
|
+
output(f'creg {meas_id}[{len(meas.qubits)}];{comment}\n')
|
|
294
306
|
else:
|
|
295
|
-
output(f'
|
|
307
|
+
output(f'bit[{len(meas.qubits)}] {meas_id};{comment}\n')
|
|
296
308
|
# In OpenQASM 2.0, the transformation of global phase gates is ignored.
|
|
297
309
|
# Therefore, no newline is created when the operations contained in
|
|
298
310
|
# a circuit consist only of global phase gates.
|
|
@@ -216,7 +216,7 @@ class ClassicallyControlledOperation(raw_types.Operation):
|
|
|
216
216
|
return local_keys.union(protocols.control_keys(self._sub_operation))
|
|
217
217
|
|
|
218
218
|
def _qasm_(self, args: 'cirq.QasmArgs') -> Optional[str]:
|
|
219
|
-
args.validate_version('2.0')
|
|
219
|
+
args.validate_version('2.0', '3.0')
|
|
220
220
|
if len(self._conditions) > 1:
|
|
221
221
|
raise ValueError('QASM does not support multiple conditions.')
|
|
222
222
|
subop_qasm = protocols.qasm(self._sub_operation, args=args)
|
cirq/ops/common_channels.py
CHANGED
|
@@ -702,7 +702,7 @@ class ResetChannel(raw_types.Gate):
|
|
|
702
702
|
return True
|
|
703
703
|
|
|
704
704
|
def _qasm_(self, args: 'cirq.QasmArgs', qubits: Tuple['cirq.Qid', ...]) -> Optional[str]:
|
|
705
|
-
args.validate_version('2.0')
|
|
705
|
+
args.validate_version('2.0', '3.0')
|
|
706
706
|
return args.format('reset {0};\n', qubits[0])
|
|
707
707
|
|
|
708
708
|
def _qid_shape_(self):
|
cirq/ops/common_gates.py
CHANGED
|
@@ -272,7 +272,7 @@ class XPowGate(eigen_gate.EigenGate):
|
|
|
272
272
|
)
|
|
273
273
|
|
|
274
274
|
def _qasm_(self, args: 'cirq.QasmArgs', qubits: Tuple['cirq.Qid', ...]) -> Optional[str]:
|
|
275
|
-
args.validate_version('2.0')
|
|
275
|
+
args.validate_version('2.0', '3.0')
|
|
276
276
|
if self._global_shift == 0:
|
|
277
277
|
if self._exponent == 1:
|
|
278
278
|
return args.format('x {0};\n', qubits[0])
|
|
@@ -374,7 +374,7 @@ class Rx(XPowGate):
|
|
|
374
374
|
return f'cirq.Rx(rads={proper_repr(self._rads)})'
|
|
375
375
|
|
|
376
376
|
def _qasm_(self, args: 'cirq.QasmArgs', qubits: Tuple['cirq.Qid', ...]) -> Optional[str]:
|
|
377
|
-
args.validate_version('2.0')
|
|
377
|
+
args.validate_version('2.0', '3.0')
|
|
378
378
|
return args.format('rx({0:half_turns}) {1};\n', self._exponent, qubits[0])
|
|
379
379
|
|
|
380
380
|
def _json_dict_(self) -> Dict[str, Any]:
|
|
@@ -478,7 +478,7 @@ class YPowGate(eigen_gate.EigenGate):
|
|
|
478
478
|
)
|
|
479
479
|
|
|
480
480
|
def _qasm_(self, args: 'cirq.QasmArgs', qubits: Tuple['cirq.Qid', ...]) -> Optional[str]:
|
|
481
|
-
args.validate_version('2.0')
|
|
481
|
+
args.validate_version('2.0', '3.0')
|
|
482
482
|
if self._exponent == 1 and self.global_shift != -0.5:
|
|
483
483
|
return args.format('y {0};\n', qubits[0])
|
|
484
484
|
|
|
@@ -560,7 +560,7 @@ class Ry(YPowGate):
|
|
|
560
560
|
return f'cirq.Ry(rads={proper_repr(self._rads)})'
|
|
561
561
|
|
|
562
562
|
def _qasm_(self, args: 'cirq.QasmArgs', qubits: Tuple['cirq.Qid', ...]) -> Optional[str]:
|
|
563
|
-
args.validate_version('2.0')
|
|
563
|
+
args.validate_version('2.0', '3.0')
|
|
564
564
|
return args.format('ry({0:half_turns}) {1};\n', self._exponent, qubits[0])
|
|
565
565
|
|
|
566
566
|
def _json_dict_(self) -> Dict[str, Any]:
|
|
@@ -791,7 +791,7 @@ class ZPowGate(eigen_gate.EigenGate):
|
|
|
791
791
|
return protocols.CircuitDiagramInfo(wire_symbols=('Z',), exponent=e)
|
|
792
792
|
|
|
793
793
|
def _qasm_(self, args: 'cirq.QasmArgs', qubits: Tuple['cirq.Qid', ...]) -> Optional[str]:
|
|
794
|
-
args.validate_version('2.0')
|
|
794
|
+
args.validate_version('2.0', '3.0')
|
|
795
795
|
|
|
796
796
|
if self.global_shift == 0:
|
|
797
797
|
if self._exponent == 1:
|
|
@@ -910,7 +910,7 @@ class Rz(ZPowGate):
|
|
|
910
910
|
return f'cirq.Rz(rads={proper_repr(self._rads)})'
|
|
911
911
|
|
|
912
912
|
def _qasm_(self, args: 'cirq.QasmArgs', qubits: Tuple['cirq.Qid', ...]) -> Optional[str]:
|
|
913
|
-
args.validate_version('2.0')
|
|
913
|
+
args.validate_version('2.0', '3.0')
|
|
914
914
|
return args.format('rz({0:half_turns}) {1};\n', self._exponent, qubits[0])
|
|
915
915
|
|
|
916
916
|
def _json_dict_(self) -> Dict[str, Any]:
|
|
@@ -1016,7 +1016,7 @@ class HPowGate(eigen_gate.EigenGate):
|
|
|
1016
1016
|
)
|
|
1017
1017
|
|
|
1018
1018
|
def _qasm_(self, args: 'cirq.QasmArgs', qubits: Tuple['cirq.Qid', ...]) -> Optional[str]:
|
|
1019
|
-
args.validate_version('2.0')
|
|
1019
|
+
args.validate_version('2.0', '3.0')
|
|
1020
1020
|
if self._exponent == 0:
|
|
1021
1021
|
return args.format('id {0};\n', qubits[0])
|
|
1022
1022
|
elif self._exponent == 1 and self._global_shift == 0:
|
|
@@ -1204,7 +1204,7 @@ class CZPowGate(gate_features.InterchangeableQubitsGate, eigen_gate.EigenGate):
|
|
|
1204
1204
|
def _qasm_(self, args: 'cirq.QasmArgs', qubits: Tuple['cirq.Qid', ...]) -> Optional[str]:
|
|
1205
1205
|
if self._exponent != 1:
|
|
1206
1206
|
return None # Don't have an equivalent gate in QASM
|
|
1207
|
-
args.validate_version('2.0')
|
|
1207
|
+
args.validate_version('2.0', '3.0')
|
|
1208
1208
|
return args.format('cz {0},{1};\n', qubits[0], qubits[1])
|
|
1209
1209
|
|
|
1210
1210
|
def _has_stabilizer_effect_(self) -> Optional[bool]:
|
|
@@ -1405,7 +1405,7 @@ class CXPowGate(eigen_gate.EigenGate):
|
|
|
1405
1405
|
def _qasm_(self, args: 'cirq.QasmArgs', qubits: Tuple['cirq.Qid', ...]) -> Optional[str]:
|
|
1406
1406
|
if self._exponent != 1:
|
|
1407
1407
|
return None # Don't have an equivalent gate in QASM
|
|
1408
|
-
args.validate_version('2.0')
|
|
1408
|
+
args.validate_version('2.0', '3.0')
|
|
1409
1409
|
return args.format('cx {0},{1};\n', qubits[0], qubits[1])
|
|
1410
1410
|
|
|
1411
1411
|
def _has_stabilizer_effect_(self) -> Optional[bool]:
|
cirq/ops/identity.py
CHANGED
|
@@ -138,7 +138,7 @@ class IdentityGate(raw_types.Gate):
|
|
|
138
138
|
return ('I',) * self.num_qubits()
|
|
139
139
|
|
|
140
140
|
def _qasm_(self, args: 'cirq.QasmArgs', qubits: Tuple['cirq.Qid', ...]) -> Optional[str]:
|
|
141
|
-
args.validate_version('2.0')
|
|
141
|
+
args.validate_version('2.0', '3.0')
|
|
142
142
|
return ''.join([args.format('id {0};\n', qubit) for qubit in qubits])
|
|
143
143
|
|
|
144
144
|
@classmethod
|
cirq/ops/matrix_gates.py
CHANGED
|
@@ -181,7 +181,7 @@ class MatrixGate(raw_types.Gate):
|
|
|
181
181
|
return protocols.CircuitDiagramInfo(wire_symbols=[main, *rest])
|
|
182
182
|
|
|
183
183
|
def _qasm_(self, args: 'cirq.QasmArgs', qubits: Tuple['cirq.Qid', ...]) -> Optional[str]:
|
|
184
|
-
args.validate_version('2.0')
|
|
184
|
+
args.validate_version('2.0', '3.0')
|
|
185
185
|
if self._qid_shape == (2,):
|
|
186
186
|
return protocols.qasm(
|
|
187
187
|
phased_x_z_gate.PhasedXZGate.from_matrix(self._matrix), args=args, qubits=qubits
|
cirq/ops/measurement_gate.py
CHANGED
|
@@ -227,7 +227,7 @@ class MeasurementGate(raw_types.Gate):
|
|
|
227
227
|
def _qasm_(self, args: 'cirq.QasmArgs', qubits: Tuple['cirq.Qid', ...]) -> Optional[str]:
|
|
228
228
|
if self.confusion_map or not all(d == 2 for d in self._qid_shape):
|
|
229
229
|
return NotImplemented
|
|
230
|
-
args.validate_version('2.0')
|
|
230
|
+
args.validate_version('2.0', '3.0')
|
|
231
231
|
invert_mask = self.invert_mask
|
|
232
232
|
if len(invert_mask) < len(qubits):
|
|
233
233
|
invert_mask = invert_mask + (False,) * (len(qubits) - len(invert_mask))
|
|
@@ -235,7 +235,10 @@ class MeasurementGate(raw_types.Gate):
|
|
|
235
235
|
for i, (qubit, inv) in enumerate(zip(qubits, invert_mask)):
|
|
236
236
|
if inv:
|
|
237
237
|
lines.append(args.format('x {0}; // Invert the following measurement\n', qubit))
|
|
238
|
-
|
|
238
|
+
if args.version == '2.0':
|
|
239
|
+
lines.append(args.format('measure {0} -> {1:meas}[{2}];\n', qubit, self.key, i))
|
|
240
|
+
else:
|
|
241
|
+
lines.append(args.format('{1:meas}[{2}] = measure {0};\n', qubit, self.key, i))
|
|
239
242
|
if inv:
|
|
240
243
|
lines.append(args.format('x {0}; // Undo the inversion\n', qubit))
|
|
241
244
|
return ''.join(lines)
|
cirq/ops/phased_x_gate.py
CHANGED
|
@@ -69,7 +69,7 @@ class PhasedXPowGate(raw_types.Gate):
|
|
|
69
69
|
if cirq.is_parameterized(self):
|
|
70
70
|
return None
|
|
71
71
|
|
|
72
|
-
args.validate_version('2.0')
|
|
72
|
+
args.validate_version('2.0', '3.0')
|
|
73
73
|
|
|
74
74
|
e = cast(float, value.canonicalize_half_turns(self._exponent))
|
|
75
75
|
p = cast(float, self.phase_exponent)
|
cirq/ops/swap_gates.py
CHANGED
|
@@ -148,7 +148,7 @@ class SwapPowGate(gate_features.InterchangeableQubitsGate, eigen_gate.EigenGate)
|
|
|
148
148
|
def _qasm_(self, args: 'cirq.QasmArgs', qubits: Tuple['cirq.Qid', ...]) -> Optional[str]:
|
|
149
149
|
if self._exponent != 1:
|
|
150
150
|
return None # Don't have an equivalent gate in QASM
|
|
151
|
-
args.validate_version('2.0')
|
|
151
|
+
args.validate_version('2.0', '3.0')
|
|
152
152
|
return args.format('swap {0},{1};\n', qubits[0], qubits[1])
|
|
153
153
|
|
|
154
154
|
def __str__(self) -> str:
|
cirq/ops/three_qubit_gates.py
CHANGED
|
@@ -164,7 +164,7 @@ class CCZPowGate(gate_features.InterchangeableQubitsGate, eigen_gate.EigenGate):
|
|
|
164
164
|
if self._exponent != 1:
|
|
165
165
|
return None
|
|
166
166
|
|
|
167
|
-
args.validate_version('2.0')
|
|
167
|
+
args.validate_version('2.0', '3.0')
|
|
168
168
|
lines = [
|
|
169
169
|
args.format('h {0};\n', qubits[2]),
|
|
170
170
|
args.format('ccx {0},{1},{2};\n', qubits[0], qubits[1], qubits[2]),
|
|
@@ -483,7 +483,7 @@ class CCXPowGate(gate_features.InterchangeableQubitsGate, eigen_gate.EigenGate):
|
|
|
483
483
|
if self._exponent != 1:
|
|
484
484
|
return None
|
|
485
485
|
|
|
486
|
-
args.validate_version('2.0')
|
|
486
|
+
args.validate_version('2.0', '3.0')
|
|
487
487
|
return args.format('ccx {0},{1},{2};\n', qubits[0], qubits[1], qubits[2])
|
|
488
488
|
|
|
489
489
|
def __repr__(self) -> str:
|
|
@@ -661,7 +661,7 @@ class CSwapGate(gate_features.InterchangeableQubitsGate, raw_types.Gate):
|
|
|
661
661
|
return protocols.CircuitDiagramInfo(('@', '×', '×'))
|
|
662
662
|
|
|
663
663
|
def _qasm_(self, args: 'cirq.QasmArgs', qubits: Tuple['cirq.Qid', ...]) -> Optional[str]:
|
|
664
|
-
args.validate_version('2.0')
|
|
664
|
+
args.validate_version('2.0', '3.0')
|
|
665
665
|
return args.format('cswap {0},{1},{2};\n', qubits[0], qubits[1], qubits[2])
|
|
666
666
|
|
|
667
667
|
def _value_equality_values_(self):
|
{cirq_core-1.5.0.dev20241118215502.dist-info → cirq_core-1.5.0.dev20241119000519.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.dev20241119000519
|
|
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.dev20241118215502.dist-info → cirq_core-1.5.0.dev20241119000519.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=D5HeM4T4b6K-E0WCZYxdESO6kT2NDPknq4t-9hrBxc0,1206
|
|
8
|
+
cirq/_version_test.py,sha256=I6AO4vSYs-cuE_MUqxoK-I8-EynvXP4T0ZM1xHbelF8,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
|
|
@@ -16,10 +16,10 @@ cirq/circuits/_box_drawing_character_data.py,sha256=QLoCXwcLL7091RdxEKO259goxt4R
|
|
|
16
16
|
cirq/circuits/_box_drawing_character_data_test.py,sha256=XO94z0piwZRHaNZHTf-5tKHQ4MKcDruMeRIKdT8GbYA,1624
|
|
17
17
|
cirq/circuits/_bucket_priority_queue.py,sha256=hxFuii2fKD8G6EKT_aVLEsA7FmSfqFXPwIbA0KsoSC4,6745
|
|
18
18
|
cirq/circuits/_bucket_priority_queue_test.py,sha256=t6u_hG7K2e2WKWrgCsKxNRtp4ghKwiCrp0_WSY0W25k,5288
|
|
19
|
-
cirq/circuits/circuit.py,sha256=
|
|
19
|
+
cirq/circuits/circuit.py,sha256=nM3Ie2qSGJN1fZ-1HCKpjhUVoW8JBZFT0rNW3iCSTM0,115150
|
|
20
20
|
cirq/circuits/circuit_operation.py,sha256=3CfJd7zhEMub792vgb2VO545rsj68yX_YEYMirySI3U,34705
|
|
21
21
|
cirq/circuits/circuit_operation_test.py,sha256=u-23dDZ6htNSiP8oXR67rmtb-XDBmObvbJjJrARhmis,44646
|
|
22
|
-
cirq/circuits/circuit_test.py,sha256=
|
|
22
|
+
cirq/circuits/circuit_test.py,sha256=1YMXK7wHcct-HK7MKH8lE63pQQ80-jCghVAsG0DsXpU,160524
|
|
23
23
|
cirq/circuits/frozen_circuit.py,sha256=qSbLHqIszCbVipNZQy4N829v_mWf8N2926cYRzpxGqE,9243
|
|
24
24
|
cirq/circuits/frozen_circuit_test.py,sha256=rHyii8hLhOQ6jdA8dC1OcYPGnyeBC4uY5Q53XspkkCk,4133
|
|
25
25
|
cirq/circuits/insert_strategy.py,sha256=L0OLXuo24TtBfdJGOAG2PsVDMrbvQl4iN5lUk6IPuyo,2851
|
|
@@ -28,8 +28,8 @@ cirq/circuits/moment.py,sha256=mcwSw4Qa0UFUx3pGqYjPzxEBNP45TjN9EcMgGjT-Zoo,26165
|
|
|
28
28
|
cirq/circuits/moment_test.py,sha256=SAZR-BxNiFaYaPLKLN59LCBqxvBMrVJWa-js1kfhOZA,26905
|
|
29
29
|
cirq/circuits/optimization_pass.py,sha256=uw3ne0-ebZo6GNjwfQMuQ3b5u9RCgyaXRfhpbljlxao,6468
|
|
30
30
|
cirq/circuits/optimization_pass_test.py,sha256=eQB0NBJ9EvqjgSFGQMgaHIh5niQhksdnvqSXhsj3nOg,5947
|
|
31
|
-
cirq/circuits/qasm_output.py,sha256=
|
|
32
|
-
cirq/circuits/qasm_output_test.py,sha256=
|
|
31
|
+
cirq/circuits/qasm_output.py,sha256=RrqtLmGHRcKaHIJPT0ZGIK8aC5mrixE_D8nhDUVMPNE,12441
|
|
32
|
+
cirq/circuits/qasm_output_test.py,sha256=vFKolO5mo9hX9J3O9vrJbhv0OUR71eyFk8_fquhzHKs,12539
|
|
33
33
|
cirq/circuits/text_diagram_drawer.py,sha256=ctZUG5fk2pf4XswHTJG4kteQYzzH0TefL9JWUagLJvc,17232
|
|
34
34
|
cirq/circuits/text_diagram_drawer_test.py,sha256=2bSoBIeQajRi0aQxqYDpbMlT2eqpx_f-Cmg9XO6A9Jk,10750
|
|
35
35
|
cirq/contrib/__init__.py,sha256=Mha0eF2ci88OVQX3laQiXgdEVo0yGwM7R5a13ryQ8jM,1065
|
|
@@ -268,15 +268,15 @@ cirq/ops/arithmetic_operation.py,sha256=PBqIwOfADRlsij11Lo1ao_OZM-O8PDlObgZBxGKs
|
|
|
268
268
|
cirq/ops/arithmetic_operation_test.py,sha256=axy8xy9IvDb-ATUV-LE1HNWRqCEz06VyZWVrLNOtXXI,4942
|
|
269
269
|
cirq/ops/boolean_hamiltonian.py,sha256=li003lNq6zS8pNPTobqzfzYJvyvaIpCVo3wkliI6Hzk,14930
|
|
270
270
|
cirq/ops/boolean_hamiltonian_test.py,sha256=1ey5yfYZPKZDsfM3jpCPAOpbPs_y8i4K_WvDK2d5_4Y,8518
|
|
271
|
-
cirq/ops/classically_controlled_operation.py,sha256=
|
|
271
|
+
cirq/ops/classically_controlled_operation.py,sha256=dppPudKJQppYH3YsIWIfzy2-kJZYM5x6JivcC9tB3K0,9173
|
|
272
272
|
cirq/ops/classically_controlled_operation_test.py,sha256=MNU0Adff4kTosqsrQ3PUT3ARcZee_PkchT6u0xDl8Qg,48039
|
|
273
273
|
cirq/ops/clifford_gate.py,sha256=qAKS0wqqoHljOF63treyR95I6H0yWFZBiHQoM4sLgSc,39350
|
|
274
274
|
cirq/ops/clifford_gate_test.py,sha256=NF_if1X8LCMA9hy0vBO7lxvVPdumlvMMnI2XRQ-RLpk,37472
|
|
275
|
-
cirq/ops/common_channels.py,sha256=
|
|
275
|
+
cirq/ops/common_channels.py,sha256=uqgocTUhtuJ4VZI_9_3L34gBRTf1A10mByhZY4Q1fB8,38283
|
|
276
276
|
cirq/ops/common_channels_test.py,sha256=EL_PxbqD3KPC8ioihiukhmW8bUdclqqigKoFyUQpmIM,29690
|
|
277
277
|
cirq/ops/common_gate_families.py,sha256=e5M8wlDYtdrpWBrhdns6iizIvSqzfxDyIsBdxt8hVMc,8611
|
|
278
278
|
cirq/ops/common_gate_families_test.py,sha256=Oo3C7BPO3gt3ePuqwsI_lx_lY38et8Ps4AuVydX2Aww,5275
|
|
279
|
-
cirq/ops/common_gates.py,sha256=
|
|
279
|
+
cirq/ops/common_gates.py,sha256=9QAhME6hhj5UiW0xWpZ58ltII-h8t8DY1GoyMgeyMxo,58120
|
|
280
280
|
cirq/ops/common_gates_test.py,sha256=XCVswZbd_k9Y2k5n-2TXnS8CnJoLoC3VmBQN0QijIKw,46218
|
|
281
281
|
cirq/ops/control_values.py,sha256=nNDN6pgz_aWkUfrpOZ9zHHD42AGFaplWhVQj9rmJwbQ,13410
|
|
282
282
|
cirq/ops/control_values_test.py,sha256=iDtdQjL39u80MaR16XLp00LRZqWgJqC54cIeADWf0IY,12906
|
|
@@ -304,17 +304,17 @@ cirq/ops/global_phase_op.py,sha256=4qYUov6BnBql2_yqUHI9DE60fLiLmCsKI9ZkfMLRRyo,4
|
|
|
304
304
|
cirq/ops/global_phase_op_test.py,sha256=FjtUsohIYabTtiGytvPQw9Rzkqd6dlT7qrj4oltDbTI,9814
|
|
305
305
|
cirq/ops/greedy_qubit_manager.py,sha256=O9qY8GB1KGxm3B7JEjq50sGVD51bNwTSupJpi3WUeAc,4039
|
|
306
306
|
cirq/ops/greedy_qubit_manager_test.py,sha256=iVZDKes-r08raTiJHpYNmP-Dp89ok3hIU-QboL2BHdw,3300
|
|
307
|
-
cirq/ops/identity.py,sha256=
|
|
307
|
+
cirq/ops/identity.py,sha256=Lag4bK_QfDebiJD2xN5yM46IXn9KsoF3Afzs8c4eluw,5818
|
|
308
308
|
cirq/ops/identity_test.py,sha256=-z5TjxNaD3_z73nGdR3RbHt6ytaYOAyYggCzwZtlQDw,7568
|
|
309
309
|
cirq/ops/kraus_channel.py,sha256=tCPAEzr_GAL5vTwI43rBoiOnT04l-ebZanuuEuYWDo8,5085
|
|
310
310
|
cirq/ops/kraus_channel_test.py,sha256=qH2Y9cngXzKCabd-Mq5xBYcM_wyL8c6KkrXw8kZr7Dc,4726
|
|
311
311
|
cirq/ops/linear_combinations.py,sha256=WqQ2STxGpgO6KUj4yc6LfSI9OWCdzlmWMt6BkTkf2wA,39694
|
|
312
312
|
cirq/ops/linear_combinations_test.py,sha256=qpzRo53mJtcidYE11loKMP2b9guKMGtzrKWQ_u0jr4Y,66387
|
|
313
|
-
cirq/ops/matrix_gates.py,sha256=
|
|
313
|
+
cirq/ops/matrix_gates.py,sha256=inBhKPsNx7ZeejNpmbPEGl5hgyrTqmA852BVlKMUZmg,9297
|
|
314
314
|
cirq/ops/matrix_gates_test.py,sha256=m5rMwq_sqVvsmkc5opVr3Ikd1ERuULmSRNAvGZUg7ds,14224
|
|
315
315
|
cirq/ops/measure_util.py,sha256=wkT0XC6rIddOkqNGwkvI-m7Ncr8j5QPN_evwecc6nrw,7390
|
|
316
316
|
cirq/ops/measure_util_test.py,sha256=Yzlced4nb4DHO-0cM_a-QZGO_3R8oqExkpIALN_pG4A,5307
|
|
317
|
-
cirq/ops/measurement_gate.py,sha256=
|
|
317
|
+
cirq/ops/measurement_gate.py,sha256=jBRJzLcEmWYWnCk6y-GiXjhS7s0AJNsxFF6i__JhWZg,11986
|
|
318
318
|
cirq/ops/measurement_gate_test.py,sha256=XfTDqbYUUc7zsMURh7D3jo8DwKWVVT9uJRBvtTm8Frk,18308
|
|
319
319
|
cirq/ops/mixed_unitary_channel.py,sha256=k3O4ovH3bFs1WnAZc647IgCK8thC5JnTGxsCzjBacEY,5259
|
|
320
320
|
cirq/ops/mixed_unitary_channel_test.py,sha256=x8LIAea2KcutNupnRJ_cLy1kmxhbUh3K3BkZtg3OkKQ,5058
|
|
@@ -344,7 +344,7 @@ cirq/ops/permutation_gate.py,sha256=2h8n76N2M3nu5MA8JkRQgVLByq5cOEluKUN042ClSRs,
|
|
|
344
344
|
cirq/ops/permutation_gate_test.py,sha256=SwXRgsZNLn5jnGhfcKPJ0J0CIssNzElbFaqylV2TXD8,3281
|
|
345
345
|
cirq/ops/phased_iswap_gate.py,sha256=j55nFjdF0r63oaT7cGw0YtosavaV24qUjC9T-8Y4Ghw,8997
|
|
346
346
|
cirq/ops/phased_iswap_gate_test.py,sha256=oH3RQ8tlSD0sU5Cf3M0uR92y3M1Xd7Yk3ayOoca9Neg,6708
|
|
347
|
-
cirq/ops/phased_x_gate.py,sha256=
|
|
347
|
+
cirq/ops/phased_x_gate.py,sha256=qjlkdbj7SWMvgTJkTqEqsLe2XDgAGioA6ayanns-apg,9983
|
|
348
348
|
cirq/ops/phased_x_gate_test.py,sha256=IpY-Z-MsqtYbyIEdxWu1NqgAJF2B7nddxPc2Hxafr4s,10202
|
|
349
349
|
cirq/ops/phased_x_z_gate.py,sha256=wh12AXeeDvMojtZd-zecV13Yur_QSBYc4kvYBdcfBBA,11555
|
|
350
350
|
cirq/ops/phased_x_z_gate_test.py,sha256=KK5-FD5zoaqZkw7p6UKxFddzaFWoxnQnE8LpCiKtIk8,10690
|
|
@@ -363,11 +363,11 @@ cirq/ops/raw_types.py,sha256=ISnjY0TPcle_qe6uzHCF_4d_SQevJ4lSWJWGR36lYuU,40309
|
|
|
363
363
|
cirq/ops/raw_types_test.py,sha256=bZUOQSfPDZgH6Z98PKX0oBP2iWXwSh3b9dty1dFcFfM,33620
|
|
364
364
|
cirq/ops/state_preparation_channel.py,sha256=PjVtoLbjBAy_XqnFAY40Am-NifeuCFVVLW6RJxph5sQ,4778
|
|
365
365
|
cirq/ops/state_preparation_channel_test.py,sha256=yKUvLw_ft6cvIgRJcFQ779wZS-V6V-pzQq-rZRWdCmU,5922
|
|
366
|
-
cirq/ops/swap_gates.py,sha256=
|
|
366
|
+
cirq/ops/swap_gates.py,sha256=cp-lKHBIXbFa2PmJnJQ8jD5W-vTWnpOZ5GdqM-5Gy8Q,11608
|
|
367
367
|
cirq/ops/swap_gates_test.py,sha256=_CihLf6rY4PNphCkH-S5mLJQYZW9ILjnnwUyQ9b0Blg,7452
|
|
368
368
|
cirq/ops/tags.py,sha256=B3nEsZQTurGPJodH7aDoreNSatqawTxwsmw8fSKaIlc,2294
|
|
369
369
|
cirq/ops/tags_test.py,sha256=4V9twOuCXd7Glvj9p3RW-tZ4-bfLtC1tmonR4soKNA0,1158
|
|
370
|
-
cirq/ops/three_qubit_gates.py,sha256=
|
|
370
|
+
cirq/ops/three_qubit_gates.py,sha256=l2wJjiXXDw-dOeznAEjVmALupSigpYblp6LcL7-65nY,28537
|
|
371
371
|
cirq/ops/three_qubit_gates_test.py,sha256=iQfQ4p4TwtyHYCqaWOEeZsqszF_Mp49VwlIKRydClMk,11778
|
|
372
372
|
cirq/ops/two_qubit_diagonal_gate.py,sha256=7ALyJs1ueE3i3v8FesFraaQC8nPp8h73tqeYIuNUVfU,5396
|
|
373
373
|
cirq/ops/two_qubit_diagonal_gate_test.py,sha256=qiuREluCDKMok3ormBOdDYCFlOS9u1zFLqTsORO5JtM,4000
|
|
@@ -1187,8 +1187,8 @@ cirq/work/sampler.py,sha256=y6qtCpAwO8SqZ_JKU8PwlbMLHpJskNPqGWD_pNbyZew,19779
|
|
|
1187
1187
|
cirq/work/sampler_test.py,sha256=hL2UWx3dz2ukZVNxWftiKVvJcQoLplLZdQm-k1QcA40,13282
|
|
1188
1188
|
cirq/work/zeros_sampler.py,sha256=x1C7cup66a43n-3tm8QjhiqJa07qcJW10FxNp9jJ59Q,2356
|
|
1189
1189
|
cirq/work/zeros_sampler_test.py,sha256=JIkpBBFPJe5Ba4142vzogyWyboG1Q1ZAm0UVGgOoZn8,3279
|
|
1190
|
-
cirq_core-1.5.0.
|
|
1191
|
-
cirq_core-1.5.0.
|
|
1192
|
-
cirq_core-1.5.0.
|
|
1193
|
-
cirq_core-1.5.0.
|
|
1194
|
-
cirq_core-1.5.0.
|
|
1190
|
+
cirq_core-1.5.0.dev20241119000519.dist-info/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
|
|
1191
|
+
cirq_core-1.5.0.dev20241119000519.dist-info/METADATA,sha256=ebD1-TaCPIc_H_C_sn7q0OKIjl7iy06DzQUdvuoZix4,1992
|
|
1192
|
+
cirq_core-1.5.0.dev20241119000519.dist-info/WHEEL,sha256=bFJAMchF8aTQGUgMZzHJyDDMPTO3ToJ7x23SLJa1SVo,92
|
|
1193
|
+
cirq_core-1.5.0.dev20241119000519.dist-info/top_level.txt,sha256=Sz9iOxHU0IEMLSFGwiwOCaN2e9K-jFbBbtpPN1hB73g,5
|
|
1194
|
+
cirq_core-1.5.0.dev20241119000519.dist-info/RECORD,,
|
{cirq_core-1.5.0.dev20241118215502.dist-info → cirq_core-1.5.0.dev20241119000519.dist-info}/LICENSE
RENAMED
|
File without changes
|
{cirq_core-1.5.0.dev20241118215502.dist-info → cirq_core-1.5.0.dev20241119000519.dist-info}/WHEEL
RENAMED
|
File without changes
|
|
File without changes
|