[pypy-commit] pypy py3k: memoryview.__getitem__ must return bytes, not str

antocuni noreply at buildbot.pypy.org
Wed Mar 21 11:24:29 CET 2012


Author: Antonio Cuni <anto.cuni at gmail.com>
Branch: py3k
Changeset: r53852:af2c40cbec35
Date: 2012-03-21 11:11 +0100
http://bitbucket.org/pypy/pypy/changeset/af2c40cbec35/

Log:	memoryview.__getitem__ must return bytes, not str

diff --git a/pypy/module/__builtin__/interp_memoryview.py b/pypy/module/__builtin__/interp_memoryview.py
--- a/pypy/module/__builtin__/interp_memoryview.py
+++ b/pypy/module/__builtin__/interp_memoryview.py
@@ -81,10 +81,10 @@
     def descr_getitem(self, space, w_index):
         start, stop, step = space.decode_index(w_index, self.getlength())
         if step == 0:  # index only
-            return space.wrap(self.buf.getitem(start))
+            return space.wrapbytes(self.buf.getitem(start))
         elif step == 1:
             res = self.getslice(start, stop)
-            return space.wrap(res)
+            return space.wrapbytes(res)
         else:
             raise OperationError(space.w_ValueError,
                 space.wrap("memoryview object does not support"
diff --git a/pypy/module/__builtin__/test/test_buffer.py b/pypy/module/__builtin__/test/test_buffer.py
--- a/pypy/module/__builtin__/test/test_buffer.py
+++ b/pypy/module/__builtin__/test/test_buffer.py
@@ -11,6 +11,7 @@
         v = memoryview(b"abc")
         assert v.tobytes() == b"abc"
         assert len(v) == 3
+        assert v[0] == b'a'
         assert list(v) == [b'a', b'b', b'c']
         assert v.tolist() == [97, 98, 99]
         assert v[1] == b"b"


More information about the pypy-commit mailing list