Skip to content

Commit 67d78cf

Browse files
author
Peter Amstutz
committed
Improve iteration over workflows that include subworkflows.
1 parent 4927a08 commit 67d78cf

File tree

1 file changed

+14
-6
lines changed

1 file changed

+14
-6
lines changed

cwltool/workflow.py

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,7 @@ def __init__(self, step):
136136
self.id = step.id
137137
self.submitted = False
138138
self.completed = False
139+
self.iterable = None
139140
self.name = uniquename("step %s" % shortname(self.id))
140141

141142
def job(self, joborder, basedir, output_callback, **kwargs):
@@ -274,19 +275,26 @@ def job(self, joborder, basedir, output_callback, move_outputs=True, **kwargs):
274275
output_dirs = set()
275276

276277
completed = 0
278+
iterables = []
277279
while completed < len(self.steps) and self.processStatus == "success":
278280
made_progress = False
279-
completed = 0
281+
280282
for step in self.steps:
281-
if step.completed:
282-
completed += 1
283-
else:
284-
for newjob in self.try_make_job(step, basedir, **kwargs):
283+
if not step.submitted:
284+
step.iterable = self.try_make_job(step, basedir, **kwargs)
285+
286+
if step.iterable:
287+
for newjob in step.iterable:
285288
if newjob:
286289
made_progress = True
287290
if newjob.outdir:
288291
output_dirs.add(newjob.outdir)
289-
yield newjob
292+
yield newjob
293+
else:
294+
break
295+
296+
completed = sum(1 for s in self.steps if s.completed)
297+
290298
if not made_progress and completed < len(self.steps):
291299
yield None
292300

0 commit comments

Comments
 (0)