[pypy-commit] pypy default: hack around failure to wrap __buffer__ in cf68a51fde59

mattip pypy.commits at gmail.com
Mon Oct 17 16:13:44 EDT 2016


Author: Matti Picus <matti.picus at gmail.com>
Branch: 
Changeset: r87850:d9effc59778a
Date: 2016-10-17 22:53 +0300
http://bitbucket.org/pypy/pypy/changeset/d9effc59778a/

Log:	hack around failure to wrap __buffer__ in cf68a51fde59

diff --git a/pypy/module/cpyext/buffer.py b/pypy/module/cpyext/buffer.py
--- a/pypy/module/cpyext/buffer.py
+++ b/pypy/module/cpyext/buffer.py
@@ -2,6 +2,7 @@
 from pypy.module.cpyext.api import (
     cpython_api, CANNOT_FAIL, Py_TPFLAGS_HAVE_NEWBUFFER)
 from pypy.module.cpyext.pyobject import PyObject
+from pypy.module.cpyext.bytesobject import PyBytesObject
 
 @cpython_api([PyObject], rffi.INT_real, error=CANNOT_FAIL)
 def PyObject_CheckBuffer(space, pyobj):
@@ -10,6 +11,10 @@
     flags = pyobj.c_ob_type.c_tp_flags
     if (flags & Py_TPFLAGS_HAVE_NEWBUFFER and as_buffer.c_bf_getbuffer):
         return 1
+    name = rffi.charp2str(pyobj.c_ob_type.c_tp_name)
+    if  name in ('str', 'bytes'):
+        # XXX remove once wrapper of __buffer__ -> bf_getbuffer works
+        return 1
     return 0  
 
     
diff --git a/pypy/module/cpyext/test/test_memoryobject.py b/pypy/module/cpyext/test/test_memoryobject.py
--- a/pypy/module/cpyext/test/test_memoryobject.py
+++ b/pypy/module/cpyext/test/test_memoryobject.py
@@ -8,7 +8,6 @@
 only_pypy ="config.option.runappdirect and '__pypy__' not in sys.builtin_module_names" 
 
 class TestMemoryViewObject(BaseApiTest):
-    skip('needs c_bf_getbuffer wrapper from slotdefs')
     def test_fromobject(self, space, api):
         w_hello = space.newbytes("hello")
         assert api.PyObject_CheckBuffer(w_hello)


More information about the pypy-commit mailing list