From: Martin Mares Date: Sat, 8 Aug 2009 15:16:44 +0000 (+0200) Subject: Configuration values are now cached X-Git-Tag: python-dummy-working~95 X-Git-Url: http://mj.ucw.cz/gitweb/?a=commitdiff_plain;h=6b13ac50371c389d1e8196d2a7319b26185dd3db;p=eval.git Configuration values are now cached --- diff --git a/t/moe/config.py b/t/moe/config.py index f2ca641..2a8443f 100644 --- a/t/moe/config.py +++ b/t/moe/config.py @@ -13,7 +13,7 @@ class MoeConfigEvalErr(Exception): pass class MoeConfig: - """Moe configuration file.""" + """Moe configuration file. Should be immutable once a part of a stack.""" def __init__(self, file=None, name=None): self.vars = {} @@ -116,16 +116,24 @@ class MoeConfigStack: else: self.stk = [] self.in_progress = {} + self.reset_cache() + + def reset_cache(self): + self.cache = {} def push(self, cfg): self.stk.append(cfg) + self.reset_cache() def __getitem__(self, k): + if self.cache.has_key(k): + return self.cache[k] if self.in_progress.has_key(k): raise MoeConfigEvalErr, "Definition of $%s is recursive" % k; self.in_progress[k] = 1; v = self.do_get(k, len(self.stk)-1) del self.in_progress[k] + self.cache[k] = v return v def do_get(self, k, pos): @@ -186,3 +194,4 @@ class MoeConfigStack: else: newstk.append(cfg) self.stk = newstk + self.reset_cache()