mirror of
https://github.com/Stone-Red-Code/dvc.git
synced 2026-11-09 07:18:27 +01:00
exp show: Add --only-changed option.
Use TabularData `drop_duplicates` to only show metrics/params with values varying across the selected experiments. Fixes #5966
This commit is contained in:
committed by
Ruslan Kuprieiev
parent
cb6f625dd9
commit
72066f233b
@@ -471,6 +471,9 @@ def show_experiments(
|
||||
}
|
||||
)
|
||||
|
||||
if kwargs.get("only_changed", False):
|
||||
td.drop_duplicates("cols")
|
||||
|
||||
td.render(
|
||||
pager=pager,
|
||||
borders=True,
|
||||
@@ -537,6 +540,7 @@ class CmdExperimentsShow(CmdBase):
|
||||
pager=not self.args.no_pager,
|
||||
csv=self.args.csv,
|
||||
markdown=self.args.markdown,
|
||||
only_changed=self.args.only_changed,
|
||||
)
|
||||
return 0
|
||||
|
||||
@@ -1033,6 +1037,15 @@ def add_parser(subparsers, parent_parser):
|
||||
),
|
||||
metavar="<n>",
|
||||
)
|
||||
experiments_show_parser.add_argument(
|
||||
"--only-changed",
|
||||
action="store_true",
|
||||
default=False,
|
||||
help=(
|
||||
"Only show metrics/params with values varying "
|
||||
"across the selected experiments."
|
||||
),
|
||||
)
|
||||
experiments_show_parser.set_defaults(func=CmdExperimentsShow)
|
||||
|
||||
EXPERIMENTS_APPLY_HELP = (
|
||||
|
||||
@@ -538,3 +538,47 @@ def test_show_csv(tmp_dir, scm, dvc, exp_stage, capsys):
|
||||
)
|
||||
in cap.out
|
||||
)
|
||||
|
||||
|
||||
def test_show_only_changed(tmp_dir, dvc, scm, capsys):
|
||||
tmp_dir.gen("copy.py", COPY_SCRIPT)
|
||||
params_file = tmp_dir / "params.yaml"
|
||||
params_data = {
|
||||
"foo": 1,
|
||||
"bar": 1,
|
||||
}
|
||||
(tmp_dir / params_file).dump(params_data)
|
||||
|
||||
dvc.run(
|
||||
cmd="python copy.py params.yaml metrics.yaml",
|
||||
metrics_no_cache=["metrics.yaml"],
|
||||
params=["foo", "bar"],
|
||||
name="copy-file",
|
||||
deps=["copy.py"],
|
||||
)
|
||||
scm.add(
|
||||
[
|
||||
"dvc.yaml",
|
||||
"dvc.lock",
|
||||
"copy.py",
|
||||
"params.yaml",
|
||||
"metrics.yaml",
|
||||
".gitignore",
|
||||
]
|
||||
)
|
||||
scm.commit("init")
|
||||
|
||||
dvc.experiments.run(params=["foo=2"])
|
||||
|
||||
capsys.readouterr()
|
||||
assert main(["exp", "show"]) == 0
|
||||
cap = capsys.readouterr()
|
||||
|
||||
print(cap)
|
||||
assert "bar" in cap.out
|
||||
|
||||
capsys.readouterr()
|
||||
assert main(["exp", "show", "--only-changed"]) == 0
|
||||
cap = capsys.readouterr()
|
||||
|
||||
assert "bar" not in cap.out
|
||||
|
||||
Reference in New Issue
Block a user