Omit setting docstring for __getbuffer__/__releasebuffer__
authorMark Florisson <markflorisson88@gmail.com>
Tue, 4 Dec 2012 22:10:46 +0000 (22:10 +0000)
committerMark Florisson <markflorisson88@gmail.com>
Tue, 4 Dec 2012 22:10:46 +0000 (22:10 +0000)
--HG--
extra : transplant_source : %04%AD%9D%8Dy%E4%7F%D04ib%0E%90%DB%D48%C3%88%19g

Cython/Compiler/ModuleNode.py
tests/buffers/buffer.pyx

index 5bce331..a3e1a48 100644 (file)
@@ -2353,7 +2353,10 @@ class ModuleNode(Nodes.Node, Nodes.BlockNode):
                 # unless we let PyType_Ready create the slot wrappers we have
                 # a significant performance hit. (See trac #561.)
                 for func in entry.type.scope.pyfunc_entries:
-                    if func.is_special and Options.docstrings and func.wrapperbase_cname:
+                    is_buffer = func.name in ('__getbuffer__',
+                                               '__releasebuffer__')
+                    if (func.is_special and Options.docstrings and
+                            func.wrapperbase_cname and not is_buffer):
                         code.putln('#if CYTHON_COMPILING_IN_CPYTHON')
                         code.putln("{")
                         code.putln(
index 293a000..16d593d 100644 (file)
@@ -52,3 +52,9 @@ cdef class TestBuffer:
 cdef class TestBufferRelease(TestBuffer):
     def __releasebuffer__(self, Py_buffer* buffer):
         print u"releasing!"
+
+cdef class TestCompileWithDocstring(object):
+    def __getbuffer__(self, Py_buffer* buffer, int flags):
+        "I am a docstring!"
+    def __releasebuffer__(self, Py_buffer* buf):
+        "I am a docstring!"