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
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)
|
|
|