From 4a49ee963916bce434020e2b6c873ae6e4d04749 Mon Sep 17 00:00:00 2001 From: Ruslan Kuprieiev Date: Sat, 17 Mar 2018 13:23:58 +0200 Subject: [PATCH] dvc: don't check if stage is changed twice Signed-off-by: Ruslan Kuprieiev --- dvc/project.py | 9 ++++----- dvc/stage.py | 4 +++- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/dvc/project.py b/dvc/project.py index 0a9e3e1a4..46647fa80 100644 --- a/dvc/project.py +++ b/dvc/project.py @@ -125,12 +125,11 @@ class Project(object): return stage def _reproduce_stage(self, stages, node, force): - if not stages[node].changed() and not force: + stage = stages[node].reproduce(force=force) + if not stage: return [] - - stages[node].reproduce(force=force) - stages[node].dump() - return [stages[node]] + stage.dump() + return [stage] def reproduce(self, target, recursive=True, force=False): stages = nx.get_node_attributes(self.graph(), 'stage') diff --git a/dvc/stage.py b/dvc/stage.py index 88e4d6b11..2557ce794 100644 --- a/dvc/stage.py +++ b/dvc/stage.py @@ -80,7 +80,7 @@ class Stage(object): def reproduce(self, force=False): if not self.changed() and not force: - return + return None if self.cmd: # Removing outputs only if we actually have command to reproduce @@ -88,6 +88,8 @@ class Stage(object): self.run() + return self + @staticmethod def loadd(project, d, path): path = os.path.abspath(path)