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)