gh-106320: Remove private _PyErr C API functions (#106356)

Remove private _PyErr C API functions: move them to the internal
C API (pycore_pyerrors.h).
This commit is contained in:
Victor Stinner 2023-07-03 12:48:50 +02:00 committed by GitHub
parent 18fedd04a7
commit c5afc97fc2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 63 additions and 46 deletions

View File

@ -91,31 +91,14 @@ typedef PyOSErrorObject PyWindowsErrorObject;
/* Error handling definitions */ /* Error handling definitions */
PyAPI_FUNC(void) _PyErr_SetKeyError(PyObject *); PyAPI_FUNC(void) _PyErr_SetKeyError(PyObject *);
PyAPI_FUNC(_PyErr_StackItem*) _PyErr_GetTopmostException(PyThreadState *tstate);
PyAPI_FUNC(PyObject*) _PyErr_GetHandledException(PyThreadState *);
PyAPI_FUNC(void) _PyErr_SetHandledException(PyThreadState *, PyObject *);
PyAPI_FUNC(void) _PyErr_GetExcInfo(PyThreadState *, PyObject **, PyObject **, PyObject **);
/* Context manipulation (PEP 3134) */ /* Context manipulation (PEP 3134) */
Py_DEPRECATED(3.12) PyAPI_FUNC(void) _PyErr_ChainExceptions(PyObject *, PyObject *, PyObject *); Py_DEPRECATED(3.12) PyAPI_FUNC(void) _PyErr_ChainExceptions(PyObject *, PyObject *, PyObject *);
PyAPI_FUNC(void) _PyErr_ChainExceptions1(PyObject *); PyAPI_FUNC(void) _PyErr_ChainExceptions1(PyObject *);
/* Like PyErr_Format(), but saves current exception as __context__ and
__cause__.
*/
PyAPI_FUNC(PyObject *) _PyErr_FormatFromCause(
PyObject *exception,
const char *format, /* ASCII-encoded string */
...
);
/* In exceptions.c */ /* In exceptions.c */
PyAPI_FUNC(int) _PyException_AddNote(
PyObject *exc,
PyObject *note);
PyAPI_FUNC(PyObject*) PyUnstable_Exc_PrepReraiseStar( PyAPI_FUNC(PyObject*) PyUnstable_Exc_PrepReraiseStar(
PyObject *orig, PyObject *orig,
PyObject *excs); PyObject *excs);
@ -123,7 +106,6 @@ PyAPI_FUNC(PyObject*) PyUnstable_Exc_PrepReraiseStar(
/* In signalmodule.c */ /* In signalmodule.c */
int PySignal_SetWakeupFd(int fd); int PySignal_SetWakeupFd(int fd);
PyAPI_FUNC(int) _PyErr_CheckSignals(void);
/* Support for adding program text to SyntaxErrors */ /* Support for adding program text to SyntaxErrors */
@ -143,18 +125,6 @@ PyAPI_FUNC(PyObject *) PyErr_ProgramTextObject(
PyObject *filename, PyObject *filename,
int lineno); int lineno);
PyAPI_FUNC(PyObject *) _PyErr_ProgramDecodedTextObject(
PyObject *filename,
int lineno,
const char* encoding);
PyAPI_FUNC(PyObject *) _PyUnicodeTranslateError_Create(
PyObject *object,
Py_ssize_t start,
Py_ssize_t end,
const char *reason /* UTF-8 encoded string */
);
PyAPI_FUNC(void) _PyErr_WriteUnraisableMsg( PyAPI_FUNC(void) _PyErr_WriteUnraisableMsg(
const char *err_msg, const char *err_msg,
PyObject *obj); PyObject *obj);
@ -163,16 +133,4 @@ PyAPI_FUNC(void) _Py_NO_RETURN _Py_FatalErrorFunc(
const char *func, const char *func,
const char *message); const char *message);
PyAPI_FUNC(void) _Py_NO_RETURN _Py_FatalErrorFormat(
const char *func,
const char *format,
...);
extern PyObject *_PyErr_SetImportErrorWithNameFrom(
PyObject *,
PyObject *,
PyObject *,
PyObject *);
#define Py_FatalError(message) _Py_FatalErrorFunc(__func__, (message)) #define Py_FatalError(message) _Py_FatalErrorFunc(__func__, (message))

View File

