Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

asyncio.wait should accept generator of tasks as first argument #78530

Closed
jnwatson mannequin opened this issue Aug 6, 2018 · 8 comments · Fixed by #103748
Closed

asyncio.wait should accept generator of tasks as first argument #78530

jnwatson mannequin opened this issue Aug 6, 2018 · 8 comments · Fixed by #103748
Assignees
Labels
3.12 bugs and security fixes topic-asyncio type-feature A feature request or enhancement

Comments

@jnwatson
Copy link
Mannequin

jnwatson mannequin commented Aug 6, 2018

BPO 34349
Nosy @asvetlov, @1st1, @jnwatson, @tirkarthi, @epiphyte

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:

assignee = None
closed_at = None
created_at = <Date 2018-08-06.19:41:06.692>
labels = ['3.8', 'expert-asyncio']
title = 'asyncio.wait should accept generator of tasks as first argument'
updated_at = <Date 2018-08-07.14:20:15.310>
user = 'https://github.com/jnwatson'

bugs.python.org fields:

activity = <Date 2018-08-07.14:20:15.310>
actor = 'yselivanov'
assignee = 'none'
closed = False
closed_date = None
closer = None
components = ['asyncio']
creation = <Date 2018-08-06.19:41:06.692>
creator = 'jnwatson'
dependencies = []
files = []
hgrepos = []
issue_num = 34349
keywords = []
message_count = 2.0
messages = ['323217', '323241']
nosy_count = 5.0
nosy_names = ['asvetlov', 'yselivanov', 'jnwatson', 'xtreak', 'epiphyte']
pr_nums = []
priority = 'normal'
resolution = None
stage = None
status = 'open'
superseder = None
type = None
url = 'https://bugs.python.org/issue34349'
versions = ['Python 3.8']

Linked PRs

@jnwatson
Copy link
Mannequin Author

jnwatson mannequin commented Aug 6, 2018

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__).

@jnwatson jnwatson mannequin added 3.7 (EOL) end of life topic-asyncio labels Aug 6, 2018
@1st1
Copy link
Member

1st1 commented Aug 7, 2018

Since we're deprecating generator-based coroutines anyways, I too think that the check can be relaxed.

@1st1 1st1 added 3.8 (EOL) end of life and removed 3.7 (EOL) end of life labels Aug 7, 2018
@ezio-melotti ezio-melotti transferred this issue from another repository Apr 10, 2022
@ezio-melotti ezio-melotti moved this to Todo in asyncio Jul 17, 2022
@kumaraditya303
Copy link
Contributor

kumaraditya303 commented Dec 2, 2022

Since generator based coroutines are gone, I think we should relax this check and allow generators.

@kumaraditya303 kumaraditya303 added 3.12 bugs and security fixes and removed 3.8 (EOL) end of life labels Dec 2, 2022
@JelleZijlstra
Copy link
Member

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.

@kumaraditya303
Copy link
Contributor

Let's do it.

@kumaraditya303 kumaraditya303 self-assigned this Dec 8, 2022
@kumaraditya303 kumaraditya303 added the type-feature A feature request or enhancement label Dec 8, 2022
@gvanrossum
Copy link
Member

So there are two separate tasks here, right:

  1. In 3.12, allow generators
  2. In the docs for 3.10 and 3.11, explain that generators are not allowed (maybe allude to 3.12 allowing them)

@gvanrossum
Copy link
Member

According to GH, the PR will close this issue. But it should remain open until the 3.10/3.11 docs are also updated.

carljm added a commit to carljm/cpython that referenced this issue Mar 17, 2023
* main: (34 commits)
  pythongh-102701: Fix overflow in dictobject.c (pythonGH-102750)
  pythonGH-78530: add support for generators in `asyncio.wait` (python#102761)
  Increase stack reserve size for Windows debug builds to avoid test crashes (pythonGH-102764)
  pythongh-102755: Add PyErr_DisplayException(exc) (python#102756)
  Fix outdated note about 'int' rounding or truncating (python#102736)
  pythongh-102192: Replace PyErr_Fetch/Restore etc by more efficient alternatives (python#102760)
  pythongh-99726: Improves correctness of stat results for Windows, and uses faster API when available (pythonGH-102149)
  pythongh-102192: remove redundant exception fields from ssl module socket (python#102466)
  pythongh-102192: Replace PyErr_Fetch/Restore etc by more efficient alternatives (python#102743)
  pythongh-102737: Un-ignore ceval.c in the CI globals check (pythongh-102745)
  pythonGH-102748: remove legacy support for generator based coroutines from `asyncio.iscoroutine` (python#102749)
  pythongh-102721: Improve coverage of `_collections_abc._CallableGenericAlias` (python#102722)
  pythonGH-102653: Make recipe docstring show the correct distribution (python#102742)
  Add comments to `{typing,_collections_abc}._type_repr` about each other (python#102752)
  pythongh-102594: PyErr_SetObject adds note to exception raised on normalization error (python#102675)
  pythongh-94440: Fix issue of ProcessPoolExecutor shutdown hanging (python#94468)
  pythonGH-100112:  avoid using iterable coroutines in asyncio internally (python#100128)
  pythongh-102690: Use Edge as fallback in webbrowser instead of IE (python#102691)
  pythongh-102660: Fix Refleaks in import.c (python#102744)
  pythongh-102738: remove from cases generator the code related to register instructions (python#102739)
  ...
Fidget-Spinner pushed a commit to Fidget-Spinner/cpython that referenced this issue Mar 27, 2023
kumaraditya303 added a commit that referenced this issue Apr 24, 2023
@kumaraditya303
Copy link
Contributor

Fixed by #103748

@github-project-automation github-project-automation bot moved this from Todo to Done in asyncio Apr 24, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
3.12 bugs and security fixes topic-asyncio type-feature A feature request or enhancement
Projects
Status: Done
4 participants