fix method calls on Cython generated Python classes
authorStefan Behnel <scoder@users.berlios.de>
Wed, 21 May 2008 14:48:59 +0000 (16:48 +0200)
committerStefan Behnel <scoder@users.berlios.de>
Wed, 21 May 2008 14:48:59 +0000 (16:48 +0200)
Cython/Compiler/ExprNodes.py
Cython/Compiler/ModuleNode.py
tests/run/append.pyx

index b786bde5a3aabfd4312d360183e9cecd8131cf2a..542322576e11483eafcc074d77548a0539ab5416 100644 (file)
@@ -2483,7 +2483,7 @@ class UnboundMethodNode(ExprNode):
     
     def generate_result_code(self, code):
         code.putln(
-            "%s = __Pyx_PyMethod_New(%s, 0, %s); %s" % (
+            "%s = PyMethod_New(%s, 0, %s); %s" % (
                 self.result_code,
                 self.function.py_result(),
                 self.class_cname,
index 29595237ae8d2568c18066af76df879e7568ee75..a16410d36dbe9d4da0b0c666c8de8ecd4c506249 100644 (file)
@@ -416,9 +416,7 @@ class ModuleNode(Nodes.Node, Nodes.BlockNode):
 
         code.putln("#if PY_MAJOR_VERSION >= 3")
         code.putln("  #define PyNumber_Divide(x,y)         PyNumber_TrueDivide(x,y)")
-        code.putln("  #define __Pyx_PyMethod_New(func, self, klass) PyMethod_New(func, klass)")
-        code.putln("#else")
-        code.putln("  #define __Pyx_PyMethod_New(func, self, klass) PyMethod_New(func, self, klass)")
+        code.putln("  #define PyMethod_New(func, self, klass) PyInstanceMethod_New(func)")
         code.putln("#endif")
 
         code.putln("#ifndef __stdcall")
index b73939d331a6e7eaedeb9190e3274e6eda23c84e..a58622949445b21731da77f89c0529b8bd4e6b4f 100644 (file)
@@ -21,16 +21,12 @@ None
 [1, 2, (3, 4), 5, 6]
 """
 
-cdef extern from "Python.h":
-    ctypedef class __builtin__.list [ object PyListObject ]:
-        pass
-
 class A:
     def append(self, x):
         print u"appending"
         return x
 
-cdef class B(list):
+class B(list):
     def append(self, *args):
         for arg in args:
             list.append(self, arg)