Kaydet (Commit) fb06f75c authored tarafından Guido van Rossum's avatar Guido van Rossum

Apply modified SF patch 467580: ConfigParser.getboolean(): FALSE, TRUE.

    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.]
üst 26641035
...@@ -66,8 +66,9 @@ ConfigParser -- responsible for for parsing a list of ...@@ -66,8 +66,9 @@ ConfigParser -- responsible for for parsing a list of
like get(), but convert value to a float like get(), but convert value to a float
getboolean(section, options) getboolean(section, options)
like get(), but convert value to a boolean (currently defined as 0 or like get(), but convert value to a boolean (currently case
1, only) insensitively defined as 0, false, no, off for 0, and 1, true,
yes, on for 1). Returns 0 or 1.
remove_section(section) remove_section(section)
remove the given file section and all its options remove the given file section and all its options
...@@ -306,11 +307,12 @@ class ConfigParser: ...@@ -306,11 +307,12 @@ class ConfigParser:
return self.__get(section, string.atof, option) return self.__get(section, string.atof, option)
def getboolean(self, section, option): def getboolean(self, section, option):
v = self.get(section, option) states = {'1': 1, 'yes': 1, 'true': 1, 'on': 1,
val = int(v) '0': 0, 'no': 0, 'false': 0, 'off': 0}
if val not in (0, 1): v = self.get(section, option)
if not states.has_key(v.lower()):
raise ValueError, 'Not a boolean: %s' % v raise ValueError, 'Not a boolean: %s' % v
return val return states[v.lower()]
def optionxform(self, optionstr): def optionxform(self, optionstr):
return optionstr.lower() return optionstr.lower()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment