mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +00:00 
			
		
		
		
	Issue #29058: All stable API extensions added after Python 3.2 are now
available only when Py_LIMITED_API is set to the PY_VERSION_HEX value of the minimum Python version supporting this API.
This commit is contained in:
		
						commit
						a171a03bd2
					
				
					 19 changed files with 89 additions and 7 deletions
				
			
		|  | @ -612,8 +612,10 @@ PyAPI_FUNC(PyObject *) PyNumber_Subtract(PyObject *o1, PyObject *o2); | ||||||
|    This is the equivalent of the Python expression: o1 * o2. */ |    This is the equivalent of the Python expression: o1 * o2. */ | ||||||
| PyAPI_FUNC(PyObject *) PyNumber_Multiply(PyObject *o1, PyObject *o2); | PyAPI_FUNC(PyObject *) PyNumber_Multiply(PyObject *o1, PyObject *o2); | ||||||
| 
 | 
 | ||||||
|  | #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000 | ||||||
| /* This is the equivalent of the Python expression: o1 @ o2. */ | /* This is the equivalent of the Python expression: o1 @ o2. */ | ||||||
| PyAPI_FUNC(PyObject *) PyNumber_MatrixMultiply(PyObject *o1, PyObject *o2); | PyAPI_FUNC(PyObject *) PyNumber_MatrixMultiply(PyObject *o1, PyObject *o2); | ||||||
|  | #endif | ||||||
| 
 | 
 | ||||||
| /* Returns the result of dividing o1 by o2 giving an integral result,
 | /* Returns the result of dividing o1 by o2 giving an integral result,
 | ||||||
|    or NULL on failure. |    or NULL on failure. | ||||||
|  | @ -743,8 +745,10 @@ PyAPI_FUNC(PyObject *) PyNumber_InPlaceSubtract(PyObject *o1, PyObject *o2); | ||||||
|    This is the equivalent of the Python expression: o1 *= o2. */ |    This is the equivalent of the Python expression: o1 *= o2. */ | ||||||
| PyAPI_FUNC(PyObject *) PyNumber_InPlaceMultiply(PyObject *o1, PyObject *o2); | PyAPI_FUNC(PyObject *) PyNumber_InPlaceMultiply(PyObject *o1, PyObject *o2); | ||||||
| 
 | 
 | ||||||
|  | #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000 | ||||||
| /* This is the equivalent of the Python expression: o1 @= o2. */ | /* This is the equivalent of the Python expression: o1 @= o2. */ | ||||||
| PyAPI_FUNC(PyObject *) PyNumber_InPlaceMatrixMultiply(PyObject *o1, PyObject *o2); | PyAPI_FUNC(PyObject *) PyNumber_InPlaceMatrixMultiply(PyObject *o1, PyObject *o2); | ||||||
|  | #endif | ||||||
| 
 | 
 | ||||||
| /* Returns the result of dividing o1 by o2 giving an integral result, possibly
 | /* Returns the result of dividing o1 by o2 giving an integral result, possibly
 | ||||||
|    in-place, or NULL on failure. |    in-place, or NULL on failure. | ||||||
|  |  | ||||||
|  | @ -74,11 +74,13 @@ PyAPI_FUNC(PyObject*) _PyBytes_FromHex( | ||||||
| PyAPI_FUNC(PyObject *) PyBytes_DecodeEscape(const char *, Py_ssize_t, | PyAPI_FUNC(PyObject *) PyBytes_DecodeEscape(const char *, Py_ssize_t, | ||||||
| 						   const char *, Py_ssize_t, | 						   const char *, Py_ssize_t, | ||||||
| 						   const char *); | 						   const char *); | ||||||
|  | #ifndef Py_LIMITED_API | ||||||
| /* Helper for PyBytes_DecodeEscape that detects invalid escape chars. */ | /* Helper for PyBytes_DecodeEscape that detects invalid escape chars. */ | ||||||
| PyAPI_FUNC(PyObject *) _PyBytes_DecodeEscape(const char *, Py_ssize_t, | PyAPI_FUNC(PyObject *) _PyBytes_DecodeEscape(const char *, Py_ssize_t, | ||||||
|                                              const char *, Py_ssize_t, |                                              const char *, Py_ssize_t, | ||||||
|                                              const char *, |                                              const char *, | ||||||
|                                              const char **); |                                              const char **); | ||||||
|  | #endif | ||||||
| 
 | 
 | ||||||
| /* Macro, trading safety for speed */ | /* Macro, trading safety for speed */ | ||||||
| #ifndef Py_LIMITED_API | #ifndef Py_LIMITED_API | ||||||
|  |  | ||||||
|  | @ -225,10 +225,14 @@ PyAPI_FUNC(PyObject *) PyCodec_XMLCharRefReplaceErrors(PyObject *exc); | ||||||
| /* replace the unicode encode error with backslash escapes (\x, \u and \U) */ | /* replace the unicode encode error with backslash escapes (\x, \u and \U) */ | ||||||
| PyAPI_FUNC(PyObject *) PyCodec_BackslashReplaceErrors(PyObject *exc); | PyAPI_FUNC(PyObject *) PyCodec_BackslashReplaceErrors(PyObject *exc); | ||||||
| 
 | 
 | ||||||
|  | #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000 | ||||||
| /* replace the unicode encode error with backslash escapes (\N, \x, \u and \U) */ | /* replace the unicode encode error with backslash escapes (\N, \x, \u and \U) */ | ||||||
| PyAPI_FUNC(PyObject *) PyCodec_NameReplaceErrors(PyObject *exc); | PyAPI_FUNC(PyObject *) PyCodec_NameReplaceErrors(PyObject *exc); | ||||||
|  | #endif | ||||||
| 
 | 
 | ||||||
|  | #ifndef Py_LIMITED_API | ||||||
| PyAPI_DATA(const char *) Py_hexdigits; | PyAPI_DATA(const char *) Py_hexdigits; | ||||||
|  | #endif | ||||||
| 
 | 
 | ||||||
