mirror of
https://github.com/Stone-Red-Code/dvc.git
synced 2026-11-02 07:18:25 +01:00
exp show: fix --exclude-... (#5071)
* exp show: fix --exclude-... * update exp show tests * fix windows table divider
This commit is contained in:
@@ -56,7 +56,11 @@ def _filter_names(
|
||||
ret = OrderedDict({name: None for name in names})
|
||||
|
||||
if exclude:
|
||||
_filter(exclude, ret.difference_update) # type: ignore[attr-defined]
|
||||
to_remove = {}
|
||||
_filter(exclude, to_remove.update)
|
||||
for key in to_remove:
|
||||
if key in ret:
|
||||
del ret[key]
|
||||
|
||||
return [".".join(name) for name in ret]
|
||||
|
||||
|
||||
@@ -1,23 +1,13 @@
|
||||
import os
|
||||
from datetime import datetime
|
||||
|
||||
from funcy import first
|
||||
|
||||
from dvc.dvcfile import PIPELINE_FILE
|
||||
from dvc.main import main
|
||||
from dvc.repo.experiments.base import ExpRefInfo
|
||||
from tests.func.test_repro_multistage import COPY_SCRIPT
|
||||
|
||||
|
||||
def test_show_simple(tmp_dir, scm, dvc):
|
||||
tmp_dir.gen("copy.py", COPY_SCRIPT)
|
||||
tmp_dir.gen("params.yaml", "foo: 1")
|
||||
dvc.run(
|
||||
cmd="python copy.py params.yaml metrics.yaml",
|
||||
metrics_no_cache=["metrics.yaml"],
|
||||
params=["foo"],
|
||||
single_stage=True,
|
||||
)
|
||||
|
||||
def test_show_simple(tmp_dir, scm, dvc, exp_stage):
|
||||
assert dvc.experiments.show()["workspace"] == {
|
||||
"baseline": {
|
||||
"metrics": {"metrics.yaml": {"foo": 1}},
|
||||
@@ -28,23 +18,13 @@ def test_show_simple(tmp_dir, scm, dvc):
|
||||
}
|
||||
|
||||
|
||||
def test_show_experiment(tmp_dir, scm, dvc):
|
||||
tmp_dir.gen("copy.py", COPY_SCRIPT)
|
||||
tmp_dir.gen("params.yaml", "foo: 1")
|
||||
dvc.run(
|
||||
cmd="python copy.py params.yaml metrics.yaml",
|
||||
metrics_no_cache=["metrics.yaml"],
|
||||
params=["foo"],
|
||||
name="foo",
|
||||
)
|
||||
scm.add(["copy.py", "params.yaml", "metrics.yaml", "dvc.yaml", "dvc.lock"])
|
||||
scm.commit("baseline")
|
||||
def test_show_experiment(tmp_dir, scm, dvc, exp_stage):
|
||||
baseline_rev = scm.get_rev()
|
||||
timestamp = datetime.fromtimestamp(
|
||||
scm.gitpython.repo.rev_parse(baseline_rev).committed_date
|
||||
)
|
||||
|
||||
dvc.experiments.run(PIPELINE_FILE, params=["foo=2"])
|
||||
dvc.experiments.run(exp_stage.addressing, params=["foo=2"])
|
||||
results = dvc.experiments.show()
|
||||
|
||||
expected_baseline = {
|
||||
@@ -67,22 +47,12 @@ def test_show_experiment(tmp_dir, scm, dvc):
|
||||
assert exp["params"]["params.yaml"] == expected_params
|
||||
|
||||
|
||||
def test_show_queued(tmp_dir, scm, dvc):
|
||||
def test_show_queued(tmp_dir, scm, dvc, exp_stage):
|
||||
from dvc.repo.experiments.base import EXPS_STASH
|
||||
|
||||
tmp_dir.gen("copy.py", COPY_SCRIPT)
|
||||
tmp_dir.gen("params.yaml", "foo: 1")
|
||||
stage = dvc.run(
|
||||
cmd="python copy.py params.yaml metrics.yaml",
|
||||
metrics_no_cache=["metrics.yaml"],
|
||||
params=["foo"],
|
||||
name="foo",
|
||||
)
|
||||
scm.add(["copy.py", "params.yaml", "metrics.yaml", "dvc.yaml", "dvc.lock"])
|
||||
scm.commit("baseline")
|
||||
baseline_rev = scm.get_rev()
|
||||
|
||||
dvc.experiments.run(stage.addressing, params=["foo=2"], queue=True)
|
||||
dvc.experiments.run(exp_stage.addressing, params=["foo=2"], queue=True)
|
||||
exp_rev = dvc.experiments.scm.resolve_rev(f"{EXPS_STASH}@{{0}}")
|
||||
|
||||
results = dvc.experiments.show()[baseline_rev]
|
||||
@@ -97,7 +67,7 @@ def test_show_queued(tmp_dir, scm, dvc):
|
||||
scm.commit("new commit")
|
||||
new_rev = scm.get_rev()
|
||||
|
||||
dvc.experiments.run(stage.addressing, params=["foo=3"], queue=True)
|
||||
dvc.experiments.run(exp_stage.addressing, params=["foo=3"], queue=True)
|
||||
exp_rev = dvc.experiments.scm.resolve_rev(f"{EXPS_STASH}@{{0}}")
|
||||
|
||||
results = dvc.experiments.show()[new_rev]
|
||||
@@ -168,3 +138,41 @@ def test_show_checkpoint_branch(tmp_dir, scm, dvc, checkpoint_stage, capsys):
|
||||
name = ref_info.name
|
||||
assert f"╓ {name}" in cap.out
|
||||
assert f"({branch_rev[:7]})" in cap.out
|
||||
|
||||
|
||||
def test_show_filter(tmp_dir, scm, dvc, exp_stage, capsys):
|
||||
capsys.readouterr()
|
||||
assert (
|
||||
main(
|
||||
[
|
||||
"exp",
|
||||
"show",
|
||||
"--no-pager",
|
||||
"--no-timestamp",
|
||||
"--include-metrics=foo",
|
||||
"--include-params=foo",
|
||||
]
|
||||
)
|
||||
== 0
|
||||
)
|
||||
cap = capsys.readouterr()
|
||||
|
||||
div = "│" if os.name == "nt" else "┃"
|
||||
assert f"{div} foo {div} foo {div}" in cap.out
|
||||
|
||||
assert (
|
||||
main(
|
||||
[
|
||||
"exp",
|
||||
"show",
|
||||
"--no-pager",
|
||||
"--no-timestamp",
|
||||
"--exclude-metrics=foo",
|
||||
"--exclude-params=foo",
|
||||
]
|
||||
)
|
||||
== 0
|
||||
)
|
||||
cap = capsys.readouterr()
|
||||
|
||||
assert f"{div} foo {div}" not in cap.out
|
||||
|
||||
Reference in New Issue
Block a user