◐ Shell
clean mode source ↗

Wrong exception re-raises if task raises CancelledError inside except block

This repository was archived by the owner on Nov 23, 2017. It is now read-only.

This repository was archived by the owner on Nov 23, 2017. It is now read-only.

@germn

Description

import asyncio
from contextlib import suppress


async def main():
    task = asyncio.ensure_future(asyncio.sleep(1))
    task.cancel()

    try:
        raise Exception()
    except Exception:
        with suppress(asyncio.CancelledError):
            await task
        raise

if __name__ == "__main__":
    loop = asyncio.get_event_loop()
    loop.run_until_complete(main())

Expected output:

Actual output:

concurrent.futures._base.CancelledError

Windows 10, Python 3.5.0