cloudpipe / cloudpipe/cloudpickle

Dill breaks cloudpickle > 1.3.0 on inner functions with closure

Open
#393 7 comments 0 reactions 1 assignee Claimed by @pierreglaser View on GitHub
Dominant language
Python
Stars
1.9k
Forks
195
Avg merge
1d 10h
Merged PRs (30d)
1

Description

Cloudpickle 1.5.0, dill 0.3.2 or 0.3.1.1:

```python
import dill
import cloudpickle

class Foo:

def bar(self, param: int):
hello = "Hello"
def baz() -> None:
print(hello, param)

cloudpickle.loads(cloudpickle.dumps(baz))()

if __name__ == '__main__':
Foo().bar(param=2)
```

This fails with `ValueError: Cell is empty`.

Without the `dill` import, or with the dill import after the cloudpickle import, and it's all fine.

If the inner function is just
```python
def baz() -> None:
print("Hello world")
```
then it's also fine.

The problem seems to be if the inner function captures anything in its closure.

This was fine with cloudpickle 1.3.0

Should I bring this up with dill?

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.