Skip to content

Commit d61c573

Browse files
committed
Fix the missing module name when pickling a function
1 parent c5e6ca0 commit d61c573

File tree

2 files changed

+7
-1
lines changed

2 files changed

+7
-1
lines changed

cloudpickle/cloudpickle.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -508,6 +508,7 @@ def save_function_tuple(self, func):
508508
save(f_globals)
509509
save(defaults)
510510
save(dct)
511+
save(func.__module__)
511512
save(closure_values)
512513
write(pickle.TUPLE)
513514
write(pickle.REDUCE) # applies _fill_function on the tuple
@@ -1001,13 +1002,14 @@ def __reduce__(cls):
10011002
return cls.__name__
10021003

10031004

1004-
def _fill_function(func, globals, defaults, dict, closure_values):
1005+
def _fill_function(func, globals, defaults, dict, module, closure_values):
10051006
""" Fills in the rest of function data into the skeleton function object
10061007
that were created via _make_skel_func().
10071008
"""
10081009
func.__globals__.update(globals)
10091010
func.__defaults__ = defaults
10101011
func.__dict__ = dict
1012+
func.__module__ = module
10111013

10121014
cells = func.__closure__
10131015
if cells is not None:

tests/cloudpickle_test.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -697,5 +697,9 @@ def f():
697697
result = g()
698698
self.assertEqual(1, result)
699699

700+
def test_function_module_name(self):
701+
func = lambda x: x
702+
self.assertEqual(pickle_depickle(func).__module__, func.__module__)
703+
700704
if __name__ == '__main__':
701705
unittest.main()

0 commit comments

Comments
 (0)