cirq-core 1.7.0.dev20250915211227__py3-none-any.whl → 1.7.0.dev20250917023732__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.

Files changed (66) hide show
  1. cirq/_version.py +1 -1
  2. cirq/_version_test.py +1 -1
  3. cirq/circuits/circuit_operation_test.py +5 -0
  4. cirq/ops/classically_controlled_operation.py +3 -7
  5. cirq/ops/measure_util.py +7 -6
  6. cirq/ops/pauli_string_test.py +2 -2
  7. cirq/ops/raw_types.py +19 -2
  8. cirq/protocols/has_stabilizer_effect_protocol_test.py +11 -9
  9. cirq/protocols/has_unitary_protocol_test.py +3 -3
  10. cirq/protocols/json_serialization.py +3 -3
  11. cirq/protocols/json_serialization_test.py +31 -31
  12. cirq/protocols/kraus_protocol_test.py +5 -5
  13. cirq/protocols/measurement_key_protocol.py +31 -8
  14. cirq/protocols/mixture_protocol.py +1 -1
  15. cirq/protocols/mixture_protocol_test.py +7 -7
  16. cirq/protocols/mul_protocol_test.py +4 -4
  17. cirq/protocols/phase_protocol.py +13 -4
  18. cirq/protocols/pow_protocol_test.py +5 -5
  19. cirq/protocols/resolve_parameters.py +1 -1
  20. cirq/protocols/unitary_protocol_test.py +31 -19
  21. cirq/qis/clifford_tableau.py +14 -14
  22. cirq/qis/clifford_tableau_test.py +17 -17
  23. cirq/qis/entropy.py +1 -1
  24. cirq/qis/entropy_test.py +1 -1
  25. cirq/qis/states_test.py +54 -54
  26. cirq/sim/classical_simulator_test.py +56 -28
  27. cirq/sim/clifford/clifford_simulator.py +5 -5
  28. cirq/sim/clifford/clifford_simulator_test.py +50 -49
  29. cirq/sim/clifford/stabilizer_state_ch_form.py +9 -9
  30. cirq/sim/density_matrix_simulation_state.py +6 -6
  31. cirq/sim/density_matrix_simulator.py +1 -1
  32. cirq/sim/density_matrix_simulator_test.py +94 -84
  33. cirq/sim/density_matrix_utils_test.py +1 -1
  34. cirq/sim/mux_test.py +26 -26
  35. cirq/sim/simulation_product_state_test.py +7 -7
  36. cirq/sim/simulation_state.py +4 -4
  37. cirq/sim/simulation_state_base.py +1 -1
  38. cirq/sim/simulation_state_test.py +5 -5
  39. cirq/sim/simulator.py +2 -2
  40. cirq/sim/simulator_base_test.py +49 -35
  41. cirq/sim/simulator_test.py +39 -35
  42. cirq/sim/sparse_simulator.py +1 -1
  43. cirq/sim/sparse_simulator_test.py +92 -82
  44. cirq/sim/state_vector.py +1 -1
  45. cirq/sim/state_vector_simulation_state.py +7 -7
  46. cirq/sim/state_vector_simulator_test.py +9 -9
  47. cirq/sim/state_vector_test.py +37 -37
  48. cirq/study/result_test.py +20 -20
  49. cirq/study/sweepable_test.py +20 -20
  50. cirq/study/sweeps_test.py +43 -43
  51. cirq/testing/circuit_compare_test.py +16 -14
  52. cirq/testing/consistent_channels.py +2 -2
  53. cirq/testing/consistent_controlled_gate_op.py +1 -1
  54. cirq/testing/consistent_decomposition.py +4 -2
  55. cirq/testing/consistent_phase_by.py +1 -1
  56. cirq/testing/consistent_qasm.py +2 -2
  57. cirq/testing/consistent_qasm_test.py +3 -3
  58. cirq/transformers/eject_z.py +1 -0
  59. cirq/transformers/gauge_compiling/__init__.py +5 -0
  60. cirq/transformers/gauge_compiling/idle_moments_gauge.py +222 -0
  61. cirq/transformers/gauge_compiling/idle_moments_gauge_test.py +193 -0
  62. {cirq_core-1.7.0.dev20250915211227.dist-info → cirq_core-1.7.0.dev20250917023732.dist-info}/METADATA +1 -1
  63. {cirq_core-1.7.0.dev20250915211227.dist-info → cirq_core-1.7.0.dev20250917023732.dist-info}/RECORD +66 -64
  64. {cirq_core-1.7.0.dev20250915211227.dist-info → cirq_core-1.7.0.dev20250917023732.dist-info}/WHEEL +0 -0
  65. {cirq_core-1.7.0.dev20250915211227.dist-info → cirq_core-1.7.0.dev20250917023732.dist-info}/licenses/LICENSE +0 -0
  66. {cirq_core-1.7.0.dev20250915211227.dist-info → cirq_core-1.7.0.dev20250917023732.dist-info}/top_level.txt +0 -0
