@@ -1391,6 +1391,7 @@ static PyObject *
13911391sys_set_asyncgen_hooks (PyObject * self , PyObject * args , PyObject * kw )
13921392{
13931393 static char * keywords [] = {"firstiter" , "finalizer" , NULL };
1394+ PyThreadState * tstate = NULL ;
13941395 PyObject * firstiter = NULL ;
13951396 PyObject * finalizer = NULL ;
13961397
@@ -1400,34 +1401,45 @@ sys_set_asyncgen_hooks(PyObject *self, PyObject *args, PyObject *kw)
14001401 return NULL ;
14011402 }
14021403
1404+ tstate = _PyThreadState_GET ();
1405+
14031406 if (finalizer && finalizer != Py_None ) {
14041407 if (!PyCallable_Check (finalizer )) {
14051408 PyErr_Format (PyExc_TypeError ,
14061409 "callable finalizer expected, got %.50s" ,
14071410 Py_TYPE (finalizer )-> tp_name );
14081411 return NULL ;
14091412 }
1410- if (_PyEval_SetAsyncGenFinalizer ( finalizer ) < 0 ) {
1413+ if (_PySys_Audit ( tstate , "sys.set_asyncgen_hook_finalizer" , NULL ) < 0 ) {
14111414 return NULL ;
14121415 }
14131416 }
1414- else if (finalizer == Py_None && _PyEval_SetAsyncGenFinalizer (NULL ) < 0 ) {
1415- return NULL ;
1416- }
14171417
14181418 if (firstiter && firstiter != Py_None ) {
14191419 if (!PyCallable_Check (firstiter )) {
14201420 PyErr_Format (PyExc_TypeError ,
14211421 "callable firstiter expected, got %.50s" ,
14221422 Py_TYPE (firstiter )-> tp_name );
1423+
14231424 return NULL ;
14241425 }
1425- if (_PyEval_SetAsyncGenFirstiter ( firstiter ) < 0 ) {
1426+ if (_PySys_Audit ( tstate , "sys.set_asyncgen_hook_firstiter" , NULL ) < 0 ) {
14261427 return NULL ;
14271428 }
14281429 }
1429- else if (firstiter == Py_None && _PyEval_SetAsyncGenFirstiter (NULL ) < 0 ) {
1430- return NULL ;
1430+
1431+ if (finalizer && finalizer != Py_None ) {
1432+ _PyEval_SetAsyncGenFinalizer (finalizer );
1433+ }
1434+ else if (finalizer == Py_None ) {
1435+ _PyEval_SetAsyncGenFinalizer (NULL );
1436+ }
1437+
1438+ if (firstiter && firstiter != Py_None ) {
1439+ _PyEval_SetAsyncGenFirstiter (firstiter );
1440+ }
1441+ else if (firstiter == Py_None ) {
1442+ _PyEval_SetAsyncGenFirstiter (NULL );
14311443 }
14321444
14331445 Py_RETURN_NONE ;
0 commit comments