Skip to content

Commit

Permalink
api: Fix params_show when stage has no params
Browse files Browse the repository at this point in the history
Also fix when `deps=True` and no params in the entire pipeline.

Closes iterative#8064
  • Loading branch information
daavoo authored and efiop committed Aug 5, 2022
1 parent c7b22b4 commit 45ac64d
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 4 deletions.
9 changes: 5 additions & 4 deletions dvc/repo/params/show.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ def _is_params(dep: "Output"):


def _collect_configs(
repo: "Repo", rev, targets=None, duplicates=False
repo: "Repo", rev, targets=None, deps=False, stages=None
) -> Tuple[List["Output"], List[str]]:

params, fs_paths = collect(
Expand All @@ -45,17 +45,18 @@ def _collect_configs(
deps=True,
output_filter=_is_params,
rev=rev,
duplicates=duplicates,
duplicates=deps or stages is not None,
)
all_fs_paths = fs_paths + [p.fs_path for p in params]
if not targets:
if not any([deps, targets, stages]):
default_params = repo.fs.path.join(
repo.root_dir, ParamsDependency.DEFAULT_PARAMS_FILE
)
if default_params not in all_fs_paths and repo.fs.exists(
default_params
):
fs_paths.append(default_params)

return params, fs_paths


Expand Down Expand Up @@ -173,7 +174,7 @@ def _gather_params(
repo, rev, targets=None, deps=False, onerror=None, stages=None
):
param_outs, params_fs_paths = _collect_configs(
repo, rev, targets=targets, duplicates=deps or stages
repo, rev, targets=targets, deps=deps, stages=stages
)
params = _read_params(
repo,
Expand Down
23 changes: 23 additions & 0 deletions tests/func/api/test_params.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,11 @@ def params_repo(tmp_dir, scm, dvc):
tmp_dir.gen("params.json", '{"bar": 2, "foobar": 3}')
tmp_dir.gen("other_params.json", '{"foo": {"bar": 4}}')

dvc.run(
name="stage-0",
cmd="echo stage-0",
)

dvc.run(
name="stage-1",
cmd="echo stage-1",
Expand Down Expand Up @@ -83,6 +88,9 @@ def test_params_show_stages(params_repo):

assert api.params_show("params.json", stages="stage-3") == {"foobar": 3}

with pytest.raises(DvcException, match="No params found"):
api.params_show(stages="stage-0")


def test_params_show_revs(params_repo):
assert api.params_show(rev="HEAD~1") == {
Expand Down Expand Up @@ -145,3 +153,18 @@ def test_params_show_no_params_found(tmp_dir, dvc):
dvc.stage.add(name="echo", cmd="echo foo")
with pytest.raises(DvcException, match="No params found"):
api.params_show()


def test_params_show_stage_without_params(tmp_dir, dvc):
tmp_dir.gen("params.yaml", "foo: 1")

dvc.run(
name="stage-0",
cmd="echo stage-0",
)

with pytest.raises(DvcException, match="No params found"):
api.params_show(stages="stage-0")

with pytest.raises(DvcException, match="No params found"):
api.params_show(deps=True)

0 comments on commit 45ac64d

Please sign in to comment.