items(): New method, provided by Gustavo Niemeyer in SF bug #545096.

This commit is contained in:
Fred Drake 2002-09-27 15:49:56 +00:00
parent 309db061af
commit 2ca041fde0
2 changed files with 40 additions and 0 deletions

View File

@ -189,6 +189,13 @@ values are checked in a case-insensitive manner. Any other value will
cause it to raise \exception{ValueError}.
\end{methoddesc}
\begin{methoddesc}{items}{section\optional{, raw\optional{, vars}}}
Create a generator which will return a tuple \code{(name, value)} for
each option in the given \var{section}. Optional arguments have the
same meaning as for the \code{get()} method.
\versionadded{2.3}
\end{methoddesc}
\begin{methoddesc}{set}{section, option, value}
If the given section exists, set the given option to the specified value;
otherwise raise \exception{NoSectionError}.

View File

@ -70,6 +70,10 @@ ConfigParser -- responsible for for parsing a list of
insensitively defined as 0, false, no, off for 0, and 1, true,
yes, on for 1). Returns 0 or 1.
items(section, raw=0, vars=None)
return a list of tuples with (name, value) for each option
in the section.
remove_section(section)
remove the given file section and all its options
@ -278,6 +282,35 @@ class ConfigParser:
return value
return self._interpolate(section, option, value, d)
def items(self, section, raw=0, vars=None):
"""Return a list of tuples with (name, value) for each option
in the section.
All % interpolations are expanded in the return values, based on the
defaults passed into the constructor, unless the optional argument
`raw' is true. Additional substitutions may be provided using the
`vars' argument, which must be a dictionary whose contents overrides
any pre-existing defaults.
The section DEFAULT is special.
"""
d = self.__defaults.copy()
try:
d.update(self.__sections[section])
except KeyError:
if section != DEFAULTSECT:
raise NoSectionError(section)
# Update with the entry specific variables
if vars:
d.update(vars)
if raw:
for option in self.options(section):
yield (option, d[option])
else:
for option in self.options(section):
yield (option,
self._interpolate(section, option, d[option], d))
def _interpolate(self, section, option, rawval, vars):
# do the string interpolation
value = rawval