cirq-core 1.5.0.dev20250104153038__py3-none-any.whl → 1.5.0.dev20250106184334__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of cirq-core might be problematic. Click here for more details.

cirq/_version.py CHANGED
@@ -28,4 +28,4 @@ if sys.version_info < (3, 10, 0): # pragma: no cover
28
28
  'of cirq (e.g. "python -m pip install cirq==1.1.*")'
29
29
  )
30
30
 
31
- __version__ = "1.5.0.dev20250104153038"
31
+ __version__ = "1.5.0.dev20250106184334"
cirq/_version_test.py CHANGED
@@ -3,4 +3,4 @@ import cirq
3
3
 
4
4
 
5
5
  def test_version():
6
- assert cirq.__version__ == "1.5.0.dev20250104153038"
6
+ assert cirq.__version__ == "1.5.0.dev20250106184334"
@@ -89,7 +89,7 @@ class CircuitOperation(ops.Operation):
89
89
  repetition_ids: Optional[Sequence[str]] = None,
90
90
  parent_path: Tuple[str, ...] = (),
91
91
  extern_keys: FrozenSet['cirq.MeasurementKey'] = frozenset(),
92
- use_repetition_ids: bool = True,
92
+ use_repetition_ids: Optional[bool] = None,
93
93
  repeat_until: Optional['cirq.Condition'] = None,
94
94
  ):
95
95
  """Initializes a CircuitOperation.
@@ -120,7 +120,8 @@ class CircuitOperation(ops.Operation):
120
120
  use_repetition_ids: When True, any measurement key in the subcircuit
121
121
  will have its path prepended with the repetition id for each
122
122
  repetition. When False, this will not happen and the measurement
123
- key will be repeated.
123
+ key will be repeated. When None, default to False unless the caller
124
+ passes `repetition_ids` explicitly.
124
125
  repeat_until: A condition that will be tested after each iteration of
125
126
  the subcircuit. The subcircuit will repeat until condition returns
126
127
  True, but will always run at least once, and the measurement key
@@ -156,6 +157,8 @@ class CircuitOperation(ops.Operation):
156
157
  # Ensure that the circuit is invertible if the repetitions are negative.
157
158
  self._repetitions = repetitions
158
159
  self._repetition_ids = None if repetition_ids is None else list(repetition_ids)
160
+ if use_repetition_ids is None:
161
+ use_repetition_ids = repetition_ids is not None
159
162
  self._use_repetition_ids = use_repetition_ids
160
163
  if isinstance(self._repetitions, float):
161
164
  if math.isclose(self._repetitions, round(self._repetitions)):
@@ -263,7 +266,7 @@ class CircuitOperation(ops.Operation):
263
266
  'repetition_ids': self.repetition_ids,
264
267
  'parent_path': self.parent_path,
265
268
  'extern_keys': self._extern_keys,
266
- 'use_repetition_ids': self.use_repetition_ids,
269
+ 'use_repetition_ids': True if 'repetition_ids' in changes else self.use_repetition_ids,
267
270
  'repeat_until': self.repeat_until,
268
271
  **changes,
269
272
  }
@@ -448,11 +451,9 @@ class CircuitOperation(ops.Operation):
448
451
  args += f'param_resolver={proper_repr(self.param_resolver)},\n'
449
452
  if self.parent_path:
450
453
  args += f'parent_path={proper_repr(self.parent_path)},\n'
451
- if self.repetition_ids != self._default_repetition_ids():
454
+ if self.use_repetition_ids:
452
455
  # Default repetition_ids need not be specified.
453
456
  args += f'repetition_ids={proper_repr(self.repetition_ids)},\n'
454
- if not self.use_repetition_ids:
455
- args += 'use_repetition_ids=False,\n'
456
457
  if self.repeat_until:
457
458
  args += f'repeat_until={self.repeat_until!r},\n'
458
459
  indented_args = args.replace('\n', '\n ')
@@ -477,14 +478,15 @@ class CircuitOperation(ops.Operation):
477
478
  args.append(f'params={self.param_resolver.param_dict}')
478
479
  if self.parent_path:
479
480
  args.append(f'parent_path={self.parent_path}')
480
- if self.repetition_ids != self._default_repetition_ids():
481
- # Default repetition_ids need not be specified.
482
- args.append(f'repetition_ids={self.repetition_ids}')
481
+ if self.use_repetition_ids:
482
+ if self.repetition_ids != self._default_repetition_ids():
483
+ args.append(f'repetition_ids={self.repetition_ids}')
484
+ else:
485
+ # Default repetition_ids need not be specified.
486
+ args.append(f'loops={self.repetitions}, use_repetition_ids=True')
483
487
  elif self.repetitions != 1:
484
- # Only add loops if we haven't added repetition_ids.
488
+ # Add loops if not using repetition_ids.
485
489
  args.append(f'loops={self.repetitions}')
486
- if not self.use_repetition_ids:
487
- args.append('no_rep_ids')
488
490
  if self.repeat_until:
489
491
  args.append(f'until={self.repeat_until}')
490
492
  if not args:
@@ -529,10 +531,9 @@ class CircuitOperation(ops.Operation):
529
531
  'measurement_key_map': self.measurement_key_map,
530
532
  'param_resolver': self.param_resolver,
531
533
  'repetition_ids': self.repetition_ids,
534
+ 'use_repetition_ids': self.use_repetition_ids,
532
535
  'parent_path': self.parent_path,
533
536
  }
534
- if not self.use_repetition_ids:
535
- resp['use_repetition_ids'] = False
536
537
  if self.repeat_until:
537
538
  resp['repeat_until'] = self.repeat_until
538
539
  return resp
@@ -566,7 +567,10 @@ class CircuitOperation(ops.Operation):
566
567
  # Methods for constructing a similar object with one field modified.
567
568
 
568
569
  def repeat(
569
- self, repetitions: Optional[IntParam] = None, repetition_ids: Optional[Sequence[str]] = None
570
+ self,
571
+ repetitions: Optional[IntParam] = None,
572
+ repetition_ids: Optional[Sequence[str]] = None,
573
+ use_repetition_ids: Optional[bool] = None,
570
574
  ) -> 'CircuitOperation':
571
575
  """Returns a copy of this operation repeated 'repetitions' times.
