File fix-contextvars.patch of Package python-dill
From a84c1a6baf4ba3f8d119da7166a6624ace6b8fc0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Miro=20Hron=C4=8Dok?= <miro@hroncok.cz>
Date: Thu, 22 May 2025 20:13:40 +0200
Subject: [PATCH] Pickle _contextvars.Context objects, for threads in Python
3.14+
Fixes https://github.com/uqfoundation/dill/issues/716
---
dill/_dill.py | 7 +++++++
1 file changed, 7 insertions(+)
Index: dill-0.4.0/dill/_dill.py
===================================================================
--- dill-0.4.0.orig/dill/_dill.py
+++ dill-0.4.0/dill/_dill.py
@@ -54,6 +54,7 @@ OLD312a7 = (sys.hexversion < 0x30c00a7)
import builtins as __builtin__
from pickle import _Pickler as StockPickler, Unpickler as StockUnpickler
from pickle import GLOBAL, POP
+from _contextvars import Context
from _thread import LockType
from _thread import RLock as RLockType
try:
@@ -2119,6 +2120,12 @@ if HAS_CTYPES and hasattr(ctypes, 'pytho
else:
_testcapsule = None
+@register(Context)
+def save_context(pickler, obj):
+ logger.trace(pickler, "Cx: %s", obj)
+ pickler.save_reduce(Context, tuple(obj.items()), obj=obj)
+ logger.trace(pickler, "# Cx")
+
#############################
# A quick fix for issue #500