Description
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. @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()
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.
Linked PRs
Metadata
Metadata
Assignees
Projects
Status