diff --git a/Lib/test/datetimetester.py b/Lib/test/datetimetester.py index 0c621f0f47c7f2..3cce953a5823e6 100644 --- a/Lib/test/datetimetester.py +++ b/Lib/test/datetimetester.py @@ -3185,16 +3185,25 @@ def test_pickling_subclass_time(self): def test_compat_unpickle(self): tests = [ - b"cdatetime\ntime\n(S'\\x14;\\x10\\x00\\x10\\x00'\ntR.", - b'cdatetime\ntime\n(U\x06\x14;\x10\x00\x10\x00tR.', - b'\x80\x02cdatetime\ntime\nU\x06\x14;\x10\x00\x10\x00\x85R.', + (b"cdatetime\ntime\n(S'\\x14;\\x10\\x00\\x10\\x00'\ntR.", + (20, 59, 16, 64**2)), + (b'cdatetime\ntime\n(U\x06\x14;\x10\x00\x10\x00tR.', + (20, 59, 16, 64**2)), + (b'\x80\x02cdatetime\ntime\nU\x06\x14;\x10\x00\x10\x00\x85R.', + (20, 59, 16, 64**2)), + (b"cdatetime\ntime\n(S'\\x14;\\x19\\x00\\x10\\x00'\ntR.", + (20, 59, 25, 64**2)), + (b'cdatetime\ntime\n(U\x06\x14;\x19\x00\x10\x00tR.', + (20, 59, 25, 64**2)), + (b'\x80\x02cdatetime\ntime\nU\x06\x14;\x19\x00\x10\x00\x85R.', + (20, 59, 25, 64**2)), ] - args = 20, 59, 16, 64**2 - expected = self.theclass(*args) - for data in tests: - for loads in pickle_loads: - derived = loads(data, encoding='latin1') - self.assertEqual(derived, expected) + for i, (data, args) in enumerate(tests): + with self.subTest(i=i): + expected = self.theclass(*args) + for loads in pickle_loads: + derived = loads(data, encoding='latin1') + self.assertEqual(derived, expected) def test_bool(self): # time is always True. diff --git a/Misc/ACKS b/Misc/ACKS index 0283c85b174e8c..ade26f5e86d271 100644 --- a/Misc/ACKS +++ b/Misc/ACKS @@ -160,6 +160,7 @@ Roy Bixler Daniel Black Jonathan Black Renaud Blanch +Justin Blanchard Mike Bland Martin Bless Pablo Bleyer diff --git a/Misc/NEWS.d/next/Library/2019-06-22-12-30-00.bpo-37372.kIKqZ6.rst b/Misc/NEWS.d/next/Library/2019-06-22-12-30-00.bpo-37372.kIKqZ6.rst new file mode 100644 index 00000000000000..b958d8fed40a85 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2019-06-22-12-30-00.bpo-37372.kIKqZ6.rst @@ -0,0 +1,2 @@ +Fix error unpickling datetime.time objects from Python 2 with seconds>=24. +Patch by Justin Blanchard. diff --git a/Modules/_datetimemodule.c b/Modules/_datetimemodule.c index 6bed29ee5cf3c6..42caf08262028b 100644 --- a/Modules/_datetimemodule.c +++ b/Modules/_datetimemodule.c @@ -3982,7 +3982,7 @@ time_new(PyTypeObject *type, PyObject *args, PyObject *kw) return NULL; } if (PyUnicode_GET_LENGTH(state) == _PyDateTime_TIME_DATASIZE && - (0x7F & PyUnicode_READ_CHAR(state, 2)) < 24) + (0x7F & PyUnicode_READ_CHAR(state, 0)) < 24) { state = PyUnicode_AsLatin1String(state); if (state == NULL) { pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy