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 *
|
static PyObject *
|
||||||
BaseExceptionGroup_derive(PyObject *self_, PyObject *args)
|
BaseExceptionGroup_derive(PyObject *self_, PyObject *excs)
|
||||||
{
|
{
|
||||||
PyBaseExceptionGroupObject *self = _PyBaseExceptionGroupObject_cast(self_);
|
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);
|
PyObject *init_args = PyTuple_Pack(2, self->msg, excs);
|
||||||
if (!init_args) {
|
if (!init_args) {
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -1176,13 +1172,8 @@ done:
|
||||||
}
|
}
|
||||||
|
|
||||||
static PyObject *
|
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;
|
_exceptiongroup_split_matcher_type matcher_type;
|
||||||
if (get_matcher_type(matcher_value, &matcher_type) < 0) {
|
if (get_matcher_type(matcher_value, &matcher_type) < 0) {
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -1207,13 +1198,8 @@ BaseExceptionGroup_split(PyObject *self, PyObject *args)
|
||||||
}
|
}
|
||||||
|
|
||||||
static PyObject *
|
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;
|
_exceptiongroup_split_matcher_type matcher_type;
|
||||||
if (get_matcher_type(matcher_value, &matcher_type) < 0) {
|
if (get_matcher_type(matcher_value, &matcher_type) < 0) {
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -1488,9 +1474,9 @@ static PyMemberDef BaseExceptionGroup_members[] = {
|
||||||
static PyMethodDef BaseExceptionGroup_methods[] = {
|
static PyMethodDef BaseExceptionGroup_methods[] = {
|
||||||
{"__class_getitem__", (PyCFunction)Py_GenericAlias,
|
{"__class_getitem__", (PyCFunction)Py_GenericAlias,
|
||||||
METH_O|METH_CLASS, PyDoc_STR("See PEP 585")},
|
METH_O|METH_CLASS, PyDoc_STR("See PEP 585")},
|
||||||
{"derive", (PyCFunction)BaseExceptionGroup_derive, METH_VARARGS},
|
{"derive", (PyCFunction)BaseExceptionGroup_derive, METH_O},
|
||||||
{"split", (PyCFunction)BaseExceptionGroup_split, METH_VARARGS},
|
{"split", (PyCFunction)BaseExceptionGroup_split, METH_O},
|
||||||
{"subgroup", (PyCFunction)BaseExceptionGroup_subgroup, METH_VARARGS},
|
{"subgroup", (PyCFunction)BaseExceptionGroup_subgroup, METH_O},
|
||||||
{NULL}
|
{NULL}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue