Source code for swh.objstorage.exc

# Copyright (C) 2015-2024  The Software Heritage developers
# See the AUTHORS file at the top-level directory of this distribution
# License: GNU General Public License version 3, or any later version
# See top-level LICENSE file for more information
from deprecated import deprecated


def _exc_message(base: str, args):
    message = base
    if args:
        message += f": {args[0]}"
    return message


[docs] class Error(Exception): def __str__(self): return _exc_message("Object storage error on object", self.args)
[docs] class ObjNotFoundError(Error): def __str__(self): return _exc_message("Object not found", self.args)
[docs] class ObjCorruptedError(Error): def __str__(self) -> str: return _exc_message("Object corrupted", self.args)
[docs] class NoBackendsLeftError(Error): def __str__(self) -> str: return _exc_message("No backends left to read from", self.args)
[docs] class ObjStorageAPIError(Exception): """Specific internal exception of an object storage (mainly connection).""" def __str__(self): return _exc_message( "An unexpected error occurred in the api backend", self.args )
[docs] class ReadOnlyObjStorageError(Error): def __init__(self, method, *args): super().__init__(*args) self.method = method def __str__(self): return f"This object storage is Read-Only: cannot use {self.method}"
ReadOnlyObjStorage = deprecated( version="v3.1.0", reason="This exception has been renamed as ReadOnlyObjStorageError", )(ReadOnlyObjStorageError)
[docs] class NonIterableObjStorageError(Error): def __init__(self, method, *args): super().__init__(*args) self.method = method def __str__(self): return f"This object storage is not iterable: cannot use {self.method}"
NonIterableObjStorage = deprecated( version="v3.1.0", reason="This exception has been renamed as NonIterableObjStorageError", )(NonIterableObjStorageError)