Skip to content

Commit d1e3ece

Browse files
Merge pull request #223 from databio/dev
v0.14.2 release
2 parents 4953415 + 59130c3 commit d1e3ece

File tree

6 files changed

+26
-7
lines changed

6 files changed

+26
-7
lines changed

docs/changelog.md

+4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# Changelog
22

3+
## [0.14.2] -- 2024-05-07
4+
### Changed
5+
- Addresses [#218](https://github.com/databio/pypiper/issues/218)
6+
37
## [0.14.1] -- 2024-04-19
48
### Changed
59
- remove pipestat_project_name from PipelineManager parameters

pypiper/_version.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__ = "0.14.1"
1+
__version__ = "0.14.2"

pypiper/manager.py

+1-3
Original file line numberDiff line numberDiff line change
@@ -1290,8 +1290,6 @@ def proc_wrapup(i):
12901290
sleeptime = min((sleeptime + 0.25) * 3, 60 / len(processes))
12911291

12921292
# All jobs are done, print a final closing and job info
1293-
stop_time = time.time()
1294-
proc_message = "Command completed. {info}"
12951293
info = (
12961294
"Elapsed time: "
12971295
+ str(datetime.timedelta(seconds=self.time_elapsed(start_time)))
@@ -1308,7 +1306,7 @@ def proc_wrapup(i):
13081306

13091307
info += "\n" # finish out the
13101308
self.info("</pre>")
1311-
self.info(proc_message.format(info=info))
1309+
self.info("Command completed. {info}".format(info=info))
13121310

13131311
for rc in returncodes:
13141312
if rc != 0:

pypiper/pipeline.py

+6-2
Original file line numberDiff line numberDiff line change
@@ -332,9 +332,13 @@ def run(self, start_point=None, stop_before=None, stop_after=None):
332332

333333
print(f"Running stage: {getattr(stage, 'name', str(stage))}")
334334

335-
stage.run()
335+
try:
336+
stage.run()
337+
except Exception as e:
338+
self.manager._triage_error(e, nofail=stage.nofail)
339+
else:
340+
self.checkpoint(stage)
336341
self.executed.append(stage)
337-
self.checkpoint(stage)
338342

339343
# Add any unused stages to the collection of skips.
340344
self.skipped.extend(self._stages[stop_index:])

pypiper/stage.py

+13-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,16 @@ class Stage(object):
1717
collection of commands that is checkpointed.
1818
"""
1919

20-
def __init__(self, func, f_args=None, f_kwargs=None, name=None, checkpoint=True):
20+
def __init__(
21+
self,
22+
func,
23+
f_args=None,
24+
f_kwargs=None,
25+
name=None,
26+
checkpoint=True,
27+
*,
28+
nofail=False
29+
):
2130
"""
2231
A function, perhaps with arguments, defines the stage.
2332
@@ -26,6 +35,8 @@ def __init__(self, func, f_args=None, f_kwargs=None, name=None, checkpoint=True)
2635
:param dict f_kwargs: Keyword arguments for func
2736
:param str name: name for the phase/stage
2837
:param callable func: Object that defines how the stage will execute.
38+
:param bool nofail: Allow a failure of this stage to not fail the pipeline
39+
in which it's running
2940
"""
3041
if isinstance(func, Stage):
3142
raise TypeError("Cannot create Stage from Stage")
@@ -35,6 +46,7 @@ def __init__(self, func, f_args=None, f_kwargs=None, name=None, checkpoint=True)
3546
self.f_kwargs = f_kwargs or dict()
3647
self.name = name or func.__name__
3748
self.checkpoint = checkpoint
49+
self.nofail = nofail
3850

3951
@property
4052
def checkpoint_name(self):
+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
black

0 commit comments

Comments
 (0)