]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
bpo-41966: Fix pickling pure datetime.time subclasses (GH-22731)
authorscaramallion <scaramallion@users.noreply.github.com>
Sun, 18 Oct 2020 14:49:48 +0000 (01:49 +1100)
committerGitHub <noreply@github.com>
Sun, 18 Oct 2020 14:49:48 +0000 (17:49 +0300)
Lib/datetime.py
Lib/test/datetimetester.py
Misc/ACKS
Misc/NEWS.d/next/Library/2020-10-17-07-52-53.bpo-41966.gwEQRZ.rst [new file with mode: 0644]

index ea86bcb8b2388a43b3e7a98e7f6e5f94b20b7ec7..b896b94b0fe0e4e861422832440d02c9a8b0708b 100644 (file)
@@ -1548,7 +1548,7 @@ class time:
         self._tzinfo = tzinfo
 
     def __reduce_ex__(self, protocol):
-        return (time, self._getstate(protocol))
+        return (self.__class__, self._getstate(protocol))
 
     def __reduce__(self):
         return self.__reduce_ex__(2)
index 8b61c26f9e5c24cfbe5c02ad84a9a96f7ae82334..775d3151ae29023ab250677af5b2118659bdb477 100644 (file)
@@ -1781,6 +1781,7 @@ class TestDate(HarmlessMixedComparison, unittest.TestCase):
             green = pickler.dumps(orig, proto)
             derived = unpickler.loads(green)
             self.assertEqual(orig, derived)
+            self.assertTrue(isinstance(derived, SubclassDate))
 
     def test_backdoor_resistance(self):
         # For fast unpickling, the constructor accepts a pickle byte string.
@@ -2308,6 +2309,7 @@ class TestDateTime(TestDate):
             green = pickler.dumps(orig, proto)
             derived = unpickler.loads(green)
             self.assertEqual(orig, derived)
+            self.assertTrue(isinstance(derived, SubclassDatetime))
 
     def test_compat_unpickle(self):
         tests = [
@@ -3357,6 +3359,7 @@ class TestTime(HarmlessMixedComparison, unittest.TestCase):
             green = pickler.dumps(orig, proto)
             derived = unpickler.loads(green)
             self.assertEqual(orig, derived)
+            self.assertTrue(isinstance(derived, SubclassTime))
 
     def test_compat_unpickle(self):
         tests = [
index 7f4a9bcbc0f8cdb05cb4e784c5592ae8fcc15352..d81d0a255145cb92fb31950fd64708fae8c25364 100644 (file)
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -787,6 +787,7 @@ Meador Inge
 Peter Ingebretson
 Tony Ingraldi
 John Interrante
+Dean Inwood
 Bob Ippolito
 Roger Irwin
 Atsuo Ishimoto
diff --git a/Misc/NEWS.d/next/Library/2020-10-17-07-52-53.bpo-41966.gwEQRZ.rst b/Misc/NEWS.d/next/Library/2020-10-17-07-52-53.bpo-41966.gwEQRZ.rst
new file mode 100644 (file)
index 0000000..0e7fad4
--- /dev/null
@@ -0,0 +1,2 @@
+Fix pickling pure Python :class:`datetime.time` subclasses. Patch by Dean
+Inwood.