From 794dcc2a5899fb592bf99f0633bb37f2f289d4f4 Mon Sep 17 00:00:00 2001 From: Ruslan Kuprieiev Date: Sat, 14 Jul 2018 10:19:43 +0300 Subject: [PATCH] dvc: avoid collecting stages twice Signed-off-by: Ruslan Kuprieiev --- dvc/project.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/dvc/project.py b/dvc/project.py index 7c74e66cc..122405620 100644 --- a/dvc/project.py +++ b/dvc/project.py @@ -227,19 +227,20 @@ class Project(object): return [stage] def reproduce(self, target, recursive=True, force=False): - stages = nx.get_node_attributes(self.graph(), 'stage') + G = self.graph() + stages = nx.get_node_attributes(G, 'stage') node = os.path.relpath(os.path.abspath(target), self.root_dir) if node not in stages: raise NotDvcFileError(target) if recursive: - return self._reproduce_stages(stages, node, force) + return self._reproduce_stages(G, stages, node, force) return self._reproduce_stage(stages, node, force) - def _reproduce_stages(self, stages, node, force): + def _reproduce_stages(self, G, stages, node, force): result = [] - for n in nx.dfs_postorder_nodes(self.graph(), node): + for n in nx.dfs_postorder_nodes(G, node): try: result += self._reproduce_stage(stages, n, force) except Exception as ex: