Source code for quantify_scheduler.backends.qblox.driver_version_check
# Repository: https://gitlab.com/quantify-os/quantify-scheduler
# Licensed according to the LICENCE file on the main branch
"""Helper functions to perform the version check for qblox_instruments."""
from __future__ import annotations
import logging
[docs]
logger = logging.getLogger(__name__) 
try:
    from qblox_instruments.build import __version__ as driver_version
except ImportError:
[docs]
    driver_version = None  # Prior to v0.3.2 __version__ was not there 
[docs]
SUPPORTED_DRIVER_VERSIONS: tuple[str, ...] = ("0.14", "0.15") 
"""Tuple containing all the version supported by this version of the backend."""
[docs]
raise_on_version_mismatch: bool = True 
"""Can be set to false to override version check."""
[docs]
class DriverVersionError(Exception):
    """Raise when the installed driver version is not supported.""" 
[docs]
def verify_qblox_instruments_version(version: str | None = driver_version) -> None:
    """
    Verifies whether the installed version is supported by the qblox_backend.
    Parameters
    ----------
    version
        The Qblox driver versions (``qblox-instruments`` python package).
    Raises
    ------
    DriverVersionError
        When an incorrect or no installation of qblox-instruments was found.
    """
    if not raise_on_version_mismatch:
        logger.warning(
            f"Qblox driver version check skipped with "
            f"{__name__}.raise_on_version_mismatch={raise_on_version_mismatch}."
        )
        return
    if version is None:
        raise DriverVersionError(
            "Version check for Qblox driver (qblox-instruments) could not be "
            "performed. Either the package is not installed correctly or a version "
            "<0.3.2 was found."
        )
    major, minor, patch = version.split(".")
    if f"{major}.{minor}" not in SUPPORTED_DRIVER_VERSIONS:
        raise DriverVersionError(
            f"The installed Qblox driver (qblox-instruments) version {version} is not "
            "supported by backend. Please install one of the supported versions "
            f"({'; '.join(SUPPORTED_DRIVER_VERSIONS)}) in order to use this backend."
        )
    if f"{major}.{minor}" != SUPPORTED_DRIVER_VERSIONS[-1]:
        logger.info(
            "A newer version of Qblox driver (qblox-instruments) which is supported by "
            "the backend is available."
        )