summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Doc/lib/libcfgparser.tex7
-rw-r--r--Lib/ConfigParser.py33
2 files changed, 40 insertions, 0 deletions
diff --git a/Doc/lib/libcfgparser.tex b/Doc/lib/libcfgparser.tex
index c50b456..956de15 100644
--- a/Doc/lib/libcfgparser.tex
+++ b/Doc/lib/libcfgparser.tex
@@ -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}.
diff --git a/Lib/ConfigParser.py b/Lib/ConfigParser.py
index 327f9ea..47243fb 100644
--- a/Lib/ConfigParser.py
+++ b/Lib/ConfigParser.py
@@ -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