Skip to content

Commit

Permalink
Update for compatibility with Qiskit 2.0 (#741) (#742)
Browse files Browse the repository at this point in the history
(cherry picked from commit 6a14f08)

Co-authored-by: Jim Garrison <[email protected]>
  • Loading branch information
mergify[bot] and garrison authored Mar 4, 2025
1 parent 6034519 commit 13f9b62
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 6 deletions.
6 changes: 3 additions & 3 deletions qiskit_addon_cutting/utils/simulation.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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."
)
Expand Down Expand Up @@ -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)."
)
Expand Down
8 changes: 5 additions & 3 deletions test/utils/test_simulation.py
Original file line number Diff line number Diff line change
Expand Up @@ -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 (
Expand Down

0 comments on commit 13f9b62

Please sign in to comment.