Skip to content

Exceptions

The errors quelware-client raises. Each of them derives from QuelwareClientError.

An error that a unit reports while it runs an instrument comes as it is: as a grpclib.GRPCError from wait_for_result(), and in RunFailedError.failures from wait_for_results(). See Triggering.

Errors of a run

RunFailedError

RunFailedError(failures, results)

Bases: QuelwareClientError

Some instruments of a run failed.

failures holds the error each of them raised, and results the results of the others.

Source code in quelware-client/src/quelware_client/core/exceptions/__init__.py
def __init__(
    self,
    failures: Mapping[ResourceId, BaseException],
    results: Mapping[ResourceId, ResultContainer],
):
    self.failures = dict(failures)
    self.results = dict(results)
    detail = "; ".join(
        f"{rid}: {err}" for rid, err in sorted(self.failures.items())
    )
    super().__init__(
        f"{len(self.failures)} of {len(self.failures) + len(self.results)} "
        f"instruments failed: {detail}"
    )

failures instance-attribute

failures = dict(failures)

results instance-attribute

results = dict(results)

NotTriggeredError

NotTriggeredError(message=None)

Bases: _ErrorWithResourceIdsMixin, QuelwareClientError

Raised when waiting for an instrument that was not triggered.

Within a session, each unit has at most one run. A new trigger on the unit replaces it, and initializing an instrument on the unit clears it. So only the instruments in the last trigger on each unit can be waited for.

Source code in quelware-client/src/quelware_client/core/exceptions/__init__.py
def __init__(self, message: str | None = None):
    if message is None:
        self.message = self.DEFAULT_MESSAGE
    else:
        self.message = message
    super().__init__(self.message)

DEFAULT_MESSAGE class-attribute instance-attribute

DEFAULT_MESSAGE = "The instruments were not in the last trigger on their unit."

UnitBusyError

UnitBusyError(message=None)

Bases: _ErrorWithUnitLabelsMixin, QuelwareClientError

Raised when a trigger or initialize of the same session is already running on the unit.

Source code in quelware-client/src/quelware_client/core/exceptions/__init__.py
def __init__(self, message: str | None = None):
    if message is None:
        self.message = self.DEFAULT_MESSAGE
    else:
        self.message = message
    super().__init__(self.message)

DEFAULT_MESSAGE class-attribute instance-attribute

DEFAULT_MESSAGE = "A trigger or initialize of this session is already running on the unit."

InitializeFailedError

InitializeFailedError(failures, units)

Bases: QuelwareClientError

Raised when the initialize of some units failed.

failures holds the error of each unit that failed, by its label. The other units were initialized.

Source code in quelware-client/src/quelware_client/core/exceptions/__init__.py
def __init__(self, failures: Mapping[UnitLabel, BaseException], units: int):
    self.failures = dict(failures)
    detail = "; ".join(f"{u}: {e}" for u, e in sorted(self.failures.items()))
    super().__init__(
        f"initialize failed on {len(self.failures)} of {units} units: {detail}"
    )

failures instance-attribute

failures = dict(failures)

Other errors

QuelwareClientError

QuelwareClientError(message=None)

Bases: Exception

Source code in quelware-client/src/quelware_client/core/exceptions/__init__.py
def __init__(self, message: str | None = None):
    if message is None:
        self.message = self.DEFAULT_MESSAGE
    else:
        self.message = message
    super().__init__(self.message)

DEFAULT_MESSAGE class-attribute instance-attribute

DEFAULT_MESSAGE = ''

message instance-attribute

message = self.DEFAULT_MESSAGE

ServiceUnavailableError

ServiceUnavailableError(message=None)

Bases: QuelwareClientError

Source code in quelware-client/src/quelware_client/core/exceptions/__init__.py
def __init__(self, message: str | None = None):
    if message is None:
        self.message = self.DEFAULT_MESSAGE
    else:
        self.message = message
    super().__init__(self.message)

DEFAULT_MESSAGE class-attribute instance-attribute

DEFAULT_MESSAGE = (
    "The requested service is not available on the server."
)

ResourceNotFoundError

ResourceNotFoundError(message=None)

Bases: _ErrorWithResourceIdsMixin, QuelwareClientError

Source code in quelware-client/src/quelware_client/core/exceptions/__init__.py
def __init__(self, message: str | None = None):
    if message is None:
        self.message = self.DEFAULT_MESSAGE
    else:
        self.message = message
    super().__init__(self.message)

DEFAULT_MESSAGE class-attribute instance-attribute

DEFAULT_MESSAGE = 'Resource not found.'

LockConflictError

LockConflictError(message=None)

Bases: _ErrorWithResourceIdsMixin, QuelwareClientError

Source code in quelware-client/src/quelware_client/core/exceptions/__init__.py
def __init__(self, message: str | None = None):
    if message is None:
        self.message = self.DEFAULT_MESSAGE
    else:
        self.message = message
    super().__init__(self.message)

InvalidUnitStatusError

InvalidUnitStatusError(message=None)

Bases: _ErrorWithUnitLabelsMixin, QuelwareClientError

Source code in quelware-client/src/quelware_client/core/exceptions/__init__.py
def __init__(self, message: str | None = None):
    if message is None:
        self.message = self.DEFAULT_MESSAGE
    else:
        self.message = message
    super().__init__(self.message)