[pypy-commit] pypy numppy-flatitter: added signature, all tests now pass

mattip noreply at buildbot.pypy.org
Wed Jan 25 21:50:05 CET 2012


Author: mattip
Branch: numppy-flatitter
Changeset: r51769:dd14fbe5d0a4
Date: 2012-01-25 22:34 +0200
http://bitbucket.org/pypy/pypy/changeset/dd14fbe5d0a4/

Log:	added signature, all tests now pass

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
@@ -898,7 +898,6 @@
         self.size = 1
         for s in self.shape:
             self.size *= s
-        xxx
 
     def _del_sources(self):
         self.left = None
@@ -1514,6 +1513,9 @@
             ai = (ai + 1) % arr.size
             basei = basei.next_skip_x(shapelen, step)
 
+    def create_sig(self):
+        return signature.FlatSignature(self.base.dtype)
+
     def descr_base(self, space):
         return space.wrap(self.base)
 
diff --git a/pypy/module/micronumpy/signature.py b/pypy/module/micronumpy/signature.py
--- a/pypy/module/micronumpy/signature.py
+++ b/pypy/module/micronumpy/signature.py
@@ -224,6 +224,18 @@
         return ViewIterator(arr.start, arr.strides, arr.backstrides,
                             arr.shape).apply_transformations(arr, transforms)
 
+class FlatSignature(ViewSignature):
+    def debug_repr(self):
+        return 'Flat'
+
+    def allocate_iter(self, arr, transforms):
+        from pypy.module.micronumpy.interp_numarray import W_FlatIterator
+        assert isinstance(arr, W_FlatIterator)
+        return ViewIterator(arr.base.start, arr.base.strides, 
+                    arr.base.backstrides,
+                    arr.base.shape).apply_transformations(arr.base,
+                                                         transforms)
+
 class VirtualSliceSignature(Signature):
     def __init__(self, child):
         self.child = child
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
@@ -962,7 +962,7 @@
         assert debug_repr(a + a) == 'Call2(add, Array, Array)'
         assert debug_repr(a[::2]) == 'Slice'
         assert debug_repr(a + 2) == 'Call2(add, Array, Scalar)'
-        assert debug_repr(a + a.flat) == 'Call2(add, Array, Slice)'
+        assert debug_repr(a + a.flat) == 'Call2(add, Array, Flat)'
         assert debug_repr(sin(a)) == 'Call1(sin, Array)'
 
         b = a + a


More information about the pypy-commit mailing list