You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

26 lines
616 B
Python

import inspect
import typing as t
from jupyter_core.utils import run_sync as _run_sync, ensure_async # noqa
T = t.TypeVar("T")
def run_sync(coro: t.Callable[..., t.Union[T, t.Awaitable[T]]]) -> t.Callable[..., T]:
"""Wraps coroutine in a function that blocks until it has executed.
Parameters
----------
coro : coroutine-function
The coroutine-function to be executed.
Returns
-------
result :
Whatever the coroutine-function returns.
"""
if not inspect.iscoroutinefunction(coro):
return t.cast(t.Callable[..., T], coro)
return _run_sync(coro)