@@ -23,7 +23,7 @@ import sympy
23
23
  import cirq
24
24
 
25
25
 
26
- def test_x_gate():
26
+ def test_x_gate() -> None:
27
27
  q0, q1 = cirq.LineQubit.range(2)
28
28
  circuit = cirq.Circuit()
29
29
  circuit.append(cirq.X(q0))
@@ -31,30 +31,33 @@ def test_x_gate():
31
31
  circuit.append(cirq.X(q1))
32
32
  circuit.append(cirq.measure((q0, q1), key='key'))
33
33
  expected_results = {'key': np.array([[[1, 0]]], dtype=np.uint8)}
34
+ sim: cirq.ClassicalStateSimulator
34
35
  sim = cirq.ClassicalStateSimulator()
35
36
  results = sim.run(circuit, param_resolver=None, repetitions=1).records
36
37
  np.testing.assert_equal(results, expected_results)
37
38
 
38
39
 
39
- def test_CNOT():
40
+ def test_CNOT() -> None:
40
41
  q0, q1 = cirq.LineQubit.range(2)
41
42
  circuit = cirq.Circuit()
42
43
  circuit.append(cirq.X(q0))
43
44
  circuit.append(cirq.CNOT(q0, q1))
44
45
  circuit.append(cirq.measure(q1, key='key'))
45
46
  expected_results = {'key': np.array([[[1]]], dtype=np.uint8)}
47
+ sim: cirq.ClassicalStateSimulator
46
48
  sim = cirq.ClassicalStateSimulator()
47
49
  results = sim.run(circuit, param_resolver=None, repetitions=1).records
48
50
  np.testing.assert_equal(results, expected_results)
49
51
 
50
52
 
51
- def test_Swap():
53
+ def test_Swap() -> None:
52
54
  q0, q1 = cirq.LineQubit.range(2)
53
55
  circuit = cirq.Circuit()
54
56
  circuit.append(cirq.X(q0))
55
57
  circuit.append(cirq.SWAP(q0, q1))
56
58
  circuit.append(cirq.measure((q0, q1), key='key'))
57
59
  expected_results = {'key': np.array([[[0, 1]]], dtype=np.uint8)}
60
+ sim: cirq.ClassicalStateSimulator
58
61
  sim = cirq.ClassicalStateSimulator()
59
62
  results = sim.run(circuit, param_resolver=None, repetitions=1).records
60
63
  np.testing.assert_equal(results, expected_results)
@@ -67,10 +70,11 @@ def test_Swap():
67
70
  for n in np.random.randint(3, 8, size=10)
68
71
  ],
69
72
  )
70
- def test_qubit_permutation_gate(n, perm, state):
73
+ def test_qubit_permutation_gate(n, perm, state) -> None:
71
74
  qubits = cirq.LineQubit.range(n)
72
75
  perm_gate = cirq.QubitPermutationGate(perm)
73
76
  circuit = cirq.Circuit(perm_gate(*qubits), cirq.measure(*qubits, key='key'))
77
+ sim: cirq.ClassicalStateSimulator
74
78
  sim = cirq.ClassicalStateSimulator()
75
79
  result = sim.simulate(circuit, initial_state=state)
76
80
  expected = [0] * n
@@ -79,7 +83,7 @@ def test_qubit_permutation_gate(n, perm, state):
79
83
  np.testing.assert_equal(result.measurements['key'], expected)
80
84
 
81
85
 
82
- def test_CCNOT():
86
+ def test_CCNOT() -> None:
83
87
  q0, q1, q2 = cirq.LineQubit.range(3)
84
88
  circuit = cirq.Circuit()
85
89
  circuit.append(cirq.CCNOT(q0, q1, q2))
