diff options
author | Łukasz Langa <lukasz@langa.pl> | 2011-04-28 10:02:58 (GMT) |
---|---|---|
committer | Łukasz Langa <lukasz@langa.pl> | 2011-04-28 10:02:58 (GMT) |
commit | e812bf7bf6b7c1826b5e2c2488176a93cc6968bc (patch) | |
tree | 955499f7168c8e072f22f165ff6fa592f28dd7fc | |
parent | 2ea72709a34e57c9c131d7006ea80bdefbcf7bfe (diff) | |
parent | ba702daef9a8ac03d2d2fea4b1764d38b8debbd9 (diff) | |
download | cpython-e812bf7bf6b7c1826b5e2c2488176a93cc6968bc.zip cpython-e812bf7bf6b7c1826b5e2c2488176a93cc6968bc.tar.gz cpython-e812bf7bf6b7c1826b5e2c2488176a93cc6968bc.tar.bz2 |
Merged styling updates for #11670 from 3.2.
-rw-r--r-- | Doc/library/configparser.rst | 40 | ||||
-rw-r--r-- | Lib/test/test_configparser.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='<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_configparser.py b/Lib/test/test_configparser.py index 03e400d..299f37a 100644 --- a/Lib/test/test_configparser.py +++ b/Lib/test/test_configparser.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") |