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