[pypy-commit] pypy numpy-newbyteorder: provide ndarray.newbyteorder()

bdkearns noreply at buildbot.pypy.org
Thu Nov 14 09:33:56 CET 2013


Author: Brian Kearns <bdkearns at gmail.com>
Branch: numpy-newbyteorder
Changeset: r68019:303889d4a9d6
Date: 2013-11-14 03:23 -0500
http://bitbucket.org/pypy/pypy/changeset/303889d4a9d6/

Log:	provide ndarray.newbyteorder()

diff --git a/pypy/module/micronumpy/conversion_utils.py b/pypy/module/micronumpy/conversion_utils.py
--- a/pypy/module/micronumpy/conversion_utils.py
+++ b/pypy/module/micronumpy/conversion_utils.py
@@ -63,6 +63,7 @@
             raise OperationError(space.w_TypeError, space.wrap(
                 "order not understood"))
 
+
 def multi_axis_converter(space, w_axis, ndim):
     if space.is_none(w_axis):
         return [True] * ndim
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
@@ -625,10 +625,10 @@
         raise OperationError(space.w_NotImplementedError, space.wrap(
             "itemset not implemented yet"))
 
-    @unwrap_spec(neworder=str)
-    def descr_newbyteorder(self, space, neworder):
-        raise OperationError(space.w_NotImplementedError, space.wrap(
-            "newbyteorder not implemented yet"))
+    @unwrap_spec(new_order=str)
+    def descr_newbyteorder(self, space, new_order=NPY_SWAP):
+        return self.descr_view(space,
+            self.get_dtype().descr_newbyteorder(space, new_order))
 
     @unwrap_spec(w_axis=WrappedDefault(None),
                  w_out=WrappedDefault(None))
@@ -1268,6 +1268,7 @@
     diagonal = interp2app(W_NDimArray.descr_diagonal),
     trace = interp2app(W_NDimArray.descr_trace),
     view = interp2app(W_NDimArray.descr_view),
+    newbyteorder = interp2app(W_NDimArray.descr_newbyteorder),
 
     ctypes = GetSetProperty(W_NDimArray.descr_get_ctypes), # XXX unimplemented
     __array_interface__ = GetSetProperty(W_NDimArray.descr_array_iface),
diff --git a/pypy/module/micronumpy/test/test_numarray.py b/pypy/module/micronumpy/test/test_numarray.py
--- a/pypy/module/micronumpy/test/test_numarray.py
+++ b/pypy/module/micronumpy/test/test_numarray.py
@@ -2928,6 +2928,15 @@
         assert str(a.dtype) == '|S1'
         assert a == 'x'
 
+    def test_newbyteorder(self):
+        import numpy as np
+        a = np.array([1, 2], dtype=np.int16)
+        b = a.newbyteorder()
+        assert (b == [256, 512]).all()
+        c = b.byteswap()
+        assert (c == [1, 2]).all()
+        assert (a == [1, 2]).all()
+
     def test_pickle(self):
         from numpypy import dtype, array
         from cPickle import loads, dumps


More information about the pypy-commit mailing list