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

'%(' was found in first position (found by Fred Drake).
This commit is contained in:
Guido van Rossum 1999-10-04 19:58:22 +00:00
parent 6a8d84b0c1
commit a5a24b76f4
1 changed files with 16 additions and 1 deletions

View File

@ -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:
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:
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:
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: