diff -r 027494c8ddaf Lib/plistlib.py --- a/Lib/plistlib.py Mon Jul 07 15:18:52 2014 +0300 +++ b/Lib/plistlib.py Mon Jul 07 20:39:21 2014 +0300 @@ -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 -r 027494c8ddaf Lib/test/test_plistlib.py --- a/Lib/test/test_plistlib.py Mon Jul 07 15:18:52 2014 +0300 +++ b/Lib/test/test_plistlib.py Mon Jul 07 20:39:21 2014 +0300 @@ -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))