]> granicus.if.org Git - python/commitdiff
Apply modified SF patch 467580: ConfigParser.getboolean(): FALSE, TRUE.
authorGuido van Rossum <guido@python.org>
Thu, 4 Oct 2001 19:58:46 +0000 (19:58 +0000)
committerGuido van Rossum <guido@python.org>
Thu, 4 Oct 2001 19:58:46 +0000 (19:58 +0000)
    This patch allows ConfigParser.getboolean() to interpret TRUE,
    FALSE, YES, NO, ON and OFF instead just '0' and '1'.

    While just allowing '0' and '1' sounds more correct users often
    demand to use more descriptive directives in configuration
    files. Instead of forcing every programmer do brew his own
    solution a system should include the batteries for this.

[My modification to the patch is a slight rewording of the docstring
and use of lowercase instead of uppercase templates.  The code is
still case sensitive. GvR.]

Lib/ConfigParser.py

index fec847c5cee6d2e09bca966f817b825496b31d1a..788c6593ad5ae73c30175464ab7f867aee1c16aa 100644 (file)
@@ -66,8 +66,9 @@ ConfigParser -- responsible for for parsing a list of
         like get(), but convert value to a float
 
     getboolean(section, options)
-        like get(), but convert value to a boolean (currently defined as 0 or
-        1, only)
+        like get(), but convert value to a boolean (currently case
+        insensitively defined as 0, false, no, off for 0, and 1, true,
+        yes, on for 1).  Returns 0 or 1.
 
     remove_section(section)
         remove the given file section and all its options
@@ -306,11 +307,12 @@ class ConfigParser:
         return self.__get(section, string.atof, option)
 
     def getboolean(self, section, option):
-        v = self.get(section, option)
-        val = int(v)
-        if val not in (0, 1):
+        states = {'1': 1, 'yes': 1, 'true': 1, 'on': 1,
+                  '0': 0, 'no': 0, 'false': 0, 'off': 0}
+        v = self.get(section, option)       
+        if not states.has_key(v.lower()):
             raise ValueError, 'Not a boolean: %s' % v
-        return val
+        return states[v.lower()]
 
     def optionxform(self, optionstr):
         return optionstr.lower()