commit:     cc9f77e7cb0fe3de5c8bf85b9dc41648c2dbf3e0
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Thu Jul  2 11:43:08 2020 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Thu Jul  2 12:42:49 2020 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=cc9f77e7

dev-python/loky: Add a patch for cloudpickle-1.5+

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 .../loky/files/loky-2.8.0-cloudpickle-1.5.patch    | 39 ++++++++++++++++++++++
 .../{loky-2.8.0.ebuild => loky-2.8.0-r1.ebuild}    |  7 ++--
 2 files changed, 43 insertions(+), 3 deletions(-)

diff --git a/dev-python/loky/files/loky-2.8.0-cloudpickle-1.5.patch 
b/dev-python/loky/files/loky-2.8.0-cloudpickle-1.5.patch
new file mode 100644
index 00000000000..05fb70455f0
--- /dev/null
+++ b/dev-python/loky/files/loky-2.8.0-cloudpickle-1.5.patch
@@ -0,0 +1,39 @@
+From 0e930389f4785f9d311b090f92057563e22b9768 Mon Sep 17 00:00:00 2001
+From: tomMoral <thomas.moreau.2...@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
+ 

diff --git a/dev-python/loky/loky-2.8.0.ebuild 
b/dev-python/loky/loky-2.8.0-r1.ebuild
similarity index 86%
rename from dev-python/loky/loky-2.8.0.ebuild
rename to dev-python/loky/loky-2.8.0-r1.ebuild
index 6d84a226623..ba05e5dcaaa 100644
--- a/dev-python/loky/loky-2.8.0.ebuild
+++ b/dev-python/loky/loky-2.8.0-r1.ebuild
@@ -25,13 +25,14 @@ BDEPEND="
 
 distutils_enable_tests pytest
 
+PATCHES=(
+       "${FILESDIR}"/${P}-cloudpickle-1.5.patch
+)
+
 src_prepare() {
        # docker, seriously?
        sed -e 's:test_cpu_count_cfs_limit:_&:' \
                -i tests/test_loky_module.py || die
-       # suddenly started failing :-(
-       sed -e 's:test_serialization:_&:' \
-               -i tests/_test_process_executor.py || die
 
        distutils-r1_src_prepare
 }

Reply via email to