run: use kwargs instead list of explicit arguments (#2260)

This commit is contained in:
Paweł Redzyński
2019-07-15 16:19:11 +03:00
committed by Ruslan Kuprieiev
parent e215364e6d
commit 8641773992
4 changed files with 60 additions and 140 deletions
+1 -1
View File
@@ -58,7 +58,7 @@ def _create_stages(repo, targets, fname, no_commit):
with repo.state:
for out in targets:
stage = Stage.create(repo=repo, outs=[out], add=True, fname=fname)
stage = Stage.create(repo, outs=[out], add=True, fname=fname)
if not stage:
continue
+1 -6
View File
@@ -12,12 +12,7 @@ def imp_url(
with self.state:
stage = Stage.create(
repo=self,
cmd=None,
deps=[url],
outs=[out],
fname=fname,
erepo=erepo,
self, cmd=None, deps=[url], outs=[out], fname=fname, erepo=erepo
)
if stage is None:
+3 -52
View File
@@ -4,60 +4,11 @@ from dvc.repo.scm_context import scm_context
@scm_context
def run(
self,
cmd=None,
deps=None,
outs=None,
outs_no_cache=None,
metrics=None,
metrics_no_cache=None,
fname=None,
cwd=None,
wdir=None,
no_exec=False,
overwrite=False,
ignore_build_cache=False,
remove_outs=False,
no_commit=False,
outs_persist=None,
outs_persist_no_cache=None,
):
def run(self, no_exec=False, **kwargs):
from dvc.stage import Stage
if outs is None:
outs = []
if deps is None:
deps = []
if outs_no_cache is None:
outs_no_cache = []
if metrics is None:
metrics = []
if metrics_no_cache is None:
metrics_no_cache = []
if outs_persist is None:
outs_persist = []
if outs_persist_no_cache is None:
outs_persist_no_cache = []
with self.state:
stage = Stage.create(
repo=self,
fname=fname,
cmd=cmd,
cwd=cwd,
wdir=wdir,
outs=outs,
outs_no_cache=outs_no_cache,
metrics=metrics,
metrics_no_cache=metrics_no_cache,
deps=deps,
overwrite=overwrite,
ignore_build_cache=ignore_build_cache,
remove_outs=remove_outs,
outs_persist=outs_persist,
outs_persist_no_cache=outs_persist_no_cache,
)
stage = Stage.create(self, **kwargs)
if stage is None:
return None
@@ -66,7 +17,7 @@ def run(
with self.state:
if not no_exec:
stage.run(no_commit=no_commit)
stage.run(no_commit=kwargs.get("no_commit", False))
stage.dump()
+55 -81
View File
@@ -433,41 +433,11 @@ class Stage(object):
return True
@staticmethod
def create(
repo=None,
cmd=None,
deps=None,
outs=None,
outs_no_cache=None,
metrics=None,
metrics_no_cache=None,
fname=None,
cwd=None,
wdir=None,
locked=False,
add=False,
overwrite=True,
ignore_build_cache=False,
remove_outs=False,
validate_state=True,
outs_persist=None,
outs_persist_no_cache=None,
erepo=None,
):
if outs is None:
outs = []
if deps is None:
deps = []
if outs_no_cache is None:
outs_no_cache = []
if metrics is None:
metrics = []
if metrics_no_cache is None:
metrics_no_cache = []
if outs_persist is None:
outs_persist = []
if outs_persist_no_cache is None:
outs_persist_no_cache = []
def create(repo, **kwargs):
wdir = kwargs.get("wdir", None)
cwd = kwargs.get("cwd", None)
fname = kwargs.get("fname", None)
# Backward compatibility for `cwd` option
if wdir is None and cwd is not None:
@@ -482,24 +452,25 @@ class Stage(object):
else:
wdir = os.curdir if wdir is None else wdir
stage = Stage(repo=repo, wdir=wdir, cmd=cmd, locked=locked)
stage = Stage(
repo=repo,
wdir=wdir,
cmd=kwargs.get("cmd", None),
locked=kwargs.get("locked", False),
)
Stage._fill_stage_outputs(
stage,
outs,
outs_no_cache,
metrics,
metrics_no_cache,
outs_persist,
outs_persist_no_cache,
Stage._fill_stage_outputs(stage, **kwargs)
stage.deps = dependency.loads_from(
stage, kwargs.get("deps", []), erepo=kwargs.get("erepo", None)
)
stage.deps = dependency.loads_from(stage, deps, erepo=erepo)
stage._check_circular_dependency()
stage._check_duplicated_arguments()
if not fname:
fname = Stage._stage_fname(stage.outs, add=add)
fname = Stage._stage_fname(
stage.outs, add=kwargs.get("add", False)
)
stage._check_dvc_filename(fname)
wdir = os.path.abspath(wdir)
@@ -515,8 +486,10 @@ class Stage(object):
stage.wdir = wdir
stage.path = path
ignore_build_cache = kwargs.get("ignore_build_cache", False)
# NOTE: remove outs before we check build cache
if remove_outs:
if kwargs.get("remove_outs", False):
logger.warning(
"--remove-outs is deprecated."
" It is now the default behavior,"
@@ -532,51 +505,52 @@ class Stage(object):
logger.warning("Build cache is ignored when persisting outputs.")
ignore_build_cache = True
if validate_state:
if os.path.exists(path):
if (
not ignore_build_cache
and stage.is_cached
and not stage.is_callback
):
logger.info("Stage is cached, skipping.")
return None
if os.path.exists(path):
if (
not ignore_build_cache
and stage.is_cached
and not stage.is_callback
):
logger.info("Stage is cached, skipping.")
return None
msg = (
"'{}' already exists. Do you wish to run the command and "
"overwrite it?".format(stage.relpath)
)
msg = (
"'{}' already exists. Do you wish to run the command and "
"overwrite it?".format(stage.relpath)
)
if not overwrite and not prompt.confirm(msg):
raise StageFileAlreadyExistsError(stage.relpath)
if not kwargs.get("overwrite", True) and not prompt.confirm(msg):
raise StageFileAlreadyExistsError(stage.relpath)
os.unlink(path)
os.unlink(path)
return stage
@staticmethod
def _fill_stage_outputs(
stage,
outs,
outs_no_cache,
metrics,
metrics_no_cache,
outs_persist,
outs_persist_no_cache,
):
stage.outs = output.loads_from(stage, outs, use_cache=True)
stage.outs += output.loads_from(
stage, metrics, use_cache=True, metric=True
def _fill_stage_outputs(stage, **kwargs):
stage.outs = output.loads_from(
stage, kwargs.get("outs", []), use_cache=True
)
stage.outs += output.loads_from(
stage, outs_persist, use_cache=True, persist=True
)
stage.outs += output.loads_from(stage, outs_no_cache, use_cache=False)
stage.outs += output.loads_from(
stage, metrics_no_cache, use_cache=False, metric=True
stage, kwargs.get("metrics", []), use_cache=True, metric=True
)
stage.outs += output.loads_from(
stage, outs_persist_no_cache, use_cache=False, persist=True
stage, kwargs.get("outs_persist", []), use_cache=True, persist=True
)
stage.outs += output.loads_from(
stage, kwargs.get("outs_no_cache", []), use_cache=False
)
stage.outs += output.loads_from(
stage,
kwargs.get("metrics_no_cache", []),
use_cache=False,
metric=True,
)
stage.outs += output.loads_from(
stage,
kwargs.get("outs_persist_no_cache", []),
use_cache=False,
persist=True,
)
@staticmethod