From: Martin Mares Date: Mon, 10 Aug 2009 10:06:43 +0000 (+0200) Subject: Renamed meta files to status files to match the Moe paper X-Git-Tag: python-dummy-working~82 X-Git-Url: http://mj.ucw.cz/gitweb/?a=commitdiff_plain;h=919b5d82c3dfeeec89ecb753d64c703b83c6f156;p=moe.git Renamed meta files to status files to match the Moe paper --- diff --git a/t/moe/batch.py b/t/moe/batch.py index edb9eef..e4e2394 100644 --- a/t/moe/batch.py +++ b/t/moe/batch.py @@ -58,7 +58,7 @@ def locate(e, filename=None): e.builtins.set("EXT", norm_ext) e.cfgs.apply_overrides("EXT_" + norm_ext) - e.meta["source"] = file + e.stat["source"] = file e.log.progress(file + "\n") def compile(e): diff --git a/t/moe/eval.py b/t/moe/eval.py index 3e313f3..3298144 100644 --- a/t/moe/eval.py +++ b/t/moe/eval.py @@ -3,7 +3,7 @@ import moe import moe.config import moe.log -import moe.meta +import moe.stat import moe.pipeline import moe.batch import moe.util @@ -18,7 +18,7 @@ class Eval: self.builtins = moe.config.MoeConfig(type="builtins") self.cfgs.push(self.builtins) self.main_pipe = moe.pipeline.MoePipeline("main") - self.meta = moe.meta.MoeMeta() + self.stat = moe.stat.MoeStatus() pass def init(self, overrides=None): @@ -63,7 +63,7 @@ class Eval: self.cfgs.push(task_cfg) self.log_config(3, "after loading the task") - self.meta["task"] = task + self.stat["task"] = task type = self.cfgs['TASK_TYPE'] if type == "batch" or type == "interactive": diff --git a/t/moe/meta.py b/t/moe/meta.py deleted file mode 100644 index 231b8df..0000000 --- a/t/moe/meta.py +++ /dev/null @@ -1,100 +0,0 @@ -#!/usr/bin/env python - -import sys -import types -import re - -key_pattern = re.compile("^[A-Za-z0-9_-]+$") - -class MoeMetaInvalid(Exception): - pass - -class MoeMeta: - """Moe meta-file.""" - - def __init__(self): - self.meta = {} - - def __getitem__(self, k): - if not self.meta.has_key(k): return None - v = self.meta[k] - if type(v) == types.ListType: - if len(v) > 0: return v[0] - else: return None - else: return v - - def __setitem__(self, k, v): - self.meta[k] = v - - def get_list(self, k): - m = self.meta - if not m.has_key(k): - m[k] = [] - elif type(m[k]) != types.ListType: - m[k] = [m[k]] - return m[k] - - def write(self, file=None, name=None): - if file is None: - if name is not None: - file = open(name, "w") - else: - file = sys.stdout - self.write_nested(file, 0) - - def write_nested(self, file, indent): - for k,v in self.meta.items(): - if type(v) == types.ListType: vals = v - else: vals = [v] - for w in vals: - if isinstance(w, MoeMeta): - file.write("\t" * indent + k + "(\n") - w.write_nested(file, indent+1); - file.write("\t" * indent + ")\n") - else: - file.write("\t" * indent + k + ":" + str(w) + "\n") - - def read(self, file=None, name=None): - if file is None: - if name is not None: - file = open(name, "r") - else: - file = sys.stdin - self.meta = {} - self.do_read(file) - - def read_val(self, k, v): - if not key_pattern.match(k): - raise MoeMetaInvalid, "Parse error: invalid key syntax" - m = self.meta - if not m.has_key(k): - m[k] = v - else: - self.get_list(k).append(v) - - def do_read(self, file): - stk = [] - this = self - for x in file.readlines(): - x = x.rstrip("\n").lstrip(" \t") - if x=="" or x.startswith("#"): - pass - else: - sep = x.find(":") - if sep >= 0: - k = x[:sep] - v = x[sep+1:] - this.read_val(k, v) - elif x.endswith("("): - k = x[:-1] - new = MoeMeta() - this.read_val(k, new) - stk.append(this) - this = new - elif x == ")": - if len(stk) == 0: - raise MoeMetaInvalid, "Parse error: incorrect nesting" - else: - this = stk.pop() - else: - raise MoeMetaInvalid, "Parse error: malformed line" diff --git a/t/moe/status.py b/t/moe/status.py new file mode 100644 index 0000000..936659e --- /dev/null +++ b/t/moe/status.py @@ -0,0 +1,100 @@ +#!/usr/bin/env python + +import sys +import types +import re + +key_pattern = re.compile("^[A-Za-z0-9_-]+$") + +class MoeStatusInvalid(Exception): + pass + +class MoeStatus: + """Moe status file.""" + + def __init__(self): + self.stat = {} + + def __getitem__(self, k): + if not self.stat.has_key(k): return None + v = self.stat[k] + if type(v) == types.ListType: + if len(v) > 0: return v[0] + else: return None + else: return v + + def __setitem__(self, k, v): + self.stat[k] = v + + def get_list(self, k): + m = self.stat + if not m.has_key(k): + m[k] = [] + elif type(m[k]) != types.ListType: + m[k] = [m[k]] + return m[k] + + def write(self, file=None, name=None): + if file is None: + if name is not None: + file = open(name, "w") + else: + file = sys.stdout + self.write_nested(file, 0) + + def write_nested(self, file, indent): + for k,v in self.stat.items(): + if type(v) == types.ListType: vals = v + else: vals = [v] + for w in vals: + if isinstance(w, MoeStatus): + file.write("\t" * indent + k + "(\n") + w.write_nested(file, indent+1); + file.write("\t" * indent + ")\n") + else: + file.write("\t" * indent + k + ":" + str(w) + "\n") + + def read(self, file=None, name=None): + if file is None: + if name is not None: + file = open(name, "r") + else: + file = sys.stdin + self.stat = {} + self.do_read(file) + + def read_val(self, k, v): + if not key_pattern.match(k): + raise MoeStatusInvalid, "Parse error: invalid key syntax" + m = self.stat + if not m.has_key(k): + m[k] = v + else: + self.get_list(k).append(v) + + def do_read(self, file): + stk = [] + this = self + for x in file.readlines(): + x = x.rstrip("\n").lstrip(" \t") + if x=="" or x.startswith("#"): + pass + else: + sep = x.find(":") + if sep >= 0: + k = x[:sep] + v = x[sep+1:] + this.read_val(k, v) + elif x.endswith("("): + k = x[:-1] + new = MoeStatus() + this.read_val(k, new) + stk.append(this) + this = new + elif x == ")": + if len(stk) == 0: + raise MoeStatusInvalid, "Parse error: incorrect nesting" + else: + this = stk.pop() + else: + raise MoeStatusInvalid, "Parse error: malformed line" diff --git a/t/test.py b/t/test.py index b50fed1..167be98 100755 --- a/t/test.py +++ b/t/test.py @@ -4,7 +4,7 @@ import sys sys.path.append('.') import moe -import moe.meta +import moe.stat import moe.config import moe.eval import moe.pipeline @@ -34,9 +34,9 @@ except moe.MoeErr, err: e.log.shout("FATAL: %s\n" % err) sys.exit(1) except moe.SolutionErr, err: - ## FIXME: In this case, we might write the meta file + ## FIXME: In this case, we might write the status file e.log.shout("%s\n" % err) sys.exit(1) -print "\nFinal meta file:" -e.meta.write() +print "\nFinal status file:" +e.stat.write()