Author: mattip <[email protected]>
Branch:
Changeset: r79884:3e89b1604c3c
Date: 2015-09-28 20:30 +0300
http://bitbucket.org/pypy/pypy/changeset/3e89b1604c3c/
Log: redo 399217ef3933 so all tests pass, fix test for upstream
compatibility
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
@@ -117,12 +117,14 @@
return W_NDimArray(impl)
@staticmethod
- def new_slice(space, offset, strides, backstrides, shape, parent,
orig_arr, dtype=None):
+ def new_slice(space, offset, strides, backstrides, shape, parent, w_arr,
dtype=None):
from pypy.module.micronumpy import concrete
-
+ w_base = w_arr
+ if w_arr.implementation.base() is not None:
+ w_base = w_arr.implementation.base()
impl = concrete.SliceArray(offset, strides, backstrides, shape, parent,
- orig_arr, dtype)
- return wrap_impl(space, space.type(orig_arr), orig_arr, impl)
+ w_base, dtype)
+ return wrap_impl(space, space.type(w_arr), w_arr, impl)
@staticmethod
def new_scalar(space, dtype, w_val=None):
diff --git a/pypy/module/micronumpy/concrete.py
b/pypy/module/micronumpy/concrete.py
--- a/pypy/module/micronumpy/concrete.py
+++ b/pypy/module/micronumpy/concrete.py
@@ -568,11 +568,6 @@
self.size = ovfcheck(support.product_check(shape) *
self.dtype.elsize)
except OverflowError:
raise oefmt(dtype.itemtype.space.w_ValueError, "array is too big.")
- while orig_arr is not None:
- assert isinstance(orig_arr, W_NDimArray)
- if orig_arr.implementation.base() is None:
- break
- orig_arr = orig_arr.implementation.base()
self.start = start
self.orig_arr = orig_arr
flags = parent.flags & NPY.ARRAY_ALIGNED
diff --git a/pypy/module/micronumpy/ctors.py b/pypy/module/micronumpy/ctors.py
--- a/pypy/module/micronumpy/ctors.py
+++ b/pypy/module/micronumpy/ctors.py
@@ -133,7 +133,9 @@
return w_arr
else:
imp = w_object.implementation
- w_base = imp.base() or w_object
+ w_base = w_object
+ if imp.base() is not None:
+ w_base = imp.base()
with imp as storage:
sz = support.product(w_object.get_shape()) * dtype.elsize
return W_NDimArray.from_shape_and_storage(space,
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
@@ -2519,10 +2519,10 @@
assert b.shape == b[...].shape
assert (b == b[...]).all()
- a = np.arange(6).reshape(2, 3)
+ a = np.arange(6)
if '__pypy__' in sys.builtin_module_names:
raises(ValueError, "a[..., ...]")
- b = a [..., 0]
+ b = a.reshape(2, 3)[..., 0]
assert (b == [0, 3]).all()
assert b.base is a
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit