L i#VddlmZddlZddlmZddlZddlZddlmZddlmZddlm Z ddlm Z ddlm Z dd lm Z dd lm Z dd lmZd d lmZddlmZddlmZddlmZddlmZddlmZddlmZe dZejrGddeZd/dZn ddlmZddlmZeedZd0dZGddeZ e dd !Z!e r d1d"Z"n ejDZ"d2d#Z#d3d$Z$d4d%Z%d4d&Z&d'd( d5d)Z'Gd*d+Z(d6d,Z)e ser ejTZ+yGd-d.Z+y)7) annotationsN)Context)Any) Awaitable)Callable) Coroutine)Optional) TYPE_CHECKING)TypeVar)Union)memoized_property)exc)py311)Literal)Protocol)Self) TypeGuard_Tc:eZdZUded<ded<d dZd dZd dZy) greenletbooldeadzOptional[Context] gr_contextcyNselffndrivers g/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py__init__zgreenlet.__init__(cyrr)r args r#throwzgreenlet.throw*r&cyrr)r values r#switchzgreenlet.switch-r*r&Nr!zCallable[..., Any]r"r)r(rreturnr)r,rr/r)__name__ __module__ __qualname____annotations__r$r)r-rr&r#rr$s %%I  r&rcyrrrr&r# getcurrentr50r%r&)r5)rrc|t|t xs*t|tjtjfSr) isinstance Exceptionasyncio TimeoutErrorCancelledError)es r#is_exit_exceptionr==s8!Y' ' : G '"8"8 9,r&c$eZdZUded<dZddZy)_AsyncIoGreenletrrTcbtj|||tr|j|_yyr)rr$_has_gr_contextrrs r#r$z_AsyncIoGreenlet.__init__Os)$F+ $//DO r&Nr.)r0r1r2r3 __sqlalchemy_greenlet_provider__r$rr&r#r?r?Js J'+$0r&r?_T_coT) covariantcyrr awaitables r# iscoroutinerHYs03r&c<t|r|jyyr)rHcloserFs r#_safe_cancel_awaitablerKas9r&c0t}t|ddS)NrBF)r5getattr)currents r# in_greenletrOhslG 7> FFr&ct}t|dds t|tjd|j j |S)zAwaits an async function in a sync method. The sync method must be inside a :func:`greenlet_spawn` context. :func:`await_only` calls cannot be nested. :param awaitable: The coroutine to call. rBFzjgreenlet_spawn has not been called; can't call await_only() here. Was IO attempted in an unexpected place?)r5rMrKrMissingGreenletparentr-)rGrNs r# await_onlyrSmsOlG 7> Fy)!! =   >>  ++r&ct}t|ddsKt}|jr t |t j d|j|S|jj|S)aAwaits an async function in a sync method. The sync method must be inside a :func:`greenlet_spawn` context. :func:`await_fallback` calls cannot be nested. :param awaitable: The coroutine to call. .. deprecated:: 2.0.24 The ``await_fallback()`` function will be removed in SQLAlchemy 2.1. Use :func:`_util.await_only` instead, running the function / program / etc. within a top-level greenlet that is set up using :func:`_util.greenlet_spawn`. rBFzgreenlet_spawn has not been called and asyncio event loop is already running; can't call await_fallback() here. Was IO attempted in an unexpected place?) r5rMget_event_loop is_runningrKrrQrun_until_completerRr-)rGrNloops r#await_fallbackrYsr lG 7> F ??  "9 -%%;  &&y11 >>  ++r&F)_require_awaitcbKt|t}d}|j|i|}|js+d} |d{}|j|}|js+|r|stjd|S7=#t$r$|j t j}YVwxYww)aGRuns a sync function ``fn`` in a new greenlet. The sync function can then use :func:`await_only` to wait for async functions. :param fn: The sync callable to call. :param \*args: Positional arguments to pass to the ``fn`` callable. :param \*\*kwargs: Keyword arguments to pass to the ``fn`` callable. FTNzThe current operation required an async execution but none was detected. This will usually happen when using a non compatible DBAPI driver. Please ensure that an async DBAPI is used.) r?r5r-r BaseExceptionr)sysexc_infor AwaitRequired)r!rZargskwargscontextswitch_occurredresultr,s r#greenlet_spawnres"r:<0G O W^^T ,V ,Fll +!LE^^E*Fllo G  M! 4#W]]CLLN3F  4s?7B/A?A=A?B/"B/=A??*B,)B/+B,,B/c.eZdZeddZddZddZy)AsyncAdaptedLockc*tjSr)r9Lockr s r#mutexzAsyncAdaptedLock.mutexs||~r&cHt|jjSr)rYrkacquirerjs r# __enter__zAsyncAdaptedLock.__enter__sdjj00233r&c8|jjyr)rkrelease)r r(kws r#__exit__zAsyncAdaptedLock.__exit__s r&N)r/z asyncio.Lockr/r)r(rrqrr/None)r0r1r2rrkrnrrrr&r#rgrgs 4 r&rgc tjS#t$rYnwxYwtjj S)z}vendor asyncio.get_event_loop() for python 3.7 and above. Python 3.10 deprecates get_event_loop() as a standalone. )r9get_running_loop RuntimeErrorget_event_loop_policyrUrr&r#rUrUsB  ''))      ( ( * 9 9 ;;s  ""cTeZdZUdZded<d dZd dZddZd dZddZ dd Z d d Z y )_Runnerz#Runner implementation for test onlyz6Union[None, asyncio.AbstractEventLoop, Literal[False]]_loopcd|_yr)r{rjs r#r$z_Runner.__init__s DJr&c&|j|Sr) _lazy_initrjs r#rnz_Runner.__enter__s OO Kr&c$|jyr)rJ)r exc_typeexc_valexc_tbs r#rrz_Runner.__exit__s JJLr&c|jrV |jj|jj|jjd|_yy#|jjd|_wxYw)NF)r{rWshutdown_asyncgensrJrjs r#rJz _Runner.closesizz'JJ11 557JJ$$&!&DJ JJ$$&!&DJs 3A$$#BcV|j|jsJ|jS)zReturn embedded event loop.)r~r{rjs r#get_loopz_Runner.get_loops" OO :: ::: r&ct|j|jsJ|jj|Sr)r~r{rW)r coros r#runz _Runner.runs- OO :: :::006 6r&c|jdur td|jtj|_yy)NFzRunner is closed)r{rwr9new_event_looprjs r#r~z_Runner._lazy_inits9zzU""#566zz!$335 "r&N)r/rt)r/r)rrrrrrr/rtr/zasyncio.AbstractEventLoop)rzCoroutine[Any, Any, _T]r/r) r0r1r2__doc__r3r$rnrrrJrrr~rr&r#rzrzs.1EE    '   7  6r&rz)r/r)r<r\r/r)rGzAwaitable[_T_co]r/z%TypeGuard[Coroutine[Any, Any, _T_co]])rGzAwaitable[Any]r/rtrs)rGz Awaitable[_T]r/r) r!zCallable[..., _T]r`rrZrrarr/rr), __future__rr9 contextvarsrr]typingrrrrr r r r langhelpersrrutilr util.typingrrrrrrr5hasattrrAr=r?rCrHrKrOrSrYrergrURunnerrzrr&r#rs:#  *!"# T]  8 &$! *, 50x0 4(4#4 .4 %%KG ,4,F!,, ,, ,  ,^   <nnG(6(6r&