L i3dZddlmZddlZddlZddlZddlmZddlmZddlm Z ddlm Z ddlm Z dd lm Z dd lm Z dd lmZdd lmZdd lmZddlmZddlmZddlmZddlmZddlmZddlmZerddlmZddlmZddlmZddlmZddlm Z GddeZ!GddeZ"GddZ#Gd d!Z$Gd"d#e$Z%Gd$d%eZ&Gd&d'e&Z'Gd(d)Z(y)*z?generic asyncio-adapted versions of DBAPI connection and cursor) annotationsN)Any) AsyncIterator)Deque)Iterator)NoReturn)Optional)Sequence)Tuple)Type) TYPE_CHECKING)AdaptedConnection) EMPTY_DICT)await_fallback) await_only) in_greenlet)Protocol)_DBAPICursorDescription)_DBAPIMultiExecuteParams)_DBAPISingleExecuteParams) DBAPIModule)Selfc8eZdZdZddZd dZddZd dZd dZy) AsyncIODBAPIConnectionz^protocol representing an async adapted version of a :pep:`249` database connection. c KywNselfs c/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/sqlalchemy/connectors/asyncio.pycommitzAsyncIODBAPIConnection.commit3cyrr)r argskwargss r!cursorzAsyncIODBAPIConnection.cursor5c Kywrrrs r!rollbackzAsyncIODBAPIConnection.rollback7r#r$cyrrr keys r! __getattr__z"AsyncIODBAPIConnection.__getattr__9r)r*cyrr)r r/values r! __setattr__z"AsyncIODBAPIConnection.__setattr__;r)r*NreturnNone)r&rr'rr5AsyncIODBAPICursorr/strr5r)r/r9r2rr5r6) __name__ __module__ __qualname____doc__r"r(r,r0r3rr*r!rr)s(J)/s %    ""NN& ;?8  -  3N2D@:=)6 32r*r7czeZdZer5ej Zej ZejZejZddZ yy)AsyncAdapt_dbapi_modulecyrrr.s r!r0z#AsyncAdapt_dbapi_module.__getattr__}r)r*Nr8) r:r;r<r rErrorOperationalErrorInterfaceErrorIntegrityErrorr0rr*r!rqrqvs:!!&77$33$333 r*rqc~eZdZUdZdZdZded<ded<ded <d ed <d ed <d%dZd&dZ d'dZ e d(dZ e d)dZ e d)dZ e jd*dZ e d)dZd+dZd+dZ d, d-dZ d.dZ d-dZ d.dZd+dZd/dZd0dZd1d Zd2d!Zd3d"Zd,d4d#Zd5d$Zy)6AsyncAdapt_dbapi_cursorF)_adapt_connection _connectionawait__cursor_rows_soft_closed_memoizedTbool_awaitable_cursor_closer7r|AsyncAdapt_dbapi_connectionryrrzz Deque[Any]r}c||_|j|_|j|_|j|j}|j ||_t |_|jstj|_ yyr) ryrzr{_make_new_cursor_aenter_cursorr|rr~ server_side collectionsdequer})r adapt_connectionr(s r!__init__z AsyncAdapt_dbapi_cursor.__init__ss!1+77&-- &&t'7'78**62 %/"$**,DJ r*c@|j|jSr)r{r@)r r(s r!rz&AsyncAdapt_dbapi_cursor._aenter_cursors{{6,,.//r*c"|jSr)r()r connections r!rz(AsyncAdapt_dbapi_cursor._make_new_cursors  ""r*chd|jvr|jdS|jjS)NrB)r~r|rBrs r!rBz#AsyncAdapt_dbapi_cursor.descriptions1 D66 6--m< <||'''r*c.|jjSr)r|rErs r!rEz AsyncAdapt_dbapi_cursor.rowcounts||$$$r*c.|jjSrr|rFrs r!rFz!AsyncAdapt_dbapi_cursor.arraysize||%%%r*c&||j_yrr)r r2s r!rFz!AsyncAdapt_dbapi_cursor.arraysizes!& r*c.|jjSr)r|rGrs r!rGz!AsyncAdapt_dbapi_cursor.lastrowidrr*cK|jr |jry|jjd|jj i|_|jj d{y7w)zclose the cursor but keep the results pending, and memoize the description. .. versionadded:: 2.0.44 NrB)rrr~unionr|rBrIrs r!_async_soft_closez)AsyncAdapt_dbapi_cursor._async_soft_closesa++t/?/? %)%?%?%E%Et||77 & " ll  """sA-A7/A50A7c2|jj|jt|jry|j s|jj ytr*|j|jj yyr) r}clearr|rr~rrIrr{rs r!rIzAsyncAdapt_dbapi_cursor.closesj  << 4(B(B#C ++ LL   ] KK **, -r*Nc |j|j||S#t$r%}|jj |Yd}~yd}~wwxYwr)r{_execute_async Exceptionry_handle_exception)r rLrMerrors r!rNzAsyncAdapt_dbapi_cursor.executesJ  <;;t229jIJ J <  " " 4 4U ; ; < # AA  Ac |j|j||S#t$r%}|jj |Yd}~yd}~wwxYwr)r{_executemany_asyncrryr)r rLseq_of_parametersrs r!rQz#AsyncAdapt_dbapi_cursor.executemanysR  <;;'' 3DE  <  " " 4 4U ; ; >#||33IzJJ||''0@0@(..T\\5J5J5L/LM    >J0M    s{C:CC:!C%C$C%'C(AC%:C! ;C% C:C#C:C%C%!C%#C:%C7+C. ,C73C:cK|jj4d{|jj||d{cdddd{S7977 #1d{7swYyxYwwr)ryrr|rQ)r rLrs r!rz*AsyncAdapt_dbapi_cursor._executemany_asyncsk ))88 P P11)=NOO P P PO P P P PsVA2AA2 AAA A2AA2AA2A/#A& $A/+A2c |j|jj|jjrO|jsBt j |j|jj|_yyyr) r{r|rdrBrrrrYr}rs r!rdzAsyncAdapt_dbapi_cursor.nextset sc DLL((*+ << # #D,<,<$** DLL1134DJ-= #r*cR|j|jj|Sr)r{r|r\)r inputsizess r!r\z%AsyncAdapt_dbapi_cursor.setinputsizess% {{54<<55zBCCr*c|Srrrs r! __enter__z!AsyncAdapt_dbapi_cursor.__enter__s r*c$|jyr)rI)r type_r2 tracebacks r!__exit__z AsyncAdapt_dbapi_cursor.__exit__s  r*c#xK|jr*|jj|jr)yywrr}popleftrs r!__iter__z AsyncAdapt_dbapi_cursor.__iter__s)jj**$$& &jjs5::cP|jr|jjSyrrrs r!rSz AsyncAdapt_dbapi_cursor.fetchone!s ::::%%' 'r*c| |j}|j}tt|t |Dcgc]}|j c}Scc}wr)rFr}rangeminlenr)r rVrr_s r!rWz!AsyncAdapt_dbapi_cursor.fetchmany'sC <>>D ZZ&+Cc"g,>&?@ @@@sAcdt|j}|jj|Sr)listr}r)r retvals r!rYz AsyncAdapt_dbapi_cursor.fetchall-s%djj!  r*)rr)r(r7r5r7)rrr5r7)r5z!Optional[_DBAPICursorDescription]rg)r2rCr5r6r4rrh)rLrrrr5r)rrr5r6)r5r)rrr2rrrr5r6r5z Iterator[Any]rirjrm)r:r;r<r __slots__rrorrrrnrBrErFsetterrGrrIrNrQrrrdr\rrrrSrWrYrr*r!rxrxsyKI%)T( 22''  -0#0# # (( %%&&''&&#$.&;?<<8< < < <4 < <  *M   PP4P PD' A r*rxc>eZdZdZdZd dZd dZd d dZd dZddZ y)AsyncAdapt_dbapi_ss_cursorrTc~|j1|j|jjd|_yyr)r|r{rIrs r!rIz AsyncAdapt_dbapi_ss_cursor.close7s1 << # KK **, -DL $r*cT|j|jjSr)r{r|rSrs r!rSz#AsyncAdapt_dbapi_ss_cursor.fetchone<{{4<<00233r*NcX|j|jj|S)N)rV)r{r|rWrUs r!rWz$AsyncAdapt_dbapi_ss_cursor.fetchmany?s#{{4<<11t1<==r*cT|j|jjSr)r{r|rYrs r!rYz#AsyncAdapt_dbapi_ss_cursor.fetchallBrr*c#K|jj} |j|j##t$rYywxYwwr)r|rfr{ __anext__StopAsyncIteration)r iterators r!rz#AsyncAdapt_dbapi_ss_cursor.__iter__EsP<<))+ kk("4"4"677&  s(A!AA A  A A  Ar4rir)rVrkr5rrmr) r:r;r<rrrIrSrWrYrrr*r!rr3s%IK 4>4r*rc|eZdZUeZeZeeZ dZ de d<d dZ d ddZ d ddZddZdd Zdd Zdd Zy)r)dbapirrrzcR||_||_tj|_yr)rrzasyncioLockr)r rrs r!rz$AsyncAdapt_dbapi_connection.__init__Xs %%llnr*cJ|r|j|S|j|Sr)_ss_cursor_cls _cursor_cls)r rs r!r(z"AsyncAdapt_dbapi_connection.cursor]s' &&t, ,##D) )r*NcJ|j}|j|||S)z2lots of DBAPIs seem to provide this, so include it)r(rN)r rLrMr(s r!rNz#AsyncAdapt_dbapi_connection.executecs" y*- r*cRtj}|j|d)Nr)sysexc_infowith_traceback)r rrs r!rz-AsyncAdapt_dbapi_connection._handle_exceptionms"<<>""8A;//r*c |j|jjy#t$r}|j |Yd}~yd}~wwxYwr)r{rzr,rrr rs r!r,z$AsyncAdapt_dbapi_connection.rollbackrsC * KK((113 4 *  " "5 ) ) *), AA  Ac |j|jjy#t$r}|j |Yd}~yd}~wwxYwr)r{rzr"rrrs r!r"z"AsyncAdapt_dbapi_connection.commitxsC * KK((//1 2 *  " "5 ) ) *rcV|j|jjyr)r{rzrIrs r!rIz!AsyncAdapt_dbapi_connection.close~s D$$**,-r*)rrrr)F)rrr5rxrrh)rrr5rr4)r:r;r<rxrrr staticmethodrr{rrorr(rNrr,r"rIrr*r!rrNse)K/N * %F+I''- *;?8 0 * * .r*rc eZdZdZeeZy)#AsyncAdaptFallback_dbapi_connectionrN)r:r;r<rrrr{rr*r!rrsI . )Fr*rc4eZdZdZdZddZd dZddZddZy) AsyncAdapt_terminatezAMixin for a AsyncAdapt_dbapi_connection to add terminate support.rc6tr4 |jtj|j y|j y#|j $r5}|j t|tjrYd}~yd}~wwxYwr) rr{rshield_terminate_graceful_close_terminate_handled_exceptions_terminate_force_close isinstanceCancelledError)r es r! terminatezAsyncAdapt_terminate.terminatesy =  GNN4+I+I+KLM  ' ' )557  ++-a!7!789 s2AB#+BBcLtjtjtfS)z\Returns the exceptions that should be handled when calling _graceful_close. )r TimeoutErrorrOSErrorrs r!rz2AsyncAdapt_terminate._terminate_handled_exceptionss$$g&<&rsF"   &-)*";<=/"=X=*5353p44ppf!861."31.h**E* %"%"r*