| #ifdef __cplusplus | #ifdef __cplusplus | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -23,7 +23,9 @@ PyAPI_FUNC(char *) Py_UniversalNewlineFgets(char *, int, FILE*, PyObject *); | ||||||
|    If non-NULL, this is different than the default encoding for strings |    If non-NULL, this is different than the default encoding for strings | ||||||
| */ | */ | ||||||
| PyAPI_DATA(const char *) Py_FileSystemDefaultEncoding; | PyAPI_DATA(const char *) Py_FileSystemDefaultEncoding; | ||||||
|  | #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03060000 | ||||||
| PyAPI_DATA(const char *) Py_FileSystemDefaultEncodeErrors; | PyAPI_DATA(const char *) Py_FileSystemDefaultEncodeErrors; | ||||||
|  | #endif | ||||||
| PyAPI_DATA(int) Py_HasFileSystemDefaultEncoding; | PyAPI_DATA(int) Py_HasFileSystemDefaultEncoding; | ||||||
| 
 | 
 | ||||||
| /* Internal API
 | /* Internal API
 | ||||||
|  |  | ||||||
|  | @ -5,6 +5,7 @@ | ||||||
| extern "C" { | extern "C" { | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
|  | #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000 | ||||||
| PyAPI_FUNC(wchar_t *) Py_DecodeLocale( | PyAPI_FUNC(wchar_t *) Py_DecodeLocale( | ||||||
|     const char *arg, |     const char *arg, | ||||||
|     size_t *size); |     size_t *size); | ||||||
|  | @ -12,6 +13,7 @@ PyAPI_FUNC(wchar_t *) Py_DecodeLocale( | ||||||
| PyAPI_FUNC(char*) Py_EncodeLocale( | PyAPI_FUNC(char*) Py_EncodeLocale( | ||||||
|     const wchar_t *text, |     const wchar_t *text, | ||||||
|     size_t *error_pos); |     size_t *error_pos); | ||||||
|  | #endif | ||||||
| 
 | 
 | ||||||
| #ifndef Py_LIMITED_API | #ifndef Py_LIMITED_API | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -9,9 +9,9 @@ extern "C" { | ||||||
| 
 | 
 | ||||||
| #ifndef Py_LIMITED_API | #ifndef Py_LIMITED_API | ||||||
| PyAPI_FUNC(void) _PyImportZip_Init(void); | PyAPI_FUNC(void) _PyImportZip_Init(void); | ||||||
| #endif /* !Py_LIMITED_API */ |  | ||||||
| 
 | 
 | ||||||
