Commit 14169b2a authored by Berker Peksag's avatar Berker Peksag

Issue #29198: Merge from 3.5

parents 3746619b 38962a6f
...@@ -689,6 +689,39 @@ The module defines the following classes, functions and decorators: ...@@ -689,6 +689,39 @@ The module defines the following classes, functions and decorators:
yield start yield start
start += 1 start += 1
.. class:: AsyncGenerator(AsyncIterator[T_co], Generic[T_co, T_contra])
An async generator can be annotated by the generic type
``AsyncGenerator[YieldType, SendType]``. For example::
async def echo_round() -> AsyncGenerator[int, float]:
sent = yield 0
while sent >= 0.0:
rounded = await round(sent)
sent = yield rounded
Unlike normal generators, async generators cannot return a value, so there
is no ``ReturnType`` type parameter. As with :class:`Generator`, the
``SendType`` behaves contravariantly.
If your generator will only yield values, set the ``SendType`` to
``None``::
async def infinite_stream(start: int) -> AsyncGenerator[int, None]:
while True:
yield start
start = await increment(start)
Alternatively, annotate your generator as having a return type of
either ``AsyncIterable[YieldType]`` or ``AsyncIterator[YieldType]``::
async def infinite_stream(start: int) -> AsyncIterator[int]:
while True:
yield start
start = await increment(start)
.. versionadded:: 3.5.4
.. class:: Text .. class:: Text
``Text`` is an alias for ``str``. It is provided to supply a forward ``Text`` is an alias for ``str``. It is provided to supply a forward
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment