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",)
"""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." )