Skip to content

Commit 76cc70a

Browse files
authored
experiments: cleanup minor UI issues (#5147)
* exp apply: show passed exp name in CLI output instead of resolved git sha * exp res: warn that --name will be ignored when resuming without modifications * exp gc: don't re-use gc parameter check message * exp: update help strings * exp: warn if exp dir contains untracked files after tmpdir execution
1 parent 4d36bc4 commit 76cc70a

File tree

5 files changed

+43
-25
lines changed

5 files changed

+43
-25
lines changed

dvc/command/experiments.py

Lines changed: 23 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -457,10 +457,16 @@ def run(self):
457457
return 0
458458

459459

460+
def _raise_error_if_all_disabled(**kwargs):
461+
if not any(kwargs.values()):
462+
raise InvalidArgumentError(
463+
"Either of `-w|--workspace`, `-a|--all-branches`, `-T|--all-tags` "
464+
"or `--all-commits` needs to be set."
465+
)
466+
467+
460468
class CmdExperimentsGC(CmdRepro):
461469
def run(self):
462-
from dvc.repo.gc import _raise_error_if_all_disabled
463-
464470
_raise_error_if_all_disabled(
465471
all_branches=self.args.all_branches,
466472
all_tags=self.args.all_tags,
@@ -600,7 +606,7 @@ def add_parser(subparsers, parent_parser):
600606
"experiments",
601607
parents=[parent_parser],
602608
aliases=["exp"],
603-
description=append_doc_link(EXPERIMENTS_HELP, "experiments"),
609+
description=append_doc_link(EXPERIMENTS_HELP, "exp"),
604610
formatter_class=argparse.RawDescriptionHelpFormatter,
605611
help=EXPERIMENTS_HELP,
606612
)
@@ -617,7 +623,7 @@ def add_parser(subparsers, parent_parser):
617623
experiments_show_parser = experiments_subparsers.add_parser(
618624
"show",
619625
parents=[parent_parser],
620-
description=append_doc_link(EXPERIMENTS_SHOW_HELP, "experiments/show"),
626+
description=append_doc_link(EXPERIMENTS_SHOW_HELP, "exp/show"),
621627
help=EXPERIMENTS_SHOW_HELP,
622628
formatter_class=argparse.RawDescriptionHelpFormatter,
623629
)
@@ -626,20 +632,20 @@ def add_parser(subparsers, parent_parser):
626632
"--all-branches",
627633
action="store_true",
628634
default=False,
629-
help="Show metrics for all branches.",
635+
help="Show experiments derived from the tip of all Git branches.",
630636
)
631637
experiments_show_parser.add_argument(
632638
"-T",
633639
"--all-tags",
634640
action="store_true",
635641
default=False,
636-
help="Show metrics for all tags.",
642+
help="Show experiments derived from all Git tags.",
637643
)
638644
experiments_show_parser.add_argument(
639645
"--all-commits",
640646
action="store_true",
641647
default=False,
642-
help="Show metrics for all commits.",
648+
help="Show experiments derived from all Git commits.",
643649
)
644650
experiments_show_parser.add_argument(
645651
"--no-pager",
@@ -721,9 +727,7 @@ def add_parser(subparsers, parent_parser):
721727
experiments_apply_parser = experiments_subparsers.add_parser(
722728
"apply",
723729
parents=[parent_parser],
724-
description=append_doc_link(
725-
EXPERIMENTS_APPLY_HELP, "experiments/apply"
726-
),
730+
description=append_doc_link(EXPERIMENTS_APPLY_HELP, "exp/apply"),
727731
help=EXPERIMENTS_APPLY_HELP,
728732
formatter_class=argparse.RawDescriptionHelpFormatter,
729733
)
@@ -744,7 +748,7 @@ def add_parser(subparsers, parent_parser):
744748
experiments_diff_parser = experiments_subparsers.add_parser(
745749
"diff",
746750
parents=[parent_parser],
747-
description=append_doc_link(EXPERIMENTS_DIFF_HELP, "experiments/diff"),
751+
description=append_doc_link(EXPERIMENTS_DIFF_HELP, "exp/diff"),
748752
help=EXPERIMENTS_DIFF_HELP,
749753
formatter_class=argparse.RawDescriptionHelpFormatter,
750754
)
@@ -803,7 +807,7 @@ def add_parser(subparsers, parent_parser):
803807
experiments_run_parser = experiments_subparsers.add_parser(
804808
"run",
805809
parents=[parent_parser],
806-
description=append_doc_link(EXPERIMENTS_RUN_HELP, "experiments/run"),
810+
description=append_doc_link(EXPERIMENTS_RUN_HELP, "exp/run"),
807811
help=EXPERIMENTS_RUN_HELP,
808812
formatter_class=argparse.RawDescriptionHelpFormatter,
809813
)
@@ -818,9 +822,7 @@ def add_parser(subparsers, parent_parser):
818822
"resume",
819823
parents=[parent_parser],
820824
aliases=["res"],
821-
description=append_doc_link(
822-
EXPERIMENTS_RESUME_HELP, "experiments/resume"
823-
),
825+
description=append_doc_link(EXPERIMENTS_RESUME_HELP, "exp/resume"),
824826
help=EXPERIMENTS_RESUME_HELP,
825827
formatter_class=argparse.RawDescriptionHelpFormatter,
826828
)
@@ -848,9 +850,7 @@ def add_parser(subparsers, parent_parser):
848850
experiments_gc_parser = experiments_subparsers.add_parser(
849851
"gc",
850852
parents=[parent_parser],
851-
description=append_doc_link(
852-
EXPERIMENTS_GC_DESCRIPTION, "experiments/gc"
853-
),
853+
description=append_doc_link(EXPERIMENTS_GC_DESCRIPTION, "exp/gc"),
854854
help=EXPERIMENTS_GC_HELP,
855855
formatter_class=argparse.RawDescriptionHelpFormatter,
856856
)
@@ -903,9 +903,7 @@ def add_parser(subparsers, parent_parser):
903903
experiments_branch_parser = experiments_subparsers.add_parser(
904904
"branch",
905905
parents=[parent_parser],
906-
description=append_doc_link(
907-
EXPERIMENTS_BRANCH_HELP, "experiments/branch"
908-
),
906+
description=append_doc_link(EXPERIMENTS_BRANCH_HELP, "exp/branch"),
909907
help=EXPERIMENTS_BRANCH_HELP,
910908
formatter_class=argparse.RawDescriptionHelpFormatter,
911909
)
@@ -921,7 +919,7 @@ def add_parser(subparsers, parent_parser):
921919
experiments_list_parser = experiments_subparsers.add_parser(
922920
"list",
923921
parents=[parent_parser],
924-
description=append_doc_link(EXPERIMENTS_LIST_HELP, "experiments/list"),
922+
description=append_doc_link(EXPERIMENTS_LIST_HELP, "exp/list"),
925923
help=EXPERIMENTS_LIST_HELP,
926924
formatter_class=argparse.RawDescriptionHelpFormatter,
927925
)
@@ -955,7 +953,7 @@ def add_parser(subparsers, parent_parser):
955953
experiments_push_parser = experiments_subparsers.add_parser(
956954
"push",
957955
parents=[parent_parser],
958-
description=append_doc_link(EXPERIMENTS_PUSH_HELP, "experiments/push"),
956+
description=append_doc_link(EXPERIMENTS_PUSH_HELP, "exp/push"),
959957
help=EXPERIMENTS_PUSH_HELP,
960958
formatter_class=argparse.RawDescriptionHelpFormatter,
961959
)
@@ -1011,7 +1009,7 @@ def add_parser(subparsers, parent_parser):
10111009
experiments_pull_parser = experiments_subparsers.add_parser(
10121010
"pull",
10131011
parents=[parent_parser],
1014-
description=append_doc_link(EXPERIMENTS_PULL_HELP, "experiments/pull"),
1012+
description=append_doc_link(EXPERIMENTS_PULL_HELP, "exp/pull"),
10151013
help=EXPERIMENTS_PULL_HELP,
10161014
formatter_class=argparse.RawDescriptionHelpFormatter,
10171015
)
@@ -1076,6 +1074,7 @@ def _add_run_common(parser):
10761074
"Human-readable experiment name. If not specified, a name will "
10771075
"be auto-generated."
10781076
),
1077+
metavar="<name>",
10791078
)
10801079
parser.add_argument(
10811080
"--params",

dvc/repo/experiments/__init__.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,12 @@ def _stash_exp(
209209
"Resuming from tip of existing branch '%s'",
210210
branch,
211211
)
212+
if name:
213+
logger.warning(
214+
"Ignoring option '--name %s' for resumed "
215+
"experiment. Existing experiment name will"
216+
"be preserved instead."
217+
)
212218

213219
# save additional repro command line arguments
214220
self._pack_args(*args, **kwargs)

dvc/repo/experiments/apply.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ def apply(repo, rev, force=False, **kwargs):
6969

7070
dvc_checkout(repo, **kwargs)
7171

72-
repo.scm.set_ref(EXEC_APPLY, rev)
72+
repo.scm.set_ref(EXEC_APPLY, exp_rev)
7373
logger.info(
7474
"Changes for experiment '%s' have been applied to your current "
7575
"workspace.",

dvc/repo/experiments/executor/base.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ class BaseExecutor(ABC):
6161
"""
6262

6363
PACKED_ARGS_FILE = "repro.dat"
64+
WARN_UNTRACKED = False
6465

6566
def __init__(
6667
self,
@@ -304,6 +305,16 @@ def filter_pipeline(stages):
304305
ref = dvc.scm.get_ref(EXEC_BRANCH, follow=False)
305306
if ref:
306307
exp_ref = ExpRefInfo.from_ref(ref)
308+
if cls.WARN_UNTRACKED:
309+
untracked = dvc.scm.untracked_files()
310+
if untracked:
311+
logger.warning(
312+
"The following untracked files were present in the "
313+
"experiment directory after reproduction but will "
314+
"not be included in experiment commits:\n"
315+
"\t%s",
316+
", ".join(untracked),
317+
)
307318
finally:
308319
if dvc:
309320
dvc.scm.close()

dvc/repo/experiments/executor/local.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ def git_url(self) -> str:
2525
class TempDirExecutor(BaseLocalExecutor):
2626
"""Temp directory experiment executor."""
2727

28+
WARN_UNTRACKED = True
29+
2830
def __init__(
2931
self,
3032
*args,

0 commit comments

Comments
 (0)