Commit a5a24b76 authored by Guido van Rossum's avatar Guido van Rossum

Added has_option(); fix bug in get() which botched interpolation if

'%(' was found in first position (found by Fred Drake).
parent 6a8d84b0
...@@ -33,9 +33,15 @@ ConfigParser -- responsible for for parsing a list of ...@@ -33,9 +33,15 @@ ConfigParser -- responsible for for parsing a list of
sections() sections()
return all the configuration section names, sans DEFAULT return all the configuration section names, sans DEFAULT
has_section(section)
return whether the given section exists
options(section) options(section)
return list of configuration options for the named section return list of configuration options for the named section
has_option(section, option)
return whether the given section has the given option
read(filenames) read(filenames)
read and parse the list of named configuration files, given by read and parse the list of named configuration files, given by
name. A single filename is also allowed. Non-existing files name. A single filename is also allowed. Non-existing files
...@@ -165,6 +171,7 @@ class ConfigParser: ...@@ -165,6 +171,7 @@ class ConfigParser:
return self.__sections.has_key(section) return self.__sections.has_key(section)
def options(self, section): def options(self, section):
"""Return a list of option names for the given section name."""
try: try:
opts = self.__sections[section].copy() opts = self.__sections[section].copy()
except KeyError: except KeyError:
...@@ -172,6 +179,14 @@ class ConfigParser: ...@@ -172,6 +179,14 @@ class ConfigParser:
opts.update(self.__defaults) opts.update(self.__defaults)
return opts.keys() return opts.keys()
def has_option(self, section, option):
"""Return whether the given section has the given option."""
try:
opts = self.__sections[section]
except KeyError:
raise NoSectionError(section)
return opts.has_key(option)
def read(self, filenames): def read(self, filenames):
"""Read and parse a filename or a list of filenames. """Read and parse a filename or a list of filenames.
...@@ -245,7 +260,7 @@ class ConfigParser: ...@@ -245,7 +260,7 @@ class ConfigParser:
depth = 0 depth = 0
while depth < 10: # Loop through this until it's done while depth < 10: # Loop through this until it's done
depth = depth + 1 depth = depth + 1
if not string.find(value, "%("): if string.find(value, "%(") >= 0:
try: try:
value = value % d value = value % d
except KeyError, key: except KeyError, key:
......
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