Source code for psij.exceptions

import psij
from typing import Optional


[docs]class InvalidJobException(Exception): """An exception describing a problem with a job specification.""" def __init__(self, message: str, exception: Optional[Exception] = None) -> None: """ Constructs an `InvalidJobException` while allowing properties to be initialized. :param message: see the :attr:`message` property :param exception: see the :attr:`exception` property """ self.message = message """ Retrieves the message associated with this exception. This is a descriptive message that is sufficiently clear to be presented to an end-user. """ self.exception = exception """ Returns an optional underlying exception that can potentially be used for debugging purposes, but which should not, in general, be presented to an end-user. """
[docs]class SubmitException(Exception): """ An exception representing job submission issues. This exception is thrown when the :func:`~psij.JobExecutor.submit` call fails for a reason that is independent of the job that is being submitted. """ def __init__(self, message: str, exception: Optional[Exception] = None, transient: bool = False) -> None: """ Constructs a `SubmitException` and allows properties to be initialized. :param message: see :attr:`message` :param exception: see :attr:`exception` :param transient: see :attr:`transient` """ self.message = message """ Retrieves the message associated with this exception. This is a descriptive message that is sufficiently clear to be presented to an end-user. """ self.exception = exception """ Returns an optional underlying exception that can potentially be used for debugging purposes, but which should not, in general, be presented to an end-user. """ self.transient = transient """ Returns `True` if the underlying condition that triggered this exception is transient. Jobs that cannot be submitted due to a transient exceptional condition have chance of being successfully re-submitted at a later time, which is a suggestion to client code that it could re-attempt the operation that triggered this exception. However, the exact chances of success depend on many factors and are not guaranteed in any particular case. For example, a DNS resolution failure while attempting to connect to a remote service is a transient error since it can be reasonably assumed that DNS resolution is a persistent feature of an Internet-connected network. By contrast, an authentication failure due to an invalid username/password combination would not be a transient failure. While it may be possible for a temporary defect in a service to cause such a failure, under normal operating conditions such an error would persist across subsequent re-tries until correct credentials are used. """
[docs]class UnreachableStateException(Exception): """ Indicates that a job state being waited for cannot be reached. This exception is thrown when the :func:`~psij.Job.wait` method is called with a set of states that cannot be reached by the job when the call is made. """ def __init__(self, status: 'psij.JobStatus') -> None: """ Constructs an `UnreachableStateException`. :param status: The :class:`~psij.JobStatus` that the job was in when :func:`~psij.Job.wait` was called and which prevents the desired states to be reached. """ self.status = status """ Returns the job status that has caused an implementation to determine that the desired states passed to the :func:`~psij.Job.wait` method cannot be reached. """