Repository navigation
asyncio.wait should accept generator of tasks as first argument #78530
Description
Activity
Currently, passing a generator of coroutines or futures as the first parameter of asyncio.wait raises a TypeError. This is in conflict with the documentation calling the first parameter a "sequence".
Line in question. https://github.com/python/cpython/blob/3.7/Lib/asyncio/tasks.py#L347
Generators are indeed coroutines, so the check to validate that the first parameter is not a coroutine or a future is too specific.
I'd suggest replacing that line with a check that the passed-in parameter is iterable, i.e. hasattr(futures, __iter__).
Since we're deprecating generator-based coroutines anyways, I too think that the check can be relaxed.
Since generator based coroutines are gone, I think we should relax this check and allow generators.
- added3.12only security fixesonly security fixesand removed3.8 (EOL)end of lifeend of life
on Dec 2, 2022 Allowing generators in 3.12 seems like a good idea. It's probably also useful to change the documentation in 3.10 and 3.11 to clarify that generators don't work, as #99936 asked for.
Reacted by Guido van Rossum and Dr. Juan Miguel CejuelaLet's do it.
- addedtype-featureA feature request or enhancementA feature request or enhancement
on Dec 8, 2022 So there are two separate tasks here, right:
- In 3.12, allow generators
- In the docs for 3.10 and 3.11, explain that generators are not allowed (maybe allude to 3.12 allowing them)
Reacted by Jelle Zijlstra and Aaron CarverAccording to GH, the PR will close this issue. But it should remain open until the 3.10/3.11 docs are also updated.
- added a commit that references this issue
on Mar 17, 2023 - linked a pull request that will close this issue[3.11] GH-78530: clarify docs for generators yielding tasks in `asyncio.wait` and `asyncio.as_completed` #103748
on Apr 24, 2023 - added a commit that references this issue
on Apr 24, 2023 Fixed by #103748
Metadata
Metadata
Assignees
Labels
Projects
- StatusShow more project fieldsDone
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
bugs.python.org fields:
Linked PRs
asyncio.wait#102761asyncio.waitandasyncio.as_completed#103748