572
576
  Each repetition instance will be identified by a single repetition_id.
@@ -577,6 +581,10 @@ class CircuitOperation(ops.Operation):
577
581
  defaults to the length of `repetition_ids`.
578
582
  repetition_ids: List of IDs, one for each repetition. If unset,
579
583
  defaults to `default_repetition_ids(repetitions)`.
584
+ use_repetition_ids: If given, this specifies the value for `use_repetition_ids`
585
+ of the resulting circuit operation. If not given, we enable ids if
586
+ `repetition_ids` is not None, and otherwise fall back to
587
+ `self.use_repetition_ids`.
580
588
 
581
589
  Returns:
582
590
  A copy of this operation repeated `repetitions` times with the
@@ -591,6 +599,9 @@ class CircuitOperation(ops.Operation):
591
599
  ValueError: Unexpected length of `repetition_ids`.
592
600
  ValueError: Both `repetitions` and `repetition_ids` are None.
593
601
  """
602
+ if use_repetition_ids is None:
603
+ use_repetition_ids = True if repetition_ids is not None else self.use_repetition_ids
604
+
594
605
  if repetitions is None:
595
606
  if repetition_ids is None:
596
607
  raise ValueError('At least one of repetitions and repetition_ids must be set')
@@ -604,7 +615,7 @@ class CircuitOperation(ops.Operation):
604
615
  expected_repetition_id_length: int = np.abs(repetitions)
605
616
 
606
617
  if repetition_ids is None:
607
- if self.use_repetition_ids:
618
+ if use_repetition_ids:
608
619
  repetition_ids = default_repetition_ids(expected_repetition_id_length)
609
620
  elif len(repetition_ids) != expected_repetition_id_length:
610
621
  raise ValueError(
@@ -617,7 +628,11 @@ class CircuitOperation(ops.Operation):
617
628
 
618
629
  # The eventual number of repetitions of the returned CircuitOperation.
619
630
  final_repetitions = protocols.mul(self.repetitions, repetitions)
620
- return self.replace(repetitions=final_repetitions, repetition_ids=repetition_ids)
631
+ return self.replace(
632
+ repetitions=final_repetitions,
633
+ repetition_ids=repetition_ids,
634
+ use_repetition_ids=use_repetition_ids,
635
+ )
621
636
 
622
637
  def __pow__(self, power: IntParam) -> 'cirq.CircuitOperation':
623
638
  return self.repeat(power)
@@ -294,15 +294,15 @@ def test_repeat(add_measurements: bool, use_default_ids_for_initial_rep: bool) -
294
294
  op_with_reps: Optional[cirq.CircuitOperation] = None
295
295
  rep_ids = []
296
296
  if use_default_ids_for_initial_rep:
297
- op_with_reps = op_base.repeat(initial_repetitions)
298
297
  rep_ids = ['0', '1', '2']
299
- assert op_base**initial_repetitions == op_with_reps
298
+ op_with_reps = op_base.repeat(initial_repetitions, use_repetition_ids=True)
300
299
  else:
301
300
  rep_ids = ['a', 'b', 'c']
302
301
  op_with_reps = op_base.repeat(initial_repetitions, rep_ids)
303
- assert op_base**initial_repetitions != op_with_reps
304
- assert (op_base**initial_repetitions).replace(repetition_ids=rep_ids) == op_with_reps
302
+ assert op_base**initial_repetitions != op_with_reps
303
+ assert (op_base**initial_repetitions).replace(repetition_ids=rep_ids) == op_with_reps
305
304
  assert op_with_reps.repetitions == initial_repetitions
305
+ assert op_with_reps.use_repetition_ids
306
306
  assert op_with_reps.repetition_ids == rep_ids
307
307
  assert op_with_reps.repeat(1) is op_with_reps
308
308
 
@@ -436,6 +436,7 @@ def test_parameterized_repeat_side_effects():
436
436
  op = cirq.CircuitOperation(
437
437
  cirq.FrozenCircuit(cirq.X(q).with_classical_controls('c'), cirq.measure(q, key='m')),
438
438
  repetitions=sympy.Symbol('a'),
439
+ use_repetition_ids=True,
439
440
  )
440
441
 
441
442
  # Control keys can be calculated because they only "lift" if there's a matching
@@ -689,7 +690,6 @@ cirq.CircuitOperation(
689
690
  ),
690
691
  ),
691
692
  ]),
692
- use_repetition_ids=False,
693
693
  )"""
694
694
  )
695
695
  op7 = cirq.CircuitOperation(
@@ -706,7 +706,6 @@ cirq.CircuitOperation(
706
706
  cirq.measure(cirq.LineQubit(0), key=cirq.MeasurementKey(name='a')),
707
707
  ),
708
708
  ]),
709
- use_repetition_ids=False,
710
709
  repeat_until=cirq.KeyCondition(cirq.MeasurementKey(name='a')),
