| * ``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`.) |
There was a problem hiding this comment.
Please also replace the deprecation warning with changedversion in https://docs.python.org/3/library/asyncio-sync.html#boundedsemaphore
| class _ContextManagerMixin: | ||
| def __enter__(self): | ||
| raise RuntimeError( | ||
| '"yield from" should be used as context manager expression') |
There was a problem hiding this comment.
Should we keep this? We can change the error message to say that async with should be used...
There was a problem hiding this comment.
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.
https://bugs.python.org/issue34793