summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorŁukasz Langa <lukasz@langa.pl>2011-04-28 10:02:05 (GMT)
committerŁukasz Langa <lukasz@langa.pl>2011-04-28 10:02:05 (GMT)
commitba702daef9a8ac03d2d2fea4b1764d38b8debbd9 (patch)
tree3a0b3e6969e9a17d7c158d6d371f6109085cddc8
parentc20566cdf8b2fc58d5075ded76468d2197181d30 (diff)
downloadcpython-ba702daef9a8ac03d2d2fea4b1764d38b8debbd9.zip
cpython-ba702daef9a8ac03d2d2fea4b1764d38b8debbd9.tar.gz
cpython-ba702daef9a8ac03d2d2fea4b1764d38b8debbd9.tar.bz2
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!
-rw-r--r--Doc/library/configparser.rst40
-rw-r--r--Lib/test/test_cfgparser.py14
2 files changed, 24 insertions, 30 deletions
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 @@ ConfigParser Objects
.. 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 @@ ConfigParser Objects
.. 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 @@ ConfigParser Objects
.. 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 @@ class FakeFile:
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 @@ class ReadFileTestCase(unittest.TestCase):
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 @@ class ReadFileTestCase(unittest.TestCase):
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 @@ class ReadFileTestCase(unittest.TestCase):
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")