You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gentoo-overlay/dev-python/loky/files/loky-2.8.0-cloudpickle-1.5....

40 lines
1.8 KiB

From 0e930389f4785f9d311b090f92057563e22b9768 Mon Sep 17 00:00:00 2001
From: tomMoral <thomas.moreau.2010@gmail.com>
Date: Thu, 2 Jul 2020 13:37:14 +0200
Subject: [PATCH] FIX cloudpickle customization mechanism
---
loky/backend/reduction.py | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/loky/backend/reduction.py b/loky/backend/reduction.py
index 0bad5f63..d87fbdff 100644
--- a/loky/backend/reduction.py
+++ b/loky/backend/reduction.py
@@ -189,6 +189,10 @@ def __init__(self, writer, reducers=None, protocol=HIGHEST_PROTOCOL):
self.dispatch = self._dispatch.copy()
else:
if getattr(self, "dispatch_table", None) is not None:
+ # Make sure dispatch table is an instance level field
+ # as it is not the case for isntance for cloudpickle1.5+
+ # see joblib/loky#259
+ self.dispatch_table = self.dispatch_table.copy()
self.dispatch_table.update(self._dispatch_table.copy())
else:
self.dispatch_table = self._dispatch_table.copy()
@@ -202,10 +206,10 @@ def register(self, type, reduce_func):
if sys.version_info < (3,):
# Python 2 pickler dispatching is not explicitly customizable.
# Let us use a closure to workaround this limitation.
- def dispatcher(self, obj):
- reduced = reduce_func(obj)
- self.save_reduce(obj=obj, *reduced)
- self.dispatch[type] = dispatcher
+ def dispatcher(self, obj):
+ reduced = reduce_func(obj)
+ self.save_reduce(obj=obj, *reduced)
+ self.dispatch[type] = dispatcher
else:
self.dispatch_table[type] = reduce_func