!A?h0dZddlZddlZddlmZdZdZdS)z6High-level support for working with threads in asyncioN)events) to_threadcKtj}tj}t j|j|g|Ri|}|d|d{VS)aAsynchronously run function *func* in a separate thread. Any *args and **kwargs supplied for this function are directly passed to *func*. Also, the current :class:`contextvars.Context` is propagated, allowing context variables from the main thread to be accessed in the separate thread. Return a coroutine that can be awaited to get the eventual result of *func*. N)rget_running_loop contextvars copy_context functoolspartialrunrun_in_executor)funcargskwargsloopctx func_calls rsU<<  7 7 7 7 7r