-
-
Notifications
You must be signed in to change notification settings - Fork 33.6k
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
Labels
Projects
Status