From ba702daef9a8ac03d2d2fea4b1764d38b8debbd9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Langa?= Date: Thu, 28 Apr 2011 12:02:05 +0200 Subject: 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! --- Doc/library/configparser.rst | 40 +++++++++++++++++----------------------- Lib/test/test_cfgparser.py | 14 +++++++------- 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='') 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") -- cgit v0.12