diff --git a/dvc/commands/experiments/pull.py b/dvc/commands/experiments/pull.py index 98acc40ec..3fab2d75b 100644 --- a/dvc/commands/experiments/pull.py +++ b/dvc/commands/experiments/pull.py @@ -3,23 +3,13 @@ import logging from dvc.cli.command import CmdBase from dvc.cli.utils import append_doc_link -from dvc.exceptions import InvalidArgumentError from dvc.ui import ui logger = logging.getLogger(__name__) class CmdExperimentsPull(CmdBase): - def raise_error_if_all_disabled(self): - if not any([self.args.experiment, self.args.all_commits, self.args.rev]): - raise InvalidArgumentError( - "Either provide an `experiment` argument, or use the " - "`--rev` or `--all-commits` flag." - ) - def run(self): - self.raise_error_if_all_disabled() - pulled_exps = self.repo.experiments.pull( self.args.git_remote, self.args.experiment, diff --git a/dvc/commands/experiments/push.py b/dvc/commands/experiments/push.py index fdd3834ca..298271046 100644 --- a/dvc/commands/experiments/push.py +++ b/dvc/commands/experiments/push.py @@ -5,20 +5,12 @@ from typing import Any, Dict from dvc.cli import completion from dvc.cli.command import CmdBase from dvc.cli.utils import append_doc_link -from dvc.exceptions import InvalidArgumentError from dvc.ui import ui logger = logging.getLogger(__name__) class CmdExperimentsPush(CmdBase): - def raise_error_if_all_disabled(self): - if not any([self.args.experiment, self.args.all_commits, self.args.rev]): - raise InvalidArgumentError( - "Either provide an `experiment` argument, or use the " - "`--rev` or `--all-commits` flag." - ) - @staticmethod def log_result(result: Dict[str, Any], remote: str): from dvc.utils import humanize @@ -59,8 +51,6 @@ class CmdExperimentsPush(CmdBase): def run(self): from dvc.repo.experiments.push import UploadError - self.raise_error_if_all_disabled() - try: result = self.repo.experiments.push( self.args.git_remote, diff --git a/dvc/repo/experiments/pull.py b/dvc/repo/experiments/pull.py index 2d4624c4f..50d54fdc5 100644 --- a/dvc/repo/experiments/pull.py +++ b/dvc/repo/experiments/pull.py @@ -32,30 +32,30 @@ def pull( # noqa: C901 exp_ref_set: Set["ExpRefInfo"] = set() if all_commits: exp_ref_set.update(exp_refs(repo.scm, git_remote)) + elif exp_names: + if isinstance(exp_names, str): + exp_names = [exp_names] + exp_ref_dict = resolve_name(repo.scm, exp_names, git_remote) + + unresolved_exp_names = [] + for exp_name, exp_ref in exp_ref_dict.items(): + if exp_ref is None: + unresolved_exp_names.append(exp_name) + else: + exp_ref_set.add(exp_ref) + + if unresolved_exp_names: + raise UnresolvedExpNamesError(unresolved_exp_names) + else: - if exp_names: - if isinstance(exp_names, str): - exp_names = [exp_names] - exp_ref_dict = resolve_name(repo.scm, exp_names, git_remote) - - unresolved_exp_names = [] - for exp_name, exp_ref in exp_ref_dict.items(): - if exp_ref is None: - unresolved_exp_names.append(exp_name) - else: - exp_ref_set.add(exp_ref) - - if unresolved_exp_names: - raise UnresolvedExpNamesError(unresolved_exp_names) - - if rev: - if isinstance(rev, str): - rev = [rev] - rev_dict = iter_revs(repo.scm, rev, num) - rev_set = set(rev_dict.keys()) - ref_info_dict = exp_refs_by_baseline(repo.scm, rev_set, git_remote) - for _, ref_info_list in ref_info_dict.items(): - exp_ref_set.update(ref_info_list) + rev = rev or "HEAD" + if isinstance(rev, str): + rev = [rev] + rev_dict = iter_revs(repo.scm, rev, num) + rev_set = set(rev_dict.keys()) + ref_info_dict = exp_refs_by_baseline(repo.scm, rev_set, git_remote) + for _, ref_info_list in ref_info_dict.items(): + exp_ref_set.update(ref_info_list) pull_result = _pull(repo, git_remote, exp_ref_set, force) diff --git a/dvc/repo/experiments/push.py b/dvc/repo/experiments/push.py index 545c4e671..81c6ed473 100644 --- a/dvc/repo/experiments/push.py +++ b/dvc/repo/experiments/push.py @@ -111,7 +111,8 @@ def push( exp_ref_set.update(exp_refs(repo.scm)) if exp_names: exp_ref_set.update(exp_refs_from_names(repo.scm, ensure_list(exp_names))) - if rev: + else: + rev = rev or "HEAD" if isinstance(rev, str): rev = [rev] exp_ref_set.update(exp_refs_from_rev(repo.scm, rev, num=num))