711
710
  )"""
712
711
  )
@@ -737,6 +736,7 @@ def test_json_dict():
737
736
  'param_resolver': op.param_resolver,
738
737
  'parent_path': op.parent_path,
739
738
  'repetition_ids': None,
739
+ 'use_repetition_ids': False,
740
740
  }
741
741
 
742
742
 
@@ -843,6 +843,26 @@ def test_decompose_loops_with_measurements():
843
843
  circuit = cirq.FrozenCircuit(cirq.H(a), cirq.CX(a, b), cirq.measure(a, b, key='m'))
844
844
  base_op = cirq.CircuitOperation(circuit)
845
845
 
846
+ op = base_op.with_qubits(b, a).repeat(3)
847
+ expected_circuit = cirq.Circuit(
848
+ cirq.H(b),
849
+ cirq.CX(b, a),
850
+ cirq.measure(b, a, key=cirq.MeasurementKey.parse_serialized('m')),
851
+ cirq.H(b),
852
+ cirq.CX(b, a),
853
+ cirq.measure(b, a, key=cirq.MeasurementKey.parse_serialized('m')),
854
+ cirq.H(b),
855
+ cirq.CX(b, a),
856
+ cirq.measure(b, a, key=cirq.MeasurementKey.parse_serialized('m')),
857
+ )
858
+ assert cirq.Circuit(cirq.decompose_once(op)) == expected_circuit
859
+
860
+
861
+ def test_decompose_loops_with_measurements_use_rep_ids():
862
+ a, b = cirq.LineQubit.range(2)
863
+ circuit = cirq.FrozenCircuit(cirq.H(a), cirq.CX(a, b), cirq.measure(a, b, key='m'))
864
+ base_op = cirq.CircuitOperation(circuit, use_repetition_ids=True)
865
+
846
866
  op = base_op.with_qubits(b, a).repeat(3)
847
867
  expected_circuit = cirq.Circuit(
848
868
  cirq.H(b),
@@ -999,7 +1019,9 @@ def test_keys_under_parent_path():
999
1019
  op3 = cirq.with_key_path_prefix(op2, ('C',))
1000
1020
  assert cirq.measurement_key_names(op3) == {'C:B:A'}
1001
1021
  op4 = op3.repeat(2)
1002
- assert cirq.measurement_key_names(op4) == {'C:B:0:A', 'C:B:1:A'}
1022
+ assert cirq.measurement_key_names(op4) == {'C:B:A'}
1023
+ op4_rep = op3.repeat(2).replace(use_repetition_ids=True)
1024
+ assert cirq.measurement_key_names(op4_rep) == {'C:B:0:A', 'C:B:1:A'}
1003
1025
 
1004
1026
 
1005
1027
  def test_mapped_circuit_preserves_moments():
@@ -1077,12 +1099,8 @@ def test_mapped_circuit_allows_repeated_keys():
1077
1099
  def test_simulate_no_repetition_ids_both_levels(sim):
1078
1100
  q = cirq.LineQubit(0)
1079
1101
  inner = cirq.Circuit(cirq.measure(q, key='a'))
1080
- middle = cirq.Circuit(
1081
- cirq.CircuitOperation(inner.freeze(), repetitions=2, use_repetition_ids=False)
1082
- )
1083
- outer_subcircuit = cirq.CircuitOperation(
1084
- middle.freeze(), repetitions=2, use_repetition_ids=False
1085
- )
1102
+ middle = cirq.Circuit(cirq.CircuitOperation(inner.freeze(), repetitions=2))
1103
+ outer_subcircuit = cirq.CircuitOperation(middle.freeze(), repetitions=2)
1086
1104
  circuit = cirq.Circuit(outer_subcircuit)
1087
1105
  result = sim.run(circuit)
1088
1106
  assert result.records['a'].shape == (1, 4, 1)
@@ -1092,10 +1110,10 @@ def test_simulate_no_repetition_ids_both_levels(sim):
1092
1110
  def test_simulate_no_repetition_ids_outer(sim):
1093
1111
  q = cirq.LineQubit(0)
1094
1112
  inner = cirq.Circuit(cirq.measure(q, key='a'))
1095
- middle = cirq.Circuit(cirq.CircuitOperation(inner.freeze(), repetitions=2))
1096
- outer_subcircuit = cirq.CircuitOperation(
1097
- middle.freeze(), repetitions=2, use_repetition_ids=False
1113
+ middle = cirq.Circuit(
1114
+ cirq.CircuitOperation(inner.freeze(), repetitions=2, use_repetition_ids=True)
1098
1115
  )
1116
+ outer_subcircuit = cirq.CircuitOperation(middle.freeze(), repetitions=2)
1099
1117
  circuit = cirq.Circuit(outer_subcircuit)
1100
1118
  result = sim.run(circuit)
1101
1119
  assert result.records['0:a'].shape == (1, 2, 1)
@@ -1106,10 +1124,10 @@ def test_simulate_no_repetition_ids_outer(sim):
1106
1124
  def test_simulate_no_repetition_ids_inner(sim):
1107
1125
  q = cirq.LineQubit(0)
1108
1126
  inner = cirq.Circuit(cirq.measure(q, key='a'))
1109
- middle = cirq.Circuit(
1110
- cirq.CircuitOperation(inner.freeze(), repetitions=2, use_repetition_ids=False)
1127
+ middle = cirq.Circuit(cirq.CircuitOperation(inner.freeze(), repetitions=2))
1128
+ outer_subcircuit = cirq.CircuitOperation(
1129
+ middle.freeze(), repetitions=2, use_repetition_ids=True
1111
1130
  )
1112
- outer_subcircuit = cirq.CircuitOperation(middle.freeze(), repetitions=2)
1113
1131
  circuit = cirq.Circuit(outer_subcircuit)
1114
1132
  result = sim.run(circuit)
1115
1133
  assert result.records['0:a'].shape == (1, 2, 1)
@@ -1124,7 +1142,6 @@ def test_repeat_until(sim):
1124
1142
  cirq.X(q),
1125
1143
  cirq.CircuitOperation(
1126
1144
  cirq.FrozenCircuit(cirq.X(q), cirq.measure(q, key=key)),
1127
- use_repetition_ids=False,
1128
1145
  repeat_until=cirq.KeyCondition(key),
1129
1146
  ),
1130
1147
  )
@@ -1139,7 +1156,6 @@ def test_repeat_until_sympy(sim):
1139
1156
  q1, q2 = cirq.LineQubit.range(2)
1140
1157
  circuitop = cirq.CircuitOperation(
1141
1158
  cirq.FrozenCircuit(cirq.X(q2), cirq.measure(q2, key='b')),
1142
- use_repetition_ids=False,
1143
1159
  repeat_until=cirq.SympyCondition(sympy.Eq(sympy.Symbol('a'), sympy.Symbol('b'))),
1144
1160
  )
1145
1161
  c = cirq.Circuit(cirq.measure(q1, key='a'), circuitop)
@@ -1159,7 +1175,6 @@ def test_post_selection(sim):
1159
1175
  c = cirq.Circuit(
1160
1176
  cirq.CircuitOperation(
1161
1177
  cirq.FrozenCircuit(cirq.X(q) ** 0.2, cirq.measure(q, key=key)),
1162
- use_repetition_ids=False,
1163
1178
  repeat_until=cirq.KeyCondition(key),
1164
1179
  )
1165
1180
  )
@@ -1175,14 +1190,13 @@ def test_repeat_until_diagram():
1175
1190
  c = cirq.Circuit(
1176
1191
  cirq.CircuitOperation(
1177
1192
  cirq.FrozenCircuit(cirq.X(q) ** 0.2, cirq.measure(q, key=key)),
1178
- use_repetition_ids=False,
1179
1193
  repeat_until=cirq.KeyCondition(key),
1180
1194
  )
1181
1195
  )
1182
1196
  cirq.testing.assert_has_diagram(
1183
1197
  c,
1184
1198
  """