@@ -97,13 +101,14 @@ def test_CCNOT():
97
101
  expected_results = {
98
102
  'key': np.array([[[0, 0, 0], [1, 0, 0], [0, 1, 0], [1, 1, 1]]], dtype=np.uint8)
99
103
  }
104
+ sim: cirq.ClassicalStateSimulator
100
105
  sim = cirq.ClassicalStateSimulator()
101
106
  results = sim.run(circuit, param_resolver=None, repetitions=1).records
102
107
  np.testing.assert_equal(results, expected_results)
103
108
 
104
109
 
105
110
  @pytest.mark.parametrize(['initial_state'], [(list(x),) for x in product([0, 1], repeat=4)])
106
- def test_CCCX(initial_state):
111
+ def test_CCCX(initial_state) -> None:
107
112
  CCCX = cirq.CCNOT.controlled()
108
113
  qubits = cirq.LineQubit.range(4)
109
114
 
@@ -114,13 +119,14 @@ def test_CCCX(initial_state):
114
119
  final_state = initial_state.copy()
115
120
  final_state[-1] ^= all(final_state[:-1])
116
121
 
122
+ sim: cirq.ClassicalStateSimulator
117
123
  sim = cirq.ClassicalStateSimulator()
118
124
  results = sim.simulate(circuit, initial_state=initial_state).measurements['key']
119
125
  np.testing.assert_equal(results, final_state)
120
126
 
121
127
 
122
128
  @pytest.mark.parametrize(['initial_state'], [(list(x),) for x in product([0, 1], repeat=3)])
123
- def test_CSWAP(initial_state):
129
+ def test_CSWAP(initial_state) -> None:
124
130
  CSWAP = cirq.SWAP.controlled()
125
131
  qubits = cirq.LineQubit.range(3)
126
132
  circuit = cirq.Circuit()
@@ -134,46 +140,50 @@ def test_CSWAP(initial_state):
134
140
  b, c = c, b
135
141
  final_state = [a, b, c]
136
142
 
143
+ sim: cirq.ClassicalStateSimulator
137
144
  sim = cirq.ClassicalStateSimulator()
138
145
  results = sim.simulate(circuit, initial_state=initial_state).measurements['key']
139
146
  np.testing.assert_equal(results, final_state)
140
147
 
141
148
 
142
- def test_measurement_gate():
149
+ def test_measurement_gate() -> None:
143
150
  q0, q1 = cirq.LineQubit.range(2)
144
151
  circuit = cirq.Circuit()
145
152
  circuit.append(cirq.measure((q0, q1), key='key'))
146
153
  expected_results = {'key': np.array([[[0, 0]]], dtype=np.uint8)}
154
+ sim: cirq.ClassicalStateSimulator
147
155
  sim = cirq.ClassicalStateSimulator()
148
156
  results = sim.run(circuit, param_resolver=None, repetitions=1).records
149
157
  np.testing.assert_equal(results, expected_results)
150
158
 
151
159
 
152
- def test_qubit_order():
160
+ def test_qubit_order() -> None:
153
161
  q0, q1 = cirq.LineQubit.range(2)
154
162
  circuit = cirq.Circuit()
155
163
  circuit.append(cirq.CNOT(q0, q1))
156
164
  circuit.append(cirq.X(q0))
157
165
  circuit.append(cirq.measure((q0, q1), key='key'))
158
166
  expected_results = {'key': np.array([[[1, 0]]], dtype=np.uint8)}
167
+ sim: cirq.ClassicalStateSimulator
159
168
  sim = cirq.ClassicalStateSimulator()
160
169
  results = sim.run(circuit, param_resolver=None, repetitions=1).records
161
170
  np.testing.assert_equal(results, expected_results)
162
171
 
163
172
 
164
- def test_same_key_instances():
173
+ def test_same_key_instances() -> None:
165
174
  q0, q1 = cirq.LineQubit.range(2)
166
175
  circuit = cirq.Circuit()
167
176
  circuit.append(cirq.measure((q0, q1), key='key'))
168
177
  circuit.append(cirq.X(q0))
169
178
  circuit.append(cirq.measure((q0, q1), key='key'))
170
179
  expected_results = {'key': np.array([[[0, 0], [1, 0]]], dtype=np.uint8)}
180
+ sim: cirq.ClassicalStateSimulator
171
181
  sim = cirq.ClassicalStateSimulator()
172
182
  results = sim.run(circuit, param_resolver=None, repetitions=1).records
173
183
  np.testing.assert_equal(results, expected_results)
