Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-11-19 09:50:54

0001 // Error handling definitions
0002 
0003 #ifndef Py_ERRORS_H
0004 #define Py_ERRORS_H
0005 #ifdef __cplusplus
0006 extern "C" {
0007 #endif
0008 
0009 PyAPI_FUNC(void) PyErr_SetNone(PyObject *);
0010 PyAPI_FUNC(void) PyErr_SetObject(PyObject *, PyObject *);
0011 PyAPI_FUNC(void) PyErr_SetString(
0012     PyObject *exception,
0013     const char *string   /* decoded from utf-8 */
0014     );
0015 PyAPI_FUNC(PyObject *) PyErr_Occurred(void);
0016 PyAPI_FUNC(void) PyErr_Clear(void);
0017 PyAPI_FUNC(void) PyErr_Fetch(PyObject **, PyObject **, PyObject **);
0018 PyAPI_FUNC(void) PyErr_Restore(PyObject *, PyObject *, PyObject *);
0019 PyAPI_FUNC(PyObject *) PyErr_GetRaisedException(void);
0020 PyAPI_FUNC(void) PyErr_SetRaisedException(PyObject *);
0021 #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x030b0000
0022 PyAPI_FUNC(PyObject*) PyErr_GetHandledException(void);
0023 PyAPI_FUNC(void) PyErr_SetHandledException(PyObject *);
0024 #endif
0025 #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000
0026 PyAPI_FUNC(void) PyErr_GetExcInfo(PyObject **, PyObject **, PyObject **);
0027 PyAPI_FUNC(void) PyErr_SetExcInfo(PyObject *, PyObject *, PyObject *);
0028 #endif
0029 
0030 /* Defined in Python/pylifecycle.c
0031 
0032    The Py_FatalError() function is replaced with a macro which logs
0033    automatically the name of the current function, unless the Py_LIMITED_API
0034    macro is defined. */
0035 PyAPI_FUNC(void) _Py_NO_RETURN Py_FatalError(const char *message);
0036 
0037 /* Error testing and normalization */
0038 PyAPI_FUNC(int) PyErr_GivenExceptionMatches(PyObject *, PyObject *);
0039 PyAPI_FUNC(int) PyErr_ExceptionMatches(PyObject *);
0040 PyAPI_FUNC(void) PyErr_NormalizeException(PyObject**, PyObject**, PyObject**);
0041 
0042 /* Traceback manipulation (PEP 3134) */
0043 PyAPI_FUNC(int) PyException_SetTraceback(PyObject *, PyObject *);
0044 PyAPI_FUNC(PyObject *) PyException_GetTraceback(PyObject *);
0045 
0046 /* Cause manipulation (PEP 3134) */
0047 PyAPI_FUNC(PyObject *) PyException_GetCause(PyObject *);
0048 PyAPI_FUNC(void) PyException_SetCause(PyObject *, PyObject *);
0049 
0050 /* Context manipulation (PEP 3134) */
0051 PyAPI_FUNC(PyObject *) PyException_GetContext(PyObject *);
0052 PyAPI_FUNC(void) PyException_SetContext(PyObject *, PyObject *);
0053 
0054 
0055 PyAPI_FUNC(PyObject *) PyException_GetArgs(PyObject *);
0056 PyAPI_FUNC(void) PyException_SetArgs(PyObject *, PyObject *);
0057 
0058 /* */
0059 
0060 #define PyExceptionClass_Check(x)                                       \
0061     (PyType_Check((x)) &&                                               \
0062      PyType_FastSubclass((PyTypeObject*)(x), Py_TPFLAGS_BASE_EXC_SUBCLASS))
0063 
0064 #define PyExceptionInstance_Check(x)                    \
0065     PyType_FastSubclass(Py_TYPE(x), Py_TPFLAGS_BASE_EXC_SUBCLASS)
0066 
0067 PyAPI_FUNC(const char *) PyExceptionClass_Name(PyObject *);
0068 
0069 #define PyExceptionInstance_Class(x) _PyObject_CAST(Py_TYPE(x))
0070 
0071 #define _PyBaseExceptionGroup_Check(x)                   \
0072     PyObject_TypeCheck((x), (PyTypeObject *)PyExc_BaseExceptionGroup)
0073 
0074 /* Predefined exceptions */
0075 
0076 PyAPI_DATA(PyObject *) PyExc_BaseException;
0077 PyAPI_DATA(PyObject *) PyExc_Exception;
0078 PyAPI_DATA(PyObject *) PyExc_BaseExceptionGroup;
0079 #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000
0080 PyAPI_DATA(PyObject *) PyExc_StopAsyncIteration;
0081 #endif
0082 PyAPI_DATA(PyObject *) PyExc_StopIteration;
0083 PyAPI_DATA(PyObject *) PyExc_GeneratorExit;
0084 PyAPI_DATA(PyObject *) PyExc_ArithmeticError;
0085 PyAPI_DATA(PyObject *) PyExc_LookupError;
0086 
0087 PyAPI_DATA(PyObject *) PyExc_AssertionError;
0088 PyAPI_DATA(PyObject *) PyExc_AttributeError;
0089 PyAPI_DATA(PyObject *) PyExc_BufferError;
0090 PyAPI_DATA(PyObject *) PyExc_EOFError;
0091 PyAPI_DATA(PyObject *) PyExc_FloatingPointError;
0092 PyAPI_DATA(PyObject *) PyExc_OSError;
0093 PyAPI_DATA(PyObject *) PyExc_ImportError;
0094 #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03060000
0095 PyAPI_DATA(PyObject *) PyExc_ModuleNotFoundError;
0096 #endif
0097 PyAPI_DATA(PyObject *) PyExc_IndexError;
0098 PyAPI_DATA(PyObject *) PyExc_KeyError;
0099 PyAPI_DATA(PyObject *) PyExc_KeyboardInterrupt;
0100 PyAPI_DATA(PyObject *) PyExc_MemoryError;
0101 PyAPI_DATA(PyObject *) PyExc_NameError;
0102 PyAPI_DATA(PyObject *) PyExc_OverflowError;
0103 PyAPI_DATA(PyObject *) PyExc_RuntimeError;
0104 #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000
0105 PyAPI_DATA(PyObject *) PyExc_RecursionError;
0106 #endif
0107 PyAPI_DATA(PyObject *) PyExc_NotImplementedError;
0108 PyAPI_DATA(PyObject *) PyExc_SyntaxError;
0109 PyAPI_DATA(PyObject *) PyExc_IndentationError;
0110 PyAPI_DATA(PyObject *) PyExc_TabError;
0111 PyAPI_DATA(PyObject *) PyExc_ReferenceError;
0112 PyAPI_DATA(PyObject *) PyExc_SystemError;
0113 PyAPI_DATA(PyObject *) PyExc_SystemExit;
0114 PyAPI_DATA(PyObject *) PyExc_TypeError;
0115 PyAPI_DATA(PyObject *) PyExc_UnboundLocalError;
0116 PyAPI_DATA(PyObject *) PyExc_UnicodeError;
0117 PyAPI_DATA(PyObject *) PyExc_UnicodeEncodeError;
0118 PyAPI_DATA(PyObject *) PyExc_UnicodeDecodeError;
0119 PyAPI_DATA(PyObject *) PyExc_UnicodeTranslateError;
0120 PyAPI_DATA(PyObject *) PyExc_ValueError;
0121 PyAPI_DATA(PyObject *) PyExc_ZeroDivisionError;
0122 
0123 #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000
0124 PyAPI_DATA(PyObject *) PyExc_BlockingIOError;
0125 PyAPI_DATA(PyObject *) PyExc_BrokenPipeError;
0126 PyAPI_DATA(PyObject *) PyExc_ChildProcessError;
0127 PyAPI_DATA(PyObject *) PyExc_ConnectionError;
0128 PyAPI_DATA(PyObject *) PyExc_ConnectionAbortedError;
0129 PyAPI_DATA(PyObject *) PyExc_ConnectionRefusedError;
0130 PyAPI_DATA(PyObject *) PyExc_ConnectionResetError;
0131 PyAPI_DATA(PyObject *) PyExc_FileExistsError;
0132 PyAPI_DATA(PyObject *) PyExc_FileNotFoundError;
0133 PyAPI_DATA(PyObject *) PyExc_InterruptedError;
0134 PyAPI_DATA(PyObject *) PyExc_IsADirectoryError;
0135 PyAPI_DATA(PyObject *) PyExc_NotADirectoryError;
0136 PyAPI_DATA(PyObject *) PyExc_PermissionError;
0137 PyAPI_DATA(PyObject *) PyExc_ProcessLookupError;
0138 PyAPI_DATA(PyObject *) PyExc_TimeoutError;
0139 #endif
0140 
0141 
0142 /* Compatibility aliases */
0143 PyAPI_DATA(PyObject *) PyExc_EnvironmentError;
0144 PyAPI_DATA(PyObject *) PyExc_IOError;
0145 #ifdef MS_WINDOWS
0146 PyAPI_DATA(PyObject *) PyExc_WindowsError;
0147 #endif
0148 
0149 /* Predefined warning categories */
0150 PyAPI_DATA(PyObject *) PyExc_Warning;
0151 PyAPI_DATA(PyObject *) PyExc_UserWarning;
0152 PyAPI_DATA(PyObject *) PyExc_DeprecationWarning;
0153 PyAPI_DATA(PyObject *) PyExc_PendingDeprecationWarning;
0154 PyAPI_DATA(PyObject *) PyExc_SyntaxWarning;
0155 PyAPI_DATA(PyObject *) PyExc_RuntimeWarning;
0156 PyAPI_DATA(PyObject *) PyExc_FutureWarning;
0157 PyAPI_DATA(PyObject *) PyExc_ImportWarning;
0158 PyAPI_DATA(PyObject *) PyExc_UnicodeWarning;
0159 PyAPI_DATA(PyObject *) PyExc_BytesWarning;
0160 PyAPI_DATA(PyObject *) PyExc_EncodingWarning;
0161 PyAPI_DATA(PyObject *) PyExc_ResourceWarning;
0162 
0163 
0164 /* Convenience functions */
0165 
0166 PyAPI_FUNC(int) PyErr_BadArgument(void);
0167 PyAPI_FUNC(PyObject *) PyErr_NoMemory(void);
0168 PyAPI_FUNC(PyObject *) PyErr_SetFromErrno(PyObject *);
0169 PyAPI_FUNC(PyObject *) PyErr_SetFromErrnoWithFilenameObject(
0170     PyObject *, PyObject *);
0171 #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03040000
0172 PyAPI_FUNC(PyObject *) PyErr_SetFromErrnoWithFilenameObjects(
0173     PyObject *, PyObject *, PyObject *);
0174 #endif
0175 PyAPI_FUNC(PyObject *) PyErr_SetFromErrnoWithFilename(
0176     PyObject *exc,
0177     const char *filename   /* decoded from the filesystem encoding */
0178     );
0179 
0180 PyAPI_FUNC(PyObject *) PyErr_Format(
0181     PyObject *exception,
0182     const char *format,   /* ASCII-encoded string  */
0183     ...
0184     );
0185 #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000
0186 PyAPI_FUNC(PyObject *) PyErr_FormatV(
0187     PyObject *exception,
0188     const char *format,
0189     va_list vargs);
0190 #endif
0191 
0192 #ifdef MS_WINDOWS
0193 PyAPI_FUNC(PyObject *) PyErr_SetFromWindowsErrWithFilename(
0194     int ierr,
0195     const char *filename        /* decoded from the filesystem encoding */
0196     );
0197 PyAPI_FUNC(PyObject *) PyErr_SetFromWindowsErr(int);
0198 PyAPI_FUNC(PyObject *) PyErr_SetExcFromWindowsErrWithFilenameObject(
0199     PyObject *,int, PyObject *);
0200 #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03040000
0201 PyAPI_FUNC(PyObject *) PyErr_SetExcFromWindowsErrWithFilenameObjects(
0202     PyObject *,int, PyObject *, PyObject *);
0203 #endif
0204 PyAPI_FUNC(PyObject *) PyErr_SetExcFromWindowsErrWithFilename(
0205     PyObject *exc,
0206     int ierr,
0207     const char *filename        /* decoded from the filesystem encoding */
0208     );
0209 PyAPI_FUNC(PyObject *) PyErr_SetExcFromWindowsErr(PyObject *, int);
0210 #endif /* MS_WINDOWS */
0211 
0212 #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03060000
0213 PyAPI_FUNC(PyObject *) PyErr_SetImportErrorSubclass(PyObject *, PyObject *,
0214     PyObject *, PyObject *);
0215 #endif
0216 #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000
0217 PyAPI_FUNC(PyObject *) PyErr_SetImportError(PyObject *, PyObject *,
0218     PyObject *);
0219 #endif
0220 
0221 /* Export the old function so that the existing API remains available: */
0222 PyAPI_FUNC(void) PyErr_BadInternalCall(void);
0223 PyAPI_FUNC(void) _PyErr_BadInternalCall(const char *filename, int lineno);
0224 /* Mask the old API with a call to the new API for code compiled under
0225    Python 2.0: */
0226 #define PyErr_BadInternalCall() _PyErr_BadInternalCall(__FILE__, __LINE__)
0227 
0228 /* Function to create a new exception */
0229 PyAPI_FUNC(PyObject *) PyErr_NewException(
0230     const char *name, PyObject *base, PyObject *dict);
0231 PyAPI_FUNC(PyObject *) PyErr_NewExceptionWithDoc(
0232     const char *name, const char *doc, PyObject *base, PyObject *dict);
0233 PyAPI_FUNC(void) PyErr_WriteUnraisable(PyObject *);
0234 
0235 
0236 /* In signalmodule.c */
0237 PyAPI_FUNC(int) PyErr_CheckSignals(void);
0238 PyAPI_FUNC(void) PyErr_SetInterrupt(void);
0239 #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x030A0000
0240 PyAPI_FUNC(int) PyErr_SetInterruptEx(int signum);
0241 #endif
0242 
0243 /* Support for adding program text to SyntaxErrors */
0244 PyAPI_FUNC(void) PyErr_SyntaxLocation(
0245     const char *filename,       /* decoded from the filesystem encoding */
0246     int lineno);
0247 PyAPI_FUNC(void) PyErr_SyntaxLocationEx(
0248     const char *filename,       /* decoded from the filesystem encoding */
0249     int lineno,
0250     int col_offset);
0251 PyAPI_FUNC(PyObject *) PyErr_ProgramText(
0252     const char *filename,       /* decoded from the filesystem encoding */
0253     int lineno);
0254 
0255 /* The following functions are used to create and modify unicode
0256    exceptions from C */
0257 
0258 /* create a UnicodeDecodeError object */
0259 PyAPI_FUNC(PyObject *) PyUnicodeDecodeError_Create(
0260     const char *encoding,       /* UTF-8 encoded string */
0261     const char *object,
0262     Py_ssize_t length,
0263     Py_ssize_t start,
0264     Py_ssize_t end,
0265     const char *reason          /* UTF-8 encoded string */
0266     );
0267 
0268 /* get the encoding attribute */
0269 PyAPI_FUNC(PyObject *) PyUnicodeEncodeError_GetEncoding(PyObject *);
0270 PyAPI_FUNC(PyObject *) PyUnicodeDecodeError_GetEncoding(PyObject *);
0271 
0272 /* get the object attribute */
0273 PyAPI_FUNC(PyObject *) PyUnicodeEncodeError_GetObject(PyObject *);
0274 PyAPI_FUNC(PyObject *) PyUnicodeDecodeError_GetObject(PyObject *);
0275 PyAPI_FUNC(PyObject *) PyUnicodeTranslateError_GetObject(PyObject *);
0276 
0277 /* get the value of the start attribute (the int * may not be NULL)
0278    return 0 on success, -1 on failure */
0279 PyAPI_FUNC(int) PyUnicodeEncodeError_GetStart(PyObject *, Py_ssize_t *);
0280 PyAPI_FUNC(int) PyUnicodeDecodeError_GetStart(PyObject *, Py_ssize_t *);
0281 PyAPI_FUNC(int) PyUnicodeTranslateError_GetStart(PyObject *, Py_ssize_t *);
0282 
0283 /* assign a new value to the start attribute
0284    return 0 on success, -1 on failure */
0285 PyAPI_FUNC(int) PyUnicodeEncodeError_SetStart(PyObject *, Py_ssize_t);
0286 PyAPI_FUNC(int) PyUnicodeDecodeError_SetStart(PyObject *, Py_ssize_t);
0287 PyAPI_FUNC(int) PyUnicodeTranslateError_SetStart(PyObject *, Py_ssize_t);
0288 
0289 /* get the value of the end attribute (the int *may not be NULL)
0290  return 0 on success, -1 on failure */
0291 PyAPI_FUNC(int) PyUnicodeEncodeError_GetEnd(PyObject *, Py_ssize_t *);
0292 PyAPI_FUNC(int) PyUnicodeDecodeError_GetEnd(PyObject *, Py_ssize_t *);
0293 PyAPI_FUNC(int) PyUnicodeTranslateError_GetEnd(PyObject *, Py_ssize_t *);
0294 
0295 /* assign a new value to the end attribute
0296    return 0 on success, -1 on failure */
0297 PyAPI_FUNC(int) PyUnicodeEncodeError_SetEnd(PyObject *, Py_ssize_t);
0298 PyAPI_FUNC(int) PyUnicodeDecodeError_SetEnd(PyObject *, Py_ssize_t);
0299 PyAPI_FUNC(int) PyUnicodeTranslateError_SetEnd(PyObject *, Py_ssize_t);
0300 
0301 /* get the value of the reason attribute */
0302 PyAPI_FUNC(PyObject *) PyUnicodeEncodeError_GetReason(PyObject *);
0303 PyAPI_FUNC(PyObject *) PyUnicodeDecodeError_GetReason(PyObject *);
0304 PyAPI_FUNC(PyObject *) PyUnicodeTranslateError_GetReason(PyObject *);
0305 
0306 /* assign a new value to the reason attribute
0307    return 0 on success, -1 on failure */
0308 PyAPI_FUNC(int) PyUnicodeEncodeError_SetReason(
0309     PyObject *exc,
0310     const char *reason          /* UTF-8 encoded string */
0311     );
0312 PyAPI_FUNC(int) PyUnicodeDecodeError_SetReason(
0313     PyObject *exc,
0314     const char *reason          /* UTF-8 encoded string */
0315     );
0316 PyAPI_FUNC(int) PyUnicodeTranslateError_SetReason(
0317     PyObject *exc,
0318     const char *reason          /* UTF-8 encoded string */
0319     );
0320 
0321 PyAPI_FUNC(int) PyOS_snprintf(char *str, size_t size, const char  *format, ...)
0322                         Py_GCC_ATTRIBUTE((format(printf, 3, 4)));
0323 PyAPI_FUNC(int) PyOS_vsnprintf(char *str, size_t size, const char  *format, va_list va)
0324                         Py_GCC_ATTRIBUTE((format(printf, 3, 0)));
0325 
0326 #ifndef Py_LIMITED_API
0327 #  define Py_CPYTHON_ERRORS_H
0328 #  include "cpython/pyerrors.h"
0329 #  undef Py_CPYTHON_ERRORS_H
0330 #endif
0331 
0332 #ifdef __cplusplus
0333 }
0334 #endif
0335 #endif /* !Py_ERRORS_H */