@@ -126,7 +126,7 @@ interface
126126  end ;
127127const 
128128{ $IFDEF MSWINDOWS} 
129-   PYTHON_KNOWN_VERSIONS: array [1 ..9 ] of  TPythonVersionProp =
129+   PYTHON_KNOWN_VERSIONS: array [1 ..10 ] of  TPythonVersionProp =
130130  ( (DllName: ' python23.dll'  ; RegVersion: ' 2.3'  ; APIVersion: 1012 ; CanUseLatest: True),
131131    (DllName: ' python24.dll'  ; RegVersion: ' 2.4'  ; APIVersion: 1012 ; CanUseLatest: True),
132132    (DllName: ' python25.dll'  ; RegVersion: ' 2.5'  ; APIVersion: 1013 ; CanUseLatest: True),
@@ -135,10 +135,11 @@ interface
135135    (DllName: ' python30.dll'  ; RegVersion: ' 3.0'  ; APIVersion: 1013 ; CanUseLatest: True),
136136    (DllName: ' python31.dll'  ; RegVersion: ' 3.1'  ; APIVersion: 1013 ; CanUseLatest: True),
137137    (DllName: ' python32.dll'  ; RegVersion: ' 3.2'  ; APIVersion: 1013 ; CanUseLatest: True),
138-     (DllName: ' python33.dll'  ; RegVersion: ' 3.3'  ; APIVersion: 1013 ; CanUseLatest: True) );
138+     (DllName: ' python33.dll'  ; RegVersion: ' 3.3'  ; APIVersion: 1013 ; CanUseLatest: True),
139+     (DllName: ' python34.dll'  ; RegVersion: ' 3.4'  ; APIVersion: 1013 ; CanUseLatest: True) );
139140{ $ENDIF} 
140141{ $IFDEF LINUX} 
141-   PYTHON_KNOWN_VERSIONS: array [1 ..9 ] of  TPythonVersionProp =
142+   PYTHON_KNOWN_VERSIONS: array [1 ..10 ] of  TPythonVersionProp =
142143  ( (DllName: ' libpython2.3.so'  ; RegVersion: ' 2.3'  ; APIVersion: 1012 ; CanUseLatest: True),
143144    (DllName: ' libpython2.4.so'  ; RegVersion: ' 2.4'  ; APIVersion: 1012 ; CanUseLatest: True),
144145    (DllName: ' libpython2.5.so'  ; RegVersion: ' 2.5'  ; APIVersion: 1013 ; CanUseLatest: True),
@@ -147,7 +148,8 @@ interface
147148    (DllName: ' libpython3.0.so'  ; RegVersion: ' 3.0'  ; APIVersion: 1013 ; CanUseLatest: True),
148149    (DllName: ' libpython3.1.so'  ; RegVersion: ' 3.1'  ; APIVersion: 1013 ; CanUseLatest: True),
149150    (DllName: ' libpython3.2.so'  ; RegVersion: ' 3.2'  ; APIVersion: 1013 ; CanUseLatest: True),
150-     (DllName: ' libpython3.3.so'  ; RegVersion: ' 3.3'  ; APIVersion: 1013 ; CanUseLatest: True) );
151+     (DllName: ' libpython3.3.so'  ; RegVersion: ' 3.3'  ; APIVersion: 1013 ; CanUseLatest: True),
152+     (DllName: ' libpython3.4.so'  ; RegVersion: ' 3.4'  ; APIVersion: 1013 ; CanUseLatest: True) );
151153{ $ENDIF} 
152154{ $IFDEF PYTHON23} 
153155  COMPILED_FOR_PYTHON_VERSION_INDEX = 1 ;
@@ -176,7 +178,9 @@ interface
176178{ $IFDEF PYTHON33} 
177179  COMPILED_FOR_PYTHON_VERSION_INDEX = 9 ;
178180{ $ENDIF} 
179- 
181+ { $IFDEF PYTHON34} 
182+   COMPILED_FOR_PYTHON_VERSION_INDEX = 10 ;
183+ { $ENDIF} 
180184  PYT_METHOD_BUFFER_INCREASE = 10 ;
181185  PYT_MEMBER_BUFFER_INCREASE = 10 ;
182186  PYT_GETSET_BUFFER_INCREASE = 10 ;
@@ -1704,6 +1708,7 @@   TPythonInterface=class(TDynamicDll)
17041708    PySys_SetArgv3000:    procedure( argc: Integer; argv: PPWideChar); cdecl;
17051709
17061710    PyCFunction_New: function(md:PPyMethodDef;ob:PPyObject):PPyObject; cdecl;
1711+     PyCFunction_NewEx: function(md:PPyMethodDef;self, ob:PPyObject):PPyObject; cdecl;
17071712//  Removed.  Use PyEval_CallObjectWithKeywords with third argument nil
17081713//     PyEval_CallObject: function(callable_obj, args:PPyObject):PPyObject; cdecl;
17091714    PyEval_CallObjectWithKeywords:function (callable_obj, args, kw:PPyObject):PPyObject; cdecl;
@@ -3752,7 +3757,12 @@ procedure TPythonInterface.MapDll;
37523757    PySys_SetArgv3000         := Import (' PySys_SetArgv'  );
37533758  Py_Exit                   := Import (' Py_Exit'  );
37543759
3755-   PyCFunction_New           :=Import (' PyCFunction_New'  );
3760+   if  IsPython3000 then 
3761+     PyCFunction_NewEx           :=Import (' PyCFunction_NewEx'  )
3762+   else 
3763+     PyCFunction_New           :=Import (' PyCFunction_New'  );
3764+ 
3765+ 
37563766  PyEval_CallObjectWithKeywords:=Import (' PyEval_CallObjectWithKeywords'  );
37573767  PyEval_GetFrame           :=Import (' PyEval_GetFrame'  );
37583768  PyEval_GetGlobals         :=Import (' PyEval_GetGlobals'  );
@@ -8915,7 +8925,10 @@ procedure TPythonType.AddTypeVar;
89158925      FCreateFuncDef.ml_meth  := GetOfObjectCallBack( TCallBack(meth), 2 , ctCDECL);
89168926      FCreateFuncDef.ml_flags := METH_VARARGS;
89178927      FCreateFuncDef.ml_doc   := PAnsiChar(FCreateFuncDoc);
8918-       FCreateFunc := Engine.PyCFunction_New(@FCreateFuncDef, nil );
8928+       if  GetPythonEngine.IsPython3000 then 
8929+         FCreateFunc := Engine.PyCFunction_NewEx(@FCreateFuncDef, nil , nil )
8930+       else 
8931+         FCreateFunc := Engine.PyCFunction_New(@FCreateFuncDef, nil );
89198932    end ;
89208933    Assert(Assigned(FCreateFunc));
89218934  end ;
0 commit comments