]> mj.ucw.cz Git - eval.git/commitdiff
Add ConfigTree.fix, improve parse_file and use it in Eval.init
authorTomas Gavenciak <gavento@ucw.cz>
Fri, 10 Sep 2010 21:55:03 +0000 (23:55 +0200)
committerTomas Gavenciak <gavento@ucw.cz>
Fri, 10 Sep 2010 21:55:03 +0000 (23:55 +0200)
t/moe/config.py
t/moe/eval.py

index bcef93be2cb841e394bc496abeb687078275b1aa..d17d1c8af7e7ccf75d236f3f120ac169230ffd3f 100644 (file)
@@ -94,6 +94,10 @@ class ConfigTree(object):
       self.variables[k].dump(prefix) for k in sorted(self.variables.keys())
       ])
 
+  def fix(self, key):
+    "Fix variable value. Fixing undefined variable raises `UndefinedError`."
+    self.lookup(key, create=True).fix()
+
   def parse(self, s, source=None, level=0):
     """Parse `s` (stream/string) into the tree, see `moe.confparser.ConfigParser` for details."""
     import moe.confparser
@@ -103,10 +107,10 @@ class ConfigTree(object):
   def parse_file(self, filename, desc=None, level=0):
     """Parse an utf-8 file into the tree, see `moe.confparser.ConfigParser` for details. 
     Names the source "`filename` <`desc`>". """
-    f = open(filename, 'rt')
-    if desc: 
-      filename += " <" + desc + ">" 
-    self.parse(f, source=filename, level=level)
+    with open(filename, 'rt') as f:
+      if desc: 
+       filename += " <" + desc + ">" 
+      self.parse(f, source=filename, level=level)
 
 
 class ConfigElem(object):
@@ -274,7 +278,7 @@ class ConfigVar(ConfigElem):
     self.fixed = True
 
   def unfix(self):
-    "Set the variable to be modifiable again."
+    "Make the variable modifiable again."
     self.fixed = False
 
   def value(self, depth=0):
index 9a964ffb9a269f98bf101976ef02d9feeab70564..1e54b4ee270e387cfd7bb53090f282a43fbaaaf7 100644 (file)
@@ -43,8 +43,7 @@ class Eval:
        
        # load config file
        self.config.fix('CONFIG')
-       with open(self['CONFIG'], 'r') as f:
-         self.config.parse(f, source=self['CONFIG'], level=30)
+       self.config.parse_file(self['CONFIG'], level=30)
        # fix variables
        self.config.fix(['LOG', 'USER_LOG', 'VERBOSE', 'HOME', 'DEBUG_LEVEL', 'TDIR'])
        # start logging