[Python-checkins] [3.8] bpo-42230: Improve asyncio documentation regarding accepting sets vs iterables (GH-23073) (GH-23105)
asvetlov
webhook-mailer at python.org
Mon Nov 2 06:36:47 EST 2020
https://github.com/python/cpython/commit/ad37c66adcd474e3d42a51c63ecb6a54ca2d23f2
commit: ad37c66adcd474e3d42a51c63ecb6a54ca2d23f2
branch: 3.8
author: Jakub Stasiak <jakub at stasiak.at>
committer: asvetlov <andrew.svetlov at gmail.com>
date: 2020-11-02T13:36:38+02:00
summary:
[3.8] bpo-42230: Improve asyncio documentation regarding accepting sets vs iterables (GH-23073) (GH-23105)
People call wait() and as_completed() with various non-set iterables,
a list should be the most common but there are others as well[1].
Considering typeshed also documents wait()[2] and as_completed()[3]
as accepting arbitrary iterables I think it's a good idea to document
the status quo better.
[1] https://github.com/aio-libs/aiokafka/pull/672
[2] https://github.com/python/typeshed/blob/620989bac572f30349b95590ebe81a73ce0fe862/stdlib/3/asyncio/tasks.pyiGH-L161
[3] https://github.com/python/typeshed/blob/620989bac572f30349b95590ebe81a73ce0fe862/stdlib/3/asyncio/tasks.pyiGH-L40.
(cherry picked from commit 3d86d090dcbbdfdd3e5a5951cab30612d6131222)
Co-authored-by: Jakub Stasiak <jakub at stasiak.at>
files:
M Doc/library/asyncio-task.rst
M Lib/asyncio/tasks.py
diff --git a/Doc/library/asyncio-task.rst b/Doc/library/asyncio-task.rst
index c96dde2dde925..6acec30558cba 100644
--- a/Doc/library/asyncio-task.rst
+++ b/Doc/library/asyncio-task.rst
@@ -501,7 +501,7 @@ Waiting Primitives
return_when=ALL_COMPLETED)
Run :ref:`awaitable objects <asyncio-awaitables>` in the *aws*
- set concurrently and block until the condition specified
+ iterable concurrently and block until the condition specified
by *return_when*.
Returns two sets of Tasks/Futures: ``(done, pending)``.
@@ -588,9 +588,9 @@ Waiting Primitives
.. function:: as_completed(aws, \*, loop=None, timeout=None)
Run :ref:`awaitable objects <asyncio-awaitables>` in the *aws*
- set concurrently. Return an iterator of coroutines.
+ iterable concurrently. Return an iterator of coroutines.
Each coroutine returned can be awaited to get the earliest next
- result from the set of the remaining awaitables.
+ result from the iterable of the remaining awaitables.
Raises :exc:`asyncio.TimeoutError` if the timeout occurs before
all Futures are done.
diff --git a/Lib/asyncio/tasks.py b/Lib/asyncio/tasks.py
index 9ca9fa0a94a93..1fa76a161e1e4 100644
--- a/Lib/asyncio/tasks.py
+++ b/Lib/asyncio/tasks.py
@@ -394,7 +394,7 @@ def create_task(coro, *, name=None):
async def wait(fs, *, loop=None, timeout=None, return_when=ALL_COMPLETED):
"""Wait for the Futures and coroutines given by fs to complete.
- The sequence futures must not be empty.
+ The fs iterable must not be empty.
Coroutines will be wrapped in Tasks.
@@ -580,7 +580,7 @@ def as_completed(fs, *, loop=None, timeout=None):
Note: The futures 'f' are not necessarily members of fs.
"""
if futures.isfuture(fs) or coroutines.iscoroutine(fs):
- raise TypeError(f"expect a list of futures, not {type(fs).__name__}")
+ raise TypeError(f"expect an iterable of futures, not {type(fs).__name__}")
from .queues import Queue # Import here to avoid circular import problem.
done = Queue(loop=loop)
More information about the Python-checkins
mailing list