[pypy-commit] pypy memoryview-attributes: move stride, format, ndim, itemsize, shape down to Buffer, override in ArrayBuffer
mattip
pypy.commits at gmail.com
Sun Aug 14 16:12:16 EDT 2016
Author: Matti Picus <matti.picus at gmail.com>
Branch: memoryview-attributes
Changeset: r86189:0fcf7070dd43
Date: 2016-08-14 22:07 +0300
http://bitbucket.org/pypy/pypy/changeset/0fcf7070dd43/
Log: move stride, format, ndim, itemsize, shape down to Buffer, override
in ArrayBuffer
diff --git a/pypy/module/micronumpy/concrete.py b/pypy/module/micronumpy/concrete.py
--- a/pypy/module/micronumpy/concrete.py
+++ b/pypy/module/micronumpy/concrete.py
@@ -704,3 +704,20 @@
def get_raw_address(self):
from rpython.rtyper.lltypesystem import rffi
return rffi.ptradd(self.impl.storage, self.impl.start)
+
+ def getformat(self):
+ return self.impl.dtype.char
+
+ def getitemsize(self):
+ return self.impl.dtype.elsize
+
+ def getndim(self):
+ return len(self.impl.shape)
+
+ def getshape(self):
+ return self.impl.shape
+
+ def getstrides(self):
+ return self.impl.strides
+
+
diff --git a/pypy/objspace/std/memoryobject.py b/pypy/objspace/std/memoryobject.py
--- a/pypy/objspace/std/memoryobject.py
+++ b/pypy/objspace/std/memoryobject.py
@@ -100,22 +100,22 @@
return space.wrap(self.buf.getlength())
def w_get_format(self, space):
- return space.wrap("B")
+ return space.wrap(self.buf.getformat())
def w_get_itemsize(self, space):
- return space.wrap(1)
+ return space.wrap(self.buf.getitemsize())
def w_get_ndim(self, space):
- return space.wrap(1)
+ return space.wrap(self.buf.getndim())
def w_is_readonly(self, space):
return space.wrap(self.buf.readonly)
def w_get_shape(self, space):
- return space.newtuple([space.wrap(self.getlength())])
+ return space.newtuple([space.wrap(x) for x in self.buf.getshape()])
def w_get_strides(self, space):
- return space.newtuple([space.wrap(1)])
+ return space.newtuple([space.wrap(x) for x in self.buf.getstrides()])
def w_get_suboffsets(self, space):
# I've never seen anyone filling this field
diff --git a/rpython/rlib/buffer.py b/rpython/rlib/buffer.py
--- a/rpython/rlib/buffer.py
+++ b/rpython/rlib/buffer.py
@@ -59,6 +59,20 @@
def get_raw_address(self):
raise ValueError("no raw buffer")
+ def getformat(self):
+ return 'B'
+
+ def getitemsize(self):
+ return 1
+
+ def getndim(self):
+ return 1
+
+ def getshape(self):
+ return [self.getlength()]
+
+ def getstrides(self):
+ return [1]
class StringBuffer(Buffer):
__slots__ = ['value']
More information about the pypy-commit
mailing list