[PATCH v2 5/8] rtemstoolkit/configuration: Add get_sections() to get the sections.

chrisj at rtems.org chrisj at rtems.org
Mon Jun 10 07:23:12 UTC 2019


From: Chris Johns <chrisj at rtems.org>

- Fix module access when catching exceptions.
---
 rtemstoolkit/configuration.py | 28 ++++++++++++++++++++--------
 1 file changed, 20 insertions(+), 8 deletions(-)

diff --git a/rtemstoolkit/configuration.py b/rtemstoolkit/configuration.py
index 3b03296..bc3ec93 100644
--- a/rtemstoolkit/configuration.py
+++ b/rtemstoolkit/configuration.py
@@ -40,16 +40,21 @@ import re
 from rtemstoolkit import error
 from rtemstoolkit import path
 
+try:
+    import configparser
+    has_strict = True
+except:
+    # python2
+    import ConfigParser as configparser
+    has_strict = False
+
 class configuration:
 
     def __init__(self, raw = True):
         self.raw = True
-        try:
-            import configparser
+        if has_strict:
             self.config = configparser.ConfigParser(strict = False)
-        except:
-            # python2
-            import ConfigParser as configparser
+        else:
             self.config = configparser.ConfigParser()
         self.ini = None
         self.macro_filter = re.compile('\$\{.+\}')
@@ -74,9 +79,14 @@ class configuration:
                                                      raw = self.raw))]
         return os.linesep.join(s)
 
+    def get_sections(self):
+        return self.config.sections()
+
     def get_item(self, section, label, err = True):
         try:
-            rec = self.config.get(section, label, raw = self.raw).replace(os.linesep, ' ')
+            rec = self.config.get(section,
+                                  label,
+                                  raw = self.raw).replace(os.linesep, ' ')
         except:
             if err:
                 raise error.general('config: no "%s" found in "%s"' % (label, section))
@@ -88,10 +98,12 @@ class configuration:
         #
         for m in self.macro_filter.findall(rec):
             if ':' not in m:
-                raise error.general('config: interpolation is ${section:value}: %s' % (m))
+                err = 'config: interpolation is ${section:value}: %s' % (m)
+                raise error.general(err)
             section_value = m[2:-1].split(':')
             if len(section_value) != 2:
-                raise error.general('config: interpolation is ${section:value}: %s' % (m))
+                err = 'config: interpolation is ${section:value}: %s' % (m)
+                raise error.general(err)
             try:
                 ref = self.config.get(section_value[0],
                                       section_value[1],
-- 
2.20.1 (Apple Git-117)




More information about the devel mailing list