Source code for mimiq_qiskit.provider

"""Lightweight provider that enumerates :class:`MimiqBackend` instances
for a given MIMIQ connection or local runner.

Qiskit 2.x removed the abstract ``Provider`` class; a provider is now a
plain Python object exposing ``backends()`` and ``get_backend(name)``.
:class:`MimiqProvider` follows that pattern.
"""

from __future__ import annotations

from typing import Any

from mimiq_qiskit.backend import MimiqBackend


[docs] class MimiqProvider: """Expose the MIMIQ backend for a single connection or runner. Example:: from mimiqlink import MimiqConnection from mimiq_qiskit import MimiqProvider conn = MimiqConnection(); conn.connect() provider = MimiqProvider(conn) backend = provider.get_backend("mimiq") """ def __init__(self, runner: Any, *, num_qubits: int = 64): self._runner = runner self._backends = { "mimiq": MimiqBackend( runner, name="mimiq", num_qubits=num_qubits, provider=self ), } def backends(self, name: str | None = None) -> list[MimiqBackend]: if name is None: return list(self._backends.values()) return [b for n, b in self._backends.items() if n == name] def get_backend(self, name: str = "mimiq") -> MimiqBackend: try: return self._backends[name] except KeyError as exc: raise ValueError( f"unknown backend {name!r}; available: " f"{sorted(self._backends)}" ) from exc