Esempio n. 1
0
 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')
Esempio n. 2
0
 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
Esempio n. 3
0
    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)
Esempio n. 4
0
    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)
Esempio n. 5
0
 def __buffer__(self, flags):
     return newmemoryview(memoryview(self.data), 1, 'B')
Esempio n. 6
0
 def __buffer__(self, flags):
     fmt = type(self)._getformat()
     itemsize = type(self)._sizeofinstances()
     return __pypy__.newmemoryview(memoryview(self._buffer), itemsize, fmt,
                                   ())
Esempio n. 7
0
 def __buffer__(self, flags):
     rawview = memoryview(self._buffer)
     fmt = type(self)._getformat()
     itemsize = sizeof(type(self))
     return newmemoryview(rawview, itemsize, fmt, ())
Esempio n. 8
0
 def __buffer__(self, flags):
     mv = memoryview(self.getcontents())
     return newmemoryview(mv, mv.itemsize, '&' + mv.format, mv.shape)
Esempio n. 9
0
 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)