174
184
 
175
185
 
176
- def test_same_key_instances_order():
186
+ def test_same_key_instances_order() -> None:
177
187
  q0, q1 = cirq.LineQubit.range(2)
178
188
  circuit = cirq.Circuit()
179
189
  circuit.append(cirq.X(q0))
@@ -181,12 +191,13 @@ def test_same_key_instances_order():
181
191
  circuit.append(cirq.X(q0))
182
192
  circuit.append(cirq.measure((q1, q0), key='key'))
183
193
  expected_results = {'key': np.array([[[1, 0], [0, 0]]], dtype=np.uint8)}
194
+ sim: cirq.ClassicalStateSimulator
184
195
  sim = cirq.ClassicalStateSimulator()
185
196
  results = sim.run(circuit, param_resolver=None, repetitions=1).records
186
197
  np.testing.assert_equal(results, expected_results)
187
198
 
188
199
 
189
- def test_repetitions():
200
+ def test_repetitions() -> None:
190
201
  q0 = cirq.LineQubit.range(1)
191
202
  circuit = cirq.Circuit()
192
203
  circuit.append(cirq.measure(q0, key='key'))
@@ -195,12 +206,13 @@ def test_repetitions():
195
206
  [[[0]], [[0]], [[0]], [[0]], [[0]], [[0]], [[0]], [[0]], [[0]], [[0]]], dtype=np.uint8
196
207
  )
197
208
  }
209
+ sim: cirq.ClassicalStateSimulator
198
210
  sim = cirq.ClassicalStateSimulator()
199
211
  results = sim.run(circuit, param_resolver=None, repetitions=10).records
200
212
  np.testing.assert_equal(results, expected_results)
201
213
 
202
214
 
203
- def test_multiple_gates():
215
+ def test_multiple_gates() -> None:
204
216
  q0, q1 = cirq.LineQubit.range(2)
205
217
  circuit = cirq.Circuit()
206
218
  circuit.append(cirq.X(q0))
@@ -210,12 +222,13 @@ def test_multiple_gates():
210
222
  circuit.append(cirq.X(q1))
211
223
  circuit.append(cirq.measure((q0, q1), key='key'))
212
224
  expected_results = {'key': np.array([[[1, 0]]], dtype=np.uint8)}
225
+ sim: cirq.ClassicalStateSimulator
213
226
  sim = cirq.ClassicalStateSimulator()
214
227
  results = sim.run(circuit, param_resolver=None, repetitions=1).records
215
228
  np.testing.assert_equal(results, expected_results)
216
229
 
217
230
 
218
- def test_multiple_gates_order():
231
+ def test_multiple_gates_order() -> None:
219
232
  q0, q1 = cirq.LineQubit.range(2)
220
233
  circuit = cirq.Circuit()
221
234
  circuit.append(cirq.X(q0))
@@ -223,20 +236,22 @@ def test_multiple_gates_order():
223
236
  circuit.append(cirq.CNOT(q1, q0))
224
237
  circuit.append(cirq.measure((q0, q1), key='key'))
225
238
  expected_results = {'key': np.array([[[0, 1]]], dtype=np.uint8)}
239
+ sim: cirq.ClassicalStateSimulator
226
240
  sim = cirq.ClassicalStateSimulator()
227
241
  results = sim.run(circuit, param_resolver=None, repetitions=1).records
228
242
  np.testing.assert_equal(results, expected_results)
229
243
 
230
244
 
231
- def test_tuple_initial_state():
245
+ def test_tuple_initial_state() -> None:
232
246
  q0, q1, q2 = cirq.LineQubit.range(3)
233
247
  circuit = cirq.Circuit(cirq.X(q0), cirq.measure(q0, q1, q2, key='key'))
248
+ sim: cirq.ClassicalStateSimulator
234
249
  sim = cirq.ClassicalStateSimulator()
235
250
  result = sim.simulate(circuit, initial_state=(0, 1, 0))
236
251
  np.testing.assert_equal(result.measurements['key'], [1, 1, 0])
237
252
 
238
253
 
239
- def test_param_resolver():
254
+ def test_param_resolver() -> None:
240
255
  gate = cirq.CNOT ** sympy.Symbol('t')
241
256
  q0, q1 = cirq.LineQubit.range(2)
242
257
  circuit = cirq.Circuit()
@@ -244,6 +259,7 @@ def test_param_resolver():
244
259
  circuit.append(gate(q0, q1))
