Cloudpickle 1.5.0, dill 0.3.2 or 0.3.1.1:
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
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?