[Python-checkins] cpython (merge 3.4 -> default): Issue #21888: plistlib's load() and loads() now work if the fmt parameter is
serhiy.storchaka
python-checkins at python.org
Wed Jul 23 17:50:32 CEST 2014
http://hg.python.org/cpython/rev/275d02865d11
changeset: 91780:275d02865d11
parent: 91778:4fe27263f9d4
parent: 91779:09746dc1a3b4
user: Serhiy Storchaka <storchaka at gmail.com>
date: Wed Jul 23 18:50:19 2014 +0300
summary:
Issue #21888: plistlib's load() and loads() now work if the fmt parameter is
specified.
files:
Lib/plistlib.py | 8 +++-----
Lib/test/test_plistlib.py | 5 +++++
Misc/NEWS | 3 +++
3 files changed, 11 insertions(+), 5 deletions(-)
diff --git a/Lib/plistlib.py b/Lib/plistlib.py
--- a/Lib/plistlib.py
+++ b/Lib/plistlib.py
@@ -984,18 +984,16 @@
fp.seek(0)
for info in _FORMATS.values():
if info['detect'](header):
- p = info['parser'](
- use_builtin_types=use_builtin_types,
- dict_type=dict_type,
- )
+ P = info['parser']
break
else:
raise InvalidFileException()
else:
- p = _FORMATS[fmt]['parser'](use_builtin_types=use_builtin_types)
+ P = _FORMATS[fmt]['parser']
+ p = P(use_builtin_types=use_builtin_types, dict_type=dict_type)
return p.parse(fp)
diff --git a/Lib/test/test_plistlib.py b/Lib/test/test_plistlib.py
--- a/Lib/test/test_plistlib.py
+++ b/Lib/test/test_plistlib.py
@@ -207,6 +207,9 @@
for fmt in ALL_FORMATS:
with self.subTest(fmt=fmt):
pl = self._create(fmt=fmt)
+ pl2 = plistlib.loads(TESTDATA[fmt], fmt=fmt)
+ self.assertEqual(dict(pl), dict(pl2),
+ "generated data was not identical to Apple's output")
pl2 = plistlib.loads(TESTDATA[fmt])
self.assertEqual(dict(pl), dict(pl2),
"generated data was not identical to Apple's output")
@@ -217,6 +220,8 @@
b = BytesIO()
pl = self._create(fmt=fmt)
plistlib.dump(pl, b, fmt=fmt)
+ pl2 = plistlib.load(BytesIO(b.getvalue()), fmt=fmt)
+ self.assertEqual(dict(pl), dict(pl2))
pl2 = plistlib.load(BytesIO(b.getvalue()))
self.assertEqual(dict(pl), dict(pl2))
diff --git a/Misc/NEWS b/Misc/NEWS
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -108,6 +108,9 @@
Library
-------
+- Issue #21888: plistlib's load() and loads() now work if the fmt parameter is
+ specified.
+
- Issue #22032: __qualname__ instead of __name__ is now always used to format
fully qualified class names of Python implemented classes.
--
Repository URL: http://hg.python.org/cpython
More information about the Python-checkins
mailing list