class BaseStorageError(Exception): pass class StorageActionNotImplemented(Exception): def __init__(self, storage, action, message='is not implemented'): self.storage = storage self.action = action self.message = message super().__init__(self.message) def __str__(self): return f'{self.action} on class {self.storage} {self.message}' class FileDoesNotExist(BaseStorageError): def __init__(self, source, message='File does not exists on disk'): self.source = source self.message = message super().__init__(self.message) def __str__(self): return f'{self.source} -> {self.message}' class InvalidLocation(BaseStorageError): def __init__(self, location, message='Location does not exists or is not valid'): self.location = location self.message = message super().__init__(self.message) def __str__(self): return f'{self.location} -> {self.message}' class InvalidAuthentication(BaseStorageError): def __init__(self, user, message='Authentication failed'): self.user = user self.message = message super().__init__(self.message) def __str__(self): return f'{self.user} -> {self.message}' class UnknownStorageEngine(BaseStorageError): def __init__(self, engine, message='Storage engine is unknown, not available'): self.engine = engine self.message = message super().__init__(self.message) def __str__(self): return f'{self.engine} -> {self.message}' class MissingEncryptionKey(BaseStorageError): def __init__(self, message='The encryption keys are missing'): self.message = message super().__init__(self.message) def __str__(self): return f'{self.message}'