[pypy-commit] pypy default: check values in swapaxes
bdkearns
noreply at buildbot.pypy.org
Tue Sep 23 21:29:58 CEST 2014
Author: Brian Kearns <bdkearns at gmail.com>
Branch:
Changeset: r73669:ae1f561d0a35
Date: 2014-09-23 15:29 -0400
http://bitbucket.org/pypy/pypy/changeset/ae1f561d0a35/
Log: check values in swapaxes
diff --git a/pypy/module/micronumpy/ndarray.py b/pypy/module/micronumpy/ndarray.py
--- a/pypy/module/micronumpy/ndarray.py
+++ b/pypy/module/micronumpy/ndarray.py
@@ -407,8 +407,19 @@
--------
numpy.swapaxes : equivalent function
"""
- if axis1 == axis2 or len(self.get_shape()) <= 1:
+ if axis1 == axis2:
return self
+ n = len(self.get_shape())
+ if n <= 1:
+ return self
+ if axis1 < 0:
+ axis1 += n
+ if axis2 < 0:
+ axis2 += n
+ if axis1 < 0 or axis1 >= n:
+ raise oefmt(space.w_ValueError, "bad axis1 argument to swapaxes")
+ if axis2 < 0 or axis2 >= n:
+ raise oefmt(space.w_ValueError, "bad axis2 argument to swapaxes")
return self.implementation.swapaxes(space, self, axis1, axis2)
def descr_nonzero(self, 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
@@ -2024,6 +2024,10 @@
assert x.swapaxes(0, 2) is x
x = array([[1, 2]])
assert x.swapaxes(0, 0) is x
+ exc = raises(ValueError, x.swapaxes, -3, 0)
+ assert exc.value.message == "bad axis1 argument to swapaxes"
+ exc = raises(ValueError, x.swapaxes, 0, 3)
+ assert exc.value.message == "bad axis2 argument to swapaxes"
# testcases from numpy docstring
x = array([[1, 2, 3]])
assert (x.swapaxes(0, 1) == array([[1], [2], [3]])).all()
More information about the pypy-commit
mailing list