@@ -20,8 +20,9 @@
20202121/*[clinic input]
2222class BaseException "PyBaseExceptionObject *" "&PyExc_BaseException"
23+class BaseExceptionGroup "PyBaseExceptionGroupObject *" "&PyExc_BaseExceptionGroup"
2324[clinic start generated code]*/
24-/*[clinic end generated code: output=da39a3ee5e6b4b0d input=90558eb0fbf8a3d0]*/
25+/*[clinic end generated code: output=da39a3ee5e6b4b0d input=b7c45e78cff8edc3]*/
252626272728/* Compatibility aliases */
@@ -1034,10 +1035,18 @@ BaseExceptionGroup_str(PyBaseExceptionGroupObject *self)
10341035self->msg, num_excs, num_excs>1 ? "s" : "");
10351036}
103610371038+/*[clinic input]
1039+@critical_section
1040+BaseExceptionGroup.derive
1041+ excs: object
1042+ /
1043+[clinic start generated code]*/
1044+10371045staticPyObject*
1038-BaseExceptionGroup_derive(PyObject*self_, PyObject*excs)
1046+BaseExceptionGroup_derive_impl(PyBaseExceptionGroupObject*self,
1047+PyObject*excs)
1048+/*[clinic end generated code: output=4307564218dfbf06 input=f72009d38e98cec1]*/
10391049{
1040-PyBaseExceptionGroupObject*self=_PyBaseExceptionGroupObject_cast(self_);
10411050PyObject*init_args=PyTuple_Pack(2, self->msg, excs);
10421051if (!init_args) {
10431052returnNULL;
@@ -1330,8 +1339,17 @@ exceptiongroup_split_recursive(PyObject *exc,
13301339returnretval;
13311340}
133213411342+/*[clinic input]
1343+@critical_section
1344+BaseExceptionGroup.split
1345+ matcher_value: object
1346+ /
1347+[clinic start generated code]*/
1348+13331349staticPyObject*
1334-BaseExceptionGroup_split(PyObject*self, PyObject*matcher_value)
1350+BaseExceptionGroup_split_impl(PyBaseExceptionGroupObject*self,
1351+PyObject*matcher_value)
1352+/*[clinic end generated code: output=d74db579da4df6e2 input=0c5cfbfed57e0052]*/
13351353{
13361354_exceptiongroup_split_matcher_typematcher_type;
13371355if (get_matcher_type(matcher_value, &matcher_type) <0) {
@@ -1341,7 +1359,7 @@ BaseExceptionGroup_split(PyObject *self, PyObject *matcher_value)
13411359_exceptiongroup_split_resultsplit_result;
13421360boolconstruct_rest= true;
13431361if (exceptiongroup_split_recursive(
1344-self, matcher_type, matcher_value,
1362+(PyObject*)self, matcher_type, matcher_value,
13451363construct_rest, &split_result) <0) {
13461364returnNULL;
13471365 }
@@ -1356,8 +1374,17 @@ BaseExceptionGroup_split(PyObject *self, PyObject *matcher_value)
13561374returnresult;
13571375}
135813761377+/*[clinic input]
1378+@critical_section
1379+BaseExceptionGroup.subgroup
1380+ matcher_value: object
1381+ /
1382+[clinic start generated code]*/
1383+13591384staticPyObject*
1360-BaseExceptionGroup_subgroup(PyObject*self, PyObject*matcher_value)
1385+BaseExceptionGroup_subgroup_impl(PyBaseExceptionGroupObject*self,
1386+PyObject*matcher_value)
1387+/*[clinic end generated code: output=07dbec8f77d4dd8e input=988ffdd755a151ce]*/
13611388{
13621389_exceptiongroup_split_matcher_typematcher_type;
13631390if (get_matcher_type(matcher_value, &matcher_type) <0) {
@@ -1367,7 +1394,7 @@ BaseExceptionGroup_subgroup(PyObject *self, PyObject *matcher_value)
13671394_exceptiongroup_split_resultsplit_result;
13681395boolconstruct_rest= false;
13691396if (exceptiongroup_split_recursive(
1370-self, matcher_type, matcher_value,
1397+(PyObject*)self, matcher_type, matcher_value,
13711398construct_rest, &split_result) <0) {
13721399returnNULL;
13731400 }
@@ -1633,9 +1660,9 @@ static PyMemberDef BaseExceptionGroup_members[] = {
16331660staticPyMethodDefBaseExceptionGroup_methods[] = {
16341661 {"__class_getitem__", (PyCFunction)Py_GenericAlias,
16351662METH_O|METH_CLASS, PyDoc_STR("See PEP 585")},
1636-{"derive", (PyCFunction)BaseExceptionGroup_derive, METH_O},
1637-{"split", (PyCFunction)BaseExceptionGroup_split, METH_O},
1638-{"subgroup", (PyCFunction)BaseExceptionGroup_subgroup, METH_O},
1663+BASEEXCEPTIONGROUP_DERIVE_METHODDEF
1664+BASEEXCEPTIONGROUP_SPLIT_METHODDEF
1665+BASEEXCEPTIONGROUP_SUBGROUP_METHODDEF
16391666 {NULL}
16401667};
16411668