g hddlmZddlZddlZddlmZddlmZddlmZddlmZdZdZ ddl Z dZd d l m Z d d l m Z d d l mZd d l mZd dl mZd dl mZd dl mZedZGddZej0sesdZdZdZ dZ dZdZdZdZdZyyy#e$rZeeZ YdZ[PdZ[wwxYw)) 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 L/opt/hc_python/lib64/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_greenlet6sb {{##%0024*6**{{~b'J4'J6'JKKt&v& &rcFtr|jjyyr)rrclosers rr'z_AsyncUtil.closeBs  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_implementedr3Is8  " #     rc$t|t Sr) isinstance Exception)es rr r Vsa+++rctyrr3things rr r Yrc|Srr.r:s rr r \s rctyrr9r.rrr r _r<rctyrr9)rr kws rr r br<rctyrr9)r r@s rrrer<rc||i|Srr.rargr@s r_util_async_runrEhs3~"~rctyrr9rCs r"_util_async_run_coroutine_functionrGkr<r) __future__rasynciotypingrrrrrr2greenlet_concurrency_py3kr r r r r rr ImportErrorr7strrr TYPE_CHECKINGr3rErGr.rrrPs#   + M;C=CIG* T]  BM  ,I%2c VN sBB1B,,B1