[pypy-commit] pypy py3.5-memoryview: making all memoryobject tests pass. resolve several issues in get/setitem
plan_rich
pypy.commits at gmail.com
Sat Aug 27 02:56:49 EDT 2016
Author: Richard Plangger <planrichi at gmail.com>
Branch: py3.5-memoryview
Changeset: r86589:72bfb3417856
Date: 2016-08-27 08:56 +0200
http://bitbucket.org/pypy/pypy/changeset/72bfb3417856/
Log: making all memoryobject tests pass. resolve several issues in
get/setitem
diff --git a/pypy/objspace/std/bytearrayobject.py b/pypy/objspace/std/bytearrayobject.py
--- a/pypy/objspace/std/bytearrayobject.py
+++ b/pypy/objspace/std/bytearrayobject.py
@@ -496,7 +496,7 @@
return data
HEXDIGITS = "0123456789abcdef"
-PY_SIZE_T_MAX = intmask(2**(rffi.sizeof(rffi.SIZE_T)*8)-1)
+PY_SIZE_T_MAX = intmask(2**(rffi.sizeof(rffi.SIZE_T)*8-1)-1)
@specialize.arg(3) # raw access
def _array_to_hexstring(space, buf, len=0, rawaccess=False):
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
@@ -48,7 +48,7 @@
def buffer_w_ex(self, space, flags):
self._check_released(space)
space.check_buf_flags(flags, self.buf.readonly)
- return self.buf, self.get_format(), self.itemsize
+ return self.buf, self.getformat(), self.itemsize
@staticmethod
def descr_new_memoryview(space, w_subtype, w_object):
@@ -157,16 +157,17 @@
if space.isinstance_w(w_index, space.w_tuple):
return self._getitem_tuple_indexed(space, w_index)
- start, stop, step, size = space.decode_index4_or_tuple_index(w_index, \
- self.getlength())
- itemsize = self.buf.getitemsize()
+ start, stop, step, size = space.decode_index4(w_index, self.getlength())
+ itemsize = self.itemsize
if itemsize > 1:
start *= itemsize
size *= itemsize
stop = start + size
- if step == 0:
- step = 1
- if stop > self.getlength():
+ # XXX why? returns a memory view on int index if step == 0:
+ # step = 1
+
+ # start & stop are now byte offset, thus use self.bug.getlength()
+ if stop > self.buf.getlength():
raise oefmt(space.w_IndexError, 'index out of range')
if step not in (0, 1):
raise oefmt(space.w_NotImplementedError, "")
@@ -190,21 +191,19 @@
if space.isinstance_w(w_index, space.w_tuple):
raise oefmt(space.w_NotImplementedError, "")
start, stop, step, size = space.decode_index4(w_index, self.getlength())
- itemsize = self.buf.getitemsize()
+ itemsize = self.itemsize
if itemsize > 1:
start *= itemsize
size *= itemsize
stop = start + size
- if step == 0:
- step = 1
- if stop > self.getlength():
+ # XXX why? returns a memory view on int index if step == 0:
+ # step = 1
+
+ # start & stop are now byte offset, thus use self.bug.getlength()
+ if stop > self.buf.getlength():
raise oefmt(space.w_IndexError, 'index out of range')
if step not in (0, 1):
raise oefmt(space.w_NotImplementedError, "")
- value = space.buffer_w(w_obj, space.BUF_CONTIG_RO)
- if value.getlength() != size:
- raise oefmt(space.w_ValueError,
- "cannot modify size of memoryview object")
if step == 0: # index only
# TODO: this probably isn't very fast
fmtiter = PackFormatIterator(space, [w_obj], self.itemsize)
@@ -226,7 +225,7 @@
def descr_len(self, space):
self._check_released(space)
- return space.wrap(self.buf.getlength())
+ return space.wrap(self.getlength())
def w_get_format(self, space):
self._check_released(space)
@@ -234,7 +233,7 @@
def w_get_itemsize(self, space):
self._check_released(space)
- return space.wrap(self.buf.getitemsize())
+ return space.wrap(self.itemsize)
def w_get_ndim(self, space):
self._check_released(space)
@@ -426,7 +425,7 @@
self.setformat(newfmt)
self.itemsize = itemsize
self.ndim = 1
- self.shape = [buf.getlength() / buf.getitemsize()]
+ self.shape = [buf.getlength() // buf.getitemsize()]
self.srides = [buf.getitemsize()]
# XX suboffsets
diff --git a/pypy/objspace/std/test/test_memoryobject.py b/pypy/objspace/std/test/test_memoryobject.py
--- a/pypy/objspace/std/test/test_memoryobject.py
+++ b/pypy/objspace/std/test/test_memoryobject.py
@@ -266,7 +266,7 @@
from pypy.objspace.std.transparent import register_proxyable
from pypy.conftest import option
-class AppTestMemoryViewMicroNumPyPy(object):
+class AppTestMemoryViewMockBuffer(object):
spaceconfig = dict(usemodules=[])
def setup_class(cls):
if option.runappdirect:
More information about the pypy-commit
mailing list