File indexing completed on 2025-11-19 09:50:49
0001 #ifndef Py_INTERNAL_PYERRORS_H
0002 #define Py_INTERNAL_PYERRORS_H
0003 #ifdef __cplusplus
0004 extern "C" {
0005 #endif
0006
0007 #ifndef Py_BUILD_CORE
0008 # error "this header requires Py_BUILD_CORE define"
0009 #endif
0010
0011
0012
0013
0014 extern _PyErr_StackItem* _PyErr_GetTopmostException(PyThreadState *tstate);
0015 extern PyObject* _PyErr_GetHandledException(PyThreadState *);
0016 extern void _PyErr_SetHandledException(PyThreadState *, PyObject *);
0017 extern void _PyErr_GetExcInfo(PyThreadState *, PyObject **, PyObject **, PyObject **);
0018
0019
0020 PyAPI_FUNC(void) _PyErr_SetKeyError(PyObject *);
0021
0022
0023
0024
0025
0026 PyAPI_FUNC(PyObject*) _PyErr_FormatFromCause(
0027 PyObject *exception,
0028 const char *format,
0029 ...
0030 );
0031
0032 extern int _PyException_AddNote(
0033 PyObject *exc,
0034 PyObject *note);
0035
0036 extern int _PyErr_CheckSignals(void);
0037
0038
0039
0040
0041 PyAPI_FUNC(PyObject*) _PyErr_ProgramDecodedTextObject(
0042 PyObject *filename,
0043 int lineno,
0044 const char* encoding);
0045
0046 extern PyObject* _PyUnicodeTranslateError_Create(
0047 PyObject *object,
0048 Py_ssize_t start,
0049 Py_ssize_t end,
0050 const char *reason
0051 );
0052
0053 extern void _Py_NO_RETURN _Py_FatalErrorFormat(
0054 const char *func,
0055 const char *format,
0056 ...);
0057
0058 extern PyObject* _PyErr_SetImportErrorWithNameFrom(
0059 PyObject *,
0060 PyObject *,
0061 PyObject *,
0062 PyObject *);
0063
0064
0065
0066
0067 extern PyStatus _PyErr_InitTypes(PyInterpreterState *);
0068 extern void _PyErr_FiniTypes(PyInterpreterState *);
0069
0070
0071
0072
0073 static inline PyObject* _PyErr_Occurred(PyThreadState *tstate)
0074 {
0075 assert(tstate != NULL);
0076 if (tstate->current_exception == NULL) {
0077 return NULL;
0078 }
0079 return (PyObject *)Py_TYPE(tstate->current_exception);
0080 }
0081
0082 static inline void _PyErr_ClearExcState(_PyErr_StackItem *exc_state)
0083 {
0084 Py_CLEAR(exc_state->exc_value);
0085 }
0086
0087 extern PyObject* _PyErr_StackItemToExcInfoTuple(
0088 _PyErr_StackItem *err_info);
0089
0090 extern void _PyErr_Fetch(
0091 PyThreadState *tstate,
0092 PyObject **type,
0093 PyObject **value,
0094 PyObject **traceback);
0095
0096 extern PyObject* _PyErr_GetRaisedException(PyThreadState *tstate);
0097
0098 PyAPI_FUNC(int) _PyErr_ExceptionMatches(
0099 PyThreadState *tstate,
0100 PyObject *exc);
0101
0102 extern void _PyErr_SetRaisedException(PyThreadState *tstate, PyObject *exc);
0103
0104 extern void _PyErr_Restore(
0105 PyThreadState *tstate,
0106 PyObject *type,
0107 PyObject *value,
0108 PyObject *traceback);
0109
0110 extern void _PyErr_SetObject(
0111 PyThreadState *tstate,
0112 PyObject *type,
0113 PyObject *value);
0114
0115 extern void _PyErr_ChainStackItem(void);
0116
0117 PyAPI_FUNC(void) _PyErr_Clear(PyThreadState *tstate);
0118
0119 extern void _PyErr_SetNone(PyThreadState *tstate, PyObject *exception);
0120
0121 extern PyObject* _PyErr_NoMemory(PyThreadState *tstate);
0122
0123 PyAPI_FUNC(void) _PyErr_SetString(
0124 PyThreadState *tstate,
0125 PyObject *exception,
0126 const char *string);
0127
0128
0129
0130
0131
0132
0133
0134
0135
0136 PyAPI_FUNC(void) _PyErr_SetLocaleString(
0137 PyObject *exception,
0138 const char *string);
0139
0140 PyAPI_FUNC(PyObject*) _PyErr_Format(
0141 PyThreadState *tstate,
0142 PyObject *exception,
0143 const char *format,
0144 ...);
0145
0146 extern void _PyErr_NormalizeException(
0147 PyThreadState *tstate,
0148 PyObject **exc,
0149 PyObject **val,
0150 PyObject **tb);
0151
0152 extern PyObject* _PyErr_FormatFromCauseTstate(
0153 PyThreadState *tstate,
0154 PyObject *exception,
0155 const char *format,
0156 ...);
0157
0158 extern PyObject* _PyExc_CreateExceptionGroup(
0159 const char *msg,
0160 PyObject *excs);
0161
0162 extern PyObject* _PyExc_PrepReraiseStar(
0163 PyObject *orig,
0164 PyObject *excs);
0165
0166 extern int _PyErr_CheckSignalsTstate(PyThreadState *tstate);
0167
0168 extern void _Py_DumpExtensionModules(int fd, PyInterpreterState *interp);
0169 extern PyObject* _Py_CalculateSuggestions(PyObject *dir, PyObject *name);
0170 extern PyObject* _Py_Offer_Suggestions(PyObject* exception);
0171
0172
0173 PyAPI_FUNC(Py_ssize_t) _Py_UTF8_Edit_Cost(PyObject *str_a, PyObject *str_b,
0174 Py_ssize_t max_cost);
0175
0176 void _PyErr_FormatNote(const char *format, ...);
0177
0178
0179
0180 Py_DEPRECATED(3.12) extern void _PyErr_ChainExceptions(PyObject *, PyObject *, PyObject *);
0181
0182
0183
0184 PyAPI_DATA(PyTypeObject) _PyExc_IncompleteInputError;
0185 #define PyExc_IncompleteInputError ((PyObject *)(&_PyExc_IncompleteInputError))
0186
0187 #ifdef __cplusplus
0188 }
0189 #endif
0190 #endif