Skip to content

Python 3.14.0b1: TypeError: cannot pickle '_contextvars.Context' object #716

@hroncok

Description

@hroncok

Hi. When testing dill in Fedora with Python 3.14 prereelases, we get the following failure:

Traceback (most recent call last):
  File "/builddir/build/BUILD/python-dill-0.4.0-build/dill-0.4.0/dill/tests/test_threads.py", line 45, in <module>
    test_run_thread()
    ~~~~~~~~~~~~~~~^^
  File "/builddir/build/BUILD/python-dill-0.4.0-build/dill-0.4.0/dill/tests/test_threads.py", line 25, in test_run_thread
    t_ = dill.copy(t)
  File "/builddir/build/BUILD/python-dill-0.4.0-build/BUILDROOT/usr/lib/python3.14/site-packages/dill/_dill.py", line 248, in copy
    return loads(dumps(obj, *args, **kwds), ignore=ignore)
                 ~~~~~^^^^^^^^^^^^^^^^^^^^
  File "/builddir/build/BUILD/python-dill-0.4.0-build/BUILDROOT/usr/lib/python3.14/site-packages/dill/_dill.py", line 288, in dumps
    dump(obj, file, protocol, byref, fmode, recurse, **kwds)#, strictio)
    ~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/builddir/build/BUILD/python-dill-0.4.0-build/BUILDROOT/usr/lib/python3.14/site-packages/dill/_dill.py", line 260, in dump
    Pickler(file, protocol, **_kwds).dump(obj)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^
  File "/builddir/build/BUILD/python-dill-0.4.0-build/BUILDROOT/usr/lib/python3.14/site-packages/dill/_dill.py", line 428, in dump
    StockPickler.dump(self, obj)
    ~~~~~~~~~~~~~~~~~^^^^^^^^^^^
  File "/usr/lib64/python3.14/pickle.py", line 498, in dump
    self.save(obj)
    ~~~~~~~~~^^^^^
  File "/builddir/build/BUILD/python-dill-0.4.0-build/BUILDROOT/usr/lib/python3.14/site-packages/dill/_dill.py", line 422, in save
    StockPickler.save(self, obj, save_persistent_id)
    ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.14/pickle.py", line 615, in save
    self.save_reduce(obj=obj, *rv)
    ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^
  File "/usr/lib64/python3.14/pickle.py", line 761, in save_reduce
    save(state)
    ~~~~^^^^^^^
  File "/builddir/build/BUILD/python-dill-0.4.0-build/BUILDROOT/usr/lib/python3.14/site-packages/dill/_dill.py", line 422, in save
    StockPickler.save(self, obj, save_persistent_id)
    ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.14/pickle.py", line 572, in save
    f(self, obj)  # Call unbound method with explicit self
    ~^^^^^^^^^^^
  File "/builddir/build/BUILD/python-dill-0.4.0-build/BUILDROOT/usr/lib/python3.14/site-packages/dill/_dill.py", line 1262, in save_module_dict
    StockPickler.save_dict(pickler, obj)
    ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^
  File "/usr/lib64/python3.14/pickle.py", line 1064, in save_dict
    self._batch_setitems(obj.items(), obj)
    ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.14/pickle.py", line 1090, in _batch_setitems
    save(v)
    ~~~~^^^
  File "/builddir/build/BUILD/python-dill-0.4.0-build/BUILDROOT/usr/lib/python3.14/site-packages/dill/_dill.py", line 422, in save
    StockPickler.save(self, obj, save_persistent_id)
    ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.14/pickle.py", line 590, in save
    rv = reduce(self.proto)
TypeError: cannot pickle '_contextvars.Context' object
when serializing dict item '_context'
when serializing threading.Thread state
when serializing threading.Thread object
F.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions