From: Hynek Schlawack Date: Tue, 29 May 2012 10:04:54 +0000 (+0200) Subject: #14835: Make plistlib output empty arrays & dicts like OS X X-Git-Tag: v3.3.0a4~23 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=52209d3a1eb03d5a9ef200ffe400c36d32d42ad1;p=python #14835: Make plistlib output empty arrays & dicts like OS X Patch by Sidney San Martín. --- diff --git a/Lib/plistlib.py b/Lib/plistlib.py index 21076db9a5..41fd8f2efd 100644 --- a/Lib/plistlib.py +++ b/Lib/plistlib.py @@ -237,20 +237,26 @@ class PlistWriter(DumbXMLWriter): self.endElement("data") def writeDict(self, d): - self.beginElement("dict") - items = sorted(d.items()) - for key, value in items: - if not isinstance(key, str): - raise TypeError("keys must be strings") - self.simpleElement("key", key) - self.writeValue(value) - self.endElement("dict") + if d: + self.beginElement("dict") + items = sorted(d.items()) + for key, value in items: + if not isinstance(key, str): + raise TypeError("keys must be strings") + self.simpleElement("key", key) + self.writeValue(value) + self.endElement("dict") + else: + self.simpleElement("dict") def writeArray(self, array): - self.beginElement("array") - for value in array: - self.writeValue(value) - self.endElement("array") + if array: + self.beginElement("array") + for value in array: + self.writeValue(value) + self.endElement("array") + else: + self.simpleElement("array") class _InternalDict(dict): diff --git a/Lib/test/test_plistlib.py b/Lib/test/test_plistlib.py index 5f980d0a2d..a9e343eb15 100644 --- a/Lib/test/test_plistlib.py +++ b/Lib/test/test_plistlib.py @@ -55,6 +55,10 @@ TESTDATA = b""" aString Doodah + anEmptyDict + + anEmptyList + anInt 728 nestedData @@ -112,6 +116,8 @@ class TestPlistlib(unittest.TestCase): someMoreData = plistlib.Data(b"\0\1\2\3" * 10), nestedData = [plistlib.Data(b"\0\1\2\3" * 10)], aDate = datetime.datetime(2004, 10, 26, 10, 33, 33), + anEmptyDict = dict(), + anEmptyList = list() ) pl['\xc5benraa'] = "That was a unicode key." return pl diff --git a/Misc/ACKS b/Misc/ACKS index 74bf123622..3abd77e011 100644 --- a/Misc/ACKS +++ b/Misc/ACKS @@ -662,6 +662,7 @@ Alex Martelli Anthony Martin Owen Martin Sébastien Martini +Sidney San Martín Roger Masse Nick Mathewson Simon Mathieu diff --git a/Misc/NEWS b/Misc/NEWS index 10f05d803b..0d36966e02 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -10,6 +10,9 @@ What's New in Python 3.3.0 Alpha 4? Core and Builtins ----------------- +- Issue #14835: Make plistlib output empty arrays & dicts like OS X. + Patch by Sidney San Martín. + - Issue #14930: Make memoryview objects weakrefable. - Issue #14775: Fix a potential quadratic dict build-up due to the garbage