1185
- 0: ───[ 0: ───X^0.2───M('m')─── ](no_rep_ids, until=m)───
1199
+ 0: ───[ 0: ───X^0.2───M('m')─── ](until=m)───
1186
1200
  """,
1187
1201
  use_unicode_characters=True,
1188
1202
  )
@@ -1199,7 +1213,6 @@ def test_repeat_until_error():
1199
1213
  with pytest.raises(ValueError, match='Infinite loop'):
1200
1214
  cirq.CircuitOperation(
1201
1215
  cirq.FrozenCircuit(cirq.measure(q, key='m')),
1202
- use_repetition_ids=False,
1203
1216
  repeat_until=cirq.KeyCondition(cirq.MeasurementKey('a')),
1204
1217
  )
1205
1218
 
@@ -358,7 +358,9 @@ def test_subcircuit_key_unset(sim):
358
358
  cirq.measure(q1, key='b'),
359
359
  )
360
360
  circuit = cirq.Circuit(
361
- cirq.CircuitOperation(inner.freeze(), repetitions=2, measurement_key_map={'c': 'a'})
361
+ cirq.CircuitOperation(
362
+ inner.freeze(), repetitions=2, use_repetition_ids=True, measurement_key_map={'c': 'a'}
363
+ )
362
364
  )
363
365
  result = sim.run(circuit)
364
366
  assert result.measurements['0:a'] == 0
@@ -377,7 +379,9 @@ def test_subcircuit_key_set(sim):
377
379
  cirq.measure(q1, key='b'),
378
380
  )
379
381
  circuit = cirq.Circuit(
380
- cirq.CircuitOperation(inner.freeze(), repetitions=4, measurement_key_map={'c': 'a'})
382
+ cirq.CircuitOperation(
383
+ inner.freeze(), repetitions=4, use_repetition_ids=True, measurement_key_map={'c': 'a'}
384
+ )
381
385
  )
382
386
  result = sim.run(circuit)
383
387
  assert result.measurements['0:a'] == 1
@@ -486,8 +490,12 @@ def test_str():
486
490
  def test_scope_local():
487
491
  q = cirq.LineQubit(0)
488
492
  inner = cirq.Circuit(cirq.measure(q, key='a'), cirq.X(q).with_classical_controls('a'))
489
- middle = cirq.Circuit(cirq.CircuitOperation(inner.freeze(), repetitions=2))
490
- outer_subcircuit = cirq.CircuitOperation(middle.freeze(), repetitions=2)
493
+ middle = cirq.Circuit(
494
+ cirq.CircuitOperation(inner.freeze(), repetitions=2, use_repetition_ids=True)
495
+ )
496
+ outer_subcircuit = cirq.CircuitOperation(
497
+ middle.freeze(), repetitions=2, use_repetition_ids=True
498
+ )
491
499
  circuit = outer_subcircuit.mapped_circuit(deep=True)
492
500
  internal_control_keys = [
493
501
  str(condition) for op in circuit.all_operations() for condition in cirq.control_keys(op)
@@ -495,15 +503,17 @@ def test_scope_local():
495
503
  assert internal_control_keys == ['0:0:a', '0:1:a', '1:0:a', '1:1:a']
496
504
  assert not cirq.control_keys(outer_subcircuit)
497
505
  assert not cirq.control_keys(circuit)
506
+ # pylint: disable=line-too-long
498
507
  cirq.testing.assert_has_diagram(
499
508
  cirq.Circuit(outer_subcircuit),
500
509
  """
501
- [ [ 0: ───M───X─── ] ]
502
- 0: ───[ 0: ───[ ║ ║ ]──────────── ]────────────
503
- [ [ a: ═══@═══^═══ ](loops=2) ](loops=2)
510
+ [ [ 0: ───M───X─── ] ]
511
+ 0: ───[ 0: ───[ ║ ║ ]───────────────────────────────────── ]─────────────────────────────────────
512
+ [ [ a: ═══@═══^═══ ](loops=2, use_repetition_ids=True) ](loops=2, use_repetition_ids=True)
504
513
  """,
505
514
  use_unicode_characters=True,
506
515
  )
516
+ # pylint: enable=line-too-long
507
517
  cirq.testing.assert_has_diagram(
508
518
  circuit,
509
519
  """
@@ -541,9 +551,9 @@ def test_scope_flatten_both():
541
551
  cirq.testing.assert_has_diagram(
542
552
  cirq.Circuit(outer_subcircuit),
543
553
  """
544
- [ [ 0: ───M───X─── ] ]
545
- 0: ───[ 0: ───[ ║ ║ ]──────────────────────── ]────────────────────────
546
- [ [ a: ═══@═══^═══ ](loops=2, no_rep_ids) ](loops=2, no_rep_ids)
554
+ [ [ 0: ───M───X─── ] ]
555
+ 0: ───[ 0: ───[ ║ ║ ]──────────── ]────────────
556
+ [ [ a: ═══@═══^═══ ](loops=2) ](loops=2)
547
557
  """,
548
558
  use_unicode_characters=True,
549
559
  )
@@ -561,10 +571,10 @@ a: ═══@═══^═══@═══^═══@═══^═══@══
561
571
  def test_scope_flatten_inner():
562
572
  q = cirq.LineQubit(0)
563
573
  inner = cirq.Circuit(cirq.measure(q, key='a'), cirq.X(q).with_classical_controls('a'))
