https://raw.githubusercontent.com/python/cpython/refs/heads/main/Include/internal/pycore_iterobject.h

#ifndef Py_INTERNAL_ITEROBJECT_H #define Py_INTERNAL_ITEROBJECT_H #ifdef __cplusplus extern "C" { #endif #ifndef Py_BUILD_CORE # error "this header requires Py_BUILD_CORE define" #endif extern PyTypeObject _PyACallIter_Type; extern PyTypeObject _PyACallIterAwaitable_Type; // Like PyCallIter_New(), but the iteration also stops when *callable* raises // an exception matching *stop_exc* (an exception class or a tuple of exception // classes). *sentinel* can be NULL; NULL *stop_exc* means StopIteration. extern PyObject *_PyCallIter_NewEx(PyObject *callable, PyObject *sentinel, PyObject *stop_exc); // The asynchronous counterpart of _PyCallIter_NewEx(): the result of // *callable* is awaited, and NULL *stop_exc* means StopAsyncIteration. extern PyObject *_PyACallIter_New(PyObject *callable, PyObject *sentinel, PyObject *stop_exc); #ifdef __cplusplus } #endif #endif /* !Py_INTERNAL_ITEROBJECT_H */