@abc.abstractmethod
def delete_objects(self, keys: List[str]) -> None:
    'Delete the objects from the repository.\n\n        :param keys: list of fully qualified identifiers for the objects within the repository.\n        :raise FileNotFoundError: if any of the files does not exist.\n        :raise OSError: if any of the files could not be deleted.\n        '
    keys_exist = self.has_objects(keys)
    if (not all(keys_exist)):
        error_message = 'some of the keys provided do not correspond to any object in the repository:\n'
        for (indx, key_exists) in enumerate(keys_exist):
            if (not key_exists):
                error_message += f''' > object with key `{keys[indx]}` does not exist.
'''
        raise FileNotFoundError(error_message)
Delete the objects from the repository.

:param keys: list of fully qualified identifiers for the objects within the repository.
:raise FileNotFoundError: if any of the files does not exist.
:raise OSError: if any of the files could not be deleted.
@abc.abstractmethod
def delete_objects(self, keys: List[str]) -> None:
    'Delete the objects from the repository.\n\n        :param keys: list of fully qualified identifiers for the objects within the repository.\n        :raise FileNotFoundError: if any of the files does not exist.\n        :raise OSError: if any of the files could not be deleted.\n        '
    keys_exist = self.has_objects(keys)
    if (not all(keys_exist)):
        error_message = 'some of the keys provided do not correspond to any object in the repository:\n'
        for (indx, key_exists) in enumerate(keys_exist):
            if (not key_exists):
                error_message += f' > object with key `{keys[indx]}` does not exist.
'
        raise FileNotFoundError(error_message)