diff -r 24f2c0279120 PC/python3.def --- a/PC/python3.def Mon Apr 13 15:51:59 2015 -0500 +++ b/PC/python3.def Mon Apr 13 16:10:34 2015 -0500 @@ -1,13 +1,15 @@ ; This file specifies the import forwarding for python3.dll ; It is used when building python3dll.vcxproj +; Generated by python3defgen.py, DO NOT modify directly! LIBRARY "python3" EXPORTS + PyAST_FromNode=python35.PyAST_FromNode + PyAST_FromNodeObject=python35.PyAST_FromNodeObject + PyAST_Validate=python35.PyAST_Validate PyArg_Parse=python35.PyArg_Parse PyArg_ParseTuple=python35.PyArg_ParseTuple PyArg_ParseTupleAndKeywords=python35.PyArg_ParseTupleAndKeywords PyArg_UnpackTuple=python35.PyArg_UnpackTuple - PyArg_VaParse=python35.PyArg_VaParse - PyArg_VaParseTupleAndKeywords=python35.PyArg_VaParseTupleAndKeywords PyArg_ValidateKeywordArguments=python35.PyArg_ValidateKeywordArguments PyBaseObject_Type=python35.PyBaseObject_Type DATA PyBool_FromLong=python35.PyBool_FromLong @@ -39,7 +41,6 @@ PyCFunction_GetFlags=python35.PyCFunction_GetFlags PyCFunction_GetFunction=python35.PyCFunction_GetFunction PyCFunction_GetSelf=python35.PyCFunction_GetSelf - PyCFunction_New=python35.PyCFunction_New PyCFunction_NewEx=python35.PyCFunction_NewEx PyCFunction_Type=python35.PyCFunction_Type DATA PyCallIter_New=python35.PyCallIter_New @@ -58,6 +59,7 @@ PyCapsule_SetPointer=python35.PyCapsule_SetPointer PyCapsule_Type=python35.PyCapsule_Type DATA PyClassMethodDescr_Type=python35.PyClassMethodDescr_Type DATA + PyCmpWrapper_Type=python35.PyCmpWrapper_Type DATA PyCodec_BackslashReplaceErrors=python35.PyCodec_BackslashReplaceErrors PyCodec_Decode=python35.PyCodec_Decode PyCodec_Decoder=python35.PyCodec_Decoder @@ -68,6 +70,7 @@ PyCodec_IncrementalEncoder=python35.PyCodec_IncrementalEncoder PyCodec_KnownEncoding=python35.PyCodec_KnownEncoding PyCodec_LookupError=python35.PyCodec_LookupError + PyCodec_NameReplaceErrors=python35.PyCodec_NameReplaceErrors PyCodec_Register=python35.PyCodec_Register PyCodec_RegisterError=python35.PyCodec_RegisterError PyCodec_ReplaceErrors=python35.PyCodec_ReplaceErrors @@ -122,6 +125,7 @@ PyErr_Fetch=python35.PyErr_Fetch PyErr_Format=python35.PyErr_Format PyErr_FormatV=python35.PyErr_FormatV + PyErr_GetExcInfo=python35.PyErr_GetExcInfo PyErr_GivenExceptionMatches=python35.PyErr_GivenExceptionMatches PyErr_NewException=python35.PyErr_NewException PyErr_NewExceptionWithDoc=python35.PyErr_NewExceptionWithDoc @@ -132,14 +136,25 @@ PyErr_PrintEx=python35.PyErr_PrintEx PyErr_ProgramText=python35.PyErr_ProgramText PyErr_Restore=python35.PyErr_Restore + PyErr_SetExcFromWindowsErr=python35.PyErr_SetExcFromWindowsErr + PyErr_SetExcFromWindowsErrWithFilename=python35.PyErr_SetExcFromWindowsErrWithFilename + PyErr_SetExcFromWindowsErrWithFilenameObject=python35.PyErr_SetExcFromWindowsErrWithFilenameObject + PyErr_SetExcFromWindowsErrWithFilenameObjects=python35.PyErr_SetExcFromWindowsErrWithFilenameObjects + PyErr_SetExcInfo=python35.PyErr_SetExcInfo + PyErr_SetExcWithArgsKwargs=python35.PyErr_SetExcWithArgsKwargs PyErr_SetFromErrno=python35.PyErr_SetFromErrno PyErr_SetFromErrnoWithFilename=python35.PyErr_SetFromErrnoWithFilename PyErr_SetFromErrnoWithFilenameObject=python35.PyErr_SetFromErrnoWithFilenameObject + PyErr_SetFromErrnoWithFilenameObjects=python35.PyErr_SetFromErrnoWithFilenameObjects + PyErr_SetFromWindowsErr=python35.PyErr_SetFromWindowsErr + PyErr_SetFromWindowsErrWithFilename=python35.PyErr_SetFromWindowsErrWithFilename + PyErr_SetImportError=python35.PyErr_SetImportError PyErr_SetInterrupt=python35.PyErr_SetInterrupt PyErr_SetNone=python35.PyErr_SetNone PyErr_SetObject=python35.PyErr_SetObject PyErr_SetString=python35.PyErr_SetString PyErr_SyntaxLocation=python35.PyErr_SyntaxLocation + PyErr_SyntaxLocationEx=python35.PyErr_SyntaxLocationEx PyErr_WarnEx=python35.PyErr_WarnEx PyErr_WarnExplicit=python35.PyErr_WarnExplicit PyErr_WarnFormat=python35.PyErr_WarnFormat @@ -171,12 +186,21 @@ PyExc_AssertionError=python35.PyExc_AssertionError DATA PyExc_AttributeError=python35.PyExc_AttributeError DATA PyExc_BaseException=python35.PyExc_BaseException DATA + PyExc_BlockingIOError=python35.PyExc_BlockingIOError DATA + PyExc_BrokenPipeError=python35.PyExc_BrokenPipeError DATA PyExc_BufferError=python35.PyExc_BufferError DATA PyExc_BytesWarning=python35.PyExc_BytesWarning DATA + PyExc_ChildProcessError=python35.PyExc_ChildProcessError DATA + PyExc_ConnectionAbortedError=python35.PyExc_ConnectionAbortedError DATA + PyExc_ConnectionError=python35.PyExc_ConnectionError DATA + PyExc_ConnectionRefusedError=python35.PyExc_ConnectionRefusedError DATA + PyExc_ConnectionResetError=python35.PyExc_ConnectionResetError DATA PyExc_DeprecationWarning=python35.PyExc_DeprecationWarning DATA PyExc_EOFError=python35.PyExc_EOFError DATA PyExc_EnvironmentError=python35.PyExc_EnvironmentError DATA PyExc_Exception=python35.PyExc_Exception DATA + PyExc_FileExistsError=python35.PyExc_FileExistsError DATA + PyExc_FileNotFoundError=python35.PyExc_FileNotFoundError DATA PyExc_FloatingPointError=python35.PyExc_FloatingPointError DATA PyExc_FutureWarning=python35.PyExc_FutureWarning DATA PyExc_GeneratorExit=python35.PyExc_GeneratorExit DATA @@ -185,18 +209,23 @@ PyExc_ImportWarning=python35.PyExc_ImportWarning DATA PyExc_IndentationError=python35.PyExc_IndentationError DATA PyExc_IndexError=python35.PyExc_IndexError DATA + PyExc_InterruptedError=python35.PyExc_InterruptedError DATA + PyExc_IsADirectoryError=python35.PyExc_IsADirectoryError DATA PyExc_KeyError=python35.PyExc_KeyError DATA PyExc_KeyboardInterrupt=python35.PyExc_KeyboardInterrupt DATA PyExc_LookupError=python35.PyExc_LookupError DATA PyExc_MemoryError=python35.PyExc_MemoryError DATA - PyExc_MemoryErrorInst=python35.PyExc_MemoryErrorInst DATA PyExc_NameError=python35.PyExc_NameError DATA + PyExc_NotADirectoryError=python35.PyExc_NotADirectoryError DATA PyExc_NotImplementedError=python35.PyExc_NotImplementedError DATA PyExc_OSError=python35.PyExc_OSError DATA PyExc_OverflowError=python35.PyExc_OverflowError DATA PyExc_PendingDeprecationWarning=python35.PyExc_PendingDeprecationWarning DATA + PyExc_PermissionError=python35.PyExc_PermissionError DATA + PyExc_ProcessLookupError=python35.PyExc_ProcessLookupError DATA PyExc_RecursionErrorInst=python35.PyExc_RecursionErrorInst DATA PyExc_ReferenceError=python35.PyExc_ReferenceError DATA + PyExc_ResourceWarning=python35.PyExc_ResourceWarning DATA PyExc_RuntimeError=python35.PyExc_RuntimeError DATA PyExc_RuntimeWarning=python35.PyExc_RuntimeWarning DATA PyExc_StopIteration=python35.PyExc_StopIteration DATA @@ -205,6 +234,7 @@ PyExc_SystemError=python35.PyExc_SystemError DATA PyExc_SystemExit=python35.PyExc_SystemExit DATA PyExc_TabError=python35.PyExc_TabError DATA + PyExc_TimeoutError=python35.PyExc_TimeoutError DATA PyExc_TypeError=python35.PyExc_TypeError DATA PyExc_UnboundLocalError=python35.PyExc_UnboundLocalError DATA PyExc_UnicodeDecodeError=python35.PyExc_UnicodeDecodeError DATA @@ -215,6 +245,7 @@ PyExc_UserWarning=python35.PyExc_UserWarning DATA PyExc_ValueError=python35.PyExc_ValueError DATA PyExc_Warning=python35.PyExc_Warning DATA + PyExc_WindowsError=python35.PyExc_WindowsError DATA PyExc_ZeroDivisionError=python35.PyExc_ZeroDivisionError DATA PyException_GetCause=python35.PyException_GetCause PyException_GetContext=python35.PyException_GetContext @@ -242,10 +273,12 @@ PyGILState_Release=python35.PyGILState_Release PyGetSetDescr_Type=python35.PyGetSetDescr_Type DATA PyImport_AddModule=python35.PyImport_AddModule + PyImport_AddModuleObject=python35.PyImport_AddModuleObject PyImport_AppendInittab=python35.PyImport_AppendInittab PyImport_Cleanup=python35.PyImport_Cleanup PyImport_ExecCodeModule=python35.PyImport_ExecCodeModule PyImport_ExecCodeModuleEx=python35.PyImport_ExecCodeModuleEx + PyImport_ExecCodeModuleObject=python35.PyImport_ExecCodeModuleObject PyImport_ExecCodeModuleWithPathnames=python35.PyImport_ExecCodeModuleWithPathnames PyImport_GetImporter=python35.PyImport_GetImporter PyImport_GetMagicNumber=python35.PyImport_GetMagicNumber @@ -253,8 +286,10 @@ PyImport_GetModuleDict=python35.PyImport_GetModuleDict PyImport_Import=python35.PyImport_Import PyImport_ImportFrozenModule=python35.PyImport_ImportFrozenModule + PyImport_ImportFrozenModuleObject=python35.PyImport_ImportFrozenModuleObject PyImport_ImportModule=python35.PyImport_ImportModule PyImport_ImportModuleLevel=python35.PyImport_ImportModuleLevel + PyImport_ImportModuleLevelObject=python35.PyImport_ImportModuleLevelObject PyImport_ImportModuleNoBlock=python35.PyImport_ImportModuleNoBlock PyImport_ReloadModule=python35.PyImport_ReloadModule PyInterpreterState_Clear=python35.PyInterpreterState_Clear @@ -310,10 +345,18 @@ PyMapping_SetItemString=python35.PyMapping_SetItemString PyMapping_Size=python35.PyMapping_Size PyMapping_Values=python35.PyMapping_Values + PyMarshal_ReadObjectFromString=python35.PyMarshal_ReadObjectFromString + PyMarshal_WriteLongToFile=python35.PyMarshal_WriteLongToFile + PyMarshal_WriteObjectToFile=python35.PyMarshal_WriteObjectToFile + PyMarshal_WriteObjectToString=python35.PyMarshal_WriteObjectToString + PyMem_Calloc=python35.PyMem_Calloc PyMem_Free=python35.PyMem_Free PyMem_Malloc=python35.PyMem_Malloc PyMem_Realloc=python35.PyMem_Realloc PyMemberDescr_Type=python35.PyMemberDescr_Type DATA + PyMember_GetOne=python35.PyMember_GetOne + PyMember_SetOne=python35.PyMember_SetOne + PyMemoryView_FromMemory=python35.PyMemoryView_FromMemory PyMemoryView_FromObject=python35.PyMemoryView_FromObject PyMemoryView_GetContiguous=python35.PyMemoryView_GetContiguous PyMemoryView_Type=python35.PyMemoryView_Type DATA @@ -327,9 +370,15 @@ PyModule_GetFilename=python35.PyModule_GetFilename PyModule_GetFilenameObject=python35.PyModule_GetFilenameObject PyModule_GetName=python35.PyModule_GetName + PyModule_GetNameObject=python35.PyModule_GetNameObject PyModule_GetState=python35.PyModule_GetState PyModule_New=python35.PyModule_New + PyModule_NewObject=python35.PyModule_NewObject PyModule_Type=python35.PyModule_Type DATA + PyNode_AddChild=python35.PyNode_AddChild + PyNode_Free=python35.PyNode_Free + PyNode_ListTree=python35.PyNode_ListTree + PyNode_New=python35.PyNode_New PyNullImporter_Type=python35.PyNullImporter_Type DATA PyNumber_Absolute=python35.PyNumber_Absolute PyNumber_Add=python35.PyNumber_Add @@ -343,6 +392,7 @@ PyNumber_InPlaceAnd=python35.PyNumber_InPlaceAnd PyNumber_InPlaceFloorDivide=python35.PyNumber_InPlaceFloorDivide PyNumber_InPlaceLshift=python35.PyNumber_InPlaceLshift + PyNumber_InPlaceMatrixMultiply=python35.PyNumber_InPlaceMatrixMultiply PyNumber_InPlaceMultiply=python35.PyNumber_InPlaceMultiply PyNumber_InPlaceOr=python35.PyNumber_InPlaceOr PyNumber_InPlacePower=python35.PyNumber_InPlacePower @@ -355,6 +405,7 @@ PyNumber_Invert=python35.PyNumber_Invert PyNumber_Long=python35.PyNumber_Long PyNumber_Lshift=python35.PyNumber_Lshift + PyNumber_MatrixMultiply=python35.PyNumber_MatrixMultiply PyNumber_Multiply=python35.PyNumber_Multiply PyNumber_Negative=python35.PyNumber_Negative PyNumber_Or=python35.PyNumber_Or @@ -367,6 +418,7 @@ PyNumber_TrueDivide=python35.PyNumber_TrueDivide PyNumber_Xor=python35.PyNumber_Xor PyOS_AfterFork=python35.PyOS_AfterFork + PyOS_CheckStack=python35.PyOS_CheckStack PyOS_InitInterrupts=python35.PyOS_InitInterrupts PyOS_InputHook=python35.PyOS_InputHook DATA PyOS_InterruptOccurred=python35.PyOS_InterruptOccurred @@ -393,6 +445,7 @@ PyObject_CallMethod=python35.PyObject_CallMethod PyObject_CallMethodObjArgs=python35.PyObject_CallMethodObjArgs PyObject_CallObject=python35.PyObject_CallObject + PyObject_Calloc=python35.PyObject_Calloc PyObject_CheckReadBuffer=python35.PyObject_CheckReadBuffer PyObject_ClearWeakRefs=python35.PyObject_ClearWeakRefs PyObject_DelItem=python35.PyObject_DelItem @@ -405,6 +458,7 @@ PyObject_GC_UnTrack=python35.PyObject_GC_UnTrack PyObject_GenericGetAttr=python35.PyObject_GenericGetAttr PyObject_GenericSetAttr=python35.PyObject_GenericSetAttr + PyObject_GenericSetDict=python35.PyObject_GenericSetDict PyObject_GetAttr=python35.PyObject_GetAttr PyObject_GetAttrString=python35.PyObject_GetAttrString PyObject_GetItem=python35.PyObject_GetItem @@ -431,9 +485,10 @@ PyObject_SetItem=python35.PyObject_SetItem PyObject_Size=python35.PyObject_Size PyObject_Str=python35.PyObject_Str - PyObject_Type=python35.PyObject_Type DATA + PyObject_Type=python35.PyObject_Type PyParser_SimpleParseFileFlags=python35.PyParser_SimpleParseFileFlags PyParser_SimpleParseStringFlags=python35.PyParser_SimpleParseStringFlags + PyParser_SimpleParseStringFlagsFilename=python35.PyParser_SimpleParseStringFlagsFilename PyProperty_Type=python35.PyProperty_Type DATA PyRangeIter_Type=python35.PyRangeIter_Type DATA PyRange_Type=python35.PyRange_Type DATA @@ -474,8 +529,8 @@ PySlice_New=python35.PySlice_New PySlice_Type=python35.PySlice_Type DATA PySortWrapper_Type=python35.PySortWrapper_Type DATA + PyState_AddModule=python35.PyState_AddModule PyState_FindModule=python35.PyState_FindModule - PyState_AddModule=python35.PyState_AddModule PyState_RemoveModule=python35.PyState_RemoveModule PyStructSequence_GetItem=python35.PyStructSequence_GetItem PyStructSequence_New=python35.PyStructSequence_New @@ -484,9 +539,11 @@ PySuper_Type=python35.PySuper_Type DATA PySys_AddWarnOption=python35.PySys_AddWarnOption PySys_AddWarnOptionUnicode=python35.PySys_AddWarnOptionUnicode + PySys_AddXOption=python35.PySys_AddXOption PySys_FormatStderr=python35.PySys_FormatStderr PySys_FormatStdout=python35.PySys_FormatStdout PySys_GetObject=python35.PySys_GetObject + PySys_GetXOptions=python35.PySys_GetXOptions PySys_HasWarnOptions=python35.PySys_HasWarnOptions PySys_ResetWarnOptions=python35.PySys_ResetWarnOptions PySys_SetArgv=python35.PySys_SetArgv @@ -503,6 +560,24 @@ PyThreadState_New=python35.PyThreadState_New PyThreadState_SetAsyncExc=python35.PyThreadState_SetAsyncExc PyThreadState_Swap=python35.PyThreadState_Swap + PyThread_GetInfo=python35.PyThread_GetInfo + PyThread_ReInitTLS=python35.PyThread_ReInitTLS + PyThread_acquire_lock=python35.PyThread_acquire_lock + PyThread_acquire_lock_timed=python35.PyThread_acquire_lock_timed + PyThread_allocate_lock=python35.PyThread_allocate_lock + PyThread_create_key=python35.PyThread_create_key + PyThread_delete_key=python35.PyThread_delete_key + PyThread_delete_key_value=python35.PyThread_delete_key_value + PyThread_exit_thread=python35.PyThread_exit_thread + PyThread_free_lock=python35.PyThread_free_lock + PyThread_get_key_value=python35.PyThread_get_key_value + PyThread_get_stacksize=python35.PyThread_get_stacksize + PyThread_get_thread_ident=python35.PyThread_get_thread_ident + PyThread_init_thread=python35.PyThread_init_thread + PyThread_release_lock=python35.PyThread_release_lock + PyThread_set_key_value=python35.PyThread_set_key_value + PyThread_set_stacksize=python35.PyThread_set_stacksize + PyThread_start_new_thread=python35.PyThread_start_new_thread PyTraceBack_Here=python35.PyTraceBack_Here PyTraceBack_Print=python35.PyTraceBack_Print PyTraceBack_Type=python35.PyTraceBack_Type DATA @@ -561,34 +636,51 @@ PyUnicode_AsEncodedString=python35.PyUnicode_AsEncodedString PyUnicode_AsEncodedUnicode=python35.PyUnicode_AsEncodedUnicode PyUnicode_AsLatin1String=python35.PyUnicode_AsLatin1String + PyUnicode_AsMBCSString=python35.PyUnicode_AsMBCSString PyUnicode_AsRawUnicodeEscapeString=python35.PyUnicode_AsRawUnicodeEscapeString + PyUnicode_AsUCS4=python35.PyUnicode_AsUCS4 + PyUnicode_AsUCS4Copy=python35.PyUnicode_AsUCS4Copy PyUnicode_AsUTF16String=python35.PyUnicode_AsUTF16String PyUnicode_AsUTF32String=python35.PyUnicode_AsUTF32String PyUnicode_AsUTF8String=python35.PyUnicode_AsUTF8String PyUnicode_AsUnicodeEscapeString=python35.PyUnicode_AsUnicodeEscapeString PyUnicode_AsWideChar=python35.PyUnicode_AsWideChar - PyUnicode_ClearFreelist=python35.PyUnicode_ClearFreelist + PyUnicode_AsWideCharString=python35.PyUnicode_AsWideCharString + PyUnicode_BuildEncodingMap=python35.PyUnicode_BuildEncodingMap + PyUnicode_ClearFreeList=python35.PyUnicode_ClearFreeList PyUnicode_Compare=python35.PyUnicode_Compare + PyUnicode_CompareWithASCIIString=python35.PyUnicode_CompareWithASCIIString PyUnicode_Concat=python35.PyUnicode_Concat PyUnicode_Contains=python35.PyUnicode_Contains PyUnicode_Count=python35.PyUnicode_Count PyUnicode_Decode=python35.PyUnicode_Decode PyUnicode_DecodeASCII=python35.PyUnicode_DecodeASCII PyUnicode_DecodeCharmap=python35.PyUnicode_DecodeCharmap + PyUnicode_DecodeCodePageStateful=python35.PyUnicode_DecodeCodePageStateful PyUnicode_DecodeFSDefault=python35.PyUnicode_DecodeFSDefault PyUnicode_DecodeFSDefaultAndSize=python35.PyUnicode_DecodeFSDefaultAndSize PyUnicode_DecodeLatin1=python35.PyUnicode_DecodeLatin1 + PyUnicode_DecodeLocale=python35.PyUnicode_DecodeLocale + PyUnicode_DecodeLocaleAndSize=python35.PyUnicode_DecodeLocaleAndSize + PyUnicode_DecodeMBCS=python35.PyUnicode_DecodeMBCS + PyUnicode_DecodeMBCSStateful=python35.PyUnicode_DecodeMBCSStateful PyUnicode_DecodeRawUnicodeEscape=python35.PyUnicode_DecodeRawUnicodeEscape PyUnicode_DecodeUTF16=python35.PyUnicode_DecodeUTF16 PyUnicode_DecodeUTF16Stateful=python35.PyUnicode_DecodeUTF16Stateful PyUnicode_DecodeUTF32=python35.PyUnicode_DecodeUTF32 PyUnicode_DecodeUTF32Stateful=python35.PyUnicode_DecodeUTF32Stateful + PyUnicode_DecodeUTF7=python35.PyUnicode_DecodeUTF7 + PyUnicode_DecodeUTF7Stateful=python35.PyUnicode_DecodeUTF7Stateful PyUnicode_DecodeUTF8=python35.PyUnicode_DecodeUTF8 PyUnicode_DecodeUTF8Stateful=python35.PyUnicode_DecodeUTF8Stateful PyUnicode_DecodeUnicodeEscape=python35.PyUnicode_DecodeUnicodeEscape + PyUnicode_EncodeCodePage=python35.PyUnicode_EncodeCodePage + PyUnicode_EncodeFSDefault=python35.PyUnicode_EncodeFSDefault + PyUnicode_EncodeLocale=python35.PyUnicode_EncodeLocale PyUnicode_FSConverter=python35.PyUnicode_FSConverter PyUnicode_FSDecoder=python35.PyUnicode_FSDecoder PyUnicode_Find=python35.PyUnicode_Find + PyUnicode_FindChar=python35.PyUnicode_FindChar PyUnicode_Format=python35.PyUnicode_Format PyUnicode_FromEncodedObject=python35.PyUnicode_FromEncodedObject PyUnicode_FromFormat=python35.PyUnicode_FromFormat @@ -599,30 +691,28 @@ PyUnicode_FromStringAndSize=python35.PyUnicode_FromStringAndSize PyUnicode_FromWideChar=python35.PyUnicode_FromWideChar PyUnicode_GetDefaultEncoding=python35.PyUnicode_GetDefaultEncoding + PyUnicode_GetLength=python35.PyUnicode_GetLength PyUnicode_GetSize=python35.PyUnicode_GetSize + PyUnicode_InternFromString=python35.PyUnicode_InternFromString + PyUnicode_InternImmortal=python35.PyUnicode_InternImmortal + PyUnicode_InternInPlace=python35.PyUnicode_InternInPlace PyUnicode_IsIdentifier=python35.PyUnicode_IsIdentifier PyUnicode_Join=python35.PyUnicode_Join PyUnicode_Partition=python35.PyUnicode_Partition PyUnicode_RPartition=python35.PyUnicode_RPartition PyUnicode_RSplit=python35.PyUnicode_RSplit + PyUnicode_ReadChar=python35.PyUnicode_ReadChar PyUnicode_Replace=python35.PyUnicode_Replace PyUnicode_Resize=python35.PyUnicode_Resize PyUnicode_RichCompare=python35.PyUnicode_RichCompare - PyUnicode_SetDefaultEncoding=python35.PyUnicode_SetDefaultEncoding PyUnicode_Split=python35.PyUnicode_Split PyUnicode_Splitlines=python35.PyUnicode_Splitlines + PyUnicode_Substring=python35.PyUnicode_Substring PyUnicode_Tailmatch=python35.PyUnicode_Tailmatch PyUnicode_Translate=python35.PyUnicode_Translate - PyUnicode_BuildEncodingMap=python35.PyUnicode_BuildEncodingMap - PyUnicode_CompareWithASCIIString=python35.PyUnicode_CompareWithASCIIString - PyUnicode_DecodeUTF7=python35.PyUnicode_DecodeUTF7 - PyUnicode_DecodeUTF7Stateful=python35.PyUnicode_DecodeUTF7Stateful - PyUnicode_EncodeFSDefault=python35.PyUnicode_EncodeFSDefault - PyUnicode_InternFromString=python35.PyUnicode_InternFromString - PyUnicode_InternImmortal=python35.PyUnicode_InternImmortal - PyUnicode_InternInPlace=python35.PyUnicode_InternInPlace PyUnicode_Type=python35.PyUnicode_Type DATA - PyWeakref_GetObject=python35.PyWeakref_GetObject DATA + PyUnicode_WriteChar=python35.PyUnicode_WriteChar + PyWeakref_GetObject=python35.PyWeakref_GetObject PyWeakref_NewProxy=python35.PyWeakref_NewProxy PyWeakref_NewRef=python35.PyWeakref_NewRef PyWrapperDescr_Type=python35.PyWrapperDescr_Type DATA @@ -633,6 +723,8 @@ Py_BuildValue=python35.Py_BuildValue Py_CompileString=python35.Py_CompileString Py_DecRef=python35.Py_DecRef + Py_DecodeLocale=python35.Py_DecodeLocale + Py_EncodeLocale=python35.Py_EncodeLocale Py_EndInterpreter=python35.Py_EndInterpreter Py_Exit=python35.Py_Exit Py_FatalError=python35.Py_FatalError @@ -660,44 +752,95 @@ Py_NewInterpreter=python35.Py_NewInterpreter Py_ReprEnter=python35.Py_ReprEnter Py_ReprLeave=python35.Py_ReprLeave + Py_SetPath=python35.Py_SetPath Py_SetProgramName=python35.Py_SetProgramName Py_SetPythonHome=python35.Py_SetPythonHome Py_SetRecursionLimit=python35.Py_SetRecursionLimit Py_SymtableString=python35.Py_SymtableString Py_VaBuildValue=python35.Py_VaBuildValue + Py_hexdigits=python35.Py_hexdigits DATA + _PyDebug_PrintTotalRefs=python35._PyDebug_PrintTotalRefs + _PyDict_Dummy=python35._PyDict_Dummy + _PyDict_GetItemId=python35._PyDict_GetItemId + _PyDict_GetItemIdWithError=python35._PyDict_GetItemIdWithError + _PyDict_SetItemId=python35._PyDict_SetItemId _PyErr_BadInternalCall=python35._PyErr_BadInternalCall + _PyEval_FiniThreads=python35._PyEval_FiniThreads + _PyGILState_Reinit=python35._PyGILState_Reinit + _PyImportZip_Init=python35._PyImportZip_Init + _PyMethodWrapper_Type=python35._PyMethodWrapper_Type DATA + _PyNamespace_New=python35._PyNamespace_New + _PyNamespace_Type=python35._PyNamespace_Type DATA + _PyNone_Type=python35._PyNone_Type DATA + _PyNotImplemented_Type=python35._PyNotImplemented_Type DATA + _PyOS_GetOpt=python35._PyOS_GetOpt + _PyOS_IsMainThread=python35._PyOS_IsMainThread + _PyOS_SigintEvent=python35._PyOS_SigintEvent _PyObject_CallFunction_SizeT=python35._PyObject_CallFunction_SizeT + _PyObject_CallMethodId=python35._PyObject_CallMethodId + _PyObject_CallMethodIdObjArgs=python35._PyObject_CallMethodIdObjArgs + _PyObject_CallMethodId_SizeT=python35._PyObject_CallMethodId_SizeT _PyObject_CallMethod_SizeT=python35._PyObject_CallMethod_SizeT + _PyObject_GC_Calloc=python35._PyObject_GC_Calloc _PyObject_GC_Malloc=python35._PyObject_GC_Malloc _PyObject_GC_New=python35._PyObject_GC_New _PyObject_GC_NewVar=python35._PyObject_GC_NewVar _PyObject_GC_Resize=python35._PyObject_GC_Resize + _PyObject_GetAttrId=python35._PyObject_GetAttrId + _PyObject_HasAttrId=python35._PyObject_HasAttrId + _PyObject_IsAbstract=python35._PyObject_IsAbstract _PyObject_New=python35._PyObject_New _PyObject_NewVar=python35._PyObject_NewVar + _PyObject_SetAttrId=python35._PyObject_SetAttrId _PyState_AddModule=python35._PyState_AddModule + _PySys_SetObjectId=python35._PySys_SetObjectId + _PyThreadState_DeleteExcept=python35._PyThreadState_DeleteExcept _PyThreadState_Init=python35._PyThreadState_Init _PyThreadState_Prealloc=python35._PyThreadState_Prealloc _PyTrash_delete_later=python35._PyTrash_delete_later DATA _PyTrash_delete_nesting=python35._PyTrash_delete_nesting DATA _PyTrash_deposit_object=python35._PyTrash_deposit_object _PyTrash_destroy_chain=python35._PyTrash_destroy_chain + _PyTrash_thread_deposit_object=python35._PyTrash_thread_deposit_object + _PyTrash_thread_destroy_chain=python35._PyTrash_thread_destroy_chain + _PyUnicode_ClearStaticStrings=python35._PyUnicode_ClearStaticStrings + _PyUnicode_FromId=python35._PyUnicode_FromId _PyWeakref_CallableProxyType=python35._PyWeakref_CallableProxyType DATA _PyWeakref_ProxyType=python35._PyWeakref_ProxyType DATA _PyWeakref_RefType=python35._PyWeakref_RefType DATA + _Py_AddToAllObjects=python35._Py_AddToAllObjects _Py_BuildValue_SizeT=python35._Py_BuildValue_SizeT _Py_CheckRecursionLimit=python35._Py_CheckRecursionLimit DATA _Py_CheckRecursiveCall=python35._Py_CheckRecursiveCall _Py_Dealloc=python35._Py_Dealloc + _Py_DumpTraceback=python35._Py_DumpTraceback DATA + _Py_DumpTracebackThreads=python35._Py_DumpTracebackThreads DATA _Py_EllipsisObject=python35._Py_EllipsisObject DATA _Py_FalseStruct=python35._Py_FalseStruct DATA + _Py_ForgetReference=python35._Py_ForgetReference + _Py_GetAllocatedBlocks=python35._Py_GetAllocatedBlocks + _Py_GetRefTotal=python35._Py_GetRefTotal + _Py_HashSecret_Initialized=python35._Py_HashSecret_Initialized DATA + _Py_NegativeRefcount=python35._Py_NegativeRefcount + _Py_NewReference=python35._Py_NewReference _Py_NoneStruct=python35._Py_NoneStruct DATA _Py_NotImplementedStruct=python35._Py_NotImplementedStruct DATA + _Py_PrintReferenceAddresses=python35._Py_PrintReferenceAddresses + _Py_PrintReferences=python35._Py_PrintReferences + _Py_RefTotal=python35._Py_RefTotal DATA _Py_SwappedOp=python35._Py_SwappedOp DATA - _Py_TrueStruct=python35._Py_TrueStruct DATA _Py_VaBuildValue_SizeT=python35._Py_VaBuildValue_SizeT - _PyArg_Parse_SizeT=python35._PyArg_Parse_SizeT - _PyArg_ParseTuple_SizeT=python35._PyArg_ParseTuple_SizeT - _PyArg_ParseTupleAndKeywords_SizeT=python35._PyArg_ParseTupleAndKeywords_SizeT - _PyArg_VaParse_SizeT=python35._PyArg_VaParse_SizeT - _PyArg_VaParseTupleAndKeywords_SizeT=python35._PyArg_VaParseTupleAndKeywords_SizeT - _Py_BuildValue_SizeT=python35._Py_BuildValue_SizeT + _Py_add_one_to_index_C=python35._Py_add_one_to_index_C + _Py_add_one_to_index_F=python35._Py_add_one_to_index_F + _Py_device_encoding=python35._Py_device_encoding + _Py_fopen=python35._Py_fopen + _Py_fopen_obj=python35._Py_fopen_obj + _Py_read=python35._Py_read + _Py_stat=python35._Py_stat + _Py_wfopen=python35._Py_wfopen + _Py_wgetcwd=python35._Py_wgetcwd + _Py_wreadlink=python35._Py_wreadlink + _Py_wrealpath=python35._Py_wrealpath + _Py_write=python35._Py_write + _Py_write_noraise=python35._Py_write_noraise + diff -r 24f2c0279120 PC/python3defgen.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/PC/python3defgen.py Mon Apr 13 16:10:34 2015 -0500 @@ -0,0 +1,91 @@ +import os +import re +import sys +from importlib.machinery import SourceFileLoader + +src_root = os.path.dirname(os.path.dirname(__file__)) +clinic_cpp_path = os.path.join(src_root, 'Tools', 'clinic', 'cpp.py') + +clinic_cpp = SourceFileLoader('cpp', clinic_cpp_path).load_module() + +header = """\ +; This file specifies the import forwarding for python3.dll +; It is used when building python3dll.vcxproj +; Generated by python3defgen.py, DO NOT modify directly! +LIBRARY "python3" +EXPORTS +""" + +version_limited_re = re.compile(r'Py_LIMITED_API\s*\+\s*0\s*>') + +class Parser(clinic_cpp.Monitor): + def is_for_windows(self): + for token, condition in self.stack: + if "!defined(MS_WINDOWS)" in condition: + return False + else: + return True + + def is_limited(self): + # if 'abstract.h' in self.filename: + # print(self.stack) + for token, condition in self.stack: + if version_limited_re.search(condition): + return True + if "!defined(Py_LIMITED_API)" in condition: + return False + if "defined(Py_LIMITED_API)" in condition: + return True + else: + return True + +func_re = re.compile(r'PyAPI_FUNC\(.+\)\s*(_?Py\w+)\(') +data_re = re.compile(r'PyAPI_DATA\(.+\).*?(_?Py\w+)') + +exports = {} + +for fn in os.listdir(os.path.join(src_root, 'Include')): + if fn == 'pgenheaders.h': + # special case to skip couple of unavoidable duplicates + continue + fn = os.path.join(src_root, 'Include', fn) + with open(fn) as f: + parser = Parser(fn) + for lineno, line in enumerate(f): + parser.writeline(line) + if (parser.in_comment or + not parser.is_limited() or + not parser.is_for_windows()): + continue + export = None + m = func_re.search(line) + if m is not None: + export = m.group(1) + type = 'func' + else: + m = data_re.search(line) + if m is not None: + export = m.group(1) + type = 'data' + if export is not None: + if export not in exports: + exports[export] = [(type, fn, lineno)] + else: + exports[export].append((type, fn, lineno)) + +lines = [] +for name, occurrances in exports.items(): + if len(occurrances) > 1: + print('Duplicates found:') + for type, fn, lineno in occurrances: + print(' {} {}, {}:{}'.format(type, name, fn, lineno)) + type = occurrances[0][0] + if type == 'func': + lines.append(' {0}=python35.{0}\n'.format(name)) + elif type == 'data': + lines.append(' {0}=python35.{0} DATA\n'.format(name)) + +with open(os.path.join(os.path.dirname(__file__), 'python3.def.tmp'), 'w') as f: + f.write(header) + f.writelines(sorted(lines)) + f.write('\n')