import moe
import moe.log
-class MoePipeError(moe.MoeErr):
+class MoePipeError(moe.MoeError):
"""Failure of the MoePipeline."""
+class MoeAbortPipeline(Exception):
+
+ def __init__(self, skip_to=999):
+ self.skip_to = skip_to
+
class MoePipeline:
"""Moe pipeline."""
def run(self, *args):
self.index = 0
+ min_pri = -1
while self.index < len(self.pipe):
(pri,name,fun) = self.pipe[self.index]
- moe.log.default.verbose(">> Running %s:%s\n" % (self.name,name))
- fun(*args)
+ if pri >= min_pri:
+ moe.log.default.verbose(">> Running %s:%s\n" % (self.name,name))
+ try:
+ fun(*args)
+ except MoeAbortPipeline, err:
+ min_pri = err.skip_to
+ else:
+ moe.log.default.verbose(">> Skipping %s:%s\n" % (self.name,name))
self.index += 1
self.index = -1
+ moe.log.default.verbose(">> Pipeline %s finished\n" % self.name)
def add_hook(self, name):
modname = "moe.hooks." + name