mirror of https://github.com/python/cpython
gh-111666: Speed up `BaseExceptionGroup.{derive,split,subgroup}` (#111667)
This commit is contained in:
parent
890ef1b035
commit
a28a3967ab
|
@ -0,0 +1,3 @@
|
|||
Speed up :meth:`BaseExceptionGroup.derive`,
|
||||
:meth:`BaseExceptionGroup.subgroup`, and :meth:`BaseExceptionGroup.split` by
|
||||
changing how they parse passed arguments.
|
|
@ -876,13 +876,9 @@ BaseExceptionGroup_str(PyBaseExceptionGroupObject *self)
|
|||
}
|
||||
|
||||
static PyObject *
|
||||
BaseExceptionGroup_derive(PyObject *self_, PyObject *args)
|
||||
BaseExceptionGroup_derive(PyObject *self_, PyObject *excs)
|
||||
{
|
||||
PyBaseExceptionGroupObject *self = _PyBaseExceptionGroupObject_cast(self_);
|
||||
PyObject *excs = NULL;
|
||||
if (!PyArg_ParseTuple(args, "O", &excs)) {
|
||||
return NULL;
|
||||
}
|
||||
PyObject *init_args = PyTuple_Pack(2, self->msg, excs);
|
||||
if (!init_args) {
|
||||
return NULL;
|
||||
|
@ -1176,13 +1172,8 @@ done:
|
|||
}
|
||||
|
||||
static PyObject *
|
||||
BaseExceptionGroup_split(PyObject *self, PyObject *args)
|
||||
BaseExceptionGroup_split(PyObject *self, PyObject *matcher_value)
|
||||
{
|
||||
PyObject *matcher_value = NULL;
|
||||
if (!PyArg_UnpackTuple(args, "split", 1, 1, &matcher_value)) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
_exceptiongroup_split_matcher_type matcher_type;
|
||||
if (get_matcher_type(matcher_value, &matcher_type) < 0) {
|
||||
return NULL;
|
||||
|
@ -1207,13 +1198,8 @@ BaseExceptionGroup_split(PyObject *self, PyObject *args)
|
|||
}
|
||||
|
||||
static PyObject *
|
||||
BaseExceptionGroup_subgroup(PyObject *self, PyObject *args)
|
||||
BaseExceptionGroup_subgroup(PyObject *self, PyObject *matcher_value)
|
||||
{
|
||||
PyObject *matcher_value = NULL;
|
||||
if (!PyArg_UnpackTuple(args, "subgroup", 1, 1, &matcher_value)) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
_exceptiongroup_split_matcher_type matcher_type;
|
||||
if (get_matcher_type(matcher_value, &matcher_type) < 0) {
|
||||
return NULL;
|
||||
|
@ -1488,9 +1474,9 @@ static PyMemberDef BaseExceptionGroup_members[] = {
|
|||
static PyMethodDef BaseExceptionGroup_methods[] = {
|
||||
{"__class_getitem__", (PyCFunction)Py_GenericAlias,
|
||||
METH_O|METH_CLASS, PyDoc_STR("See PEP 585")},
|
||||
{"derive", (PyCFunction)BaseExceptionGroup_derive, METH_VARARGS},
|
||||
{"split", (PyCFunction)BaseExceptionGroup_split, METH_VARARGS},
|
||||
{"subgroup", (PyCFunction)BaseExceptionGroup_subgroup, METH_VARARGS},
|
||||
{"derive", (PyCFunction)BaseExceptionGroup_derive, METH_O},
|
||||
{"split", (PyCFunction)BaseExceptionGroup_split, METH_O},
|
||||
{"subgroup", (PyCFunction)BaseExceptionGroup_subgroup, METH_O},
|
||||
{NULL}
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in New Issue