| PyMODINIT_FUNC PyInit_imp(void); | PyMODINIT_FUNC PyInit_imp(void); | ||||||
|  | #endif /* !Py_LIMITED_API */ | ||||||
| PyAPI_FUNC(long) PyImport_GetMagicNumber(void); | PyAPI_FUNC(long) PyImport_GetMagicNumber(void); | ||||||
| PyAPI_FUNC(const char *) PyImport_GetMagicTag(void); | PyAPI_FUNC(const char *) PyImport_GetMagicTag(void); | ||||||
| PyAPI_FUNC(PyObject *) PyImport_ExecCodeModule( | PyAPI_FUNC(PyObject *) PyImport_ExecCodeModule( | ||||||
|  | @ -29,16 +29,20 @@ PyAPI_FUNC(PyObject *) PyImport_ExecCodeModuleWithPathnames( | ||||||
|     const char *pathname,       /* decoded from the filesystem encoding */ |     const char *pathname,       /* decoded from the filesystem encoding */ | ||||||
|     const char *cpathname       /* decoded from the filesystem encoding */ |     const char *cpathname       /* decoded from the filesystem encoding */ | ||||||
|     ); |     ); | ||||||
|  | #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000 | ||||||
| PyAPI_FUNC(PyObject *) PyImport_ExecCodeModuleObject( | PyAPI_FUNC(PyObject *) PyImport_ExecCodeModuleObject( | ||||||
|     PyObject *name, |     PyObject *name, | ||||||
|     PyObject *co, |     PyObject *co, | ||||||
|     PyObject *pathname, |     PyObject *pathname, | ||||||
|     PyObject *cpathname |     PyObject *cpathname | ||||||
|     ); |     ); | ||||||
|  | #endif | ||||||
| PyAPI_FUNC(PyObject *) PyImport_GetModuleDict(void); | PyAPI_FUNC(PyObject *) PyImport_GetModuleDict(void); | ||||||
|  | #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000 | ||||||
| PyAPI_FUNC(PyObject *) PyImport_AddModuleObject( | PyAPI_FUNC(PyObject *) PyImport_AddModuleObject( | ||||||
|     PyObject *name |     PyObject *name | ||||||
|     ); |     ); | ||||||
|  | #endif | ||||||
| PyAPI_FUNC(PyObject *) PyImport_AddModule( | PyAPI_FUNC(PyObject *) PyImport_AddModule( | ||||||
|     const char *name            /* UTF-8 encoded string */ |     const char *name            /* UTF-8 encoded string */ | ||||||
|     ); |     ); | ||||||
|  | @ -55,6 +59,7 @@ PyAPI_FUNC(PyObject *) PyImport_ImportModuleLevel( | ||||||
|     PyObject *fromlist, |     PyObject *fromlist, | ||||||
|     int level |     int level | ||||||
|     ); |     ); | ||||||
|  | #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000 | ||||||
| PyAPI_FUNC(PyObject *) PyImport_ImportModuleLevelObject( | PyAPI_FUNC(PyObject *) PyImport_ImportModuleLevelObject( | ||||||
|     PyObject *name, |     PyObject *name, | ||||||
|     PyObject *globals, |     PyObject *globals, | ||||||
|  | @ -62,6 +67,7 @@ PyAPI_FUNC(PyObject *) PyImport_ImportModuleLevelObject( | ||||||
|     PyObject *fromlist, |     PyObject *fromlist, | ||||||
|     int level |     int level | ||||||
|     ); |     ); | ||||||
|  | #endif | ||||||
| 
 | 
 | ||||||
| #define PyImport_ImportModuleEx(n, g, l, f) \ | #define PyImport_ImportModuleEx(n, g, l, f) \ | ||||||
|     PyImport_ImportModuleLevel(n, g, l, f, 0) |     PyImport_ImportModuleLevel(n, g, l, f, 0) | ||||||
|  | @ -70,9 +76,11 @@ PyAPI_FUNC(PyObject *) PyImport_GetImporter(PyObject *path); | ||||||
| PyAPI_FUNC(PyObject *) PyImport_Import(PyObject *name); | PyAPI_FUNC(PyObject *) PyImport_Import(PyObject *name); | ||||||
| PyAPI_FUNC(PyObject *) PyImport_ReloadModule(PyObject *m); | PyAPI_FUNC(PyObject *) PyImport_ReloadModule(PyObject *m); | ||||||
| PyAPI_FUNC(void) PyImport_Cleanup(void); | PyAPI_FUNC(void) PyImport_Cleanup(void); | ||||||
|  | #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000 | ||||||
| PyAPI_FUNC(int) PyImport_ImportFrozenModuleObject( | PyAPI_FUNC(int) PyImport_ImportFrozenModuleObject( | ||||||
|     PyObject *name |     PyObject *name | ||||||
|     ); |     ); | ||||||
|  | #endif | ||||||
| PyAPI_FUNC(int) PyImport_ImportFrozenModule( | PyAPI_FUNC(int) PyImport_ImportFrozenModule( | ||||||
|     const char *name            /* UTF-8 encoded string */ |     const char *name            /* UTF-8 encoded string */ | ||||||
|     ); |     ); | ||||||
|  |  | ||||||
|  | @ -21,8 +21,10 @@ PyAPI_DATA(PyTypeObject) PyMemoryView_Type; | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| PyAPI_FUNC(PyObject *) PyMemoryView_FromObject(PyObject *base); | PyAPI_FUNC(PyObject *) PyMemoryView_FromObject(PyObject *base); | ||||||
|  | #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000 | ||||||
| PyAPI_FUNC(PyObject *) PyMemoryView_FromMemory(char *mem, Py_ssize_t size, | PyAPI_FUNC(PyObject *) PyMemoryView_FromMemory(char *mem, Py_ssize_t size, | ||||||
|                                                int flags); |                                                int flags); | ||||||
|  | #endif | ||||||
| #ifndef Py_LIMITED_API | #ifndef Py_LIMITED_API | ||||||
| PyAPI_FUNC(PyObject *) PyMemoryView_FromBuffer(Py_buffer *info); | PyAPI_FUNC(PyObject *) PyMemoryView_FromBuffer(Py_buffer *info); | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
|  | @ -12,14 +12,18 @@ PyAPI_DATA(PyTypeObject) PyModule_Type; | ||||||
| #define PyModule_Check(op) PyObject_TypeCheck(op, &PyModule_Type) | #define PyModule_Check(op) PyObject_TypeCheck(op, &PyModule_Type) | ||||||
| #define PyModule_CheckExact(op) (Py_TYPE(op) == &PyModule_Type) | #define PyModule_CheckExact(op) (Py_TYPE(op) == &PyModule_Type) | ||||||
| 
 | 
 | ||||||
|  | #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000 | ||||||
| PyAPI_FUNC(PyObject *) PyModule_NewObject( | PyAPI_FUNC(PyObject *) PyModule_NewObject( | ||||||
|     PyObject *name |     PyObject *name | ||||||
|     ); |     ); | ||||||
|  | #endif | ||||||
| PyAPI_FUNC(PyObject *) PyModule_New( | PyAPI_FUNC(PyObject *) PyModule_New( | ||||||
|     const char *name            /* UTF-8 encoded string */ |     const char *name            /* UTF-8 encoded string */ | ||||||
|     ); |     ); | ||||||
| PyAPI_FUNC(PyObject *) PyModule_GetDict(PyObject *); | PyAPI_FUNC(PyObject *) PyModule_GetDict(PyObject *); | ||||||
|  | #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000 | ||||||
| PyAPI_FUNC(PyObject *) PyModule_GetNameObject(PyObject *); | PyAPI_FUNC(PyObject *) PyModule_GetNameObject(PyObject *); | ||||||
|  | #endif | ||||||
| PyAPI_FUNC(const char *) PyModule_GetName(PyObject *); | PyAPI_FUNC(const char *) PyModule_GetName(PyObject *); | ||||||
| PyAPI_FUNC(const char *) PyModule_GetFilename(PyObject *) Py_DEPRECATED(3.2); | PyAPI_FUNC(const char *) PyModule_GetFilename(PyObject *) Py_DEPRECATED(3.2); | ||||||
| PyAPI_FUNC(PyObject *) PyModule_GetFilenameObject(PyObject *); | PyAPI_FUNC(PyObject *) PyModule_GetFilenameObject(PyObject *); | ||||||
|  |  | ||||||
|  | @ -547,7 +547,9 @@ PyAPI_FUNC(PyObject *) _PyObject_NextNotImplemented(PyObject *); | ||||||
| PyAPI_FUNC(PyObject *) PyObject_GenericGetAttr(PyObject *, PyObject *); | PyAPI_FUNC(PyObject *) PyObject_GenericGetAttr(PyObject *, PyObject *); | ||||||
| PyAPI_FUNC(int) PyObject_GenericSetAttr(PyObject *, | PyAPI_FUNC(int) PyObject_GenericSetAttr(PyObject *, | ||||||
|                                               PyObject *, PyObject *); |                                               PyObject *, PyObject *); | ||||||
|  | #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000 | ||||||
| PyAPI_FUNC(int) PyObject_GenericSetDict(PyObject *, PyObject *, void *); | PyAPI_FUNC(int) PyObject_GenericSetDict(PyObject *, PyObject *, void *); | ||||||
|  | #endif | ||||||
| PyAPI_FUNC(Py_hash_t) PyObject_Hash(PyObject *); | PyAPI_FUNC(Py_hash_t) PyObject_Hash(PyObject *); | ||||||
| PyAPI_FUNC(Py_hash_t) PyObject_HashNotImplemented(PyObject *); | PyAPI_FUNC(Py_hash_t) PyObject_HashNotImplemented(PyObject *); | ||||||
| PyAPI_FUNC(int) PyObject_IsTrue(PyObject *); | PyAPI_FUNC(int) PyObject_IsTrue(PyObject *); | ||||||
|  |  | ||||||
|  | @ -95,7 +95,9 @@ PyObject_{New, NewVar, Del}. | ||||||
|    the raw memory. |    the raw memory. | ||||||
| */ | */ | ||||||
| PyAPI_FUNC(void *) PyObject_Malloc(size_t size); | PyAPI_FUNC(void *) PyObject_Malloc(size_t size); | ||||||
|  | #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000 | ||||||
| PyAPI_FUNC(void *) PyObject_Calloc(size_t nelem, size_t elsize); | PyAPI_FUNC(void *) PyObject_Calloc(size_t nelem, size_t elsize); | ||||||
|  | #endif | ||||||
| PyAPI_FUNC(void *) PyObject_Realloc(void *ptr, size_t new_size); | PyAPI_FUNC(void *) PyObject_Realloc(void *ptr, size_t new_size); | ||||||
| PyAPI_FUNC(void) PyObject_Free(void *ptr); | PyAPI_FUNC(void) PyObject_Free(void *ptr); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -17,12 +17,13 @@ PyAPI_DATA(PyTypeObject) PyODictKeys_Type; | ||||||
| PyAPI_DATA(PyTypeObject) PyODictItems_Type; | PyAPI_DATA(PyTypeObject) PyODictItems_Type; | ||||||
| PyAPI_DATA(PyTypeObject) PyODictValues_Type; | PyAPI_DATA(PyTypeObject) PyODictValues_Type; | ||||||
| 
 | 
 | ||||||
| #endif /* Py_LIMITED_API */ |  | ||||||
| 
 |  | ||||||
| #define PyODict_Check(op) PyObject_TypeCheck(op, &PyODict_Type) | #define PyODict_Check(op) PyObject_TypeCheck(op, &PyODict_Type) | ||||||
| #define PyODict_CheckExact(op) (Py_TYPE(op) == &PyODict_Type) | #define PyODict_CheckExact(op) (Py_TYPE(op) == &PyODict_Type) | ||||||
| #define PyODict_SIZE(op) PyDict_GET_SIZE((op)) | #define PyODict_SIZE(op) PyDict_GET_SIZE((op)) | ||||||
| #define PyODict_HasKey(od, key) (PyMapping_HasKey(PyObject *)od, key) | 
 | ||||||
|  | #endif /* Py_LIMITED_API */ | ||||||
|  | 
 | ||||||
|  | #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000 | ||||||
| 
 | 
 | ||||||
| PyAPI_FUNC(PyObject *) PyODict_New(void); | PyAPI_FUNC(PyObject *) PyODict_New(void); | ||||||
| PyAPI_FUNC(int) PyODict_SetItem(PyObject *od, PyObject *key, PyObject *item); | PyAPI_FUNC(int) PyODict_SetItem(PyObject *od, PyObject *key, PyObject *item); | ||||||
|  | @ -37,6 +38,8 @@ PyAPI_FUNC(int) PyODict_DelItem(PyObject *od, PyObject *key); | ||||||
| #define PyODict_GetItemString(od, key) \ | #define PyODict_GetItemString(od, key) \ | ||||||
|     PyDict_GetItemString((PyObject *)od, key) |     PyDict_GetItemString((PyObject *)od, key) | ||||||
| 
 | 
 | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
| #ifdef __cplusplus | #ifdef __cplusplus | ||||||
| } | } | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
|  | @ -7,7 +7,9 @@ | ||||||
| extern "C" { | extern "C" { | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
|  | #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03060000 | ||||||
| PyAPI_FUNC(PyObject *) PyOS_FSPath(PyObject *path); | PyAPI_FUNC(PyObject *) PyOS_FSPath(PyObject *path); | ||||||
|  | #endif | ||||||
| 
 | 
 | ||||||
| #ifdef __cplusplus | #ifdef __cplusplus | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -87,8 +87,10 @@ PyAPI_FUNC(PyObject *) PyErr_Occurred(void); | ||||||
| PyAPI_FUNC(void) PyErr_Clear(void); | PyAPI_FUNC(void) PyErr_Clear(void); | ||||||
| PyAPI_FUNC(void) PyErr_Fetch(PyObject **, PyObject **, PyObject **); | PyAPI_FUNC(void) PyErr_Fetch(PyObject **, PyObject **, PyObject **); | ||||||
| PyAPI_FUNC(void) PyErr_Restore(PyObject *, PyObject *, PyObject *); | PyAPI_FUNC(void) PyErr_Restore(PyObject *, PyObject *, PyObject *); | ||||||
|  | #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000 | ||||||
| PyAPI_FUNC(void) PyErr_GetExcInfo(PyObject **, PyObject **, PyObject **); | PyAPI_FUNC(void) PyErr_GetExcInfo(PyObject **, PyObject **, PyObject **); | ||||||
| PyAPI_FUNC(void) PyErr_SetExcInfo(PyObject *, PyObject *, PyObject *); | PyAPI_FUNC(void) PyErr_SetExcInfo(PyObject *, PyObject *, PyObject *); | ||||||
|  | #endif | ||||||
| 
 | 
 | ||||||
| #if defined(__clang__) || \ | #if defined(__clang__) || \ | ||||||
|     (defined(__GNUC_MAJOR__) && \ |     (defined(__GNUC_MAJOR__) && \ | ||||||
|  | @ -147,7 +149,9 @@ PyAPI_FUNC(void) _PyErr_ChainExceptions(PyObject *, PyObject *, PyObject *); | ||||||
| 
 | 
 | ||||||
| PyAPI_DATA(PyObject *) PyExc_BaseException; | PyAPI_DATA(PyObject *) PyExc_BaseException; | ||||||
| PyAPI_DATA(PyObject *) PyExc_Exception; | PyAPI_DATA(PyObject *) PyExc_Exception; | ||||||
|  | #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000 | ||||||
| PyAPI_DATA(PyObject *) PyExc_StopAsyncIteration; | PyAPI_DATA(PyObject *) PyExc_StopAsyncIteration; | ||||||
|  | #endif | ||||||
| PyAPI_DATA(PyObject *) PyExc_StopIteration; | PyAPI_DATA(PyObject *) PyExc_StopIteration; | ||||||
| PyAPI_DATA(PyObject *) PyExc_GeneratorExit; | PyAPI_DATA(PyObject *) PyExc_GeneratorExit; | ||||||
| PyAPI_DATA(PyObject *) PyExc_ArithmeticError; | PyAPI_DATA(PyObject *) PyExc_ArithmeticError; | ||||||
|  | @ -160,7 +164,9 @@ PyAPI_DATA(PyObject *) PyExc_EOFError; | ||||||
| PyAPI_DATA(PyObject *) PyExc_FloatingPointError; | PyAPI_DATA(PyObject *) PyExc_FloatingPointError; | ||||||
| PyAPI_DATA(PyObject *) PyExc_OSError; | PyAPI_DATA(PyObject *) PyExc_OSError; | ||||||
| PyAPI_DATA(PyObject *) PyExc_ImportError; | PyAPI_DATA(PyObject *) PyExc_ImportError; | ||||||
|  | #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03060000 | ||||||
| PyAPI_DATA(PyObject *) PyExc_ModuleNotFoundError; | PyAPI_DATA(PyObject *) PyExc_ModuleNotFoundError; | ||||||
|  | #endif | ||||||
| PyAPI_DATA(PyObject *) PyExc_IndexError; | PyAPI_DATA(PyObject *) PyExc_IndexError; | ||||||
| PyAPI_DATA(PyObject *) PyExc_KeyError; | PyAPI_DATA(PyObject *) PyExc_KeyError; | ||||||
| PyAPI_DATA(PyObject *) PyExc_KeyboardInterrupt; | PyAPI_DATA(PyObject *) PyExc_KeyboardInterrupt; | ||||||
|  | @ -168,7 +174,9 @@ PyAPI_DATA(PyObject *) PyExc_MemoryError; | ||||||
| PyAPI_DATA(PyObject *) PyExc_NameError; | PyAPI_DATA(PyObject *) PyExc_NameError; | ||||||
| PyAPI_DATA(PyObject *) PyExc_OverflowError; | PyAPI_DATA(PyObject *) PyExc_OverflowError; | ||||||
| PyAPI_DATA(PyObject *) PyExc_RuntimeError; | PyAPI_DATA(PyObject *) PyExc_RuntimeError; | ||||||
|  | #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000 | ||||||
| PyAPI_DATA(PyObject *) PyExc_RecursionError; | PyAPI_DATA(PyObject *) PyExc_RecursionError; | ||||||
|  | #endif | ||||||
| PyAPI_DATA(PyObject *) PyExc_NotImplementedError; | PyAPI_DATA(PyObject *) PyExc_NotImplementedError; | ||||||
| PyAPI_DATA(PyObject *) PyExc_SyntaxError; | PyAPI_DATA(PyObject *) PyExc_SyntaxError; | ||||||
| PyAPI_DATA(PyObject *) PyExc_IndentationError; | PyAPI_DATA(PyObject *) PyExc_IndentationError; | ||||||
|  | @ -185,6 +193,7 @@ PyAPI_DATA(PyObject *) PyExc_UnicodeTranslateError; | ||||||
| PyAPI_DATA(PyObject *) PyExc_ValueError; | PyAPI_DATA(PyObject *) PyExc_ValueError; | ||||||
| PyAPI_DATA(PyObject *) PyExc_ZeroDivisionError; | PyAPI_DATA(PyObject *) PyExc_ZeroDivisionError; | ||||||
| 
 | 
 | ||||||
|  | #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000 | ||||||
| PyAPI_DATA(PyObject *) PyExc_BlockingIOError; | PyAPI_DATA(PyObject *) PyExc_BlockingIOError; | ||||||
| PyAPI_DATA(PyObject *) PyExc_BrokenPipeError; | PyAPI_DATA(PyObject *) PyExc_BrokenPipeError; | ||||||
| PyAPI_DATA(PyObject *) PyExc_ChildProcessError; | PyAPI_DATA(PyObject *) PyExc_ChildProcessError; | ||||||
|  | @ -200,6 +209,7 @@ PyAPI_DATA(PyObject *) PyExc_NotADirectoryError; | ||||||
| PyAPI_DATA(PyObject *) PyExc_PermissionError; | PyAPI_DATA(PyObject *) PyExc_PermissionError; | ||||||
| PyAPI_DATA(PyObject *) PyExc_ProcessLookupError; | PyAPI_DATA(PyObject *) PyExc_ProcessLookupError; | ||||||
| PyAPI_DATA(PyObject *) PyExc_TimeoutError; | PyAPI_DATA(PyObject *) PyExc_TimeoutError; | ||||||
|  | #endif | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| /* Compatibility aliases */ | /* Compatibility aliases */ | ||||||
|  | @ -232,8 +242,10 @@ PyAPI_FUNC(PyObject *) PyErr_NoMemory(void); | ||||||
| PyAPI_FUNC(PyObject *) PyErr_SetFromErrno(PyObject *); | PyAPI_FUNC(PyObject *) PyErr_SetFromErrno(PyObject *); | ||||||
| PyAPI_FUNC(PyObject *) PyErr_SetFromErrnoWithFilenameObject( | PyAPI_FUNC(PyObject *) PyErr_SetFromErrnoWithFilenameObject( | ||||||
|     PyObject *, PyObject *); |     PyObject *, PyObject *); | ||||||
|  | #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03040000 | ||||||
| PyAPI_FUNC(PyObject *) PyErr_SetFromErrnoWithFilenameObjects( | PyAPI_FUNC(PyObject *) PyErr_SetFromErrnoWithFilenameObjects( | ||||||
|     PyObject *, PyObject *, PyObject *); |     PyObject *, PyObject *, PyObject *); | ||||||
|  | #endif | ||||||
| PyAPI_FUNC(PyObject *) PyErr_SetFromErrnoWithFilename( | PyAPI_FUNC(PyObject *) PyErr_SetFromErrnoWithFilename( | ||||||
|     PyObject *exc, |     PyObject *exc, | ||||||
|     const char *filename   /* decoded from the filesystem encoding */ |     const char *filename   /* decoded from the filesystem encoding */ | ||||||
|  | @ -279,8 +291,10 @@ PyAPI_FUNC(PyObject *) PyErr_SetFromWindowsErrWithUnicodeFilename( | ||||||
| PyAPI_FUNC(PyObject *) PyErr_SetFromWindowsErr(int); | PyAPI_FUNC(PyObject *) PyErr_SetFromWindowsErr(int); | ||||||
| PyAPI_FUNC(PyObject *) PyErr_SetExcFromWindowsErrWithFilenameObject( | PyAPI_FUNC(PyObject *) PyErr_SetExcFromWindowsErrWithFilenameObject( | ||||||
|     PyObject *,int, PyObject *); |     PyObject *,int, PyObject *); | ||||||
|  | #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03040000 | ||||||
| PyAPI_FUNC(PyObject *) PyErr_SetExcFromWindowsErrWithFilenameObjects( | PyAPI_FUNC(PyObject *) PyErr_SetExcFromWindowsErrWithFilenameObjects( | ||||||
|     PyObject *,int, PyObject *, PyObject *); |     PyObject *,int, PyObject *, PyObject *); | ||||||
|  | #endif | ||||||
| PyAPI_FUNC(PyObject *) PyErr_SetExcFromWindowsErrWithFilename( | PyAPI_FUNC(PyObject *) PyErr_SetExcFromWindowsErrWithFilename( | ||||||
|     PyObject *exc, |     PyObject *exc, | ||||||
|     int ierr, |     int ierr, | ||||||
|  | @ -293,13 +307,14 @@ PyAPI_FUNC(PyObject *) PyErr_SetExcFromWindowsErrWithUnicodeFilename( | ||||||
| PyAPI_FUNC(PyObject *) PyErr_SetExcFromWindowsErr(PyObject *, int); | PyAPI_FUNC(PyObject *) PyErr_SetExcFromWindowsErr(PyObject *, int); | ||||||
| #endif /* MS_WINDOWS */ | #endif /* MS_WINDOWS */ | ||||||
| 
 | 
 | ||||||
| PyAPI_FUNC(PyObject *) PyErr_SetExcWithArgsKwargs(PyObject *, PyObject *, | #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03060000 | ||||||
|     PyObject *); |  | ||||||
| 
 |  | ||||||
| PyAPI_FUNC(PyObject *) PyErr_SetImportErrorSubclass(PyObject *, PyObject *, | PyAPI_FUNC(PyObject *) PyErr_SetImportErrorSubclass(PyObject *, PyObject *, | ||||||
|     PyObject *, PyObject *); |     PyObject *, PyObject *); | ||||||
|  | #endif | ||||||
|  | #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000 | ||||||
| PyAPI_FUNC(PyObject *) PyErr_SetImportError(PyObject *, PyObject *, | PyAPI_FUNC(PyObject *) PyErr_SetImportError(PyObject *, PyObject *, | ||||||
|     PyObject *); |     PyObject *); | ||||||
|  | #endif | ||||||
| 
 | 
 | ||||||
| /* Export the old function so that the existing API remains available: */ | /* Export the old function so that the existing API remains available: */ | ||||||
| PyAPI_FUNC(void) PyErr_BadInternalCall(void); | PyAPI_FUNC(void) PyErr_BadInternalCall(void); | ||||||
|  |  | ||||||
|  | @ -101,7 +101,9 @@ PyAPI_FUNC(PyObject*) _PyTraceMalloc_GetTraceback( | ||||||
| */ | */ | ||||||
| 
 | 
 | ||||||
| PyAPI_FUNC(void *) PyMem_Malloc(size_t size); | PyAPI_FUNC(void *) PyMem_Malloc(size_t size); | ||||||
|  | #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000 | ||||||
| PyAPI_FUNC(void *) PyMem_Calloc(size_t nelem, size_t elsize); | PyAPI_FUNC(void *) PyMem_Calloc(size_t nelem, size_t elsize); | ||||||
|  | #endif | ||||||
| PyAPI_FUNC(void *) PyMem_Realloc(void *ptr, size_t new_size); | PyAPI_FUNC(void *) PyMem_Realloc(void *ptr, size_t new_size); | ||||||
| PyAPI_FUNC(void) PyMem_Free(void *ptr); | PyAPI_FUNC(void) PyMem_Free(void *ptr); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -91,9 +91,11 @@ PyAPI_FUNC(struct _mod *) PyParser_ASTFromFileObject( | ||||||
| #endif | #endif | ||||||
| PyAPI_FUNC(struct _node *) PyParser_SimpleParseStringFlags(const char *, int, | PyAPI_FUNC(struct _node *) PyParser_SimpleParseStringFlags(const char *, int, | ||||||
|                                                            int); |                                                            int); | ||||||
|  | #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000 | ||||||
| PyAPI_FUNC(struct _node *) PyParser_SimpleParseStringFlagsFilename(const char *, | PyAPI_FUNC(struct _node *) PyParser_SimpleParseStringFlagsFilename(const char *, | ||||||
|                                                                    const char *, |                                                                    const char *, | ||||||
|                                                                    int, int); |                                                                    int, int); | ||||||
|  | #endif | ||||||
| PyAPI_FUNC(struct _node *) PyParser_SimpleParseFileFlags(FILE *, const char *, | PyAPI_FUNC(struct _node *) PyParser_SimpleParseFileFlags(FILE *, const char *, | ||||||
|                                                          int, int); |                                                          int, int); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -69,7 +69,9 @@ PyAPI_FUNC(void) PyThread_release_lock(PyThread_type_lock); | ||||||
| PyAPI_FUNC(size_t) PyThread_get_stacksize(void); | PyAPI_FUNC(size_t) PyThread_get_stacksize(void); | ||||||
| PyAPI_FUNC(int) PyThread_set_stacksize(size_t); | PyAPI_FUNC(int) PyThread_set_stacksize(size_t); | ||||||
| 
 | 
 | ||||||
|  | #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000 | ||||||
| PyAPI_FUNC(PyObject*) PyThread_GetInfo(void); | PyAPI_FUNC(PyObject*) PyThread_GetInfo(void); | ||||||
|  | #endif | ||||||
| 
 | 
 | ||||||
| /* Thread Local Storage (TLS) API */ | /* Thread Local Storage (TLS) API */ | ||||||
| PyAPI_FUNC(int) PyThread_create_key(void); | PyAPI_FUNC(int) PyThread_create_key(void); | ||||||
|  |  | ||||||
|  | @ -722,10 +722,12 @@ PyAPI_FUNC(PyObject*) _PyUnicode_FromASCII( | ||||||
|     Py_ssize_t size); |     Py_ssize_t size); | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
|  | #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000 | ||||||
| PyAPI_FUNC(PyObject*) PyUnicode_Substring( | PyAPI_FUNC(PyObject*) PyUnicode_Substring( | ||||||
|     PyObject *str, |     PyObject *str, | ||||||
|     Py_ssize_t start, |     Py_ssize_t start, | ||||||
|     Py_ssize_t end); |     Py_ssize_t end); | ||||||
|  | #endif | ||||||
| 
 | 
 | ||||||
| #ifndef Py_LIMITED_API | #ifndef Py_LIMITED_API | ||||||
| /* Compute the maximum character of the substring unicode[start:end].
 | /* Compute the maximum character of the substring unicode[start:end].
 | ||||||
|  | @ -736,6 +738,7 @@ PyAPI_FUNC(Py_UCS4) _PyUnicode_FindMaxChar ( | ||||||
|     Py_ssize_t end); |     Py_ssize_t end); | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
|  | #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000 | ||||||
| /* Copy the string into a UCS4 buffer including the null character if copy_null
 | /* Copy the string into a UCS4 buffer including the null character if copy_null
 | ||||||
|    is set. Return NULL and raise an exception on error. Raise a SystemError if |    is set. Return NULL and raise an exception on error. Raise a SystemError if | ||||||
|    the buffer is smaller than the string. Return buffer on success. |    the buffer is smaller than the string. Return buffer on success. | ||||||
|  | @ -751,6 +754,7 @@ PyAPI_FUNC(Py_UCS4*) PyUnicode_AsUCS4( | ||||||
|  * PyMem_Malloc; if this fails, NULL is returned with a memory error |  * PyMem_Malloc; if this fails, NULL is returned with a memory error | ||||||
|    exception set. */ |    exception set. */ | ||||||
| PyAPI_FUNC(Py_UCS4*) PyUnicode_AsUCS4Copy(PyObject *unicode); | PyAPI_FUNC(Py_UCS4*) PyUnicode_AsUCS4Copy(PyObject *unicode); | ||||||
|  | #endif | ||||||
| 
 | 
 | ||||||
| /* Return a read-only pointer to the Unicode object's internal
 | /* Return a read-only pointer to the Unicode object's internal
 | ||||||
|    Py_UNICODE buffer. |    Py_UNICODE buffer. | ||||||
|  | @ -775,11 +779,13 @@ PyAPI_FUNC(Py_UNICODE *) PyUnicode_AsUnicodeAndSize( | ||||||
|     )  /* Py_DEPRECATED(3.3) */; |     )  /* Py_DEPRECATED(3.3) */; | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
|  | #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000 | ||||||
| /* Get the length of the Unicode object. */ | /* Get the length of the Unicode object. */ | ||||||
| 
 | 
 | ||||||
| PyAPI_FUNC(Py_ssize_t) PyUnicode_GetLength( | PyAPI_FUNC(Py_ssize_t) PyUnicode_GetLength( | ||||||
|     PyObject *unicode |     PyObject *unicode | ||||||
| ); | ); | ||||||
|  | #endif | ||||||
| 
 | 
 | ||||||
| /* Get the number of Py_UNICODE units in the
 | /* Get the number of Py_UNICODE units in the
 | ||||||
|    string representation. */ |    string representation. */ | ||||||
|  | @ -788,6 +794,7 @@ PyAPI_FUNC(Py_ssize_t) PyUnicode_GetSize( | ||||||
|     PyObject *unicode           /* Unicode object */ |     PyObject *unicode           /* Unicode object */ | ||||||
|     ) Py_DEPRECATED(3.3); |     ) Py_DEPRECATED(3.3); | ||||||
| 
 | 
 | ||||||
|  | #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000 | ||||||
| /* Read a character from the string. */ | /* Read a character from the string. */ | ||||||
| 
 | 
 | ||||||
| PyAPI_FUNC(Py_UCS4) PyUnicode_ReadChar( | PyAPI_FUNC(Py_UCS4) PyUnicode_ReadChar( | ||||||
|  | @ -805,6 +812,7 @@ PyAPI_FUNC(int) PyUnicode_WriteChar( | ||||||
|     Py_ssize_t index, |     Py_ssize_t index, | ||||||
|     Py_UCS4 character |     Py_UCS4 character | ||||||
|     ); |     ); | ||||||
|  | #endif | ||||||
| 
 | 
 | ||||||
| #ifndef Py_LIMITED_API | #ifndef Py_LIMITED_API | ||||||
| /* Get the maximum ordinal for a Unicode character. */ | /* Get the maximum ordinal for a Unicode character. */ | ||||||
|  | @ -1490,6 +1498,7 @@ PyAPI_FUNC(PyObject*) PyUnicode_DecodeUnicodeEscape( | ||||||
|     const char *errors          /* error handling */ |     const char *errors          /* error handling */ | ||||||
|     ); |     ); | ||||||
| 
 | 
 | ||||||
|  | #ifndef Py_LIMITED_API | ||||||
| /* Helper for PyUnicode_DecodeUnicodeEscape that detects invalid escape
 | /* Helper for PyUnicode_DecodeUnicodeEscape that detects invalid escape
 | ||||||
|    chars. */ |    chars. */ | ||||||
| PyAPI_FUNC(PyObject*) _PyUnicode_DecodeUnicodeEscape( | PyAPI_FUNC(PyObject*) _PyUnicode_DecodeUnicodeEscape( | ||||||
|  | @ -1500,6 +1509,7 @@ PyAPI_FUNC(PyObject*) _PyUnicode_DecodeUnicodeEscape( | ||||||
|                                               invalid escaped char in |                                               invalid escaped char in | ||||||
|                                               string. */ |                                               string. */ | ||||||
| ); | ); | ||||||
|  | #endif | ||||||
| 
 | 
 | ||||||
| PyAPI_FUNC(PyObject*) PyUnicode_AsUnicodeEscapeString( | PyAPI_FUNC(PyObject*) PyUnicode_AsUnicodeEscapeString( | ||||||
|     PyObject *unicode           /* Unicode object */ |     PyObject *unicode           /* Unicode object */ | ||||||
|  | @ -1690,6 +1700,7 @@ PyAPI_FUNC(PyObject*) PyUnicode_DecodeMBCSStateful( | ||||||
|     Py_ssize_t *consumed        /* bytes consumed */ |     Py_ssize_t *consumed        /* bytes consumed */ | ||||||
|     ); |     ); | ||||||
| 
 | 
 | ||||||
|  | #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000 | ||||||
| PyAPI_FUNC(PyObject*) PyUnicode_DecodeCodePageStateful( | PyAPI_FUNC(PyObject*) PyUnicode_DecodeCodePageStateful( | ||||||
|     int code_page,              /* code page number */ |     int code_page,              /* code page number */ | ||||||
|     const char *string,         /* encoded string */ |     const char *string,         /* encoded string */ | ||||||
|  | @ -1697,6 +1708,7 @@ PyAPI_FUNC(PyObject*) PyUnicode_DecodeCodePageStateful( | ||||||
|     const char *errors,         /* error handling */ |     const char *errors,         /* error handling */ | ||||||
|     Py_ssize_t *consumed        /* bytes consumed */ |     Py_ssize_t *consumed        /* bytes consumed */ | ||||||
|     ); |     ); | ||||||
|  | #endif | ||||||
| 
 | 
 | ||||||
| PyAPI_FUNC(PyObject*) PyUnicode_AsMBCSString( | PyAPI_FUNC(PyObject*) PyUnicode_AsMBCSString( | ||||||
|     PyObject *unicode           /* Unicode object */ |     PyObject *unicode           /* Unicode object */ | ||||||
|  | @ -1710,11 +1722,13 @@ PyAPI_FUNC(PyObject*) PyUnicode_EncodeMBCS( | ||||||
|     ) Py_DEPRECATED(3.3); |     ) Py_DEPRECATED(3.3); | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
|  | #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000 | ||||||
| PyAPI_FUNC(PyObject*) PyUnicode_EncodeCodePage( | PyAPI_FUNC(PyObject*) PyUnicode_EncodeCodePage( | ||||||
|     int code_page,              /* code page number */ |     int code_page,              /* code page number */ | ||||||
|     PyObject *unicode,          /* Unicode object */ |     PyObject *unicode,          /* Unicode object */ | ||||||
|     const char *errors          /* error handling */ |     const char *errors          /* error handling */ | ||||||
|     ); |     ); | ||||||
|  | #endif | ||||||
| 
 | 
 | ||||||
| #endif /* MS_WINDOWS */ | #endif /* MS_WINDOWS */ | ||||||
| 
 | 
 | ||||||
|  | @ -1777,6 +1791,7 @@ PyAPI_FUNC(PyObject*) _PyUnicode_TransformDecimalAndSpaceToASCII( | ||||||
| 
 | 
 | ||||||
| /* --- Locale encoding --------------------------------------------------- */ | /* --- Locale encoding --------------------------------------------------- */ | ||||||
| 
 | 
 | ||||||
|  | #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000 | ||||||
| /* Decode a string from the current locale encoding. The decoder is strict if
 | /* Decode a string from the current locale encoding. The decoder is strict if
 | ||||||
|    *surrogateescape* is equal to zero, otherwise it uses the 'surrogateescape' |    *surrogateescape* is equal to zero, otherwise it uses the 'surrogateescape' | ||||||
|    error handler (PEP 383) to escape undecodable bytes. If a byte sequence can |    error handler (PEP 383) to escape undecodable bytes. If a byte sequence can | ||||||
|  | @ -1806,6 +1821,7 @@ PyAPI_FUNC(PyObject*) PyUnicode_EncodeLocale( | ||||||
|     PyObject *unicode, |     PyObject *unicode, | ||||||
|     const char *errors |     const char *errors | ||||||
|     ); |     ); | ||||||
|  | #endif | ||||||
| 
 | 
 | ||||||
| /* --- File system encoding ---------------------------------------------- */ | /* --- File system encoding ---------------------------------------------- */ | ||||||
| 
 | 
 | ||||||
|  | @ -2002,6 +2018,7 @@ PyAPI_FUNC(Py_ssize_t) PyUnicode_Find( | ||||||
|     int direction               /* Find direction: +1 forward, -1 backward */ |     int direction               /* Find direction: +1 forward, -1 backward */ | ||||||
|     ); |     ); | ||||||
| 
 | 
 | ||||||
|  | #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000 | ||||||
| /* Like PyUnicode_Find, but search for single character only. */ | /* Like PyUnicode_Find, but search for single character only. */ | ||||||
| PyAPI_FUNC(Py_ssize_t) PyUnicode_FindChar( | PyAPI_FUNC(Py_ssize_t) PyUnicode_FindChar( | ||||||
|     PyObject *str, |     PyObject *str, | ||||||
|  | @ -2010,6 +2027,7 @@ PyAPI_FUNC(Py_ssize_t) PyUnicode_FindChar( | ||||||
|     Py_ssize_t end, |     Py_ssize_t end, | ||||||
|     int direction |     int direction | ||||||
|     ); |     ); | ||||||
|  | #endif | ||||||
| 
 | 
 | ||||||
| /* Count the number of occurrences of substr in str[start:end]. */ | /* Count the number of occurrences of substr in str[start:end]. */ | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -18,12 +18,14 @@ PyAPI_FUNC(int) PyErr_WarnFormat( | ||||||
|     const char *format,         /* ASCII-encoded string  */ |     const char *format,         /* ASCII-encoded string  */ | ||||||
|     ...); |     ...); | ||||||
| 
 | 
 | ||||||
|  | #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03060000 | ||||||
| /* Emit a ResourceWarning warning */ | /* Emit a ResourceWarning warning */ | ||||||
| PyAPI_FUNC(int) PyErr_ResourceWarning( | PyAPI_FUNC(int) PyErr_ResourceWarning( | ||||||
|     PyObject *source, |     PyObject *source, | ||||||
|     Py_ssize_t stack_level, |     Py_ssize_t stack_level, | ||||||
|     const char *format,         /* ASCII-encoded string  */ |     const char *format,         /* ASCII-encoded string  */ | ||||||
|     ...); |     ...); | ||||||
|  | #endif | ||||||
| #ifndef Py_LIMITED_API | #ifndef Py_LIMITED_API | ||||||
| PyAPI_FUNC(int) PyErr_WarnExplicitObject( | PyAPI_FUNC(int) PyErr_WarnExplicitObject( | ||||||
|     PyObject *category, |     PyObject *category, | ||||||
|  |  | ||||||
|  | @ -552,6 +552,10 @@ Windows | ||||||
| C API | C API | ||||||
| ----- | ----- | ||||||
| 
 | 
 | ||||||
|  | - Issue #29058: All stable API extensions added after Python 3.2 are now | ||||||
|  |   available only when Py_LIMITED_API is set to the PY_VERSION_HEX value of | ||||||
|  |   the minimum Python version supporting this API. | ||||||
|  | 
 | ||||||
| - Issue #28822: The indices parameters *start* and *end* of PyUnicode_FindChar() | - Issue #28822: The indices parameters *start* and *end* of PyUnicode_FindChar() | ||||||
|   are now adjusted to behave like ``str[start:end]``. |   are now adjusted to behave like ``str[start:end]``. | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Serhiy Storchaka
						Serhiy Storchaka