564
- middle = cirq.Circuit(
565
- cirq.CircuitOperation(inner.freeze(), repetitions=2, use_repetition_ids=False)
574
+ middle = cirq.Circuit(cirq.CircuitOperation(inner.freeze(), repetitions=2))
575
+ outer_subcircuit = cirq.CircuitOperation(
576
+ middle.freeze(), repetitions=2, use_repetition_ids=True
566
577
  )
567
- outer_subcircuit = cirq.CircuitOperation(middle.freeze(), repetitions=2)
568
578
  circuit = outer_subcircuit.mapped_circuit(deep=True)
569
579
  internal_control_keys = [
570
580
  str(condition) for op in circuit.all_operations() for condition in cirq.control_keys(op)
@@ -575,9 +585,9 @@ def test_scope_flatten_inner():
575
585
  cirq.testing.assert_has_diagram(
576
586
  cirq.Circuit(outer_subcircuit),
577
587
  """
578
- [ [ 0: ───M───X─── ] ]
579
- 0: ───[ 0: ───[ ║ ║ ]──────────────────────── ]────────────
580
- [ [ a: ═══@═══^═══ ](loops=2, no_rep_ids) ](loops=2)
588
+ [ [ 0: ───M───X─── ] ]
589
+ 0: ───[ 0: ───[ ║ ║ ]──────────── ]─────────────────────────────────────
590
+ [ [ a: ═══@═══^═══ ](loops=2) ](loops=2, use_repetition_ids=True)
581
591
  """,
582
592
  use_unicode_characters=True,
583
593
  )
@@ -597,10 +607,10 @@ def test_scope_flatten_inner():
597
607
  def test_scope_flatten_outer():
598
608
  q = cirq.LineQubit(0)
599
609
  inner = cirq.Circuit(cirq.measure(q, key='a'), cirq.X(q).with_classical_controls('a'))
600
- middle = cirq.Circuit(cirq.CircuitOperation(inner.freeze(), repetitions=2))
601
- outer_subcircuit = cirq.CircuitOperation(
602
- middle.freeze(), repetitions=2, use_repetition_ids=False
610
+ middle = cirq.Circuit(
611
+ cirq.CircuitOperation(inner.freeze(), repetitions=2, use_repetition_ids=True)
603
612
  )
613
+ outer_subcircuit = cirq.CircuitOperation(middle.freeze(), repetitions=2)
604
614
  circuit = outer_subcircuit.mapped_circuit(deep=True)
605
615
  internal_control_keys = [
606
616
  str(condition) for op in circuit.all_operations() for condition in cirq.control_keys(op)
@@ -611,9 +621,9 @@ def test_scope_flatten_outer():
611
621
  cirq.testing.assert_has_diagram(
612
622
  cirq.Circuit(outer_subcircuit),
613
623
  """
614
- [ [ 0: ───M───X─── ] ]
615
- 0: ───[ 0: ───[ ║ ║ ]──────────── ]────────────────────────
616
- [ [ a: ═══@═══^═══ ](loops=2) ](loops=2, no_rep_ids)
624
+ [ [ 0: ───M───X─── ] ]
625
+ 0: ───[ 0: ───[ ║ ║ ]───────────────────────────────────── ]────────────
626
+ [ [ a: ═══@═══^═══ ](loops=2, use_repetition_ids=True) ](loops=2)
617
627
  """,
618
628
  use_unicode_characters=True,
619
629
  )
@@ -635,9 +645,11 @@ def test_scope_extern():
635
645
  inner = cirq.Circuit(cirq.measure(q, key='a'), cirq.X(q).with_classical_controls('b'))
636
646
  middle = cirq.Circuit(
637
647
  cirq.measure(q, key=cirq.MeasurementKey('b')),
638
- cirq.CircuitOperation(inner.freeze(), repetitions=2),
648
+ cirq.CircuitOperation(inner.freeze(), repetitions=2, use_repetition_ids=True),
649
+ )
650
+ outer_subcircuit = cirq.CircuitOperation(
651
+ middle.freeze(), repetitions=2, use_repetition_ids=True
639
652
  )
640
- outer_subcircuit = cirq.CircuitOperation(middle.freeze(), repetitions=2)
641
653
  circuit = outer_subcircuit.mapped_circuit(deep=True)
642
654
  internal_control_keys = [
643
655
  str(condition) for op in circuit.all_operations() for condition in cirq.control_keys(op)
@@ -645,17 +657,19 @@ def test_scope_extern():
645
657
  assert internal_control_keys == ['0:b', '0:b', '1:b', '1:b']
646
658
  assert not cirq.control_keys(outer_subcircuit)
647
659
  assert not cirq.control_keys(circuit)
660
+ # pylint: disable=line-too-long
648
661
  cirq.testing.assert_has_diagram(
649
662
  cirq.Circuit(outer_subcircuit),
650
663
  """
651
- [ [ 0: ───M('a')───X─── ] ]
652
- [ 0: ───M───[ ║ ]──────────── ]
653
- 0: ───[ ║ [ b: ════════════^═══ ](loops=2) ]────────────
654
- [ ║ ║ ]
655
- [ b: ═══@═══╩══════════════════════════════════ ](loops=2)
664
+ [ [ 0: ───M('a')───X─── ] ]
665
+ [ 0: ───M───[ ║ ]───────────────────────────────────── ]
666
+ 0: ───[ ║ [ b: ════════════^═══ ](loops=2, use_repetition_ids=True) ]─────────────────────────────────────
667
+ [ ║ ║ ]
668
+ [ b: ═══@═══╩═══════════════════════════════════════════════════════════ ](loops=2, use_repetition_ids=True)
656
669
  """,
657
670
  use_unicode_characters=True,
658
671
  )
672
+ # pylint: enable=line-too-long
659
673
  cirq.testing.assert_has_diagram(
660
674
  circuit,
661
675
  """
@@ -683,9 +697,9 @@ def test_scope_extern_wrapping_with_non_repeating_subcircuits():
683
697
  )
684
698
  middle = wrap_frozen(
685
699
  wrap(cirq.measure(q, key=cirq.MeasurementKey('b'))),
686
- wrap(cirq.CircuitOperation(inner, repetitions=2)),
700
+ wrap(cirq.CircuitOperation(inner, repetitions=2, use_repetition_ids=True)),
687
701
  )
688
- outer_subcircuit = cirq.CircuitOperation(middle, repetitions=2)
702
+ outer_subcircuit = cirq.CircuitOperation(middle, repetitions=2, use_repetition_ids=True)
689
703
  circuit = outer_subcircuit.mapped_circuit(deep=True)
690
704
  internal_control_keys = [
691
705
  str(condition) for op in circuit.all_operations() for condition in cirq.control_keys(op)
@@ -738,9 +752,9 @@ b: ═══╩═════════════════════
738
752
  cirq.testing.assert_has_diagram(
739
753
  circuit,
740
754
  """
741
- 0: ───M('0:c')───M('0:0:a')───X───M('0:1:a')───X───M('1:c')───M('1:0:a')───X───M('1:1:a')───X───
742
-
743
- b: ═══════════════════════════^════════════════^═══════════════════════════^════════════════^═══
755
+ 0: ───M('c')───M('a')───X───M('a')───X───M('c')───M('a')───X───M('a')───X───
756
+
757
+ b: ═════════════════════^════════════^═════════════════════^════════════^═══
744
758
  """,
745
759
  use_unicode_characters=True,
746
760
  )
@@ -752,9 +766,11 @@ def test_scope_extern_mismatch():
752
766
  inner = cirq.Circuit(cirq.measure(q, key='a'), cirq.X(q).with_classical_controls('b'))
753
767
  middle = cirq.Circuit(
754
768
  cirq.measure(q, key=cirq.MeasurementKey('b', ('0',))),
755
- cirq.CircuitOperation(inner.freeze(), repetitions=2),
769
+ cirq.CircuitOperation(inner.freeze(), repetitions=2, use_repetition_ids=True),
770
+ )
771
+ outer_subcircuit = cirq.CircuitOperation(
772
+ middle.freeze(), repetitions=2, use_repetition_ids=True
756
773
  )
757
- outer_subcircuit = cirq.CircuitOperation(middle.freeze(), repetitions=2)
758
774
  circuit = outer_subcircuit.mapped_circuit(deep=True)
759
775
  internal_control_keys = [
760
776
  str(condition) for op in circuit.all_operations() for condition in cirq.control_keys(op)
@@ -762,19 +778,21 @@ def test_scope_extern_mismatch():
762
778
  assert internal_control_keys == ['b', 'b', 'b', 'b']
763
779
  assert cirq.control_keys(outer_subcircuit) == {cirq.MeasurementKey('b')}
764
780
  assert cirq.control_keys(circuit) == {cirq.MeasurementKey('b')}
781
+ # pylint: disable=line-too-long
765
782
  cirq.testing.assert_has_diagram(
766
783
  cirq.Circuit(outer_subcircuit),
767
784
  """
768
- [ [ 0: ───M('a')───X─── ] ]
769
- [ 0: ───M('0:b')───[ ║ ]──────────── ]
770
- 0: ───[ [ b: ════════════^═══ ](loops=2) ]────────────
771
- [ ║ ]
772
- [ b: ══════════════╩══════════════════════════════════ ](loops=2)
785
+ [ [ 0: ───M('a')───X─── ] ]
786
+ [ 0: ───M('0:b')───[ ║ ]───────────────────────────────────── ]
787
+ 0: ───[ [ b: ════════════^═══ ](loops=2, use_repetition_ids=True) ]─────────────────────────────────────
788
+ [ ║ ]
789
+ [ b: ══════════════╩═══════════════════════════════════════════════════════════ ](loops=2, use_repetition_ids=True)
773
790
 
774
- b: ═══╩═══════════════════════════════════════════════════════════════════
791
+ b: ═══╩═════════════════════════════════════════════════════════════════════════════════════════════════════════════════════
775
792
  """,
776
793
  use_unicode_characters=True,
777
794
  )
795
+ # pylint: enable=line-too-long
778
796
  cirq.testing.assert_has_diagram(
779
797
  circuit,
780
798
  """
@@ -934,7 +952,7 @@ def test_sympy_scope():
934
952
  outer_subcircuit = cirq.CircuitOperation(middle.freeze(), repetitions=2)
935
953
  circuit = outer_subcircuit.mapped_circuit(deep=True)
936
954
  internal_controls = [str(k) for op in circuit.all_operations() for k in cirq.control_keys(op)]
937
- assert set(internal_controls) == {'0:0:a', '0:1:a', '1:0:a', '1:1:a', '0:b', '1:b', 'c', 'd'}
955
+ assert set(internal_controls) == {'a', 'b', 'c', 'd'}
938
956
  assert cirq.control_keys(outer_subcircuit) == {'c', 'd'}
939
957
  assert cirq.control_keys(circuit) == {'c', 'd'}
940
958
  assert circuit == cirq.Circuit(cirq.decompose(outer_subcircuit))
@@ -968,23 +986,15 @@ d: ═══╩═════════════════════
968
986
  cirq.testing.assert_has_diagram(
969
987
  circuit,
970
988
  """
971
- 0: ───────M───M('0:0:c')───M───X(conditions=[c | d, 0:0:a & 0:b])───M───X(conditions=[c | d, 0:1:a & 0:b])───M───M('1:0:c')───M───X(conditions=[c | d, 1:0:a & 1:b])───M───X(conditions=[c | d, 1:1:a & 1:b])───
972
- ║ ║ ║ ║ ║ ║ ║ ║
973
- 0:0:a: ═══╬════════════════@═══^════════════════════════════════════╬═══╬════════════════════════════════════╬════════════════╬═══╬════════════════════════════════════╬═══╬════════════════════════════════════
974
- ║ ║ ║
975
- 0:1:a: ═══╬════════════════════╬════════════════════════════════════@═══^════════════════════════════════════╬════════════════╬═══╬════════════════════════════════════╬═══╬════════════════════════════════════
976
- ║ ║ ║ ║
977
- 0:b: ═════@════════════════════^════════════════════════════════════════^════════════════════════════════════╬════════════════╬═══╬════════════════════════════════════╬═══╬════════════════════════════════════
978
- ║ ║ ║
979
- 1:0:a: ════════════════════════╬════════════════════════════════════════╬════════════════════════════════════╬════════════════@═══^════════════════════════════════════╬═══╬════════════════════════════════════
980
- ║ ║ ║ ║ ║ ║
981
- 1:1:a: ════════════════════════╬════════════════════════════════════════╬════════════════════════════════════╬════════════════════╬════════════════════════════════════@═══^════════════════════════════════════
982
- ║ ║ ║ ║ ║
983
- 1:b: ══════════════════════════╬════════════════════════════════════════╬════════════════════════════════════@════════════════════^════════════════════════════════════════^════════════════════════════════════
984
- ║ ║ ║ ║
985
- c: ════════════════════════════^════════════════════════════════════════^═════════════════════════════════════════════════════════^════════════════════════════════════════^════════════════════════════════════
986
- ║ ║ ║ ║
987
- d: ════════════════════════════^════════════════════════════════════════^═════════════════════════════════════════════════════════^════════════════════════════════════════^════════════════════════════════════
989
+ 0: ───M───M('0:c')───M───X(conditions=[c | d, a & b])───M───X(conditions=[c | d, a & b])───M───M('0:c')───M───X(conditions=[c | d, a & b])───M───X(conditions=[c | d, a & b])───
990
+ ║ ║ ║ ║ ║ ║ ║ ║
991
+ a: ═══╬══════════════@═══^══════════════════════════════@═══^══════════════════════════════╬══════════════@═══^══════════════════════════════@═══^══════════════════════════════
992
+
993
+ b: ═══@══════════════════^══════════════════════════════════^══════════════════════════════@══════════════════^══════════════════════════════════^══════════════════════════════
994
+
995
+ c: ══════════════════════^══════════════════════════════════^═════════════════════════════════════════════════^══════════════════════════════════^══════════════════════════════
996
+
997
+ d: ══════════════════════^══════════════════════════════════^═════════════════════════════════════════════════^══════════════════════════════════^══════════════════════════════
988
998
  """,
989
999
  use_unicode_characters=True,
990
1000
  )
@@ -133,7 +133,8 @@
133
133
  "parent_path": [],
134
134
  "repetition_ids": [
135
135
  "0"
136
- ]
136
+ ],
137
+ "use_repetition_ids": true
137
138
  },
138
139
  {
139
140
  "cirq_type": "CircuitOperation",
@@ -187,7 +188,8 @@
187
188
  "repetition_ids": [
188
189
  "a",
189
190
  "b"
190
- ]
191
+ ],
192
+ "use_repetition_ids": true
191
193
  },
192
194
  {
193
195
  "cirq_type": "CircuitOperation",
@@ -217,7 +219,8 @@
217
219
  "repetition_ids": [
218
220
  "a",
219
221
  "b"
220
- ]
222
+ ],
223
+ "use_repetition_ids": true
221
224
  },
222
225
  {
223
226
  "cirq_type": "CircuitOperation",
@@ -25,10 +25,12 @@ cirq.CircuitOperation(circuit=cirq.FrozenCircuit([
25
25
  (cirq.X**sympy.Symbol('theta')).on(cirq.LineQubit(0)),
26
26
  ),
27
27
  ]),
28
- param_resolver={sympy.Symbol('theta'): 1.5}),
28
+ param_resolver={sympy.Symbol('theta'): 1.5},
29
+ use_repetition_ids=True),
29
30
  cirq.CircuitOperation(circuit=cirq.FrozenCircuit([
30
31
  cirq.Moment(
31
32
  (cirq.X**sympy.Symbol('theta')).on(cirq.LineQubit(0)),
32
33
  ),
33
34
  ]),
34
- param_resolver={sympy.Symbol('theta'): 1.5})]
35
+ param_resolver={sympy.Symbol('theta'): 1.5},
36
+ use_repetition_ids=True)]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cirq-core
3
- Version: 1.5.0.dev20250104153038
3
+ Version: 1.5.0.dev20250106184334
4
4
  Summary: A framework for creating, editing, and invoking Noisy Intermediate Scale Quantum (NISQ) circuits.
