Skip to content

Commit 714503a

Browse files
authored
experiments: only show queued experiments for the current commit (#4462)
1 parent 01a6580 commit 714503a

File tree

2 files changed

+48
-5
lines changed

2 files changed

+48
-5
lines changed

dvc/repo/experiments/show.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -73,10 +73,11 @@ def show(
7373

7474
# collect queued (not yet reproduced) experiments
7575
for stash_rev, (_, baseline_rev) in repo.experiments.stash_revs.items():
76-
with repo.experiments.chdir():
77-
experiment = _collect_experiment(
78-
repo.experiments.exp_dvc, stash_rev, stash=True
79-
)
80-
res[baseline_rev][stash_rev] = experiment
76+
if baseline_rev in revs:
77+
with repo.experiments.chdir():
78+
experiment = _collect_experiment(
79+
repo.experiments.exp_dvc, stash_rev, stash=True
80+
)
81+
res[baseline_rev][stash_rev] = experiment
8182

8283
return res

tests/func/experiments/test_show.py

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,3 +60,45 @@ def test_show_experiment(tmp_dir, scm, dvc):
6060
else:
6161
assert exp["metrics"]["metrics.yaml"] == expected_params
6262
assert exp["params"]["params.yaml"] == expected_params
63+
64+
65+
def test_show_queued(tmp_dir, scm, dvc):
66+
tmp_dir.gen("copy.py", COPY_SCRIPT)
67+
tmp_dir.gen("params.yaml", "foo: 1")
68+
stage = dvc.run(
69+
cmd="python copy.py params.yaml metrics.yaml",
70+
metrics_no_cache=["metrics.yaml"],
71+
params=["foo"],
72+
name="foo",
73+
)
74+
scm.add(["copy.py", "params.yaml", "metrics.yaml", "dvc.yaml", "dvc.lock"])
75+
scm.commit("baseline")
76+
baseline_rev = scm.get_rev()
77+
78+
dvc.reproduce(
79+
stage.addressing, experiment=True, params=["foo=2"], queue=True
80+
)
81+
exp_rev = dvc.experiments.scm.resolve_rev("stash@{0}")
82+
83+
results = dvc.experiments.show()[baseline_rev]
84+
assert len(results) == 2
85+
exp = results[exp_rev]
86+
assert exp["queued"]
87+
assert exp["params"]["params.yaml"] == {"foo": 2}
88+
89+
# test that only queued experiments for the current baseline are returned
90+
tmp_dir.gen("foo", "foo")
91+
scm.add(["foo"])
92+
scm.commit("new commit")
93+
new_rev = scm.get_rev()
94+
95+
dvc.reproduce(
96+
stage.addressing, experiment=True, params=["foo=3"], queue=True
97+
)
98+
exp_rev = dvc.experiments.scm.resolve_rev("stash@{0}")
99+
100+
results = dvc.experiments.show()[new_rev]
101+
assert len(results) == 2
102+
exp = results[exp_rev]
103+
assert exp["queued"]
104+
assert exp["params"]["params.yaml"] == {"foo": 3}

0 commit comments

Comments
 (0)