If the argument is a Future, it is returned directly.
"""
- return _ensure_future(coro_or_future, loop=loop)
-
-
-def _ensure_future(coro_or_future, *, loop=None):
if futures.isfuture(coro_or_future):
if loop is not None and loop is not futures._get_loop(coro_or_future):
raise ValueError('The future belongs to a different loop than '
outer = None # bpo-46672
for arg in coros_or_futures:
if arg not in arg_to_fut:
- fut = _ensure_future(arg, loop=loop)
+ fut = ensure_future(arg, loop=loop)
if loop is None:
loop = futures._get_loop(fut)
if fut is not arg:
weak references to tasks. A task that isn't referenced elsewhere
may get garbage collected at any time, even before it's done.
"""
- inner = _ensure_future(arg)
+ inner = ensure_future(arg)
if inner.done():
# Shortcut.
return inner