diff --git a/swh/provenance/__init__.py b/swh/provenance/__init__.py --- a/swh/provenance/__init__.py +++ b/swh/provenance/__init__.py @@ -10,13 +10,13 @@ def get_archive(cls: str, **kwargs) -> "ArchiveInterface": if cls == "api": from swh.provenance.storage.archive import ArchiveStorage + from swh.storage import get_storage - return ArchiveStorage(**kwargs["storage"]) + return ArchiveStorage(get_storage(**kwargs["storage"])) elif cls == "direct": from swh.provenance.postgresql.archive import ArchivePostgreSQL - conn = connect(kwargs["db"]) - return ArchivePostgreSQL(conn) + return ArchivePostgreSQL(connect(kwargs["db"])) else: raise NotImplementedError diff --git a/swh/provenance/storage/archive.py b/swh/provenance/storage/archive.py --- a/swh/provenance/storage/archive.py +++ b/swh/provenance/storage/archive.py @@ -3,12 +3,12 @@ # from functools import lru_cache from methodtools import lru_cache -from swh.storage import get_storage +from swh.storage.interface import StorageInterface class ArchiveStorage: - def __init__(self, cls: str, **kwargs): - self.storage = get_storage(cls, **kwargs) + def __init__(self, storage: StorageInterface): + self.storage = storage @lru_cache(maxsize=1000000) def directory_ls(self, id: bytes) -> List[Dict[str, Any]]: