Author: Brian Kearns <[email protected]>
Branch:
Changeset: r70072:66fcaf1343c6
Date: 2014-03-18 20:41 -0400
http://bitbucket.org/pypy/pypy/changeset/66fcaf1343c6/
Log: fix buffer_w on objects defining pypy's app-level buffer interface
diff --git a/pypy/interpreter/baseobjspace.py b/pypy/interpreter/baseobjspace.py
--- a/pypy/interpreter/baseobjspace.py
+++ b/pypy/interpreter/baseobjspace.py
@@ -195,6 +195,11 @@
return None
def buffer_w(self, space):
+ w_impl = space.lookup(self, '__buffer__')
+ if w_impl is not None:
+ w_result = space.get_and_call_function(w_impl, self)
+ if space.isinstance_w(w_result, space.w_buffer):
+ return w_result.buffer_w(space)
self._typed_unwrap_error(space, "buffer")
def str_w(self, space):
diff --git a/pypy/objspace/std/test/test_memoryview.py
b/pypy/objspace/std/test/test_memoryview.py
--- a/pypy/objspace/std/test/test_memoryview.py
+++ b/pypy/objspace/std/test/test_memoryview.py
@@ -2,10 +2,14 @@
spaceconfig = dict(usemodules=['array'])
def test_init(self):
+ import sys
class A(object):
def __buffer__(self):
return buffer('123')
- raises(TypeError, buffer, A())
+ if '__pypy__' not in sys.builtin_module_names:
+ raises(TypeError, buffer, A())
+ else:
+ assert buffer(A()) == buffer('123')
def test_unicode_buffer(self):
import sys
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit