Source code for qstone.apps

"""QPU Computation registry"""

import importlib
import os

from qstone.apps.PyMatching import PyMatching
from qstone.apps.RB import RB
from qstone.apps.VQE import VQE
from qstone.connectors import connector

# Mapping computation name to its class
_computation_registry = {
    "VQE": VQE,
    "RB": RB,
    "PyMatching": PyMatching,
}

ENV_VARS = {
    "QPU_IP_ADDRESS": os.environ.get("QPU_IP_ADDRESS", "127.0.0.1"),
    "QPU_PORT": int(os.environ.get("QPU_PORT", "0")),
    "CONNECTOR_TYPE": connector.ConnectorType[os.environ.get("CONNECTOR", "NO_LINK")],
    "LOCKFILE": (
        os.environ.get("LOCK_FILE", "qstone.lock")
        if os.environ.get("QPU_MANAGEMENT", "NONE") == "LOCK"
        else None
    ),
    "OUTPUT_PATH": os.environ.get("OUTPUT_PATH", ""),
    "JOB_ID": os.environ.get("JOB_ID", 0),
    "NUM_QUBITS": int(os.environ.get("NUM_QUBITS", "0")),
}


[docs] def get_computation_src(src: str): """Extracts the computation src either from the standard set or from the user""" if src in _computation_registry: computation_src = _computation_registry[src] # type: ignore [abstract] else: try: src_module, src_class = src.rsplit(".", 1) computation_src = getattr(importlib.import_module(src_module), src_class) except NameError as exc: raise NameError( f"{src} app not found in standard list or as a folder" ) from exc return computation_src