L i ldZddlmZddlZddlZddlmZddlmZddlmZddlmZdZ dZ ddl Z d Z d d l m Z d d l mZd d l mZd dl mZd dl mZd dl mZd dl mZedZGddZej2se sdZdZdZ dZdZdZdZdZdZyyy#e$rZeeZ YdZ[PdZ[wwxYw)z&asyncio-related concurrency functions.) annotationsN)Any)Callable) Coroutine)TypeVarFT) await_only)await_fallback) in_greenlet)greenlet_spawn)is_exit_exception)AsyncAdaptedLock)_Runner_TcPeZdZdZddZ ddZ d dZddZy) _AsyncUtilz&Asyncio util for test suite/ util onlyc0trt|_yyN) have_greenletrrunnerselfs a/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/sqlalchemy/util/concurrency.py__init__z_AsyncUtil.__init__+s !)DK cD|jj||i|S)zRun coroutine on the loop)rrunrfnargskwargss rrz_AsyncUtil.run/s!{{r426233rctrX|jjjr||i|S|jj t |g|i|S||i|S)z3Run sync function in greenlet. Support nested calls)rrget_loop is_runningrr rs rrun_in_greenletz_AsyncUtil.run_in_greenlet8sb {{##%0024*6**{{~b'J4'J6'JKKt&v& &rcFtr|jjyyr)rrclosers rr'z_AsyncUtil.closeDs  KK    rN)returnNone)rz&Callable[..., Coroutine[Any, Any, _T]]r rr!rr(r)rzCallable[..., _T]r rr!rr(r)__name__ __module__ __qualname____doc__rrr%r'rrrr(s_0$4 244 4 4 '# ',/ ';> '  ' rrcLtryttr dtzd)Nz9the greenlet library is required to use this function. %s)r ValueErrorgreenlet_errorr.rr_not_implementedr3Ks8  " #     rc$t|t Sr) isinstance Exception)es rr r Xsa+++rctyrr3things rr r [rc|Srr.r:s rr r ^s rctyrr9r.rrr r ar<rctyrr9)rr kws rr r dr<rctyrr9)r r@s rrrgr<rc||i|Srr.rargr@s r_util_async_runrEjs3~"~rctyrr9rCs r"_util_async_run_coroutine_functionrGmr<r)r- __future__rasynciotypingrrrrrr2greenlet_concurrency_py3kr r r r r rr ImportErrorr7strrr TYPE_CHECKINGr3rErGr.rrrPs-"   + M;C=CIG* T]  BM  ,I%2c VN sBB3!B..B3