bpo-41966: Fix pickling pure datetime.time subclasses (GH-22731) (GH-22747)

(cherry picked from commit c304c9a7ef)

Co-authored-by: scaramallion <scaramallion@users.noreply.github.com>
This commit is contained in:
Miss Skeleton (bot) 2020-10-18 08:32:56 -07:00 committed by GitHub
parent 6a2aa4994e
commit a055ced9d4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 7 additions and 1 deletions

View File

@ -1579,7 +1579,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)

View 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 = [

View File

@ -781,6 +781,7 @@ Meador Inge
Peter Ingebretson
Tony Ingraldi
John Interrante
Dean Inwood
Bob Ippolito
Roger Irwin
Atsuo Ishimoto

View File

@ -0,0 +1,2 @@
Fix pickling pure Python :class:`datetime.time` subclasses. Patch by Dean
Inwood.