X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;f=t%2Fmoe%2Fpipeline.py;h=22422e605904428192bc7fb66fd0003ae62fa0ec;hb=e9b511e32341f3712df0c285553378a140eaeb97;hp=bc407a2e18cc21c47e5547b5a59dcb11c3c1e4ae;hpb=f9b0b2c89eca1c93e70e80c8c7f7775a65fdccbb;p=moe.git diff --git a/t/moe/pipeline.py b/t/moe/pipeline.py index bc407a2..22422e6 100644 --- a/t/moe/pipeline.py +++ b/t/moe/pipeline.py @@ -6,9 +6,14 @@ import imp 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.""" @@ -31,27 +36,20 @@ class MoePipeline: 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 - - def add_hook(self, name): - modname = "moe.hooks." + name - moe.log.default.verbose(">> Loading hook %s\n" % name) - if not sys.modules.has_key(modname): - ## FIXME: Configuration variable for the hook directory? - try: - fp, path, desc = imp.find_module(name, ["moe/hooks"]) - except ImportError: - raise MoePipeError, "Cannot find hook module " + modname - try: - imp.load_module(modname, fp, path, desc) - finally: - fp.close() - sys.modules[modname].init(self) + moe.log.default.verbose(">> Pipeline %s finished\n" % self.name) def configure(self, names): for name in names.split():