Author: Matti Picus <[email protected]>
Branch: numpypy_pickle_compat
Changeset: r85727:6d909c810029
Date: 2016-07-15 23:12 -0500
http://bitbucket.org/pypy/pypy/changeset/6d909c810029/

Log:    monkeypatch Unpickler.find_class for tests since there is no
        numpy.core.multiarray yet

diff --git a/pypy/module/micronumpy/test/test_base.py 
b/pypy/module/micronumpy/test/test_base.py
--- a/pypy/module/micronumpy/test/test_base.py
+++ b/pypy/module/micronumpy/test/test_base.py
@@ -3,7 +3,7 @@
 
 
 class BaseNumpyAppTest(object):
-    spaceconfig = dict(usemodules=['micronumpy'])
+    spaceconfig = dict(usemodules=["micronumpy", "struct", "binascii"])
 
     @classmethod
     def setup_class(cls):
@@ -14,12 +14,42 @@
             else:
                 from . import dummy_module as numpy
                 sys.modules['numpy'] = numpy
+                # override Unpickler.find_class
+                def find_class(self, module, name):
+                    if (module == 'numpy.core.multiarray' and 
+                                    name == '_reconstruct'):
+                        return numpy.ndarray.__new__
+                    __import__(module)
+                    mod = sys.modules[module]
+                    klass = getattr(mod, name)
+                    return klass
+
+                from pickle import Unpickler
+                Unpickler.find_class = find_class
+
+                from cPickle import Unpickler
+                Unpickler.find_class = find_class
         else:
             import os
             path = os.path.dirname(__file__) + '/dummy_module.py'
             cls.space.appexec([cls.space.wrap(path)], """(path):
             import imp
-            imp.load_source('numpy', path)
+            import sys
+            numpy = imp.load_source('numpy', path)
+            # override Unpickler.find_class
+            def find_class(self, module, name):
+                if module == 'numpy.core.multiarray' and name == 
'_reconstruct':
+                    return numpy.ndarray.__new__
+                __import__(module)
+                mod = sys.modules[module]
+                klass = getattr(mod, name)
+                return klass
+
+            from pickle import Unpickler
+            Unpickler.find_class = find_class
+
+            from cPickle import Unpickler
+            Unpickler.find_class = find_class
             """)
         cls.w_non_native_prefix = cls.space.wrap(NPY.OPPBYTE)
         cls.w_native_prefix = cls.space.wrap(NPY.NATBYTE)
diff --git a/pypy/module/micronumpy/test/test_ndarray.py 
b/pypy/module/micronumpy/test/test_ndarray.py
--- a/pypy/module/micronumpy/test/test_ndarray.py
+++ b/pypy/module/micronumpy/test/test_ndarray.py
@@ -202,7 +202,6 @@
 
 
 class AppTestNumArray(BaseNumpyAppTest):
-    spaceconfig = dict(usemodules=["micronumpy", "struct", "binascii"])
 
     def w_CustomIndexObject(self, index):
         class CustomIndexObject(object):
@@ -2655,7 +2654,8 @@
 
 
 class AppTestNumArrayFromBuffer(BaseNumpyAppTest):
-    spaceconfig = dict(usemodules=["micronumpy", "array", "mmap"])
+    spaceconfig = dict(usemodules=["micronumpy", "array", "mmap", 
+                                   'struct', 'binascii'])
 
     def setup_class(cls):
         from rpython.tool.udir import udir
@@ -3579,7 +3579,7 @@
 
 
 class AppTestSupport(BaseNumpyAppTest):
-    spaceconfig = {'usemodules': ['micronumpy', 'array']}
+    spaceconfig = {'usemodules': ["micronumpy", "array", 'struct', 'binascii']}
 
     def setup_class(cls):
         import struct
@@ -3869,7 +3869,6 @@
 
 
 class AppTestRecordDtype(BaseNumpyAppTest):
-    spaceconfig = dict(usemodules=["micronumpy", "struct", "binascii"])
 
     def test_zeros(self):
         from numpy import zeros, void
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to