uqfoundation / dill

serialize all of Python

Home Page:http://dill.rtfd.io

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Support serializing/restoring contextvars.Context

pulkin opened this issue · comments

commented

dill can not serialize a contextvars.Context instance

it appears dill punts to pickle immediately

Python 3.8.16 (default, Dec  7 2022, 05:25:02) 
[Clang 10.0.1 (clang-1001.0.46.4)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import dill
>>> import contextvars
>>> c = contextvars.Context()
>>> dill.detect.trace(True)
>>> dill.dumps(c)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/mmckerns/lib/python3.8/site-packages/dill/_dill.py", line 277, in dumps
    dump(obj, file, protocol, byref, fmode, recurse, **kwds)#, strictio)
  File "/Users/mmckerns/lib/python3.8/site-packages/dill/_dill.py", line 249, in dump
    Pickler(file, protocol, **_kwds).dump(obj)
  File "/Users/mmckerns/lib/python3.8/site-packages/dill/_dill.py", line 417, in dump
    StockPickler.dump(self, obj)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/pickle.py", line 487, in dump
    self.save(obj)
  File "/Users/mmckerns/lib/python3.8/site-packages/dill/_dill.py", line 411, in save
    StockPickler.save(self, obj, save_persistent_id)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/pickle.py", line 578, in save
    rv = reduce(self.proto)
TypeError: cannot pickle 'Context' object
commented

https://github.com/akruis/cvpickle seems to work for this.