Skip to content

Commit 1040299

Browse files
bpo-41966: Fix pickling pure datetime.time subclasses (GH-22731) (GH-22748)
(cherry picked from commit c304c9a) Co-authored-by: scaramallion <[email protected]>
1 parent 400175a commit 1040299

File tree

4 files changed

+7
-1
lines changed

4 files changed

+7
-1
lines changed

Lib/datetime.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1545,7 +1545,7 @@ def __setstate(self, string, tzinfo):
15451545
self._tzinfo = tzinfo
15461546

15471547
def __reduce_ex__(self, protocol):
1548-
return (time, self._getstate(protocol))
1548+
return (self.__class__, self._getstate(protocol))
15491549

15501550
def __reduce__(self):
15511551
return self.__reduce_ex__(2)

Lib/test/datetimetester.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1750,6 +1750,7 @@ def test_pickling_subclass_date(self):
17501750
green = pickler.dumps(orig, proto)
17511751
derived = unpickler.loads(green)
17521752
self.assertEqual(orig, derived)
1753+
self.assertTrue(isinstance(derived, SubclassDate))
17531754

17541755
def test_backdoor_resistance(self):
17551756
# For fast unpickling, the constructor accepts a pickle byte string.
@@ -2277,6 +2278,7 @@ def test_pickling_subclass_datetime(self):
22772278
green = pickler.dumps(orig, proto)
22782279
derived = unpickler.loads(green)
22792280
self.assertEqual(orig, derived)
2281+
self.assertTrue(isinstance(derived, SubclassDatetime))
22802282

22812283
def test_compat_unpickle(self):
22822284
tests = [
@@ -3326,6 +3328,7 @@ def test_pickling_subclass_time(self):
33263328
green = pickler.dumps(orig, proto)
33273329
derived = unpickler.loads(green)
33283330
self.assertEqual(orig, derived)
3331+
self.assertTrue(isinstance(derived, SubclassTime))
33293332

33303333
def test_compat_unpickle(self):
33313334
tests = [

Misc/ACKS

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -759,6 +759,7 @@ Meador Inge
759759
Peter Ingebretson
760760
Tony Ingraldi
761761
John Interrante
762+
Dean Inwood
762763
Bob Ippolito
763764
Roger Irwin
764765
Atsuo Ishimoto
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
Fix pickling pure Python :class:`datetime.time` subclasses. Patch by Dean
2+
Inwood.

0 commit comments

Comments
 (0)