Source code for rads.exceptions

"""Public exceptions."""

from typing import Optional

__all__ = ["RADSError", "ConfigError", "InvalidDataroot"]


[docs]class RADSError(Exception): """Base class for all public PyRADS exceptions."""
[docs]class ConfigError(RADSError): """Exception raised when there is a problem loading the configuration file. It is usually raised after another more specific exception has been caught. """ message: str """Error message.""" line: Optional[int] = None """Line that cause the exception, if known (None otherwise).""" file: Optional[str] = None """File that caused the exception, if known (None otherwise).""" original_exception: Optional[Exception] = None """Optionally the original exception (None otherwise).""" def __init__( self, message: str, line: Optional[int] = None, file: Optional[str] = None, *, original: Optional[Exception] = None, ): """ :param message: Error message. :param line: Line that cause the exception, if known. :param file: File that caused the exception, if known. :param original: Optionally the original exception. """ if line is not None: self.line = line if file: self.file = file if original is not None: self.original_exception = original if file or line: file_ = self.file if self.file else "" line_ = self.line if self.line is not None else "" super().__init__(f"{file_}:{line_}: {message}") else: super().__init__(message)
[docs]class InvalidDataroot(RADSError): """Raised when the RADS dataroot is missing or invalid."""