Style updates for the #11670 solution after post-commit review by Ezio Melotti:

http://mail.python.org/pipermail/python-checkins/2011-April/104688.html

Thanks!
diff --git a/Doc/library/configparser.rst b/Doc/library/configparser.rst
index 49e348f..1a88bbd 100644
--- a/Doc/library/configparser.rst
+++ b/Doc/library/configparser.rst
@@ -975,7 +975,7 @@
    .. method:: read_file(f, source=None)
 
       Read and parse configuration data from *f* which must be an iterable
-      yielding Unicode strings (for example any file object).
+      yielding Unicode strings (for example files opened in text mode).
 
       Optional argument *source* specifies the name of the file being read.  If
       not given and *f* has a :attr:`name` attribute, that is used for
@@ -984,28 +984,6 @@
       .. versionadded:: 3.2
          Replaces :meth:`readfp`.
 
-      .. note::
-
-         Prior to Python 3.2, :meth:`readfp` consumed lines from the file-like
-         argument by calling its :meth:`~file.readline` method. For existing code
-         calling :meth:`readfp` with arguments which don't support iteration,
-         the following generator may be used as a wrapper around the file-like
-         object::
-
-             def readline_generator(f):
-                 line = f.readline()
-                 while line != '':
-                     yield line
-                     line = f.readline()
-
-         Before::
-
-             parser.readfp(f)
-
-         After::
-
-             parser.read_file(readline_generator(f))
-
    .. method:: read_string(string, source='<string>')
 
       Parse configuration data from a string.
@@ -1142,6 +1120,22 @@
       .. deprecated:: 3.2
          Use :meth:`read_file` instead.
 
+      .. versionchanged:: 3.2
+         :meth:`readfp` now iterates on *f* instead of calling ``f.readline()``.
+
+      For existing code calling :meth:`readfp` with arguments which don't
+      support iteration, the following generator may be used as a wrapper
+      around the file-like object::
+
+         def readline_generator(f):
+             line = f.readline()
+             while line:
+                 yield line
+                 line = f.readline()
+
+      Instead of ``parser.readfp(f)`` use
+      ``parser.read_file(readline_generator(f))``.
+
 
 .. data:: MAX_INTERPOLATION_DEPTH
 
diff --git a/Lib/test/test_cfgparser.py b/Lib/test/test_cfgparser.py
index 03e400d..299f37a 100644
--- a/Lib/test/test_cfgparser.py
+++ b/Lib/test/test_cfgparser.py
@@ -1316,7 +1316,7 @@
 def readline_generator(f):
     """As advised in Doc/library/configparser.rst."""
     line = f.readline()
-    while line != '':
+    while line:
         yield line
         line = f.readline()
 
@@ -1327,8 +1327,8 @@
         parser = configparser.ConfigParser()
         with open(file_path) as f:
             parser.read_file(f)
-        self.assertTrue("Foo Bar" in parser)
-        self.assertTrue("foo" in parser["Foo Bar"])
+        self.assertIn("Foo Bar", parser)
+        self.assertIn("foo", parser["Foo Bar"])
         self.assertEqual(parser["Foo Bar"]["foo"], "newbar")
 
     def test_iterable(self):
@@ -1337,8 +1337,8 @@
         foo=newbar""").strip().split('\n')
         parser = configparser.ConfigParser()
         parser.read_file(lines)
-        self.assertTrue("Foo Bar" in parser)
-        self.assertTrue("foo" in parser["Foo Bar"])
+        self.assertIn("Foo Bar", parser)
+        self.assertIn("foo", parser["Foo Bar"])
         self.assertEqual(parser["Foo Bar"]["foo"], "newbar")
 
     def test_readline_generator(self):
@@ -1347,8 +1347,8 @@
         with self.assertRaises(TypeError):
             parser.read_file(FakeFile())
         parser.read_file(readline_generator(FakeFile()))
-        self.assertTrue("Foo Bar" in parser)
-        self.assertTrue("foo" in parser["Foo Bar"])
+        self.assertIn("Foo Bar", parser)
+        self.assertIn("foo", parser["Foo Bar"])
         self.assertEqual(parser["Foo Bar"]["foo"], "newbar")