From 6b13ac50371c389d1e8196d2a7319b26185dd3db Mon Sep 17 00:00:00 2001 From: Martin Mares Date: Sat, 8 Aug 2009 17:16:44 +0200 Subject: [PATCH] Configuration values are now cached --- t/moe/config.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) 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() -- 2.39.2