(root)/
Python-3.11.7/
Include/
pyerrors.h
       1  #ifndef Py_ERRORS_H
       2  #define Py_ERRORS_H
       3  #ifdef __cplusplus
       4  extern "C" {
       5  #endif
       6  
       7  #include <stdarg.h>               // va_list
       8  
       9  /* Error handling definitions */
      10  
      11  PyAPI_FUNC(void) PyErr_SetNone(PyObject *);
      12  PyAPI_FUNC(void) PyErr_SetObject(PyObject *, PyObject *);
      13  PyAPI_FUNC(void) PyErr_SetString(
      14      PyObject *exception,
      15      const char *string   /* decoded from utf-8 */
      16      );
      17  PyAPI_FUNC(PyObject *) PyErr_Occurred(void);
      18  PyAPI_FUNC(void) PyErr_Clear(void);
      19  PyAPI_FUNC(void) PyErr_Fetch(PyObject **, PyObject **, PyObject **);
      20  PyAPI_FUNC(void) PyErr_Restore(PyObject *, PyObject *, PyObject *);
      21  #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x030b0000
      22  PyAPI_FUNC(PyObject*) PyErr_GetHandledException(void);
      23  PyAPI_FUNC(void) PyErr_SetHandledException(PyObject *);
      24  #endif
      25  #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000
      26  PyAPI_FUNC(void) PyErr_GetExcInfo(PyObject **, PyObject **, PyObject **);
      27  PyAPI_FUNC(void) PyErr_SetExcInfo(PyObject *, PyObject *, PyObject *);
      28  #endif
      29  
      30  /* Defined in Python/pylifecycle.c
      31  
      32     The Py_FatalError() function is replaced with a macro which logs
      33     automatically the name of the current function, unless the Py_LIMITED_API
      34     macro is defined. */
      35  PyAPI_FUNC(void) _Py_NO_RETURN Py_FatalError(const char *message);
      36  
      37  /* Error testing and normalization */
      38  PyAPI_FUNC(int) PyErr_GivenExceptionMatches(PyObject *, PyObject *);
      39  PyAPI_FUNC(int) PyErr_ExceptionMatches(PyObject *);
      40  PyAPI_FUNC(void) PyErr_NormalizeException(PyObject**, PyObject**, PyObject**);
      41  
      42  /* Traceback manipulation (PEP 3134) */
      43  PyAPI_FUNC(int) PyException_SetTraceback(PyObject *, PyObject *);
      44  PyAPI_FUNC(PyObject *) PyException_GetTraceback(PyObject *);
      45  
      46  /* Cause manipulation (PEP 3134) */
      47  PyAPI_FUNC(PyObject *) PyException_GetCause(PyObject *);
      48  PyAPI_FUNC(void) PyException_SetCause(PyObject *, PyObject *);
      49  
      50  /* Context manipulation (PEP 3134) */
      51  PyAPI_FUNC(PyObject *) PyException_GetContext(PyObject *);
      52  PyAPI_FUNC(void) PyException_SetContext(PyObject *, PyObject *);
      53  
      54  /* */
      55  
      56  #define PyExceptionClass_Check(x)                                       \
      57      (PyType_Check((x)) &&                                               \
      58       PyType_FastSubclass((PyTypeObject*)(x), Py_TPFLAGS_BASE_EXC_SUBCLASS))
      59  
      60  #define PyExceptionInstance_Check(x)                    \
      61      PyType_FastSubclass(Py_TYPE(x), Py_TPFLAGS_BASE_EXC_SUBCLASS)
      62  
      63  PyAPI_FUNC(const char *) PyExceptionClass_Name(PyObject *);
      64  
      65  #define PyExceptionInstance_Class(x) ((PyObject*)Py_TYPE(x))
      66  
      67  #define _PyBaseExceptionGroup_Check(x)                   \
      68      PyObject_TypeCheck(x, (PyTypeObject *)PyExc_BaseExceptionGroup)
      69  
      70  /* Predefined exceptions */
      71  
      72  PyAPI_DATA(PyObject *) PyExc_BaseException;
      73  PyAPI_DATA(PyObject *) PyExc_Exception;
      74  PyAPI_DATA(PyObject *) PyExc_BaseExceptionGroup;
      75  #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000
      76  PyAPI_DATA(PyObject *) PyExc_StopAsyncIteration;
      77  #endif
      78  PyAPI_DATA(PyObject *) PyExc_StopIteration;
      79  PyAPI_DATA(PyObject *) PyExc_GeneratorExit;
      80  PyAPI_DATA(PyObject *) PyExc_ArithmeticError;
      81  PyAPI_DATA(PyObject *) PyExc_LookupError;
      82  
      83  PyAPI_DATA(PyObject *) PyExc_AssertionError;
      84  PyAPI_DATA(PyObject *) PyExc_AttributeError;
      85  PyAPI_DATA(PyObject *) PyExc_BufferError;
      86  PyAPI_DATA(PyObject *) PyExc_EOFError;
      87  PyAPI_DATA(PyObject *) PyExc_FloatingPointError;
      88  PyAPI_DATA(PyObject *) PyExc_OSError;
      89  PyAPI_DATA(PyObject *) PyExc_ImportError;
      90  #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03060000
      91  PyAPI_DATA(PyObject *) PyExc_ModuleNotFoundError;
      92  #endif
      93  PyAPI_DATA(PyObject *) PyExc_IndexError;
      94  PyAPI_DATA(PyObject *) PyExc_KeyError;
      95  PyAPI_DATA(PyObject *) PyExc_KeyboardInterrupt;
      96  PyAPI_DATA(PyObject *) PyExc_MemoryError;
      97  PyAPI_DATA(PyObject *) PyExc_NameError;
      98  PyAPI_DATA(PyObject *) PyExc_OverflowError;
      99  PyAPI_DATA(PyObject *) PyExc_RuntimeError;
     100  #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000
     101  PyAPI_DATA(PyObject *) PyExc_RecursionError;
     102  #endif
     103  PyAPI_DATA(PyObject *) PyExc_NotImplementedError;
     104  PyAPI_DATA(PyObject *) PyExc_SyntaxError;
     105  PyAPI_DATA(PyObject *) PyExc_IndentationError;
     106  PyAPI_DATA(PyObject *) PyExc_TabError;
     107  PyAPI_DATA(PyObject *) PyExc_ReferenceError;
     108  PyAPI_DATA(PyObject *) PyExc_SystemError;
     109  PyAPI_DATA(PyObject *) PyExc_SystemExit;
     110  PyAPI_DATA(PyObject *) PyExc_TypeError;
     111  PyAPI_DATA(PyObject *) PyExc_UnboundLocalError;
     112  PyAPI_DATA(PyObject *) PyExc_UnicodeError;
     113  PyAPI_DATA(PyObject *) PyExc_UnicodeEncodeError;
     114  PyAPI_DATA(PyObject *) PyExc_UnicodeDecodeError;
     115  PyAPI_DATA(PyObject *) PyExc_UnicodeTranslateError;
     116  PyAPI_DATA(PyObject *) PyExc_ValueError;
     117  PyAPI_DATA(PyObject *) PyExc_ZeroDivisionError;
     118  
     119  #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000
     120  PyAPI_DATA(PyObject *) PyExc_BlockingIOError;
     121  PyAPI_DATA(PyObject *) PyExc_BrokenPipeError;
     122  PyAPI_DATA(PyObject *) PyExc_ChildProcessError;
     123  PyAPI_DATA(PyObject *) PyExc_ConnectionError;
     124  PyAPI_DATA(PyObject *) PyExc_ConnectionAbortedError;
     125  PyAPI_DATA(PyObject *) PyExc_ConnectionRefusedError;
     126  PyAPI_DATA(PyObject *) PyExc_ConnectionResetError;
     127  PyAPI_DATA(PyObject *) PyExc_FileExistsError;
     128  PyAPI_DATA(PyObject *) PyExc_FileNotFoundError;
     129  PyAPI_DATA(PyObject *) PyExc_InterruptedError;
     130  PyAPI_DATA(PyObject *) PyExc_IsADirectoryError;
     131  PyAPI_DATA(PyObject *) PyExc_NotADirectoryError;
     132  PyAPI_DATA(PyObject *) PyExc_PermissionError;
     133  PyAPI_DATA(PyObject *) PyExc_ProcessLookupError;
     134  PyAPI_DATA(PyObject *) PyExc_TimeoutError;
     135  #endif
     136  
     137  
     138  /* Compatibility aliases */
     139  PyAPI_DATA(PyObject *) PyExc_EnvironmentError;
     140  PyAPI_DATA(PyObject *) PyExc_IOError;
     141  #ifdef MS_WINDOWS
     142  PyAPI_DATA(PyObject *) PyExc_WindowsError;
     143  #endif
     144  
     145  /* Predefined warning categories */
     146  PyAPI_DATA(PyObject *) PyExc_Warning;
     147  PyAPI_DATA(PyObject *) PyExc_UserWarning;
     148  PyAPI_DATA(PyObject *) PyExc_DeprecationWarning;
     149  PyAPI_DATA(PyObject *) PyExc_PendingDeprecationWarning;
     150  PyAPI_DATA(PyObject *) PyExc_SyntaxWarning;
     151  PyAPI_DATA(PyObject *) PyExc_RuntimeWarning;
     152  PyAPI_DATA(PyObject *) PyExc_FutureWarning;
     153  PyAPI_DATA(PyObject *) PyExc_ImportWarning;
     154  PyAPI_DATA(PyObject *) PyExc_UnicodeWarning;
     155  PyAPI_DATA(PyObject *) PyExc_BytesWarning;
     156  PyAPI_DATA(PyObject *) PyExc_EncodingWarning;
     157  PyAPI_DATA(PyObject *) PyExc_ResourceWarning;
     158  
     159  
     160  /* Convenience functions */
     161  
     162  PyAPI_FUNC(int) PyErr_BadArgument(void);
     163  PyAPI_FUNC(PyObject *) PyErr_NoMemory(void);
     164  PyAPI_FUNC(PyObject *) PyErr_SetFromErrno(PyObject *);
     165  PyAPI_FUNC(PyObject *) PyErr_SetFromErrnoWithFilenameObject(
     166      PyObject *, PyObject *);
     167  #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03040000
     168  PyAPI_FUNC(PyObject *) PyErr_SetFromErrnoWithFilenameObjects(
     169      PyObject *, PyObject *, PyObject *);
     170  #endif
     171  PyAPI_FUNC(PyObject *) PyErr_SetFromErrnoWithFilename(
     172      PyObject *exc,
     173      const char *filename   /* decoded from the filesystem encoding */
     174      );
     175  
     176  PyAPI_FUNC(PyObject *) PyErr_Format(
     177      PyObject *exception,
     178      const char *format,   /* ASCII-encoded string  */
     179      ...
     180      );
     181  #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000
     182  PyAPI_FUNC(PyObject *) PyErr_FormatV(
     183      PyObject *exception,
     184      const char *format,
     185      va_list vargs);
     186  #endif
     187  
     188  #ifdef MS_WINDOWS
     189  PyAPI_FUNC(PyObject *) PyErr_SetFromWindowsErrWithFilename(
     190      int ierr,
     191      const char *filename        /* decoded from the filesystem encoding */
     192      );
     193  PyAPI_FUNC(PyObject *) PyErr_SetFromWindowsErr(int);
     194  PyAPI_FUNC(PyObject *) PyErr_SetExcFromWindowsErrWithFilenameObject(
     195      PyObject *,int, PyObject *);
     196  #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03040000
     197  PyAPI_FUNC(PyObject *) PyErr_SetExcFromWindowsErrWithFilenameObjects(
     198      PyObject *,int, PyObject *, PyObject *);
     199  #endif
     200  PyAPI_FUNC(PyObject *) PyErr_SetExcFromWindowsErrWithFilename(
     201      PyObject *exc,
     202      int ierr,
     203      const char *filename        /* decoded from the filesystem encoding */
     204      );
     205  PyAPI_FUNC(PyObject *) PyErr_SetExcFromWindowsErr(PyObject *, int);
     206  #endif /* MS_WINDOWS */
     207  
     208  #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03060000
     209  PyAPI_FUNC(PyObject *) PyErr_SetImportErrorSubclass(PyObject *, PyObject *,
     210      PyObject *, PyObject *);
     211  #endif
     212  #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03030000
     213  PyAPI_FUNC(PyObject *) PyErr_SetImportError(PyObject *, PyObject *,
     214      PyObject *);
     215  #endif
     216  
     217  /* Export the old function so that the existing API remains available: */
     218  PyAPI_FUNC(void) PyErr_BadInternalCall(void);
     219  PyAPI_FUNC(void) _PyErr_BadInternalCall(const char *filename, int lineno);
     220  /* Mask the old API with a call to the new API for code compiled under
     221     Python 2.0: */
     222  #define PyErr_BadInternalCall() _PyErr_BadInternalCall(__FILE__, __LINE__)
     223  
     224  /* Function to create a new exception */
     225  PyAPI_FUNC(PyObject *) PyErr_NewException(
     226      const char *name, PyObject *base, PyObject *dict);
     227  PyAPI_FUNC(PyObject *) PyErr_NewExceptionWithDoc(
     228      const char *name, const char *doc, PyObject *base, PyObject *dict);
     229  PyAPI_FUNC(void) PyErr_WriteUnraisable(PyObject *);
     230  
     231  
     232  /* In signalmodule.c */
     233  PyAPI_FUNC(int) PyErr_CheckSignals(void);
     234  PyAPI_FUNC(void) PyErr_SetInterrupt(void);
     235  #if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x030A0000
     236  PyAPI_FUNC(int) PyErr_SetInterruptEx(int signum);
     237  #endif
     238  
     239  /* Support for adding program text to SyntaxErrors */
     240  PyAPI_FUNC(void) PyErr_SyntaxLocation(
     241      const char *filename,       /* decoded from the filesystem encoding */
     242      int lineno);
     243  PyAPI_FUNC(void) PyErr_SyntaxLocationEx(
     244      const char *filename,       /* decoded from the filesystem encoding */
     245      int lineno,
     246      int col_offset);
     247  PyAPI_FUNC(PyObject *) PyErr_ProgramText(
     248      const char *filename,       /* decoded from the filesystem encoding */
     249      int lineno);
     250  
     251  /* The following functions are used to create and modify unicode
     252     exceptions from C */
     253  
     254  /* create a UnicodeDecodeError object */
     255  PyAPI_FUNC(PyObject *) PyUnicodeDecodeError_Create(
     256      const char *encoding,       /* UTF-8 encoded string */
     257      const char *object,
     258      Py_ssize_t length,
     259      Py_ssize_t start,
     260      Py_ssize_t end,
     261      const char *reason          /* UTF-8 encoded string */
     262      );
     263  
     264  /* get the encoding attribute */
     265  PyAPI_FUNC(PyObject *) PyUnicodeEncodeError_GetEncoding(PyObject *);
     266  PyAPI_FUNC(PyObject *) PyUnicodeDecodeError_GetEncoding(PyObject *);
     267  
     268  /* get the object attribute */
     269  PyAPI_FUNC(PyObject *) PyUnicodeEncodeError_GetObject(PyObject *);
     270  PyAPI_FUNC(PyObject *) PyUnicodeDecodeError_GetObject(PyObject *);
     271  PyAPI_FUNC(PyObject *) PyUnicodeTranslateError_GetObject(PyObject *);
     272  
     273  /* get the value of the start attribute (the int * may not be NULL)
     274     return 0 on success, -1 on failure */
     275  PyAPI_FUNC(int) PyUnicodeEncodeError_GetStart(PyObject *, Py_ssize_t *);
     276  PyAPI_FUNC(int) PyUnicodeDecodeError_GetStart(PyObject *, Py_ssize_t *);
     277  PyAPI_FUNC(int) PyUnicodeTranslateError_GetStart(PyObject *, Py_ssize_t *);
     278  
     279  /* assign a new value to the start attribute
     280     return 0 on success, -1 on failure */
     281  PyAPI_FUNC(int) PyUnicodeEncodeError_SetStart(PyObject *, Py_ssize_t);
     282  PyAPI_FUNC(int) PyUnicodeDecodeError_SetStart(PyObject *, Py_ssize_t);
     283  PyAPI_FUNC(int) PyUnicodeTranslateError_SetStart(PyObject *, Py_ssize_t);
     284  
     285  /* get the value of the end attribute (the int *may not be NULL)
     286   return 0 on success, -1 on failure */
     287  PyAPI_FUNC(int) PyUnicodeEncodeError_GetEnd(PyObject *, Py_ssize_t *);
     288  PyAPI_FUNC(int) PyUnicodeDecodeError_GetEnd(PyObject *, Py_ssize_t *);
     289  PyAPI_FUNC(int) PyUnicodeTranslateError_GetEnd(PyObject *, Py_ssize_t *);
     290  
     291  /* assign a new value to the end attribute
     292     return 0 on success, -1 on failure */
     293  PyAPI_FUNC(int) PyUnicodeEncodeError_SetEnd(PyObject *, Py_ssize_t);
     294  PyAPI_FUNC(int) PyUnicodeDecodeError_SetEnd(PyObject *, Py_ssize_t);
     295  PyAPI_FUNC(int) PyUnicodeTranslateError_SetEnd(PyObject *, Py_ssize_t);
     296  
     297  /* get the value of the reason attribute */
     298  PyAPI_FUNC(PyObject *) PyUnicodeEncodeError_GetReason(PyObject *);
     299  PyAPI_FUNC(PyObject *) PyUnicodeDecodeError_GetReason(PyObject *);
     300  PyAPI_FUNC(PyObject *) PyUnicodeTranslateError_GetReason(PyObject *);
     301  
     302  /* assign a new value to the reason attribute
     303     return 0 on success, -1 on failure */
     304  PyAPI_FUNC(int) PyUnicodeEncodeError_SetReason(
     305      PyObject *exc,
     306      const char *reason          /* UTF-8 encoded string */
     307      );
     308  PyAPI_FUNC(int) PyUnicodeDecodeError_SetReason(
     309      PyObject *exc,
     310      const char *reason          /* UTF-8 encoded string */
     311      );
     312  PyAPI_FUNC(int) PyUnicodeTranslateError_SetReason(
     313      PyObject *exc,
     314      const char *reason          /* UTF-8 encoded string */
     315      );
     316  
     317  PyAPI_FUNC(int) PyOS_snprintf(char *str, size_t size, const char  *format, ...)
     318                          Py_GCC_ATTRIBUTE((format(printf, 3, 4)));
     319  PyAPI_FUNC(int) PyOS_vsnprintf(char *str, size_t size, const char  *format, va_list va)
     320                          Py_GCC_ATTRIBUTE((format(printf, 3, 0)));
     321  
     322  #ifndef Py_LIMITED_API
     323  #  define Py_CPYTHON_ERRORS_H
     324  #  include "cpython/pyerrors.h"
     325  #  undef Py_CPYTHON_ERRORS_H
     326  #endif
     327  
     328  #ifdef __cplusplus
     329  }
     330  #endif
     331  #endif /* !Py_ERRORS_H */