STINNER Victor <vstin...@python.org> added the comment:

> but __builtins__.__dict__ cannot be pickled.

I don't see why cloudpickle calls LambdaType() directly. It could use a helper 
in their cloudpickle.cloudpickle_fast which calls LambdaType() with the proper 
arguments, especially to get __builtins__. I don't think that cloudpickle 
should serialize __builtins__!

By the way, I'm not sure why the function constructor builds {'None': None} 
namespace for builtins rather than inheriting the current builtins namespace. 
IMO it's unconvenient.

If someone wants to override __builtins__, setting __builtins__ key in the 
globals namespace should be enough.

> Adding a "builtins" parameter to types.FunctionType() should be be enough.

Oh right, we should give the ability to control this important parameter!

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue43228>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to