mirror of
https://github.com/Stone-Red-Code/dvc.git
synced 2026-11-06 23:09:55 +01:00
reproduce: use kwargs instead of explicit arguments
This commit is contained in:
+16
-63
@@ -10,7 +10,7 @@ from dvc.utils import relpath
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def _reproduce_stage(stages, node, force, dry, interactive, no_commit):
|
||||
def _reproduce_stage(stages, node, **kwargs):
|
||||
stage = stages[node]
|
||||
|
||||
if stage.locked:
|
||||
@@ -19,13 +19,11 @@ def _reproduce_stage(stages, node, force, dry, interactive, no_commit):
|
||||
" not going to be reproduced.".format(path=stage.relpath)
|
||||
)
|
||||
|
||||
stage = stage.reproduce(
|
||||
force=force, dry=dry, interactive=interactive, no_commit=no_commit
|
||||
)
|
||||
stage = stage.reproduce(**kwargs)
|
||||
if not stage:
|
||||
return []
|
||||
|
||||
if not dry:
|
||||
if not kwargs.get("dry", False):
|
||||
stage.dump()
|
||||
|
||||
return [stage]
|
||||
@@ -35,16 +33,10 @@ def _reproduce_stage(stages, node, force, dry, interactive, no_commit):
|
||||
def reproduce(
|
||||
self,
|
||||
target=None,
|
||||
single_item=False,
|
||||
force=False,
|
||||
dry=False,
|
||||
interactive=False,
|
||||
recursive=False,
|
||||
pipeline=False,
|
||||
all_pipelines=False,
|
||||
ignore_build_cache=False,
|
||||
no_commit=False,
|
||||
downstream=False,
|
||||
recursive=False,
|
||||
**kwargs
|
||||
):
|
||||
import networkx as nx
|
||||
from dvc.stage import Stage
|
||||
@@ -52,10 +44,13 @@ def reproduce(
|
||||
if not target and not all_pipelines:
|
||||
raise ValueError()
|
||||
|
||||
interactive = kwargs.get("interactive", False)
|
||||
if not interactive:
|
||||
config = self.config
|
||||
core = config.config[config.SECTION_CORE]
|
||||
interactive = core.get(config.SECTION_CORE_INTERACTIVE, False)
|
||||
kwargs["interactive"] = core.get(
|
||||
config.SECTION_CORE_INTERACTIVE, False
|
||||
)
|
||||
|
||||
targets = []
|
||||
if recursive and os.path.isdir(target):
|
||||
@@ -82,33 +77,13 @@ def reproduce(
|
||||
ret = []
|
||||
with self.state:
|
||||
for target in targets:
|
||||
stages = _reproduce(
|
||||
self,
|
||||
target,
|
||||
single_item=single_item,
|
||||
force=force,
|
||||
dry=dry,
|
||||
interactive=interactive,
|
||||
ignore_build_cache=ignore_build_cache,
|
||||
no_commit=no_commit,
|
||||
downstream=downstream,
|
||||
)
|
||||
stages = _reproduce(self, target, **kwargs)
|
||||
ret.extend(stages)
|
||||
|
||||
return ret
|
||||
|
||||
|
||||
def _reproduce(
|
||||
self,
|
||||
target,
|
||||
single_item=False,
|
||||
force=False,
|
||||
dry=False,
|
||||
interactive=False,
|
||||
ignore_build_cache=False,
|
||||
no_commit=False,
|
||||
downstream=False,
|
||||
):
|
||||
def _reproduce(self, target, single_item=False, **kwargs):
|
||||
import networkx as nx
|
||||
from dvc.stage import Stage
|
||||
|
||||
@@ -118,35 +93,15 @@ def _reproduce(
|
||||
node = relpath(stage.path, self.root_dir)
|
||||
|
||||
if single_item:
|
||||
ret = _reproduce_stage(
|
||||
stages, node, force, dry, interactive, no_commit
|
||||
)
|
||||
ret = _reproduce_stage(stages, node, **kwargs)
|
||||
else:
|
||||
ret = _reproduce_stages(
|
||||
G,
|
||||
stages,
|
||||
node,
|
||||
force,
|
||||
dry,
|
||||
interactive,
|
||||
ignore_build_cache,
|
||||
no_commit,
|
||||
downstream,
|
||||
)
|
||||
ret = _reproduce_stages(G, stages, node, **kwargs)
|
||||
|
||||
return ret
|
||||
|
||||
|
||||
def _reproduce_stages(
|
||||
G,
|
||||
stages,
|
||||
node,
|
||||
force,
|
||||
dry,
|
||||
interactive,
|
||||
ignore_build_cache,
|
||||
no_commit,
|
||||
downstream,
|
||||
G, stages, node, downstream=False, ignore_build_cache=False, **kwargs
|
||||
):
|
||||
r"""Derive the evaluation of the given node for the given graph.
|
||||
|
||||
@@ -200,9 +155,7 @@ def _reproduce_stages(
|
||||
result = []
|
||||
for n in pipeline:
|
||||
try:
|
||||
ret = _reproduce_stage(
|
||||
stages, n, force, dry, interactive, no_commit
|
||||
)
|
||||
ret = _reproduce_stage(stages, n, **kwargs)
|
||||
|
||||
if len(ret) != 0 and ignore_build_cache:
|
||||
# NOTE: we are walking our pipeline from the top to the
|
||||
@@ -210,7 +163,7 @@ def _reproduce_stages(
|
||||
# which tells us that we should force reproducing all of
|
||||
# the other stages down below, even if their direct
|
||||
# dependencies didn't change.
|
||||
force = True
|
||||
kwargs["force"] = True
|
||||
|
||||
result += ret
|
||||
except Exception as ex:
|
||||
|
||||
+4
-5
@@ -312,10 +312,9 @@ class Stage(object):
|
||||
self.unprotect_outs()
|
||||
os.unlink(self.path)
|
||||
|
||||
def reproduce(
|
||||
self, force=False, dry=False, interactive=False, no_commit=False
|
||||
):
|
||||
if not force and not self.changed():
|
||||
def reproduce(self, interactive=False, **kwargs):
|
||||
|
||||
if not kwargs.get("force", False) and not self.changed():
|
||||
return None
|
||||
|
||||
msg = (
|
||||
@@ -328,7 +327,7 @@ class Stage(object):
|
||||
|
||||
logger.info("Reproducing '{stage}'".format(stage=self.relpath))
|
||||
|
||||
self.run(dry=dry, no_commit=no_commit, force=force)
|
||||
self.run(**kwargs)
|
||||
|
||||
logger.debug("'{stage}' was reproduced".format(stage=self.relpath))
|
||||
|
||||
|
||||
Reference in New Issue
Block a user