245
260
  circuit.append(cirq.measure((q1), key='key'))
246
261
  resolver = cirq.ParamResolver({'t': 0})
262
+ sim: cirq.ClassicalStateSimulator
247
263
  sim = cirq.ClassicalStateSimulator()
248
264
  results_with_parameter_zero = sim.run(circuit, param_resolver=resolver, repetitions=1).records
249
265
  resolver = cirq.ParamResolver({'t': 1})
@@ -252,33 +268,37 @@ def test_param_resolver():
252
268
  np.testing.assert_equal(results_with_parameter_one, {'key': np.array([[[1]]], dtype=np.uint8)})
253
269
 
254
270
 
255
- def test_unknown_gates():
271
+ def test_unknown_gates() -> None:
256
272
  gate = cirq.Y
257
273
  q = cirq.LineQubit(0)
258
274
  circuit = cirq.Circuit(gate(q), cirq.measure((q), key='key'))
275
+ sim: cirq.ClassicalStateSimulator
259
276
  sim = cirq.ClassicalStateSimulator()
260
277
  with pytest.raises(ValueError):
261
278
  _ = sim.run(circuit).records
262
279
 
263
280
 
264
- def test_incompatible_measurements():
281
+ def test_incompatible_measurements() -> None:
265
282
  qs = cirq.LineQubit.range(2)
266
283
  c = cirq.Circuit(cirq.measure(qs, key='key'), cirq.measure(qs[0], key='key'))
284
+ sim: cirq.ClassicalStateSimulator
267
285
  sim = cirq.ClassicalStateSimulator()
268
286
  with pytest.raises(ValueError):
269
287
  _ = sim.run(c)
270
288
 
271
289
 
272
- def test_compatible_measurement():
290
+ def test_compatible_measurement() -> None:
273
291
  qs = cirq.LineQubit.range(2)
274
292
  c = cirq.Circuit(cirq.measure(qs, key='key'), cirq.X.on_each(qs), cirq.measure(qs, key='key'))
293
+ sim: cirq.ClassicalStateSimulator
275
294
  sim = cirq.ClassicalStateSimulator()
276
295
  res = sim.run(c, repetitions=3).records
277
296
  np.testing.assert_equal(res['key'], np.array([[[0, 0], [1, 1]]] * 3, dtype=np.uint8))
278
297
 
279
298
 
280
- def test_simulate_sweeps_param_resolver():
299
+ def test_simulate_sweeps_param_resolver() -> None:
281
300
  q0, q1 = cirq.LineQubit.range(2)
301
+ simulator: cirq.ClassicalStateSimulator
282
302
  simulator = cirq.ClassicalStateSimulator()
283
303
  for b0 in [0, 1]:
284
304
  for b1 in [0, 1]:
@@ -295,18 +315,22 @@ def test_simulate_sweeps_param_resolver():
295
315
  assert results[1].params == params[1]
296
316
 
297
317
 
298
- def test_create_partial_simulation_state_from_int_with_no_qubits():
318
+ def test_create_partial_simulation_state_from_int_with_no_qubits() -> None:
319
+ sim: cirq.ClassicalStateSimulator
299
320
  sim = cirq.ClassicalStateSimulator()
300
321
  initial_state = 5
301
322
  qs = None
302
323
  classical_data = cirq.value.ClassicalDataDictionaryStore()
303
324
  with pytest.raises(ValueError):
304
325
  sim._create_partial_simulation_state(
305
- initial_state=initial_state, qubits=qs, classical_data=classical_data
326
+ initial_state=initial_state,
327
+ qubits=qs, # type: ignore[arg-type]
328
+ classical_data=classical_data,
306
329
  )
307
330
 
308
331
 
309
- def test_create_partial_simulation_state_from_invalid_state():
332
+ def test_create_partial_simulation_state_from_invalid_state() -> None:
333
+ sim: cirq.ClassicalStateSimulator
310
334
  sim = cirq.ClassicalStateSimulator()
311
335
  initial_state = None
312
336
  qs = cirq.LineQubit.range(2)
@@ -317,7 +341,8 @@ def test_create_partial_simulation_state_from_invalid_state():
317
341
  )
318
342
 
319
343
 
320
- def test_create_partial_simulation_state_from_int():
344
+ def test_create_partial_simulation_state_from_int() -> None:
345
+ sim: cirq.ClassicalStateSimulator
321
346
  sim = cirq.ClassicalStateSimulator()
