Join GitHub today
GitHub is home to over 40 million developers working together to host and review code, manage projects, and build software together.
Sign upbpo-34793: Drop old-style context managers in asyncio.locks #17533
Conversation
* ``with (await asyncio.lock):`` and ``with (yield from asyncio.lock):`` statements are | ||
not longer supported, use ``async with lock`` instead. The same is correct for | ||
``asyncio.Condition`` and ``asyncio.Semaphore``. | ||
(Contributed by Andrew Svetlov in :issue:`34793`.) |
This comment has been minimized.
This comment has been minimized.
1st1
Dec 9, 2019
Member
Please also replace the deprecation warning with changedversion in https://docs.python.org/3/library/asyncio-sync.html#boundedsemaphore
This comment has been minimized.
This comment has been minimized.
|
||
|
||
class _ContextManagerMixin: | ||
def __enter__(self): | ||
raise RuntimeError( | ||
'"yield from" should be used as context manager expression') |
This comment has been minimized.
This comment has been minimized.
1st1
Dec 9, 2019
Member
Should we keep this? We can change the error message to say that async with should be used...
This comment has been minimized.
This comment has been minimized.
asvetlov
Dec 10, 2019
Author
Contributor
I think the motivation was emphasizing that context managers were supported but in a slightly unusual way: with (yield from lock):
; bare with lock:
was forbidden.
After switching to async with lock:
everything becomes clear: with
is not supported in any form for the sake of async with
. The error message is standard and well-known: AttributeError: __enter__
. I think we shouldn't replace the default behavior.
Maybe the standard text can be improved globally, but it is another story, I guess.
90d9ba6
into
python:master
asvetlov commentedDec 9, 2019
•
edited by bedevere-bot
https://bugs.python.org/issue34793