[Python-Dev] Python3 Stable ABI
Steve Dower
Steve.Dower at microsoft.com
Thu Apr 16 01:51:10 CEST 2015
I don't see any obvious issues, but there may be some that don't need to be marked stable.
Given that a mismatch here will cause build errors for users, I'm +1 on checking this in.
Cheers,
Steve
Top-posted from my Windows Phone
________________________________
From: Zachary Ware<mailto:zachary.ware+pydev at gmail.com>
Sent: 4/13/2015 17:29
To: Python-Dev<mailto:python-dev at python.org>
Subject: [Python-Dev] Python3 Stable ABI
In issue23903, I've created a script that will produce PC/python3.def
by scraping the header files in Include. There are are many many
discrepencies between what my script generates and what is currently
in the repository (diff below), but in every case I've checked the
script has been right: what the script finds is actually exported as
part of the limited API, but due to not being in the .def file it's
not actually exported from python3.dll. Almost all of the differences
are things that the script found that weren't present, but there are a
couple things going the other way.
The point of this message is to ask everybody who maintains anything
in C to take a look through and make sure everything in their area is
properly guarded (or not) by Py_LIMITED_API. Alternately, if somebody
can find a bug in my script and brain that's finding too much stuff,
that would be great too.
Ideally, after this is all settled I'd like to add the script to both
the Makefile and the Windows build system, such that PC/python3.def is
always kept up to date and flags changes that weren't meant to be
made.
Regards,
--
Zach
(I'm afraid Gmail might mangle this beyond recognition, you can find the diff at
http://bugs.python.org/review/23903/diff/14549/PC/python3.def
if it does.)
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
_______________________________________________
Python-Dev mailing list
Python-Dev at python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: https://mail.python.org/mailman/options/python-dev/steve.dower%40microsoft.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-dev/attachments/20150415/c582f628/attachment-0001.html>
More information about the Python-Dev
mailing list