diff --git a/dvc/cli/__init__.py b/dvc/cli/__init__.py index e5bc06749..274b564fd 100644 --- a/dvc/cli/__init__.py +++ b/dvc/cli/__init__.py @@ -245,7 +245,7 @@ def main(argv=None): # noqa: C901, PLR0912, PLR0915 finally: logger.setLevel(outer_log_level) - from dvc.external_repo import clean_repos + from dvc.repo.open_repo import clean_repos # Remove cached repos in the end of the call, these are anonymous # so won't be reused by any other subsequent run anyway. diff --git a/dvc/repo/__init__.py b/dvc/repo/__init__.py index d5247cd76..850e9118f 100644 --- a/dvc/repo/__init__.py +++ b/dvc/repo/__init__.py @@ -287,18 +287,9 @@ class Repo: @staticmethod def open(url, *args, **kwargs): # noqa: A003 - if url is None: - url = os.getcwd() + from .open_repo import open_repo - if os.path.exists(url): - try: - return Repo(url, *args, **kwargs) - except NotDvcRepoError: - pass # fallthrough to external_repo - - from dvc.external_repo import external_repo - - return external_repo(url, *args, **kwargs) + return open_repo(url, *args, **kwargs) @cached_property def scm(self) -> Union["Git", "NoSCM"]: diff --git a/dvc/repo/get.py b/dvc/repo/get.py index cb397ee9e..8453f3cd8 100644 --- a/dvc/repo/get.py +++ b/dvc/repo/get.py @@ -24,8 +24,8 @@ def get(url, path, out=None, rev=None, jobs=None, force=False): import shortuuid from dvc.dvcfile import is_valid_filename - from dvc.external_repo import external_repo from dvc.fs.callbacks import Callback + from dvc.repo.open_repo import external_repo out = resolve_output(path, out, force=force) diff --git a/dvc/external_repo.py b/dvc/repo/open_repo.py similarity index 96% rename from dvc/external_repo.py rename to dvc/repo/open_repo.py index 0e93dc2d2..ed61c6163 100644 --- a/dvc/external_repo.py +++ b/dvc/repo/open_repo.py @@ -13,10 +13,9 @@ from dvc.scm import CloneError, map_scm_exception from dvc.utils import relpath if TYPE_CHECKING: + from dvc.scm import Git from dvc.types import StrPath - from .scm import Git - logger = logging.getLogger(__name__) @@ -70,6 +69,19 @@ def external_repo( _remove(path) +def open_repo(url, *args, **kwargs): + if url is None: + url = os.getcwd() + + if os.path.exists(url): + try: + return Repo(url, *args, **kwargs) + except NotDvcRepoError: + pass # fallthrough to external_repo + + return external_repo(url, *args, **kwargs) + + def erepo_factory(url, root_dir, cache_config): from dvc.fs import localfs diff --git a/tests/conftest.py b/tests/conftest.py index dbaabba91..56033439c 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -60,7 +60,7 @@ def enable_ui(): @pytest.fixture(autouse=True) def clean_repos(): - from dvc.external_repo import clean_repos + from dvc.repo.open_repo import clean_repos clean_repos() diff --git a/tests/func/test_data_cloud.py b/tests/func/test_data_cloud.py index f4d86b9dd..1204a9425 100644 --- a/tests/func/test_data_cloud.py +++ b/tests/func/test_data_cloud.py @@ -8,7 +8,7 @@ from flaky.flaky_decorator import flaky import dvc_data from dvc.cli import main from dvc.exceptions import CheckoutError -from dvc.external_repo import clean_repos +from dvc.repo.open_repo import clean_repos from dvc.stage.exceptions import StageNotFound from dvc.testing.remote_tests import TestRemote # noqa, pylint: disable=unused-import from dvc.utils.fs import remove diff --git a/tests/func/test_external_repo.py b/tests/func/test_external_repo.py index 1eedaf540..0a57e7086 100644 --- a/tests/func/test_external_repo.py +++ b/tests/func/test_external_repo.py @@ -1,7 +1,7 @@ import os from unittest.mock import ANY -from dvc.external_repo import CLONES, external_repo +from dvc.repo.open_repo import CLONES, external_repo from dvc.scm import Git from dvc.testing.tmp_dir import make_subrepo from dvc.utils import relpath diff --git a/tests/unit/test_external_repo.py b/tests/unit/repo/test_open_repo.py similarity index 98% rename from tests/unit/test_external_repo.py rename to tests/unit/repo/test_open_repo.py index cedc00a38..0f513af63 100644 --- a/tests/unit/test_external_repo.py +++ b/tests/unit/repo/test_open_repo.py @@ -3,7 +3,7 @@ from unittest.mock import call import pytest -from dvc.external_repo import external_repo +from dvc.repo.open_repo import external_repo from dvc.testing.tmp_dir import make_subrepo