from logging import getLogger log = getLogger(__name__) def Raise(exception): # NOQA raise exception class AuxlibError: """Mixin to identify exceptions associated with the auxlib package.""" class AuthenticationError(AuxlibError, ValueError): pass class NotFoundError(AuxlibError, KeyError): pass class InitializationError(AuxlibError, EnvironmentError): pass class SenderError(AuxlibError, IOError): pass class AssignmentError(AuxlibError, AttributeError): pass class ValidationError(AuxlibError, TypeError): def __init__(self, key, value=None, valid_types=None, msg=None): self.__cause__ = None # in python3 don't chain ValidationError exceptions if msg is not None: super().__init__(msg) elif value is None: super().__init__("Value for {} cannot be None." "".format(key)) elif valid_types is None: super().__init__("Invalid value {} for {}" "".format(value, key)) else: super().__init__( "{} must be of type {}, not {}" "".format(key, valid_types, repr(value)) ) class ThisShouldNeverHappenError(AuxlibError, AttributeError): pass