def run(self): from dvc.repo.gc import _raise_error_if_all_disabled _raise_error_if_all_disabled( all_branches=self.args.all_branches, all_tags=self.args.all_tags, all_commits=self.args.all_commits, workspace=self.args.workspace, ) msg = "This will remove all cache except items used in " msg += "the workspace" if self.args.all_commits: msg += " and all git commits" elif self.args.all_branches and self.args.all_tags: msg += " and all git branches and tags" elif self.args.all_branches: msg += " and all git branches" elif self.args.all_tags: msg += " and all git tags" elif self.args.all_experiments: msg += " and all experiments" if self.args.repos: msg += " of the current and the following repos:" for repo_path in self.args.repos: msg += "\n - %s" % os.path.abspath(repo_path) else: msg += " of the current repo." logger.warning(msg) msg = "Are you sure you want to proceed?" if not self.args.force and not ui.confirm(msg): return 1 self.repo.gc( all_branches=self.args.all_branches, all_tags=self.args.all_tags, all_commits=self.args.all_commits, all_experiments=self.args.all_experiments, cloud=self.args.cloud, remote=self.args.remote, force=self.args.force, jobs=self.args.jobs, repos=self.args.repos, workspace=self.args.workspace, ) return 0
def run(self): _raise_error_if_all_disabled( all_branches=self.args.all_branches, all_tags=self.args.all_tags, all_commits=self.args.all_commits, workspace=self.args.workspace, ) msg = "This will remove all experiments except those derived from " msg += "the workspace" if self.args.all_commits: msg += " and all git commits" elif self.args.all_branches and self.args.all_tags: msg += " and all git branches and tags" elif self.args.all_branches: msg += " and all git branches" elif self.args.all_tags: msg += " and all git tags" msg += " of the current repo." if self.args.queued: msg += " Run queued experiments will be preserved." else: msg += " Run queued experiments will be removed." logger.warning(msg) msg = "Are you sure you want to proceed?" if not self.args.force and not ui.confirm(msg): return 1 removed = self.repo.experiments.gc( all_branches=self.args.all_branches, all_tags=self.args.all_tags, all_commits=self.args.all_commits, workspace=self.args.workspace, queued=self.args.queued, ) if removed: ui.write( f"Removed {removed} experiments.", "To remove unused cache files", "use 'dvc gc'.", ) else: ui.write("No experiments to remove.") return 0
def run(self): from dvc.exceptions import DvcException from dvc.ui import ui try: statement = ( "This will destroy all information about your pipelines," " all data files, as well as cache in .dvc/cache." "\n" "Are you sure you want to continue?") if not self.args.force and not ui.confirm(statement): raise DvcException( "cannot destroy without a confirmation from the user." " Use `-f` to force.") self.repo.destroy() except DvcException: logger.exception("failed to destroy DVC") return 1 return 0
def init( repo: "Repo", name: str = None, type: str = "default", # pylint: disable=redefined-builtin defaults: Dict[str, str] = None, overrides: Dict[str, str] = None, interactive: bool = False, force: bool = False, ) -> "Stage": from dvc.dvcfile import make_dvcfile dvcfile = make_dvcfile(repo, "dvc.yaml") name = name or type _check_stage_exists(dvcfile, name, force=force) defaults = defaults or {} overrides = overrides or {} with_live = type == "live" if interactive: defaults = init_interactive( name, defaults=defaults, live=with_live, provided=overrides, show_tree=True, ) else: if with_live: # suppress `metrics`/`params` if live is selected, unless # it is also provided via overrides/cli. # This makes output to be a checkpoint as well. defaults.pop("metrics") defaults.pop("params") else: defaults.pop("live") # suppress live otherwise context: Dict[str, str] = {**defaults, **overrides} assert "cmd" in context params_kv = [] if context.get("params"): from dvc.utils.serialize import LOADERS path = context["params"] assert isinstance(path, str) _, ext = os.path.splitext(path) params_kv = [{path: list(LOADERS[ext](path))}] checkpoint_out = bool(context.get("live")) models = context.get("models") stage = repo.stage.create( name=name, cmd=context["cmd"], deps=compact([context.get("code"), context.get("data")]), params=params_kv, metrics_no_cache=compact([context.get("metrics")]), plots_no_cache=compact([context.get("plots")]), live=context.get("live"), force=force, **{"checkpoints" if checkpoint_out else "outs": compact([models])}, ) if interactive: ui.write(Rule(style="green"), styled=True) _yaml = dumps_yaml(to_pipeline_file(cast(PipelineStage, stage))) syn = Syntax(_yaml, "yaml", theme="ansi_dark") ui.error_write(syn, styled=True) if not interactive or ui.confirm( "Do you want to add the above contents to dvc.yaml?"): with _disable_logging(): stage.dump(update_lock=False) stage.ignore_outs() else: raise DvcException("Aborting ...") return stage