-
-
Notifications
You must be signed in to change notification settings - Fork 33.6k
Open
Labels
stdlibStandard Library Python modules in the Lib/ directoryStandard Library Python modules in the Lib/ directorytopic-asynciotype-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or error
Description
Bug report
Bug description:
There may be a good reason for this I am not seeing, but in the asyncio.Timeout.__aexit__ handler, the exception group handling seems too narrow:
cpython/Lib/asyncio/timeouts.py
Lines 113 to 119 in 9743d06
| if issubclass(exc_type, exceptions.CancelledError): | |
| raise TimeoutError from exc_val | |
| elif exc_val is not None: | |
| self._insert_timeout_error(exc_val) | |
| if isinstance(exc_val, ExceptionGroup): | |
| for exc in exc_val.exceptions: | |
| self._insert_timeout_error(exc) |
Given exc_val itself can be a BaseException and _insert_timeout_error takes a BaseException as an argument, I fail to see a reason not to check for superclass BaseExceptionGroup instead.
cpython/Lib/asyncio/timeouts.py
Line 133 in 9743d06
| def _insert_timeout_error(exc_val: BaseException) -> None: |
This no longer impacts me as I implemented what I was aiming for in a better way, but it still looks like a bug. Is it?
CPython versions tested on:
3.13
Operating systems tested on:
Linux
Linked PRs
Metadata
Metadata
Labels
stdlibStandard Library Python modules in the Lib/ directoryStandard Library Python modules in the Lib/ directorytopic-asynciotype-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or error
Projects
Status
Todo