mirror of
https://github.com/python/cpython.git
synced 2025-08-03 08:34:29 +00:00
gh-76785: Move _Py_excinfo Functions Out of the Internal C-API (gh-111715)
I added _Py_excinfo to the internal API (and added its functions in Python/errors.c) in gh-111530 (9322ce9
). Since then I've had a nagging sense that I should have added the type and functions in its own PR. While I do plan on using _Py_excinfo outside crossinterp.c very soon (see gh-111572/gh-111573), I'd still feel more comfortable if the _Py_excinfo stuff went in as its own PR. Hence, here we are.
(FWIW, I may combine that with gh-111572, which I may, in turn, combine with gh-111573. We'll see.)
This commit is contained in:
parent
836e0a75d5
commit
d4426e8d00
4 changed files with 134 additions and 199 deletions
|
@ -164,6 +164,17 @@ extern void _PyXI_Fini(PyInterpreterState *interp);
|
|||
/* short-term data sharing */
|
||||
/***************************/
|
||||
|
||||
// Ultimately we'd like to preserve enough information about the
|
||||
// exception and traceback that we could re-constitute (or at least
|
||||
// simulate, a la traceback.TracebackException), and even chain, a copy
|
||||
// of the exception in the calling interpreter.
|
||||
|
||||
typedef struct _excinfo {
|
||||
const char *type;
|
||||
const char *msg;
|
||||
} _Py_excinfo;
|
||||
|
||||
|
||||
typedef enum error_code {
|
||||
_PyXI_ERR_NO_ERROR = 0,
|
||||
_PyXI_ERR_UNCAUGHT_EXCEPTION = -1,
|
||||
|
|
|
@ -68,30 +68,6 @@ extern PyStatus _PyErr_InitTypes(PyInterpreterState *);
|
|||
extern void _PyErr_FiniTypes(PyInterpreterState *);
|
||||
|
||||
|
||||
/* exception snapshots */
|
||||
|
||||
// Ultimately we'd like to preserve enough information about the
|
||||
// exception and traceback that we could re-constitute (or at least
|
||||
// simulate, a la traceback.TracebackException), and even chain, a copy
|
||||
// of the exception in the calling interpreter.
|
||||
|
||||
typedef struct _excinfo {
|
||||
const char *type;
|
||||
const char *msg;
|
||||
} _Py_excinfo;
|
||||
|
||||
extern void _Py_excinfo_Clear(_Py_excinfo *info);
|
||||
extern int _Py_excinfo_Copy(_Py_excinfo *dest, _Py_excinfo *src);
|
||||
extern const char * _Py_excinfo_InitFromException(
|
||||
_Py_excinfo *info,
|
||||
PyObject *exc);
|
||||
extern void _Py_excinfo_Apply(_Py_excinfo *info, PyObject *exctype);
|
||||
extern const char * _Py_excinfo_AsUTF8(
|
||||
_Py_excinfo *info,
|
||||
char *buf,
|
||||
size_t bufsize);
|
||||
|
||||
|
||||
/* other API */
|
||||
|
||||
static inline PyObject* _PyErr_Occurred(PyThreadState *tstate)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue