def test_empty(self): from __pypy__ import newmemoryview b = bytearray(0) m = newmemoryview(memoryview(b), 0, 'B', (42, )) assert m.tobytes() == b'' assert m.shape == (42, ) assert m.strides == (0, ) with raises(ValueError): newmemoryview(memoryview(b), 0, 'B')
def test_newmemoryview(self): from __pypy__ import newmemoryview b = bytearray(12) # The format can be anything, we only verify shape, strides, and itemsize m = newmemoryview(memoryview(b), 2, 'T{<h:a}', shape=(2, 3)) assert m.strides == (6, 2) m = newmemoryview(memoryview(b), 2, 'T{<h:a}', shape=(2, 3), strides=(6, 2)) assert m.strides == (6, 2) assert m.format == 'T{<h:a}' assert m.itemsize == 2
def __buffer__(self, flags): shape = [] obj = self while 1: shape.append(obj._length_) try: obj[0]._length_ except (AttributeError, IndexError): break obj = obj[0] fmt = obj._type_._getformat() itemsize = sizeof(obj._type_) return __pypy__.newmemoryview(memoryview(self._buffer), itemsize, fmt, shape)
def __buffer__(self, flags): shape = [] obj = self while 1: shape.append(obj._length_) try: obj[0]._length_ except (AttributeError, IndexError): break obj = obj[0] fmt = get_format_str(obj._type_) try: itemsize = struct.calcsize(fmt[1:]) except: itemsize = sizeof(obj[0]) return __pypy__.newmemoryview(memoryview(self._buffer), itemsize, fmt, shape)
def __buffer__(self, flags): return newmemoryview(memoryview(self.data), 1, 'B')
def __buffer__(self, flags): fmt = type(self)._getformat() itemsize = type(self)._sizeofinstances() return __pypy__.newmemoryview(memoryview(self._buffer), itemsize, fmt, ())
def __buffer__(self, flags): rawview = memoryview(self._buffer) fmt = type(self)._getformat() itemsize = sizeof(type(self)) return newmemoryview(rawview, itemsize, fmt, ())
def __buffer__(self, flags): mv = memoryview(self.getcontents()) return newmemoryview(mv, mv.itemsize, '&' + mv.format, mv.shape)
def __buffer__(self, flags): if flags & 1 and self.buffer.readonly: raise TypeError('cannot return a writable buffer') return __pypy__.newmemoryview(self.mview, self.mview.itemsize, self.mview.format, self.mview.shape)