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:
|
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.
|
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
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
Given
exc_valitself can be aBaseExceptionand_insert_timeout_errortakes aBaseExceptionas an argument, I fail to see a reason not to check for superclassBaseExceptionGroupinstead.cpython/Lib/asyncio/timeouts.py
Line 133 in 9743d06
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