) -> None:
"""Set the given ``exc_info`` as the `Future`'s exception.
- Understands both `asyncio.Future` and Tornado's extensions to
- enable better tracebacks on Python 2.
+ Understands both `asyncio.Future` and the extensions in older
+ versions of Tornado to enable better tracebacks on Python 2.
.. versionadded:: 5.0
(previously asyncio.InvalidStateError would be raised)
"""
- if hasattr(future, "set_exc_info"):
- # Tornado's Future
- future.set_exc_info(exc_info) # type: ignore
- else:
- # asyncio.Future
- if exc_info[1] is None:
- raise Exception("future_set_exc_info called with no exception")
- future_set_exception_unless_cancelled(future, exc_info[1])
+ if exc_info[1] is None:
+ raise Exception("future_set_exc_info called with no exception")
+ future_set_exception_unless_cancelled(future, exc_info[1])
@typing.overload