]> mj.ucw.cz Git - moe.git/blobdiff - t/moe/pipeline.py
Fixes in config and config parsing
[moe.git] / t / moe / pipeline.py
index bc407a2e18cc21c47e5547b5a59dcb11c3c1e4ae..22422e605904428192bc7fb66fd0003ae62fa0ec 100644 (file)
@@ -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():