diff --git a/glue/cirq/stimcirq/_measure_and_or_reset_gate.py b/glue/cirq/stimcirq/_measure_and_or_reset_gate.py index 38ddc293a..51a9c8310 100644 --- a/glue/cirq/stimcirq/_measure_and_or_reset_gate.py +++ b/glue/cirq/stimcirq/_measure_and_or_reset_gate.py @@ -5,7 +5,7 @@ @cirq.value_equality -class MeasureAndOrResetGate(cirq.SingleQubitGate): +class MeasureAndOrResetGate(cirq.Gate): """Handles explaining stim's MX/MY/MZ/MRX/MRY/MRZ/RX/RY/RZ gates to cirq.""" def __init__( @@ -24,6 +24,9 @@ def __init__( self.key = key self.measure_flip_probability = measure_flip_probability + def _num_qubits_(self) -> int: + return 1 + def _circuit_diagram_info_(self, args: cirq.CircuitDiagramInfoArgs) -> str: return str(self) diff --git a/glue/cirq/stimcirq/_stim_sampler_test.py b/glue/cirq/stimcirq/_stim_sampler_test.py index bf7dce290..53eda3fb2 100644 --- a/glue/cirq/stimcirq/_stim_sampler_test.py +++ b/glue/cirq/stimcirq/_stim_sampler_test.py @@ -33,21 +33,28 @@ def test_custom_gates(): s = stimcirq.StimSampler() a, b, c, d = cirq.LineQubit.range(4) - class GoodGate(cirq.SingleQubitGate): + class GoodGate(cirq.Gate): def _num_qubits_(self) -> int: return 1 def _decompose_(self, qubits): return [cirq.X.on_each(*qubits)] - class IndirectlyGoodGate(cirq.SingleQubitGate): + class IndirectlyGoodGate(cirq.Gate): + def _num_qubits_(self) -> int: + return 1 + def _decompose_(self, qubits): return [GoodGate().on_each(*qubits)] - class BadGate(cirq.SingleQubitGate): - pass + class BadGate(cirq.Gate): + def _num_qubits_(self) -> int: + return 1 + + class IndirectlyBadGate(cirq.Gate): + def _num_qubits_(self) -> int: + return 1 - class IndirectlyBadGate(cirq.SingleQubitGate): def _decompose_(self): return [BadGate()]