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 = {}
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):
else:
newstk.append(cfg)
self.stk = newstk
+ self.reset_cache()