5
5
  Home-page: http://github.com/quantumlib/cirq
6
6
  Author: The Cirq Developers
@@ -4,8 +4,8 @@ cirq/_compat_test.py,sha256=Qq3ZcfgD-Nb81cEppQdJqhAyrVqXKtfXZYGXT0p-Wh0,34718
4
4
  cirq/_doc.py,sha256=yDyWUD_2JDS0gShfGRb-rdqRt9-WeL7DhkqX7np0Nko,2879
5
5
  cirq/_import.py,sha256=p9gMHJscbtDDkfHOaulvd3Aer0pwUF5AXpL89XR8dNw,8402
6
6
  cirq/_import_test.py,sha256=6K_v0riZJXOXUphHNkGA8MY-JcmGlezFaGmvrNhm3OQ,1015
7
- cirq/_version.py,sha256=-iOI9womEA9EhbNaUnDjmWP7vgW5t_5_soq0QwvE6OY,1206
8
- cirq/_version_test.py,sha256=YyY-DlBsqPbz0RTWgPug8z_oSmTzFSvPEEBBqU5VUlY,147
7
+ cirq/_version.py,sha256=fqbJ5_Noks5OscXa3_fwU6v-q6eX5KRccfZq63BvByM,1206
8
+ cirq/_version_test.py,sha256=GL32Dh3GT09qfbSJYyIqOFT6pA5YCV-oJYSPmeaFh8o,147
9
9
  cirq/conftest.py,sha256=X7yLFL8GLhg2CjPw0hp5e_dGASfvHx1-QT03aUbhKJw,1168
