annotate CSP2/CSP2_env/env-d9b9114564458d9d-741b3de822f2aaca6c6caa4325c4afce/include/python3.8/pyerrors.h @ 69:33d812a61356

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