[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