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