10
10
  cirq/json_resolver_cache.py,sha256=03MVo6Y-UYrzt9CKHmwpiBLN2ixL6uSU-OWnKZXfG7k,13302
11
11
  cirq/py.typed,sha256=VFSlmh_lNwnaXzwY-ZuW-C2Ws5PkuDoVgBdNCs0jXJE,63
@@ -17,8 +17,8 @@ cirq/circuits/_box_drawing_character_data_test.py,sha256=XO94z0piwZRHaNZHTf-5tKH
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
19
  cirq/circuits/circuit.py,sha256=mSchbaJudEfwqpLj6x0He54d8GhyiE7nqA2RTx8Zw6c,115851
20
- cirq/circuits/circuit_operation.py,sha256=3CfJd7zhEMub792vgb2VO545rsj68yX_YEYMirySI3U,34705
21
- cirq/circuits/circuit_operation_test.py,sha256=u-23dDZ6htNSiP8oXR67rmtb-XDBmObvbJjJrARhmis,44646
20
+ cirq/circuits/circuit_operation.py,sha256=MaQ6fPt1HctEE31fVaUDtl9MqOmoTyt3m2HYeGCdIaM,35440
21
+ cirq/circuits/circuit_operation_test.py,sha256=7ezTwTY2RaAchjfXOJythVrxs6Rom317gC0AUBe0GVM,45259
22
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
@@ -269,7 +269,7 @@ cirq/ops/arithmetic_operation_test.py,sha256=axy8xy9IvDb-ATUV-LE1HNWRqCEz06VyZWV
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
271
  cirq/ops/classically_controlled_operation.py,sha256=qTOsbGRZFbQIaBj9iee31V_V8oMLqWIJjgFomy3kg4A,9104
