[pypy-commit] pypy default: fixes for cpyext ndarrayobject

bdkearns noreply at buildbot.pypy.org
Thu Feb 27 02:13:25 CET 2014


Author: Brian Kearns <bdkearns at gmail.com>
Branch: 
Changeset: r69488:28a4bfdc3627
Date: 2014-02-26 20:12 -0500
http://bitbucket.org/pypy/pypy/changeset/28a4bfdc3627/

Log:	fixes for cpyext ndarrayobject

diff --git a/pypy/module/cpyext/ndarrayobject.py b/pypy/module/cpyext/ndarrayobject.py
--- a/pypy/module/cpyext/ndarrayobject.py
+++ b/pypy/module/cpyext/ndarrayobject.py
@@ -9,8 +9,7 @@
 from pypy.module.cpyext.api import PyObject
 from pypy.module.micronumpy.interp_numarray import W_NDimArray, array
 from pypy.module.micronumpy.interp_dtype import get_dtype_cache, W_Dtype
-from pypy.module.micronumpy.arrayimpl.concrete import ConcreteArray
-from pypy.module.micronumpy.arrayimpl.scalar import Scalar
+from pypy.module.micronumpy.concrete import ConcreteArray
 from rpython.rlib.rawstorage import RAW_STORAGE_PTR
 
 NPY_C_CONTIGUOUS   = 0x0001
@@ -167,7 +166,7 @@
         #     void *data = PyArray_DATA(arr);
         impl = w_array.implementation
         w_array = W_NDimArray.from_shape(space, [1], impl.dtype)
-        w_array.implementation.setitem(0, impl.value)
+        w_array.implementation.setitem(0, impl.getitem(impl.start + 0))
         w_array.implementation.shape = []
     return w_array
 
@@ -214,12 +213,8 @@
         order='C', owning=False, w_subtype=None):
     shape, dtype = get_shape_and_dtype(space, nd, dims, typenum)
     storage = rffi.cast(RAW_STORAGE_PTR, data)
-    if nd == 0:
-        w_val = dtype.itemtype.box_raw_data(storage)
-        return W_NDimArray(Scalar(dtype, w_val))
-    else:
-        return W_NDimArray.from_shape_and_storage(space, shape, storage, dtype,
-                order=order, owning=owning, w_subtype=w_subtype)
+    return W_NDimArray.from_shape_and_storage(space, shape, storage, dtype,
+            order=order, owning=owning, w_subtype=w_subtype)
 
 
 @cpython_api([Py_ssize_t, rffi.LONGP, Py_ssize_t], PyObject)
diff --git a/pypy/module/cpyext/test/test_ndarrayobject.py b/pypy/module/cpyext/test/test_ndarrayobject.py
--- a/pypy/module/cpyext/test/test_ndarrayobject.py
+++ b/pypy/module/cpyext/test/test_ndarrayobject.py
@@ -77,7 +77,7 @@
 
     def test_FromAny_scalar(self, space, api):
         a0 = scalar(space)
-        assert a0.implementation.get_scalar_value().value == 10.
+        assert a0.get_scalar_value().value == 10.
 
         a = api._PyArray_FromAny(a0, NULL, 0, 0, 0, NULL)
         assert api._PyArray_NDIM(a) == 0
diff --git a/pypy/module/micronumpy/base.py b/pypy/module/micronumpy/base.py
--- a/pypy/module/micronumpy/base.py
+++ b/pypy/module/micronumpy/base.py
@@ -31,7 +31,6 @@
     @staticmethod
     def from_shape(space, shape, dtype, order='C', w_instance=None):
         from pypy.module.micronumpy import concrete
-
         strides, backstrides = calc_strides(shape, dtype.base, order)
         impl = concrete.ConcreteArray(shape, dtype.base, order, strides,
                                   backstrides)
@@ -43,7 +42,6 @@
     def from_shape_and_storage(space, shape, storage, dtype, order='C', owning=False,
                                w_subtype=None, w_base=None, writable=True):
         from pypy.module.micronumpy import concrete
-        assert shape
         strides, backstrides = calc_strides(shape, dtype, order)
         if w_base is not None:
             if owning:
@@ -56,7 +54,6 @@
                 impl = concrete.ConcreteNonWritableArrayWithBase(shape, dtype, order,
                                                                  strides, backstrides,
                                                                  storage, w_base)
-
         elif owning:
             # Will free storage when GCd
             impl = concrete.ConcreteArray(shape, dtype, order, strides,


More information about the pypy-commit mailing list