Commit 49a26a02 authored by Fred Drake's avatar Fred Drake

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

parent 67fc0a17
...@@ -189,6 +189,13 @@ values are checked in a case-insensitive manner. Any other value will ...@@ -189,6 +189,13 @@ values are checked in a case-insensitive manner. Any other value will
cause it to raise \exception{ValueError}. cause it to raise \exception{ValueError}.
\end{methoddesc} \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} \begin{methoddesc}{set}{section, option, value}
If the given section exists, set the given option to the specified value; If the given section exists, set the given option to the specified value;
otherwise raise \exception{NoSectionError}. otherwise raise \exception{NoSectionError}.
......
...@@ -70,6 +70,10 @@ ConfigParser -- responsible for for parsing a list of ...@@ -70,6 +70,10 @@ ConfigParser -- responsible for for parsing a list of
insensitively defined as 0, false, no, off for 0, and 1, true, insensitively defined as 0, false, no, off for 0, and 1, true,
yes, on for 1). Returns 0 or 1. 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_section(section)
remove the given file section and all its options remove the given file section and all its options
...@@ -278,6 +282,35 @@ class ConfigParser: ...@@ -278,6 +282,35 @@ class ConfigParser:
return value return value
return self._interpolate(section, option, value, d) 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): def _interpolate(self, section, option, rawval, vars):
# do the string interpolation # do the string interpolation
value = rawval value = rawval
......
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