@ -9,6 +9,54 @@ extern "C" {
#endif #endif
/* Error handling definitions */
PyAPI_FUNC(_PyErr_StackItem*) _PyErr_GetTopmostException(PyThreadState *tstate);
PyAPI_FUNC(PyObject*) _PyErr_GetHandledException(PyThreadState *);
PyAPI_FUNC(void) _PyErr_SetHandledException(PyThreadState *, PyObject *);
PyAPI_FUNC(void) _PyErr_GetExcInfo(PyThreadState *, PyObject **, PyObject **, PyObject **);
/* Like PyErr_Format(), but saves current exception as __context__ and
__cause__.
*/
PyAPI_FUNC(PyObject *) _PyErr_FormatFromCause(
PyObject *exception,
const char *format, /* ASCII-encoded string */
...
);
PyAPI_FUNC(int) _PyException_AddNote(
PyObject *exc,
PyObject *note);
PyAPI_FUNC(int) _PyErr_CheckSignals(void);
/* Support for adding program text to SyntaxErrors */
PyAPI_FUNC(PyObject *) _PyErr_ProgramDecodedTextObject(
PyObject *filename,
int lineno,
const char* encoding);
PyAPI_FUNC(PyObject *) _PyUnicodeTranslateError_Create(
PyObject *object,
Py_ssize_t start,
Py_ssize_t end,
const char *reason /* UTF-8 encoded string */
);
PyAPI_FUNC(void) _Py_NO_RETURN _Py_FatalErrorFormat(
const char *func,
const char *format,
...);
extern PyObject *_PyErr_SetImportErrorWithNameFrom(
PyObject *,
PyObject *,
PyObject *,
PyObject *);
/* runtime lifecycle */ /* runtime lifecycle */
extern PyStatus _PyErr_InitTypes(PyInterpreterState *); extern PyStatus _PyErr_InitTypes(PyInterpreterState *);

View File

@ -10,6 +10,7 @@
#include "Python.h" #include "Python.h"
#include "pycore_call.h" // _PyObject_CallNoArgs() #include "pycore_call.h" // _PyObject_CallNoArgs()
#include "pycore_object.h" #include "pycore_object.h"
#include "pycore_pyerrors.h" // _Py_FatalErrorFormat()
#include "structmember.h" // PyMemberDef #include "structmember.h" // PyMemberDef
#include "_iomodule.h" #include "_iomodule.h"

View File

@ -21,11 +21,17 @@
* 3. This notice may not be removed or altered from any source distribution. * 3. This notice may not be removed or altered from any source distribution.
*/ */
#ifndef Py_BUILD_CORE_BUILTIN
# define Py_BUILD_CORE_MODULE 1
#endif
#include "cursor.h" #include "cursor.h"
#include "microprotocols.h" #include "microprotocols.h"
#include "module.h" #include "module.h"
#include "util.h" #include "util.h"
#include "pycore_pyerrors.h" // _PyErr_FormatFromCause()
typedef enum { typedef enum {
TYPE_LONG, TYPE_LONG,
TYPE_FLOAT, TYPE_FLOAT,

View File

@ -4,9 +4,10 @@
#include "Python.h" #include "Python.h"
#include "pycore_call.h" // _PyObject_CallNoArgs() #include "pycore_call.h" // _PyObject_CallNoArgs()
#include "pycore_interp.h" // PyInterpreterState.importlib #include "pycore_interp.h" // PyInterpreterState.importlib
#include "pycore_object.h" // _PyType_AllocNoTrack
#include "pycore_moduleobject.h" // _PyModule_GetDef()
#include "pycore_modsupport.h" // _PyModule_CreateInitialized() #include "pycore_modsupport.h" // _PyModule_CreateInitialized()
#include "pycore_moduleobject.h" // _PyModule_GetDef()
#include "pycore_object.h" // _PyType_AllocNoTrack
#include "pycore_pyerrors.h" // _PyErr_FormatFromCause()
#include "pycore_pystate.h" // _PyInterpreterState_GET() #include "pycore_pystate.h" // _PyInterpreterState_GET()
#include "structmember.h" // PyMemberDef #include "structmember.h" // PyMemberDef

View File

@ -2,10 +2,10 @@
#include "Python.h" #include "Python.h"
#include "pycore_code.h" // stats #include "pycore_code.h" // stats
#include "pycore_pystate.h" // _PyInterpreterState_GET
#include "pycore_obmalloc.h" #include "pycore_obmalloc.h"
#include "pycore_pyerrors.h" // _Py_FatalErrorFormat()
#include "pycore_pymem.h" #include "pycore_pymem.h"
#include "pycore_pystate.h" // _PyInterpreterState_GET
#include <stdlib.h> // malloc() #include <stdlib.h> // malloc()
#include <stdbool.h> #include <stdbool.h>

View File

@ -50,6 +50,7 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#include "pycore_long.h" // _PyLong_FormatWriter() #include "pycore_long.h" // _PyLong_FormatWriter()
#include "pycore_object.h" // _PyObject_GC_TRACK(), _Py_FatalRefcountError() #include "pycore_object.h" // _PyObject_GC_TRACK(), _Py_FatalRefcountError()
#include "pycore_pathconfig.h" // _Py_DumpPathConfig() #include "pycore_pathconfig.h" // _Py_DumpPathConfig()
#include "pycore_pyerrors.h" // _PyUnicodeTranslateError_Create()
#include "pycore_pylifecycle.h" // _Py_SetFileSystemEncoding() #include "pycore_pylifecycle.h" // _Py_SetFileSystemEncoding()
#include "pycore_pystate.h" // _PyInterpreterState_GET() #include "pycore_pystate.h" // _PyInterpreterState_GET()
#include "pycore_ucnhash.h" // _PyUnicode_Name_CAPI #include "pycore_ucnhash.h" // _PyUnicode_Name_CAPI

View File

@ -1,6 +1,7 @@
#include <Python.h> #include <Python.h>
#include <errcode.h> #include <errcode.h>
#include "pycore_pyerrors.h" // _PyErr_ProgramDecodedTextObject()
#include "tokenizer.h" #include "tokenizer.h"
#include "pegen.h" #include "pegen.h"

View File

@ -4,6 +4,7 @@
#include "Python.h" #include "Python.h"
#include "pycore_call.h" #include "pycore_call.h"
#include "pycore_import.h" #include "pycore_import.h"
#include "pycore_pyerrors.h" // _PyErr_FormatFromCause()
#include "pycore_pystate.h" #include "pycore_pystate.h"
#include "pycore_runtime.h" #include "pycore_runtime.h"