Skip to content

Commit 50b093f

Browse files
gh-53502: Fix plistlib.dump() for naive datetime with aware_datetime option (GH-113645)
1 parent fff1e8a commit 50b093f

File tree

2 files changed

+4
-3
lines changed

2 files changed

+4
-3
lines changed

Lib/plistlib.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ def _date_from_string(s, aware_datetime):
155155

156156

157157
def _date_to_string(d, aware_datetime):
158-
if aware_datetime and d.tzinfo is not None:
158+
if aware_datetime:
159159
d = d.astimezone(datetime.UTC)
160160
return '%04d-%02d-%02dT%02d:%02d:%02dZ' % (
161161
d.year, d.month, d.day,
@@ -791,7 +791,7 @@ def _write_object(self, value):
791791
self._fp.write(struct.pack('>Bd', 0x23, value))
792792

793793
elif isinstance(value, datetime.datetime):
794-
if self._aware_datetime and value.tzinfo is not None:
794+
if self._aware_datetime:
795795
dt = value.astimezone(datetime.UTC)
796796
offset = dt - datetime.datetime(2001, 1, 1, tzinfo=datetime.UTC)
797797
f = offset.total_seconds()

Lib/test/test_plistlib.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -885,7 +885,8 @@ def test_dump_naive_datetime_with_aware_datetime_option(self):
885885
for fmt in ALL_FORMATS:
886886
s = plistlib.dumps(dt, fmt=fmt, aware_datetime=True)
887887
parsed = plistlib.loads(s, aware_datetime=False)
888-
self.assertEqual(parsed, dt)
888+
expected = dt.astimezone(datetime.UTC).replace(tzinfo=None)
889+
self.assertEqual(parsed, expected)
889890

890891

891892
class TestBinaryPlistlib(unittest.TestCase):

0 commit comments

Comments
 (0)