diff --git a/src/borg/archiver/_common.py b/src/borg/archiver/_common.py index 016c8daa91..415371639c 100644 --- a/src/borg/archiver/_common.py +++ b/src/borg/archiver/_common.py @@ -13,12 +13,9 @@ from ..helpers.nanorst import rst_to_terminal from ..manifest import Manifest, AI_HUMAN_SORT_KEYS from ..patterns import PatternMatcher -from ..legacy.remote import LegacyRemoteRepository from ..remote import RemoteRepository -from ..legacy.repository import LegacyRepository from ..repository import Repository from ..repoobj import RepoObj -from ..legacy.repoobj import RepoObj1 from ..patterns import ( ArgparsePatternAction, ArgparseExcludeFileAction, @@ -34,7 +31,12 @@ def get_repository(location, *, create, exclusive, lock_wait, lock, args, v1_or_v2): if location.proto in ("ssh", "socket"): - RemoteRepoCls = LegacyRemoteRepository if v1_or_v2 else RemoteRepository + if v1_or_v2: + from ..legacy.remote import LegacyRemoteRepository + + RemoteRepoCls = LegacyRemoteRepository + else: + RemoteRepoCls = RemoteRepository repository = RemoteRepoCls( location, create=create, exclusive=exclusive, lock_wait=lock_wait, lock=lock, args=args ) @@ -45,7 +47,12 @@ def get_repository(location, *, create, exclusive, lock_wait, lock, args, v1_or_ repository = Repository(location, create=create, exclusive=exclusive, lock_wait=lock_wait, lock=lock) else: - RepoCls = LegacyRepository if v1_or_v2 else Repository + if v1_or_v2: + from ..legacy.repository import LegacyRepository + + RepoCls = LegacyRepository + else: + RepoCls = Repository repository = RepoCls(location.path, create=create, exclusive=exclusive, lock_wait=lock_wait, lock=lock) return repository @@ -195,9 +202,13 @@ def wrapper(self, args, **kwargs): ) kwargs["other_repository"] = repository if manifest or cache: - manifest_ = Manifest.load( - repository, compatibility, other=True, ro_cls=RepoObj if repository.version > 1 else RepoObj1 - ) + if repository.version > 1: + ro_cls = RepoObj + else: + from ..legacy.repoobj import RepoObj1 + + ro_cls = RepoObj1 + manifest_ = Manifest.load(repository, compatibility, other=True, ro_cls=ro_cls) assert_secure(repository, manifest_) if manifest: kwargs["other_manifest"] = manifest_ diff --git a/src/borg/archiver/transfer_cmd.py b/src/borg/archiver/transfer_cmd.py index e37ddf57b2..a8f7f69da3 100644 --- a/src/borg/archiver/transfer_cmd.py +++ b/src/borg/archiver/transfer_cmd.py @@ -10,7 +10,6 @@ from ..helpers.argparsing import ArgumentParser, ArgumentTypeError from ..item import ChunkListEntry from ..manifest import Manifest -from ..legacy.repository import LegacyRepository from ..repository import Repository from ..logger import create_logger @@ -35,6 +34,8 @@ def transfer_chunks( If chunker_params is provided, the chunks will be re-chunked using the specified parameters. """ + from ..legacy.repository import LegacyRepository + transfer = 0 present = 0 chunks = [] diff --git a/src/borg/remote.py b/src/borg/remote.py index 5af3c41a14..2c41a5e6f0 100644 --- a/src/borg/remote.py +++ b/src/borg/remote.py @@ -36,7 +36,6 @@ from .logger import create_logger, borg_serve_log_queue from .manifest import NoManifestError from .helpers import msgpack -from .legacy.repository import LegacyRepository from .repository import Repository, StoreObjectNotFound from .version import parse_version, format_version from .helpers.datastruct import EfficientCollectionQueue @@ -358,7 +357,12 @@ def _resolve_path(self, path): return path def open(self, path, create=False, lock_wait=None, lock=True, exclusive=None, v1_or_v2=False): - self.RepoCls = LegacyRepository if v1_or_v2 else Repository + if v1_or_v2: + from .legacy.repository import LegacyRepository + + self.RepoCls = LegacyRepository + else: + self.RepoCls = Repository self.rpc_methods = self._legacy_rpc_methods if v1_or_v2 else self._rpc_methods logging.debug("Resolving repository path %r", path) path = self._resolve_path(path)