bpo-31861: Complete the C-API docs for PyObject_GetAiter and PyAiter_Check (GH-25004)

This commit is contained in:
Pablo Galindo 2021-03-23 23:57:03 +00:00 committed by GitHub
parent a81fca6ec8
commit d9692027f4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 27 additions and 0 deletions

View file

@ -12,6 +12,12 @@ There are two functions specifically for working with iterators.
Return non-zero if the object *o* supports the iterator protocol, and ``0`` Return non-zero if the object *o* supports the iterator protocol, and ``0``
otherwise. This function always succeeds. otherwise. This function always succeeds.
.. c:function:: int PyAiter_Check(PyObject *o)
Returns non-zero if the object 'obj' provides :class:`AsyncIterator`
protocols, and ``0`` otherwise. This function always succeeds.
.. versionadded:: 3.10
.. c:function:: PyObject* PyIter_Next(PyObject *o) .. c:function:: PyObject* PyIter_Next(PyObject *o)

View file

@ -356,3 +356,14 @@ Object Protocol
iterator for the object argument, or the object itself if the object is already iterator for the object argument, or the object itself if the object is already
an iterator. Raises :exc:`TypeError` and returns ``NULL`` if the object cannot be an iterator. Raises :exc:`TypeError` and returns ``NULL`` if the object cannot be
iterated. iterated.
.. c:function:: PyObject* PyObject_GetAiter(PyObject *o)
This is the equivalent to the Python expression ``aiter(o)``. Takes an
:class:`AsyncIterable` object and returns an :class:`AsyncIterator` for it.
This is typically a new iterator but if the argument is an
:class:`AsyncIterator`, this returns itself. Raises :exc:`TypeError` and
returns ``NULL`` if the object cannot be iterated.
.. versionadded:: 3.10

View file

@ -1073,6 +1073,9 @@ PyInterpreterState_New:PyInterpreterState*:::
PyIter_Check:int::: PyIter_Check:int:::
PyIter_Check:PyObject*:o:0: PyIter_Check:PyObject*:o:0:
PyAiter_Check:int:::
PyAiter_Check:PyObject*:o:0:
PyIter_Next:PyObject*::+1: PyIter_Next:PyObject*::+1:
PyIter_Next:PyObject*:o:0: PyIter_Next:PyObject*:o:0:
@ -1679,6 +1682,9 @@ PyObject_GetItem:PyObject*:key:0:
PyObject_GetIter:PyObject*::+1: PyObject_GetIter:PyObject*::+1:
PyObject_GetIter:PyObject*:o:0: PyObject_GetIter:PyObject*:o:0:
PyObject_GetAiter:PyObject*::+1:
PyObject_GetAiter:PyObject*:o:0:
PyObject_HasAttr:int::: PyObject_HasAttr:int:::
PyObject_HasAttr:PyObject*:o:0: PyObject_HasAttr:PyObject*:o:0:
PyObject_HasAttr:PyObject*:attr_name:0: PyObject_HasAttr:PyObject*:attr_name:0:

View file

@ -1,5 +1,6 @@
# File generated by 'make regen-limited-abi' # File generated by 'make regen-limited-abi'
# This is NOT an authoritative list of stable ABI symbols # This is NOT an authoritative list of stable ABI symbols
PyAiter_Check
PyArg_Parse PyArg_Parse
PyArg_ParseTuple PyArg_ParseTuple
PyArg_ParseTupleAndKeywords PyArg_ParseTupleAndKeywords
@ -465,6 +466,7 @@ PyObject_GenericGetAttr
PyObject_GenericGetDict PyObject_GenericGetDict
PyObject_GenericSetAttr PyObject_GenericSetAttr
PyObject_GenericSetDict PyObject_GenericSetDict
PyObject_GetAiter
PyObject_GetAttr PyObject_GetAttr
PyObject_GetAttrString PyObject_GetAttrString
PyObject_GetItem PyObject_GetItem

View file

@ -71,6 +71,7 @@ are always available. They are listed here in alphabetical order.
Note: Unlike :func:`iter`, :func:`aiter` has no 2-argument variant. Note: Unlike :func:`iter`, :func:`aiter` has no 2-argument variant.
.. versionadded:: 3.10
.. function:: all(iterable) .. function:: all(iterable)
@ -97,6 +98,7 @@ are always available. They are listed here in alphabetical order.
iterator. If *default* is given, it is returned if the iterator is exhausted, iterator. If *default* is given, it is returned if the iterator is exhausted,
otherwise :exc:`StopAsyncIteration` is raised. otherwise :exc:`StopAsyncIteration` is raised.
.. versionadded:: 3.10
.. function:: any(iterable) .. function:: any(iterable)