[pypy-commit] pypy ufuncapi: frompyfunc needs object dtype

mattip noreply at buildbot.pypy.org
Sun Jun 1 00:14:49 CEST 2014


Author: mattip <matti.picus at gmail.com>
Branch: ufuncapi
Changeset: r71792:011468df676c
Date: 2014-05-26 18:42 +0300
http://bitbucket.org/pypy/pypy/changeset/011468df676c/

Log:	frompyfunc needs object dtype

diff --git a/pypy/module/micronumpy/__init__.py b/pypy/module/micronumpy/__init__.py
--- a/pypy/module/micronumpy/__init__.py
+++ b/pypy/module/micronumpy/__init__.py
@@ -31,7 +31,9 @@
 
 class UMathModule(MixedModule):
     appleveldefs = {}
-    interpleveldefs = {'FLOATING_POINT_SUPPORT': 'space.wrap(1)'}
+    interpleveldefs = {
+        'FLOATING_POINT_SUPPORT': 'space.wrap(1)',
+        }
     # ufuncs
     for exposed, impl in [
         ("absolute", "absolute"),
diff --git a/pypy/module/micronumpy/test/test_ufuncs.py b/pypy/module/micronumpy/test/test_ufuncs.py
--- a/pypy/module/micronumpy/test/test_ufuncs.py
+++ b/pypy/module/micronumpy/test/test_ufuncs.py
@@ -97,11 +97,26 @@
         raises(TypeError, ufunc)
 
     def test_frompyfunc(self):
-        from numpy import ufunc, frompyfunc, arange
-        myufunc = frompyfunc(int.__add__, 2, 1)
-        assert isinstance(add, ufunc)
+        try:
+            from numpy import frompyfunc
+        except ImportError:
+            skip('frompyfunc not available')
+        from numpy import ufunc, frompyfunc, arange, dtype
+        def adder(a, b):
+            return a+b
+        myufunc = frompyfunc(adder, 2, 1)
+        assert isinstance(myufunc, ufunc)
         res = myufunc(arange(10), arange(10))
+        assert res.dtype == dtype(object)
         assert all(res == arange(10) + arange(10))
+        raises(TypeError, frompyfunc, 1, 2, 3)
+        int_func22 = frompyfunc(int, 2, 2)
+        raises (ValueError, int_func22, arange(10))
+        int_func12 = frompyfunc(int, 1, 2)
+        res = int_func12(arange(10))
+        assert len(res) == 2
+        assert isinstance(res, tuple)
+        assert (res[0] == arange(10)).all()
 
     def test_ufunc_attrs(self):
         from numpy import add, multiply, sin
diff --git a/pypy/module/micronumpy/ufuncs.py b/pypy/module/micronumpy/ufuncs.py
--- a/pypy/module/micronumpy/ufuncs.py
+++ b/pypy/module/micronumpy/ufuncs.py
@@ -780,3 +780,5 @@
 
 def get(space):
     return space.fromcache(UfuncState)
+
+


More information about the pypy-commit mailing list