322
347
  initial_state = 15
323
348
  qs = cirq.LineQubit.range(4)
@@ -329,7 +354,8 @@ def test_create_partial_simulation_state_from_int():
329
354
  assert result == expected_result
330
355
 
331
356
 
332
- def test_create_valid_partial_simulation_state_from_list():
357
+ def test_create_valid_partial_simulation_state_from_list() -> None:
358
+ sim: cirq.ClassicalStateSimulator
333
359
  sim = cirq.ClassicalStateSimulator()
334
360
  initial_state = [1, 1, 1, 1]
335
361
  qs = cirq.LineQubit.range(4)
@@ -341,7 +367,8 @@ def test_create_valid_partial_simulation_state_from_list():
341
367
  assert result == expected_result
342
368
 
343
369
 
344
- def test_create_valid_partial_simulation_state_from_np():
370
+ def test_create_valid_partial_simulation_state_from_np() -> None:
371
+ sim: cirq.ClassicalStateSimulator
345
372
  sim = cirq.ClassicalStateSimulator()
346
373
  initial_state = np.array([1, 1])
347
374
  qs = cirq.LineQubit.range(2)
@@ -355,10 +382,11 @@ def test_create_valid_partial_simulation_state_from_np():
355
382
  np.testing.assert_equal(result, expected_result)
356
383
 
357
384
 
358
- def test_create_invalid_partial_simulation_state_from_np():
385
+ def test_create_invalid_partial_simulation_state_from_np() -> None:
359
386
  initial_state = np.array([[1, 1], [1, 1]])
360
387
  qs = cirq.LineQubit.range(2)
361
388
  classical_data = cirq.value.ClassicalDataDictionaryStore()
389
+ sim: cirq.ClassicalStateSimulator
362
390
  sim = cirq.ClassicalStateSimulator()
363
391
 
364
392
  with pytest.raises(ValueError):
@@ -367,7 +395,7 @@ def test_create_invalid_partial_simulation_state_from_np():
367
395
  )
368
396
 
369
397
 
370
- def test_noise_model():
398
+ def test_noise_model() -> None:
371
399
  noise_model = cirq.NoiseModel.from_noise_model_like(cirq.depolarize(p=0.01))
372
400
  with pytest.raises(ValueError):
373
401
  cirq.ClassicalStateSimulator(noise=noise_model)
@@ -161,7 +161,7 @@ class CliffordSimulatorStepResult(
161
161
  sim_state: The qubit:SimulationState lookup for this step.
162
162
  """
163
163
  super().__init__(sim_state)
164
- self._clifford_state = None
164
+ self._clifford_state: CliffordState | None = None
165
165
 
166
166
  def __str__(self) -> str:
167
167
  def bitstring(vals):
@@ -183,7 +183,7 @@ class CliffordSimulatorStepResult(
183
183
  p.text("cirq.CliffordSimulatorStateResult(...)" if cycle else self.__str__())
184
184
 
185
185
  @property
186
- def state(self):
186
+ def state(self) -> CliffordState:
187
187
  if self._clifford_state is None:
188
188
  clifford_state = CliffordState(self._qubit_mapping)
189
189
  clifford_state.ch_form = self._merged_sim_state.state.copy()
@@ -240,10 +240,10 @@ class CliffordState:
240
240
  def to_numpy(self) -> np.ndarray:
241
241
  return self.ch_form.to_state_vector()
242
242
 
243
- def state_vector(self):
243
+ def state_vector(self) -> np.ndarray:
244
244
  return self.ch_form.state_vector()
245
245
 
246
- def apply_unitary(self, op: cirq.Operation):
246
+ def apply_unitary(self, op: cirq.Operation) -> None:
247
247
  ch_form_args = clifford.StabilizerChFormSimulationState(
248
248
  prng=np.random.RandomState(), qubits=self.qubit_map.keys(), initial_state=self.ch_form
249
249
  )
@@ -259,7 +259,7 @@ class CliffordState:
259
259
  measurements: dict[str, list[int]],
260
260
  prng: np.random.RandomState,
261
261
  collapse_state_vector=True,
262
- ):
262
+ ) -> None:
263
263
  if not isinstance(op.gate, cirq.MeasurementGate):
264
264
  raise TypeError(
265
265
  f'apply_measurement only supports cirq.MeasurementGate operations. '