diff --git a/qiskit_ibm_runtime/qiskit_runtime_service.py b/qiskit_ibm_runtime/qiskit_runtime_service.py index 9566138ff..667d0f5cd 100644 --- a/qiskit_ibm_runtime/qiskit_runtime_service.py +++ b/qiskit_ibm_runtime/qiskit_runtime_service.py @@ -538,6 +538,7 @@ def backends( name: Optional[str] = None, min_num_qubits: Optional[int] = None, instance: Optional[str] = None, + dynamic_circuits: Optional[bool] = None, filters: Optional[Callable[[List["ibm_backend.IBMBackend"]], bool]] = None, **kwargs: Any, ) -> List["ibm_backend.IBMBackend"]: @@ -548,6 +549,7 @@ def backends( min_num_qubits: Minimum number of qubits the backend has to have. instance: This is only supported for ``ibm_quantum`` runtime and is in the hub/group/project format. + dynamic_circuits: Filter by whether the backend supports dynamic circuits. filters: More complex filters, such as lambda functions. For example:: @@ -630,6 +632,15 @@ def backends( backends = list( filter(lambda b: b.configuration().n_qubits >= min_num_qubits, backends) ) + + if dynamic_circuits is not None: + backends = list( + filter( + lambda b: ("qasm3" in getattr(b.configuration(), "supported_features", [])) + == dynamic_circuits, + backends, + ) + ) return filter_backends(backends, filters=filters, **kwargs) def _set_backend_config(self, backend_name: str, instance: Optional[str] = None) -> None: diff --git a/releasenotes/notes/dynamic-circuits-filter-59f771a9b43c00cd.yaml b/releasenotes/notes/dynamic-circuits-filter-59f771a9b43c00cd.yaml new file mode 100644 index 000000000..ede5247f3 --- /dev/null +++ b/releasenotes/notes/dynamic-circuits-filter-59f771a9b43c00cd.yaml @@ -0,0 +1,5 @@ +--- +features: + - | + Added a new parameter, `dynamic_circuits` to :meth:`~qiskit_ibm_runtime.QiskitRuntimeService.backends` + to allow filtering of backends that support dynamic circuits.