From 377d0c9d586a293408d2cbf1f87bd7066d4da21a Mon Sep 17 00:00:00 2001 From: dberenbaum Date: Mon, 11 Mar 2024 08:36:07 -0400 Subject: [PATCH] get: update show-url to take remote args --- dvc/api/data.py | 9 ++------- dvc/commands/get.py | 8 +++++++- tests/unit/command/test_get.py | 24 ++++++++++++++++++++++-- 3 files changed, 31 insertions(+), 10 deletions(-) diff --git a/dvc/api/data.py b/dvc/api/data.py index 580e61d41..bea5e1d7c 100644 --- a/dvc/api/data.py +++ b/dvc/api/data.py @@ -25,7 +25,7 @@ def _wrap_exceptions(repo, url): raise PathMissingError(exc.path, url) from exc -def get_url(path, repo=None, rev=None, remote=None): +def get_url(path, repo=None, rev=None, **kwargs): """ Returns the URL to the storage location of a data file or directory tracked in a DVC repo. For Git repos, HEAD is used unless a rev argument is @@ -39,12 +39,7 @@ def get_url(path, repo=None, rev=None, remote=None): from dvc.config import NoRemoteError from dvc_data.index import StorageKeyError - repo_kwargs: dict[str, Any] = {} - if remote: - repo_kwargs["config"] = {"core": {"remote": remote}} - with Repo.open( - repo, rev=rev, subrepos=True, uninitialized=True, **repo_kwargs - ) as _repo: + with Repo.open(repo, rev=rev, subrepos=True, uninitialized=True, **kwargs) as _repo: index, entry = _repo.get_data_index_entry(path) with reraise( (StorageKeyError, ValueError), diff --git a/dvc/commands/get.py b/dvc/commands/get.py index 2014eee1d..2bbf39f2a 100644 --- a/dvc/commands/get.py +++ b/dvc/commands/get.py @@ -12,7 +12,13 @@ class CmdGet(CmdBaseNoRepo): from dvc.api import get_url from dvc.ui import ui - url = get_url(self.args.path, repo=self.args.url, rev=self.args.rev) + url = get_url( + self.args.path, + repo=self.args.url, + rev=self.args.rev, + remote=self.args.remote, + remote_config=self.args.remote_config, + ) ui.write(url, force=True) return 0 diff --git a/tests/unit/command/test_get.py b/tests/unit/command/test_get.py index 05e77b747..94c4fdf53 100644 --- a/tests/unit/command/test_get.py +++ b/tests/unit/command/test_get.py @@ -44,7 +44,21 @@ def test_get(mocker): def test_get_url(mocker, capsys): - cli_args = parse_args(["get", "repo_url", "src", "--rev", "version", "--show-url"]) + cli_args = parse_args( + [ + "get", + "repo_url", + "src", + "--rev", + "version", + "--remote", + "myremote", + "--show-url", + "--remote-config", + "k1=v1", + "k2=v2", + ] + ) assert cli_args.func == CmdGet cmd = cli_args.func(cli_args) @@ -54,4 +68,10 @@ def test_get_url(mocker, capsys): out, _ = capsys.readouterr() assert "resource_url" in out - m.assert_called_once_with("src", repo="repo_url", rev="version") + m.assert_called_once_with( + "src", + repo="repo_url", + rev="version", + remote="myremote", + remote_config={"k1": "v1", "k2": "v2"}, + )