code: def future_set_exc_info(
      future: "Union[futures.Future[_T], Future[_T]]",
      exc_info: Tuple[
          Optional[type], Optional[BaseException], Optional[types.TracebackType]
      ],
  ) -> None:
      
      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])
docs: Set the given ``exc_info`` as the `Future`'s exception.
  
      Understands both `asyncio.Future` and the extensions in older
      versions of Tornado to enable better tracebacks on Python 2.
  
      .. versionadded:: 5.0
  
      .. versionchanged:: 6.0
  
         If the future is already cancelled, this function is a no-op.
         (previously ``asyncio.InvalidStateError`` would be raised)