diff --git a/dvc/commands/experiments/show.py b/dvc/commands/experiments/show.py index 8f3370835..c1a15aae2 100644 --- a/dvc/commands/experiments/show.py +++ b/dvc/commands/experiments/show.py @@ -150,6 +150,7 @@ class CmdExperimentsShow(CmdBase): all_commits=self.args.all_commits, hide_queued=self.args.hide_queued, hide_failed=self.args.hide_failed, + hide_workspace=self.args.hide_workspace, revs=self.args.rev, num=self.args.num, sha_only=self.args.sha, @@ -279,6 +280,12 @@ def add_parser(experiments_subparsers, parent_parser): default=False, help="Hide queued experiments in the table.", ) + experiments_show_parser.add_argument( + "--hide-workspace", + action="store_true", + default=False, + help="Hide workspace row in the table.", + ) experiments_show_parser.add_argument( "--json", action="store_true", diff --git a/dvc/repo/experiments/collect.py b/dvc/repo/experiments/collect.py index 42d0ab434..a018d1b86 100644 --- a/dvc/repo/experiments/collect.py +++ b/dvc/repo/experiments/collect.py @@ -274,6 +274,7 @@ def collect( num: int = 1, hide_queued: bool = False, hide_failed: bool = False, + hide_workspace: bool = False, sha_only: bool = False, **kwargs, ) -> list["ExpState"]: @@ -303,8 +304,11 @@ def collect( repo.scm, baseline_revs, refs=cached_refs, logger=logger ) - workspace_data = collect_rev(repo, "workspace", **kwargs) - result: list[ExpState] = [workspace_data] + result: list[ExpState] = [] + if not hide_workspace: + workspace_data = collect_rev(repo, "workspace", **kwargs) + result.append(workspace_data) + queued = collect_queued(repo, baseline_revs, **kwargs) if not hide_queued else {} active = collect_active(repo, baseline_revs, **kwargs) failed = collect_failed(repo, baseline_revs, **kwargs) if not hide_failed else {} diff --git a/dvc/repo/experiments/show.py b/dvc/repo/experiments/show.py index a307718b4..7d2f74062 100644 --- a/dvc/repo/experiments/show.py +++ b/dvc/repo/experiments/show.py @@ -30,6 +30,7 @@ def show( num: int = 1, hide_queued: bool = False, hide_failed: bool = False, + hide_workspace: bool = False, sha_only: bool = False, **kwargs, ) -> list["ExpState"]: @@ -42,6 +43,7 @@ def show( num=num, hide_queued=hide_queued, hide_failed=hide_failed, + hide_workspace=hide_workspace, sha_only=sha_only, **kwargs, ) diff --git a/tests/func/experiments/test_show.py b/tests/func/experiments/test_show.py index eeb31955f..500af8f65 100644 --- a/tests/func/experiments/test_show.py +++ b/tests/func/experiments/test_show.py @@ -87,14 +87,27 @@ def test_show_branch_and_tag_name(tmp_dir, scm, dvc, exp_stage): @pytest.mark.vscode -def test_show_simple(tmp_dir, scm, dvc, exp_stage): - assert dvc.experiments.show()[0].dumpd() == { +def test_show(tmp_dir, scm, dvc, exp_stage): + workspace_result = { "rev": "workspace", "name": None, "data": make_data(rev="workspace"), "error": None, "experiments": None, } + branch_result = { + "rev": scm.get_rev(), + "name": "master", + "data": make_data(rev=scm.get_rev()), + "error": None, + "experiments": None, + } + + ret = [d.dumpd() for d in dvc.experiments.show()] + assert ret == [workspace_result, branch_result] + + ret = [d.dumpd() for d in dvc.experiments.show(hide_workspace=True)] + assert ret == [branch_result] @pytest.mark.vscode diff --git a/tests/unit/command/test_experiments.py b/tests/unit/command/test_experiments.py index 5831eacad..ce51e8a34 100644 --- a/tests/unit/command/test_experiments.py +++ b/tests/unit/command/test_experiments.py @@ -86,6 +86,7 @@ def test_experiments_show(dvc, scm, mocker): "--all-commits", "--hide-queued", "--hide-failed", + "--hide-workspace", "--sha", "--param-deps", "-n", @@ -109,6 +110,7 @@ def test_experiments_show(dvc, scm, mocker): all_commits=True, hide_queued=True, hide_failed=True, + hide_workspace=True, num=1, revs=["foo"], sha_only=True,