[Python-Dev] Addendum to PEP 530

Serhiy Storchaka storchaka at gmail.com
Mon Mar 4 12:37:17 EST 2019


PEP 530 introduced support for asynchronous comprehensions.

Comprehensions are implemented as local functions. To make a function 
asynchronous you should to add "async" before "def", and after that you 
can use "async for", "async with" and "await" in a function. But you can 
to do this with comprehensions, since these functions are implicit.

PEP 530 allows to make these function asynchronous by just using 
asynchronous syntax inside. "async with" can not be used in 
comprehensions, but using "async for" or "await" makes the comprehension 
asynchronous.

What PEP 530 missed is that asynchronous comprehensions itself are 
asynchronous constructions which can be used only in asynchronous functions.

Issue33346 [1] makes an asynchronous comprehension inside a 
comprehension making the outer comprehension asynchronous as well as 
using explicit "async for" or "await". See details on the issue.

Yury, the author of PEP 530, likes this idea, and there is a ready 
implementation. But making the decision was deferred until a new 
government be stated. Now, after the Steering Council has been elected, 
can it make the decision?

[1] https://bugs.python.org/issue33346



More information about the Python-Dev mailing list