[pypy-commit] pypy numpypy-out: translation fix, revert incorrect box conversion

mattip noreply at buildbot.pypy.org
Sun Feb 19 10:22:12 CET 2012


Author: mattip
Branch: numpypy-out
Changeset: r52628:ac37eef6dfb6
Date: 2012-02-19 11:20 +0200
http://bitbucket.org/pypy/pypy/changeset/ac37eef6dfb6/

Log:	translation fix, revert incorrect box conversion

diff --git a/pypy/module/micronumpy/interp_numarray.py b/pypy/module/micronumpy/interp_numarray.py
--- a/pypy/module/micronumpy/interp_numarray.py
+++ b/pypy/module/micronumpy/interp_numarray.py
@@ -1107,7 +1107,7 @@
     """
     def setitem(self, item, value):
         self.invalidated()
-        self.dtype.setitem(self.storage, item, value.convert_to(self.dtype))
+        self.dtype.setitem(self.storage, item, value)
 
     def setshape(self, space, new_shape):
         self.shape = new_shape
diff --git a/pypy/module/micronumpy/interp_ufuncs.py b/pypy/module/micronumpy/interp_ufuncs.py
--- a/pypy/module/micronumpy/interp_ufuncs.py
+++ b/pypy/module/micronumpy/interp_ufuncs.py
@@ -260,7 +260,7 @@
                 out = arr
             return space.wrap(out)
         if out:
-            #Test shape compatability
+            assert isinstance(out, BaseArray) # For translation
             broadcast_shape =  shape_agreement(space, w_obj.shape, out.shape)
             if not broadcast_shape or broadcast_shape != out.shape:
                 raise operationerrfmt(space.w_ValueError,
diff --git a/pypy/module/micronumpy/test/test_outarg.py b/pypy/module/micronumpy/test/test_outarg.py
--- a/pypy/module/micronumpy/test/test_outarg.py
+++ b/pypy/module/micronumpy/test/test_outarg.py
@@ -81,8 +81,19 @@
 
     def test_ufunc_cast(self):
         from _numpypy import array, negative
-        cast_error = raises(TypeError, negative, array(16,dtype=float),
-                                                 out=array(0, dtype=int))
-        assert str(cast_error.value) == \
+        a = array(16, dtype = int)
+        c = array(0, dtype = float)
+        b = negative(a, out=c)
+        assert b == c
+        try:
+            from _numpypy import version
+            v = version.version.split('.')
+        except:
+            v = ['1', '6', '0'] # numpypy is api compatable to what version?
+        if v[0]<'2':
+            b = negative(c, out=a)
+            assert b == a
+        else:
+            cast_error = raises(TypeError, negative, c, a)
+            assert str(cast_error.value) == \
             "Cannot cast ufunc negative output from dtype('float64') to dtype('int64') with casting rule 'same_kind'"
-        


More information about the pypy-commit mailing list