Skip to content

Commit d884a01

Browse files
pierreglaserogrisel
authored andcommitted
Save bound classmethod py27 (#289)
1 parent 7cc4374 commit d884a01

4 files changed

Lines changed: 18 additions & 3 deletions

File tree

CHANGES.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
1.2.2
2+
=====
3+
4+
- Fix a bug affecting bound classmethod saving on Python 2.
5+
([issue #288](https://github.com/cloudpipe/cloudpickle/issues/288))
16

27
1.2.1
38
=====

cloudpickle/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,4 @@
88
if sys.version_info[:2] >= (3, 8):
99
from cloudpickle.cloudpickle_fast import CloudPickler, dumps, dump
1010

11-
__version__ = '1.3.0.dev0'
11+
__version__ = '1.2.2.dev0'

cloudpickle/cloudpickle.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -882,8 +882,9 @@ def save_instancemethod(self, obj):
882882
if PY3: # pragma: no branch
883883
self.save_reduce(types.MethodType, (obj.__func__, obj.__self__), obj=obj)
884884
else:
885-
self.save_reduce(types.MethodType, (obj.__func__, obj.__self__, obj.__self__.__class__),
886-
obj=obj)
885+
self.save_reduce(
886+
types.MethodType,
887+
(obj.__func__, obj.__self__, type(obj.__self__)), obj=obj)
887888

888889
dispatch[types.MethodType] = save_instancemethod
889890

tests/cloudpickle_test.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -431,6 +431,15 @@ def test_cm(cls):
431431
self.assertEqual(A.test_sm(), "sm")
432432
self.assertEqual(A.test_cm(), "cm")
433433

434+
def test_bound_classmethod(self):
435+
class A:
436+
@classmethod
437+
def test_cm(cls):
438+
return "cm"
439+
440+
A.test_cm = pickle_depickle(A.test_cm, protocol=self.protocol)
441+
self.assertEqual(A.test_cm(), "cm")
442+
434443
def test_method_descriptors(self):
435444
f = pickle_depickle(str.upper)
436445
self.assertEqual(f('abc'), 'ABC')

0 commit comments

Comments
 (0)