[pypy-commit] pypy numpy-generic-item: generic.transpose
yuyichao
noreply at buildbot.pypy.org
Tue Oct 21 23:10:54 CEST 2014
Author: Yichao Yu <yyc1992 at gmail.com>
Branch: numpy-generic-item
Changeset: r74053:5f0f0784b29a
Date: 2014-09-23 09:26 -0400
http://bitbucket.org/pypy/pypy/changeset/5f0f0784b29a/
Log: generic.transpose
diff --git a/pypy/module/micronumpy/boxes.py b/pypy/module/micronumpy/boxes.py
--- a/pypy/module/micronumpy/boxes.py
+++ b/pypy/module/micronumpy/boxes.py
@@ -161,6 +161,18 @@
"index %d is out of bounds for size 1", idx)
return self.item(space)
+ def descr_transpose(self, space, args_w):
+ if len(args_w) == 1 and space.isinstance_w(args_w[0], space.w_tuple):
+ args_w = space.fixedview(args_w[0])
+ if len(args_w) >= 1:
+ for w_arg in args_w:
+ try:
+ idx = support.index_w(space, w_arg)
+ except OperationError:
+ raise oefmt(space.w_TypeError, "an integer is required")
+ raise oefmt(space.w_ValueError, "axes don't match array")
+ return self.item(space)
+
def descr_getitem(self, space, w_item):
from pypy.module.micronumpy.base import convert_to_array
if space.is_w(w_item, space.w_Ellipsis) or \
@@ -637,6 +649,7 @@
tolist = interp2app(W_GenericBox.item),
item = interp2app(W_GenericBox.descr_item),
+ transpose = interp2app(W_GenericBox.descr_transpose),
min = interp2app(W_GenericBox.descr_self),
max = interp2app(W_GenericBox.descr_self),
argmin = interp2app(W_GenericBox.descr_zero),
diff --git a/pypy/module/micronumpy/test/test_scalar.py b/pypy/module/micronumpy/test/test_scalar.py
--- a/pypy/module/micronumpy/test/test_scalar.py
+++ b/pypy/module/micronumpy/test/test_scalar.py
@@ -293,11 +293,14 @@
def test_scalar_iter(self):
from numpypy import int8, int16, int32, int64, float32, float64
- for t in int8, int16, int32, int64, float32, float64:
+ from numpypy import complex64, complex128
+ for t in (int8, int16, int32, int64, float32, float64,
+ complex64, complex128):
raises(TypeError, iter, t(17))
def test_item_tolist(self):
from numpypy import int8, int16, int32, int64, float32, float64
+ from numpypy import complex64, complex128
for t in int8, int16, int32, int64:
val = t(17)
assert val == 17
@@ -327,3 +330,51 @@
raises(ValueError, val.item, 0, '')
raises(TypeError, val.item, '')
raises(IndexError, val.item, 2)
+
+ for t in complex64, complex128:
+ val = t(17j)
+ assert val == 17j
+ assert val.item() == 17j
+ assert val.tolist() == 17j
+ assert type(val.item()) == complex
+ assert type(val.tolist()) == complex
+ val.item(0)
+ val.item(())
+ val.item((0,))
+ raises(ValueError, val.item, 0, 1)
+ raises(ValueError, val.item, 0, '')
+ raises(TypeError, val.item, '')
+ raises(IndexError, val.item, 2)
+
+ def test_transpose(self):
+ from numpypy import int8, int16, int32, int64, float32, float64
+ from numpypy import complex64, complex128
+ for t in int8, int16, int32, int64:
+ val = t(17)
+ assert val == 17
+ assert val.transpose() == 17
+ assert type(val.transpose()) == int
+ val.transpose(())
+ raises(ValueError, val.transpose, 0, 1)
+ raises(TypeError, val.transpose, 0, '')
+ raises(ValueError, val.transpose, 0)
+
+ for t in float32, float64:
+ val = t(17)
+ assert val == 17
+ assert val.transpose() == 17
+ assert type(val.transpose()) == float
+ val.transpose(())
+ raises(ValueError, val.transpose, 0, 1)
+ raises(TypeError, val.transpose, 0, '')
+ raises(ValueError, val.transpose, 0)
+
+ for t in complex64, complex128:
+ val = t(17j)
+ assert val == 17j
+ assert val.transpose() == 17j
+ assert type(val.transpose()) == complex
+ val.transpose(())
+ raises(ValueError, val.transpose, 0, 1)
+ raises(TypeError, val.transpose, 0, '')
+ raises(ValueError, val.transpose, 0)
More information about the pypy-commit
mailing list