diff options
author | Berker Peksag <berker.peksag@gmail.com> | 2017-02-04 06:18:11 (GMT) |
---|---|---|
committer | Berker Peksag <berker.peksag@gmail.com> | 2017-02-04 06:18:11 (GMT) |
commit | 38962a6fe2e98e442f3fd586e4fd3d5f568b74fd (patch) | |
tree | 4c2fc7b26df37c7f182ca621bded9b5ffa930a6e /Doc | |
parent | db38b6c9a932da89c284cd8377af9f5c4beeb190 (diff) | |
download | cpython-38962a6fe2e98e442f3fd586e4fd3d5f568b74fd.zip cpython-38962a6fe2e98e442f3fd586e4fd3d5f568b74fd.tar.gz cpython-38962a6fe2e98e442f3fd586e4fd3d5f568b74fd.tar.bz2 |
Issue #29198: Document typing.AsyncGenerator
Patch by Jelle Zijlstra.
Diffstat (limited to 'Doc')
-rw-r--r-- | Doc/library/typing.rst | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/Doc/library/typing.rst b/Doc/library/typing.rst index f89d886..aaa43e4 100644 --- a/Doc/library/typing.rst +++ b/Doc/library/typing.rst @@ -670,6 +670,39 @@ The module defines the following classes, functions and decorators: yield start 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 ``Text`` is an alias for ``str``. It is provided to supply a forward |