You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
For long time I wanted to replace the use of PyObject_IsInstance() with CancelledError in _asynciomodule.c. Even if the C code is correct and is closest to the corresponding Python code, it looked unnecessary complicated and bugprone. Also, PyErr_GivenExceptionMatches() is used in except implementation, so it may be more correct than an isinstance check. But I did not have tests for CancelledError subclasses which would show the difference.
Other issue. @gvanrossumnoticed that asyncio.timeout() only checks for exact CancelledError, and not its subclasses. asyncio.TaskGroup() also only checks for exact CancelledError. It is suspicious, because all other code (except _convert_future_exc() in futures.py) treats CancelledError subclasses in the same way as CancelledError. asyncio.timeout() and asyncio.TaskGroup() were added recently, so perhaps it is error in their implementation. On other hand, I do not know any use case for CancelledError subclasses.
For long time I wanted to replace the use of
PyObject_IsInstance()
withCancelledError
in_asynciomodule.c
. Even if the C code is correct and is closest to the corresponding Python code, it looked unnecessary complicated and bugprone. Also,PyErr_GivenExceptionMatches()
is used inexcept
implementation, so it may be more correct than an isinstance check. But I did not have tests for CancelledError subclasses which would show the difference.Other issue. @gvanrossum noticed that
asyncio.timeout()
only checks for exact CancelledError, and not its subclasses.asyncio.TaskGroup()
also only checks for exact CancelledError. It is suspicious, because all other code (except_convert_future_exc()
infutures.py
) treats CancelledError subclasses in the same way as CancelledError.asyncio.timeout()
andasyncio.TaskGroup()
were added recently, so perhaps it is error in their implementation. On other hand, I do not know any use case for CancelledError subclasses.Linked PRs
The text was updated successfully, but these errors were encountered: