diff --git a/crates/accelerate/src/quantum_circuit/intern_context.rs b/crates/accelerate/src/quantum_circuit/intern_context.rs index 67b719a005cd..895cfe97ec09 100644 --- a/crates/accelerate/src/quantum_circuit/intern_context.rs +++ b/crates/accelerate/src/quantum_circuit/intern_context.rs @@ -95,6 +95,23 @@ impl InternContext { slot_lookup: HashMap::new(), } } + + pub fn __str__(&self, py: Python<'_>) -> PyObject { + let mut str = String::new(); + str.push_str("InternContext\n"); + str.push_str(" slots:\n"); + for (idx, s) in self.slots.iter().enumerate() { + if let Some(occupied) = s { + str.push_str(&*format!( + " Slot(idx={idx}, use_count={:?}, operands={:?})\n", + occupied.use_count, occupied.operands + )); + } + } + str.push_str(" free_slots:\n"); + str.push_str(&*format!(" {:?}", self.free_slots)); + str.into_py(py) + } } impl Default for InternContext { diff --git a/qiskit/circuit/library/blueprintcircuit.py b/qiskit/circuit/library/blueprintcircuit.py index 415ae8ecd117..6e19f3bf1d27 100644 --- a/qiskit/circuit/library/blueprintcircuit.py +++ b/qiskit/circuit/library/blueprintcircuit.py @@ -65,7 +65,7 @@ def _build(self) -> None: def _invalidate(self) -> None: """Invalidate the current circuit build.""" - self._data = [] + self._data = super()._new_data() self._parameter_table = ParameterTable() self.global_phase = 0 self._is_built = False diff --git a/qiskit/circuit/quantumcircuit.py b/qiskit/circuit/quantumcircuit.py index 135f4a5bb1b0..1cca0f044d93 100644 --- a/qiskit/circuit/quantumcircuit.py +++ b/qiskit/circuit/quantumcircuit.py @@ -240,8 +240,13 @@ def __init__( "qiskit.circuit.controlflow.builder.ControlFlowBuilderBlock" ] = [] - self.qregs: list[QuantumRegister] = [] - self.cregs: list[ClassicalRegister] = [] + # Skip initialization if a subclass (e.g. BlueprintCircuit) is overriding + # these via properties. + if not hasattr(type(self), "qregs"): + self.qregs: list[QuantumRegister] = [] + if not hasattr(type(self), "cregs"): + self.cregs: list[ClassicalRegister] = [] + self._qubits: list[Qubit] = [] self._clbits: list[Clbit] = []