272
- cirq/ops/classically_controlled_operation_test.py,sha256=pWuvxqbH9AvXdpMMaCkvozD8rIVNH0vmaYQkDPTyk4E,50117
272
+ cirq/ops/classically_controlled_operation_test.py,sha256=foRpG95H886b9WHxCB7VJpvWA8Vi7LX8L7QPRqvaO-s,47858
273
273
  cirq/ops/clifford_gate.py,sha256=qAKS0wqqoHljOF63treyR95I6H0yWFZBiHQoM4sLgSc,39350
274
274
  cirq/ops/clifford_gate_test.py,sha256=NF_if1X8LCMA9hy0vBO7lxvVPdumlvMMnI2XRQ-RLpk,37472
275
275
  cirq/ops/common_channels.py,sha256=uqgocTUhtuJ4VZI_9_3L34gBRTf1A10mByhZY4Q1fB8,38283
@@ -485,10 +485,10 @@ cirq/protocols/json_test_data/Circuit.json,sha256=pQNIcjuIYBfXnGkqQnn4xuSLoHysFE
485
485
  cirq/protocols/json_test_data/Circuit.json_inward,sha256=z62hEHwGtkVXrZNfxHX71_lDQ43wk12qtPO0Q0i5qwc,4574
486
486
  cirq/protocols/json_test_data/Circuit.repr,sha256=i5fwYWIi64pmupNvqEEjUn_mHKp_vVGH2ozw65_EOuw,689
487
487
  cirq/protocols/json_test_data/Circuit.repr_inward,sha256=i5fwYWIi64pmupNvqEEjUn_mHKp_vVGH2ozw65_EOuw,689
488
- cirq/protocols/json_test_data/CircuitOperation.json,sha256=s7jp0RDf_dz4eIvYMNDgpkoERfDBvqPWDrjWZ1Jxdck,6949
488
+ cirq/protocols/json_test_data/CircuitOperation.json,sha256=7khipsZjJJnQQU53DgMlhG-FYzdLUCmAJcmTubby3jA,7045
489
489
  cirq/protocols/json_test_data/CircuitOperation.json_inward,sha256=EP3fiuDhxStcshrJC_Uot1hzYxEmlKk4dW66DMK9ALg,7951
490
490
  cirq/protocols/json_test_data/CircuitOperation.repr,sha256=zjkjsVG9m3jedRYhKVJG_gqhwYycaqRRCcOuk1EKWvE,1711
491
- cirq/protocols/json_test_data/CircuitOperation.repr_inward,sha256=rsVxASnsKEPxfJFZhXw-PPjBV_7RYTrLCglxUTXjcLY,1083
491
+ cirq/protocols/json_test_data/CircuitOperation.repr_inward,sha256=1Ml4liM9PWg_hJ2Dr-y93XTDNklNty1RvEUwewmTdEg,1133
492
492
  cirq/protocols/json_test_data/ClassicalDataDictionaryStore.json,sha256=G09lSA5vshMhiXz_jgFw0STHjc08pJ0UczVCz8SGYLE,1185
493
493
  cirq/protocols/json_test_data/ClassicalDataDictionaryStore.repr,sha256=bOLOBw-nLRvdkd7oYcLzkh5r-cBZAxwo7H6xdDgtOHw,404
494
494
  cirq/protocols/json_test_data/ClassicallyControlledOperation.json,sha256=7t_Yyjhk8Ig-XyfOboE92K149csQbwvLoEwIsuDVHDw,669
@@ -1189,8 +1189,8 @@ cirq/work/sampler.py,sha256=bE5tmVkcR6cZZMLETxDfHehdsYUMbx2RvBeIBetehI4,19187
1189
1189
  cirq/work/sampler_test.py,sha256=hL2UWx3dz2ukZVNxWftiKVvJcQoLplLZdQm-k1QcA40,13282
1190
1190
  cirq/work/zeros_sampler.py,sha256=x1C7cup66a43n-3tm8QjhiqJa07qcJW10FxNp9jJ59Q,2356
1191
1191
  cirq/work/zeros_sampler_test.py,sha256=JIkpBBFPJe5Ba4142vzogyWyboG1Q1ZAm0UVGgOoZn8,3279
1192
- cirq_core-1.5.0.dev20250104153038.dist-info/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
1193
- cirq_core-1.5.0.dev20250104153038.dist-info/METADATA,sha256=bPLGpw53sZnz8T1J4sjJ5wcICSe9tbGVSJ40K6crZbA,1992
1194
- cirq_core-1.5.0.dev20250104153038.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
1195
- cirq_core-1.5.0.dev20250104153038.dist-info/top_level.txt,sha256=Sz9iOxHU0IEMLSFGwiwOCaN2e9K-jFbBbtpPN1hB73g,5
1196
- cirq_core-1.5.0.dev20250104153038.dist-info/RECORD,,
1192
+ cirq_core-1.5.0.dev20250106184334.dist-info/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
1193
+ cirq_core-1.5.0.dev20250106184334.dist-info/METADATA,sha256=YWmB84EPm_bGfm4wljizeQz1fylIkMQQP2lD_ygoY1I,1992
1194
+ cirq_core-1.5.0.dev20250106184334.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
1195
+ cirq_core-1.5.0.dev20250106184334.dist-info/top_level.txt,sha256=Sz9iOxHU0IEMLSFGwiwOCaN2e9K-jFbBbtpPN1hB73g,5
1196
+ cirq_core-1.5.0.dev20250106184334.dist-info/RECORD,,