[kernel] r18496 - dists/trunk/linux-2.6/debian/lib/python/debian_linux

Bastian Blank waldi at alioth.debian.org
Wed Jan 11 20:19:24 UTC 2012


Author: waldi
Date: Wed Jan 11 20:19:22 2012
New Revision: 18496

Log:
debian/lib/python/debian_linux/config.py: Return base object for config.

Modified:
   dists/trunk/linux-2.6/debian/lib/python/debian_linux/config.py

Modified: dists/trunk/linux-2.6/debian/lib/python/debian_linux/config.py
==============================================================================
--- dists/trunk/linux-2.6/debian/lib/python/debian_linux/config.py	Wed Jan 11 20:01:55 2012	(r18495)
+++ dists/trunk/linux-2.6/debian/lib/python/debian_linux/config.py	Wed Jan 11 20:19:22 2012	(r18496)
@@ -107,9 +107,7 @@
                 self[section_real] = data
 
 
-class ConfigCoreHierarchy(ConfigCore):
-    config_name = "defines"
-
+class ConfigCoreHierarchy(object):
     schemas = {
         'abi': {
             'ignore-changes': SchemaItemList(),
@@ -142,83 +140,92 @@
         }
     }
 
-    def __init__(self, dirs=[]):
-        super(ConfigCoreHierarchy, self).__init__()
-        self._dirs = dirs
-        self._read_base()
-
-    def _read_arch(self, arch):
-        config = ConfigParser(self.schemas)
-        config.read(self.get_files("%s/%s" % (arch, self.config_name)))
-
-        featuresets = config['base', ].get('featuresets', [])
-        flavours = config['base', ].get('flavours', [])
-
-        for section in iter(config):
-            if section[0] in featuresets:
-                real = (section[-1], arch, section[0])
-            elif len(section) > 1:
-                real = (section[-1], arch, None) + section[:-1]
-            else:
-                real = (section[-1], arch) + section[:-1]
-            s = self.get(real, {})
-            s.update(config[section])
-            self[tuple(real)] = s
-
-        for featureset in featuresets:
-            self._read_arch_featureset(arch, featureset)
-
-        if flavours:
-            base = self['base', arch]
-            featuresets.insert(0, 'none')
-            base['featuresets'] = featuresets
-            del base['flavours']
-            self['base', arch] = base
-            self['base', arch, 'none'] = {'flavours': flavours, 'implicit-flavour': True}
-
-    def _read_arch_featureset(self, arch, featureset):
-        config = ConfigParser(self.schemas)
-        config.read(self.get_files("%s/%s/%s" % (arch, featureset, self.config_name)))
-
-        flavours = config['base', ].get('flavours', [])
-
-        for section in iter(config):
-            real = (section[-1], arch, featureset) + section[:-1]
-            s = self.get(real, {})
-            s.update(config[section])
-            self[tuple(real)] = s
-
-    def _read_base(self):
-        config = ConfigParser(self.schemas)
-        config.read(self.get_files(self.config_name))
-
-        arches = config['base', ]['arches']
-        featuresets = config['base', ].get('featuresets', [])
-
-        for section in iter(config):
-            if section[0].startswith('featureset-'):
-                real = (section[-1], None, section[0].lstrip('featureset-'))
-            else:
-                real = (section[-1],) + section[1:]
-            self[real] = config[section]
-
-        for arch in arches:
-            self._read_arch(arch)
-        for featureset in featuresets:
-            self._read_featureset(featureset)
-
-    def _read_featureset(self, featureset):
-        config = ConfigParser(self.schemas)
-        config.read(self.get_files("featureset-%s/%s" % (featureset, self.config_name)))
-
-        for section in iter(config):
-            real = (section[-1], None, featureset)
-            s = self.get(real, {})
-            s.update(config[section])
-            self[real] = s
+    def __new__(cls, dirs=[]):
+        return cls.Reader(dirs, cls.schemas)()
+
+    class Reader(object):
+        config_name = "defines"
+
+        def __init__(self, dirs, schema):
+            self.dirs, self.schema = dirs, schema
 
-    def get_files(self, name):
-        return [os.path.join(i, name) for i in self._dirs if i]
+        def __call__(self):
+            ret = ConfigCore()
+            self.read(ret)
+            return ret
+
+        def get_files(self, name):
+            return [os.path.join(i, name) for i in self.dirs if i]
+
+        def read_arch(self, ret, arch):
+            config = ConfigParser(self.schema)
+            config.read(self.get_files("%s/%s" % (arch, self.config_name)))
+
+            featuresets = config['base', ].get('featuresets', [])
+            flavours = config['base', ].get('flavours', [])
+
+            for section in iter(config):
+                if section[0] in featuresets:
+                    real = (section[-1], arch, section[0])
+                elif len(section) > 1:
+                    real = (section[-1], arch, None) + section[:-1]
+                else:
+                    real = (section[-1], arch) + section[:-1]
+                s = ret.get(real, {})
+                s.update(config[section])
+                ret[tuple(real)] = s
+
+            for featureset in featuresets:
+                self.read_arch_featureset(ret, arch, featureset)
+
+            if flavours:
+                base = ret['base', arch]
+                featuresets.insert(0, 'none')
+                base['featuresets'] = featuresets
+                del base['flavours']
+                ret['base', arch] = base
+                ret['base', arch, 'none'] = {'flavours': flavours, 'implicit-flavour': True}
+
+        def read_arch_featureset(self, ret, arch, featureset):
+            config = ConfigParser(self.schema)
+            config.read(self.get_files("%s/%s/%s" % (arch, featureset, self.config_name)))
+
+            flavours = config['base', ].get('flavours', [])
+
+            for section in iter(config):
+                real = (section[-1], arch, featureset) + section[:-1]
+                s = ret.get(real, {})
+                s.update(config[section])
+                ret[tuple(real)] = s
+
+        def read(self, ret):
+            config = ConfigParser(self.schema)
+            config.read(self.get_files(self.config_name))
+
+            arches = config['base', ]['arches']
+            featuresets = config['base', ].get('featuresets', [])
+
+            for section in iter(config):
+                if section[0].startswith('featureset-'):
+                    real = (section[-1], None, section[0].lstrip('featureset-'))
+                else:
+                    real = (section[-1],) + section[1:]
+                ret[real] = config[section]
+
+            for arch in arches:
+                self.read_arch(ret, arch)
+            for featureset in featuresets:
+                self.read_featureset(ret, featureset)
+
+        def read_featureset(self, ret, featureset):
+            config = ConfigParser(self.schema)
+            config.read(self.get_files("featureset-%s/%s" % (featureset, self.config_name)))
+
+            for section in iter(config):
+                real = (section[-1], None, featureset)
+                s = ret.get(real, {})
+                s.update(config[section])
+                ret[real] = s
 
 
 class ConfigParser(object):



More information about the Kernel-svn-changes mailing list