gh-105071: add PyUnstable_Exc_PrepReraiseStar to expose except* implementation in the unstable API (#105072)

This commit is contained in:
Irit Katriel 2023-05-30 15:03:36 +01:00 committed by GitHub
parent bd98b65e97
commit b7aadb4583
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 196 additions and 1 deletions

View file

@ -395,4 +395,35 @@ _testcapi_traceback_print(PyObject *module, PyObject *const *args, Py_ssize_t na
exit:
return return_value;
}
/*[clinic end generated code: output=ec1b2e62adea9846 input=a9049054013a1b77]*/
PyDoc_STRVAR(_testcapi_unstable_exc_prep_reraise_star__doc__,
"unstable_exc_prep_reraise_star($module, orig, excs, /)\n"
"--\n"
"\n"
"To test PyUnstable_Exc_PrepReraiseStar.");
#define _TESTCAPI_UNSTABLE_EXC_PREP_RERAISE_STAR_METHODDEF \
{"unstable_exc_prep_reraise_star", _PyCFunction_CAST(_testcapi_unstable_exc_prep_reraise_star), METH_FASTCALL, _testcapi_unstable_exc_prep_reraise_star__doc__},
static PyObject *
_testcapi_unstable_exc_prep_reraise_star_impl(PyObject *module,
PyObject *orig, PyObject *excs);
static PyObject *
_testcapi_unstable_exc_prep_reraise_star(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
{
PyObject *return_value = NULL;
PyObject *orig;
PyObject *excs;
if (!_PyArg_CheckPositional("unstable_exc_prep_reraise_star", nargs, 2, 2)) {
goto exit;
}
orig = args[0];
excs = args[1];
return_value = _testcapi_unstable_exc_prep_reraise_star_impl(module, orig, excs);
exit:
return return_value;
}
/*[clinic end generated code: output=fd6aef54f195c77b input=a9049054013a1b77]*/

View file

@ -288,6 +288,22 @@ _testcapi_traceback_print_impl(PyObject *module, PyObject *traceback,
Py_RETURN_NONE;
}
/*[clinic input]
_testcapi.unstable_exc_prep_reraise_star
orig: object
excs: object
/
To test PyUnstable_Exc_PrepReraiseStar.
[clinic start generated code]*/
static PyObject *
_testcapi_unstable_exc_prep_reraise_star_impl(PyObject *module,
PyObject *orig, PyObject *excs)
/*[clinic end generated code: output=850cf008e0563c77 input=27fbcda2203eb301]*/
{
return PyUnstable_Exc_PrepReraiseStar(orig, excs);
}
/*
* Define the PyRecurdingInfinitelyError_Type
@ -328,6 +344,7 @@ static PyMethodDef test_methods[] = {
_TESTCAPI_SET_EXCEPTION_METHODDEF
_TESTCAPI_TRACEBACK_PRINT_METHODDEF
_TESTCAPI_WRITE_UNRAISABLE_EXC_METHODDEF
_TESTCAPI_UNSTABLE_EXC_PREP_RERAISE_STAR_METHODDEF
{NULL},
};