summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBerker Peksag <berker.peksag@gmail.com>2017-02-04 09:19:04 +0300
committerBerker Peksag <berker.peksag@gmail.com>2017-02-04 09:19:04 +0300
commitb1d3f661d77eb0716a6eea595a59428590790b4c (patch)
tree1d356ccef9119dc272b968f99cb5818d21e9dc2d
parent19d2597ed50598ed0a04bffdfb246dcfb1de85c9 (diff)
parent14169b2a89d62170d1ef9542429bfedb3158aa6c (diff)
downloadcpython-git-b1d3f661d77eb0716a6eea595a59428590790b4c.tar.gz
Issue #29198: Merge from 3.6
-rw-r--r--Doc/library/typing.rst33
1 files changed, 33 insertions, 0 deletions
diff --git a/Doc/library/typing.rst b/Doc/library/typing.rst
index efae67a6b7..6c4af4c90c 100644
--- a/Doc/library/typing.rst
+++ b/Doc/library/typing.rst
@@ -689,6 +689,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