[pypy-svn] r79857 - in pypy/branch/fast-forward/pypy/module/__builtin__: . test

afa at codespeak.net afa at codespeak.net
Mon Dec 6 23:56:43 CET 2010


Author: afa
Date: Mon Dec  6 23:56:39 2010
New Revision: 79857

Modified:
   pypy/branch/fast-forward/pypy/module/__builtin__/interp_memoryview.py
   pypy/branch/fast-forward/pypy/module/__builtin__/test/test_buffer.py
Log:
Implement memoryview.suboffsets


Modified: pypy/branch/fast-forward/pypy/module/__builtin__/interp_memoryview.py
==============================================================================
--- pypy/branch/fast-forward/pypy/module/__builtin__/interp_memoryview.py	(original)
+++ pypy/branch/fast-forward/pypy/module/__builtin__/interp_memoryview.py	Mon Dec  6 23:56:39 2010
@@ -113,6 +113,14 @@
         return space.newtuple([space.wrap(self.getlength())])
     def w_get_strides(space, self):
         return space.newtuple([space.wrap(1)])
+    def w_get_suboffsets(space, self):
+        if isinstance(self.buf, buffer.SubBuffer):
+            offset = self.buf.offset
+        elif isinstance(self.buf, buffer.RWSubBuffer):
+            offset = self.buf.offset
+        else:
+            offset = 0
+        return space.newtuple([space.wrap(offset)])
 
 
 @unwrap_spec(ObjSpace, W_Root, W_Root)
@@ -144,6 +152,6 @@
     readonly    = GetSetProperty(W_MemoryView.w_is_readonly),
     shape       = GetSetProperty(W_MemoryView.w_get_shape),
     strides     = GetSetProperty(W_MemoryView.w_get_strides),
-    #suboffsets? undocumented
+    suboffsets  = GetSetProperty(W_MemoryView.w_get_suboffsets),
     )
 W_MemoryView.typedef.acceptable_as_base_class = False

Modified: pypy/branch/fast-forward/pypy/module/__builtin__/test/test_buffer.py
==============================================================================
--- pypy/branch/fast-forward/pypy/module/__builtin__/test/test_buffer.py	(original)
+++ pypy/branch/fast-forward/pypy/module/__builtin__/test/test_buffer.py	Mon Dec  6 23:56:39 2010
@@ -192,3 +192,10 @@
         assert v.shape == (100,)
         assert v.ndim == 1
         assert v.strides == (1,)
+
+    def test_suboffsets(self):
+        v = memoryview("a"*100)
+        assert v.suboffsets == (0,)
+        v = memoryview(buffer("a"*100, 2))
+        assert v.shape == (98,)
+        assert v.suboffsets == (2,)



More information about the Pypy-commit mailing list