[Python-checkins] cpython (merge 3.6 -> default): Issue #29198: Merge from 3.6

berker.peksag python-checkins at python.org
Sat Feb 4 01:13:57 EST 2017


https://hg.python.org/cpython/rev/2b55b18bf151
changeset:   106401:2b55b18bf151
parent:      106398:222b9392a83b
parent:      106400:b475b076cc1f
user:        Berker Peksag <berker.peksag at gmail.com>
date:        Sat Feb 04 09:19:04 2017 +0300
summary:
  Issue #29198: Merge from 3.6

files:
  Doc/library/typing.rst |  33 ++++++++++++++++++++++++++++++
  1 files changed, 33 insertions(+), 0 deletions(-)


diff --git a/Doc/library/typing.rst b/Doc/library/typing.rst
--- a/Doc/library/typing.rst
+++ b/Doc/library/typing.rst
@@ -689,6 +689,39 @@
               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

-- 
Repository URL: https://hg.python.org/cpython


More information about the Python-checkins mailing list