@@ -2716,24 +2716,23 @@ PyTypeObject _PyAsyncGenYieldFrom_Type = {
27162716
27172717
27182718PyObject *
2719- _PyAsyncGenYieldFrom_New (PyThreadState * tstate , PyObject * iterator )
2719+ _PyAsyncGenYieldFrom_New (PyThreadState * tstate , PyObject * iterable )
27202720{
27212721 assert (tstate != NULL );
2722- assert (iterator != NULL );
2722+ assert (iterable != NULL );
27232723 _PyAsyncGenYieldFrom * yield_from = PyObject_GC_New (_PyAsyncGenYieldFrom ,
27242724 & _PyAsyncGenYieldFrom_Type );
27252725 if (yield_from == NULL ) {
27262726 return NULL ;
27272727 }
2728- if (!PyIter_Check (iterator )) {
2729- if (PyAsyncGen_CheckExact (iterator )) {
2730- _PyErr_Format (tstate , PyExc_TypeError ,
2731- "%T object is not iterable. Did you mean 'async yield from'?" ,
2732- iterator );
2733- } else {
2734- _PyErr_Format (tstate , PyExc_TypeError ,
2735- "%T object is not iterable" , iterator );
2736- }
2728+ if (!Py_TYPE (iterable )-> tp_iter && PyAsyncGen_CheckExact (iterable )) {
2729+ _PyErr_Format (tstate , PyExc_TypeError ,
2730+ "%T object is not iterable. Did you mean 'async yield from'?" ,
2731+ iterable );
2732+ return NULL ;
2733+ }
2734+ PyObject * iterator = PyObject_GetIter (iterable );
2735+ if (iterator == NULL ) {
27372736 return NULL ;
27382737 }
27392738 yield_from -> agyf_iterator = Py_NewRef (iterator );
0 commit comments