From 0482e982eadec9079a8818732764b1d5de9a0e12 Mon Sep 17 00:00:00 2001 From: Jim Garrison Date: Tue, 4 Mar 2025 13:04:03 -0500 Subject: [PATCH] Update for compatibility with Qiskit 2.0 --- qiskit_addon_cutting/utils/simulation.py | 6 +++--- test/utils/test_simulation.py | 8 +++++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/qiskit_addon_cutting/utils/simulation.py b/qiskit_addon_cutting/utils/simulation.py index 6a7c65630..d70469737 100644 --- a/qiskit_addon_cutting/utils/simulation.py +++ b/qiskit_addon_cutting/utils/simulation.py @@ -19,7 +19,7 @@ from typing import Any import numpy as np -from qiskit.circuit import QuantumCircuit +from qiskit.circuit import ControlFlowOp, QuantumCircuit from qiskit.quantum_info import Statevector, Operator from qiskit.primitives.base import BaseSamplerV1, SamplerResult from qiskit.primitives.primitive_job import PrimitiveJob @@ -41,7 +41,7 @@ def simulate_statevector_outcomes(qc: QuantumCircuit, /) -> dict[int, float]: current = defaultdict(list) current[0].append((1.0, Statevector.from_int(0, 2**qc.num_qubits))) for inst in qc.data: - if inst.operation.condition_bits: + if isinstance(inst.operation, ControlFlowOp): raise ValueError( "Operations conditioned on classical bits are currently not supported." ) @@ -104,7 +104,7 @@ def simulate_statevector_outcomes(qc: QuantumCircuit, /) -> dict[int, float]: del current[k] else: # The current instruction is a unitary operation (i.e., a gate). - if len(inst.clbits) != 0: + if len(inst.clbits) != 0: # pragma: no cover raise ValueError( "Circuit cannot contain a non-measurement operation on classical bit(s)." ) diff --git a/test/utils/test_simulation.py b/test/utils/test_simulation.py index 23874a212..3bfcdf561 100644 --- a/test/utils/test_simulation.py +++ b/test/utils/test_simulation.py @@ -80,19 +80,21 @@ def test_simulate_statevector_outcomes(self): qc.h(0) qc.cx(0, 1) qc.measure(0, 0) - qc.break_loop().c_if(0, True) + with qc.if_test((qc.clbits[0], True)): + qc.x(0) with pytest.raises(ValueError) as e_info: simulate_statevector_outcomes(qc) assert ( e_info.value.args[0] - == "Circuit cannot contain a non-measurement operation on classical bit(s)." + == "Operations conditioned on classical bits are currently not supported." ) with self.subTest("Circuit with condition bits"): qc = QuantumCircuit(2, 1) qc.h(0) qc.measure(0, 0) - qc.x(1).c_if(0, True) + with qc.if_test((qc.clbits[0], True)): + qc.x(1) with pytest.raises(ValueError) as e_info: simulate_statevector_outcomes(qc) assert (