8000 bpo-41966: Fix pickling pure datetime.time subclasses (GH-22731) · python/cpython@c304c9a · GitHub
[go: up one dir, main page]

Skip to content

Commit c304c9a

Browse files
authored
bpo-41966: Fix pickling pure datetime.time subclasses (GH-22731)
1 parent a0c603c commit c304c9a

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
@@ -1548,7 +1548,7 @@ def __setstate(self, string, tzinfo):
15481548
self._tzinfo = tzinfo
15491549

15501550
def __reduce_ex__(self, protocol):
1551-
return (time, self._getstate(protocol))
1551+
return (self.__class__, self._getstate(protocol))
15521552

15531553
def __reduce__(self):
15541554
return self.__reduce_ex__(2)

Lib/test/datetimetester.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1781,6 +1781,7 @@ def test_pickling_subclass_date(self):
17811781
green = pickler.dumps(orig, proto)
17821782
derived = unpickler.loads(green)
17831783
self.assertEqual(orig, derived)
1784+
self.assertTrue(isinstance(derived, SubclassDate))
17841785

17851786
def test_backdoor_resistance(self):
17861787
# For fast unpickling, the constructor accepts a pickle byte string.
@@ -2308,6 +2309,7 @@ def test_pickling_subclass_datetime(self):
23082309
green = pickler.dumps(orig, proto)
23092310
derived = unpickler.loads(green)
23102311
self.assertEqual(orig, derived)
2312+
self.assertTrue(isinstance(derived, SubclassDatetime))
23112313

23122314
def test_compat_unpickle(self):
23132315
tests = [
@@ -3357,6 +3359,7 @@ def test_pickling_subclass_time(self):
33573359
green = pickler.dumps(orig, proto)
33583360
derived = unpickler.loads(green)
33593361
self.assertEqual(orig, derived)
3362+
self.assertTrue(isinstance(derived, SubclassTime))
33603363

33613364
def test_compat_unpickle(self):
33623365
tests = [

Misc/ACKS

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -787,6 +787,7 @@ Meador Inge
787787
Peter Ingebretson
788788
Tony Ingraldi
789789
John Interrante
790+
Dean Inwood
790791
Bob Ippolito
791792
Roger Irwin
792793
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)
0