
    l i3                       d Z ddlmZ ddlZddlZddlZddlmZ ddlmZ ddlm	Z	 ddlm
Z
 ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ erddlmZ ddlmZ ddlmZ ddlmZ ddlm Z   G d de          Z! G d de          Z" G d d          Z# G d  d!          Z$ G d" d#e$          Z% G d$ d%e          Z& G d& d'e&          Z' G d( d)          Z(dS )*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)Selfc                  :    e Zd ZdZddZdd	Zdd
ZddZddZdS )AsyncIODBAPIConnectionz^protocol representing an async adapted version of a
    :pep:`249` database connection.


    returnNonec                
   K   d S N selfs    T/var/www/findabus/venv/lib/python3.11/site-packages/sqlalchemy/connectors/asyncio.pycommitzAsyncIODBAPIConnection.commit3   
            argsr   kwargsAsyncIODBAPICursorc                    d S r   r    )r"   r'   r(   s      r#   cursorzAsyncIODBAPIConnection.cursor5         r&   c                
   K   d S r   r    r!   s    r#   rollbackzAsyncIODBAPIConnection.rollback7   r%   r&   keystrc                    d S r   r    r"   r/   s     r#   __getattr__z"AsyncIODBAPIConnection.__getattr__9   r,   r&   valuec                    d S r   r    )r"   r/   r4   s      r#   __setattr__z"AsyncIODBAPIConnection.__setattr__;   r,   r&   Nr   r   )r'   r   r(   r   r   r)   r/   r0   r   r   )r/   r0   r4   r   r   r   )	__name__
__module____qualname____doc__r$   r+   r.   r3   r6   r    r&   r#   r   r   )   sX          ('''JJJJ))))////<<<<<<r&   r   c                      e Zd ZU dZd'dZed(d            Zed)d            Zded	<   ded
<   d*dZ		 d+d,dZ
d-dZd.dZd/d0dZd1dZd2dZd3dZ	 d/d4d"Zd5d$Zd6d&ZdS )7r)   zZprotocol representing an async adapted version
    of a :pep:`249` database cursor.


    r   r   c                    d S r   r    r!   s    r#   
__aenter__zAsyncIODBAPICursor.__aenter__E   r,   r&   r   c                    dS )z(The description attribute of the Cursor.Nr    r!   s    r#   descriptionzAsyncIODBAPICursor.descriptionG   s	    
 	r&   intc                    d S r   r    r!   s    r#   rowcountzAsyncIODBAPICursor.rowcountN   s    "sr&   	arraysize	lastrowidr   c                
   K   d S r   r    r!   s    r#   closezAsyncIODBAPICursor.closeU   r%   r&   N	operation
parameters#Optional[_DBAPISingleExecuteParams]c                
   K   d S r   r    r"   rI   rJ   s      r#   executezAsyncIODBAPICursor.executeW          cr&   r   c                
   K   d S r   r    rM   s      r#   executemanyzAsyncIODBAPICursor.executemany]   rO   r&   Optional[Any]c                
   K   d S r   r    r!   s    r#   fetchonezAsyncIODBAPICursor.fetchonec   r%   r&   .sizeOptional[int]Sequence[Any]c                
   K   d S r   r    r"   rU   s     r#   	fetchmanyzAsyncIODBAPICursor.fetchmanye   r%   r&   c                
   K   d S r   r    r!   s    r#   fetchallzAsyncIODBAPICursor.fetchallg   r%   r&   sizesc                
   K   d S r   r    )r"   r]   s     r#   setinputsizesz AsyncIODBAPICursor.setinputsizesi   r%   r&   columnc                    d S r   r    )r"   rU   r`   s      r#   setoutputsizez AsyncIODBAPICursor.setoutputsizek   r,   r&   procnamer0   c                
   K   d S r   r    )r"   rc   rJ   s      r#   callproczAsyncIODBAPICursor.callprocm   s      cr&   Optional[bool]c                
   K   d S r   r    r!   s    r#   nextsetzAsyncIODBAPICursor.nextsetq   r%   r&   AsyncIterator[Any]c                    d S r   r    r!   s    r#   	__aiter__zAsyncIODBAPICursor.__aiter__s   r,   r&   )r   r   )r   r   r   rB   r7   r   rI   r   rJ   rK   r   r   )rI   r   rJ   r   r   r   r   rR   ).rU   rV   r   rW   r   rW   )r]   rW   r   r   )rU   r   r`   r   r   r   )rc   r0   rJ   rW   r   r   )r   rf   )r   ri   )r9   r:   r;   r<   r?   propertyrA   rD   __annotations__rH   rN   rQ   rT   rZ   r\   r_   rb   re   rh   rk   r    r&   r#   r)   r)   >   s)          %$$$   X """ X"NNNNNN&&&&
 ;?        3222NNNNN2222DDDD@@@@ :=     3222222222r&   r)   c                  V    e Zd Zer"ej        Zej        Zej        Zej        ZddZ	dS dS )AsyncAdapt_dbapi_moduler/   r0   r   r   c                    d S r   r    r2   s     r#   r3   z#AsyncAdapt_dbapi_module.__getattr__}   r,   r&   Nr8   )
r9   r:   r;   r   r   ErrorOperationalErrorInterfaceErrorIntegrityErrorr3   r    r&   r#   rt   rt   v   sO         4!&7$3$33333334 4r&   rt   c                  ^   e Zd ZU dZdZdZded<   ded<   ded	<   d
ed<   ded<   d<dZd=dZd>dZ	e
d?d            Ze
d@d            Ze
d@d            Zej        dAd            Ze
d@d            ZdBdZdBdZ	 dCdDd%ZdEd(ZdDd)ZdEd*ZdBd+ZdFd-ZdGd/ZdHd2ZdId4ZdJd6ZdCdKd:ZdLd;Zd S )MAsyncAdapt_dbapi_cursorF)_adapt_connection_connectionawait__cursor_rows_soft_closed_memoizedTbool_awaitable_cursor_closer)   r   AsyncAdapt_dbapi_connectionr|   r   r}   z
Deque[Any]r   adapt_connectionc                   || _         |j        | _        |j        | _        |                     | j                  }|                     |          | _        t          | _        | j        st          j
                    | _        d S d S r   )r|   r}   r~   _make_new_cursor_aenter_cursorr   r   r   server_sidecollectionsdequer   )r"   r   r+   s      r#   __init__z AsyncAdapt_dbapi_cursor.__init__   s{    !1+7&-&&t'788**622%/" 	-$*,,DJJJ	- 	-r&   r+   r   c                P    |                      |                                          S r   )r~   r?   )r"   r+   s     r#   r   z&AsyncAdapt_dbapi_cursor._aenter_cursor   s     {{6,,..///r&   
connectionc                *    |                                 S r   )r+   )r"   r   s     r#   r   z(AsyncAdapt_dbapi_cursor._make_new_cursor   s       """r&   !Optional[_DBAPICursorDescription]c                F    d| j         v r| j         d         S | j        j        S )NrA   )r   r   rA   r!   s    r#   rA   z#AsyncAdapt_dbapi_cursor.description   s)    D666-m<<|''r&   rB   c                    | j         j        S r   )r   rD   r!   s    r#   rD   z AsyncAdapt_dbapi_cursor.rowcount   s    |$$r&   c                    | j         j        S r   r   rE   r!   s    r#   rE   z!AsyncAdapt_dbapi_cursor.arraysize       |%%r&   r4   r   c                    || j         _        d S r   r   )r"   r4   s     r#   rE   z!AsyncAdapt_dbapi_cursor.arraysize   s    !&r&   c                    | j         j        S r   )r   rF   r!   s    r#   rF   z!AsyncAdapt_dbapi_cursor.lastrowid   r   r&   c                   K   | j         r| j        rdS | j                            d| j        j        i          | _        | j                                         d{V  dS )zclose the cursor but keep the results pending, and memoize the
        description.

        .. versionadded:: 2.0.44

        NrA   )r   r   r   unionr   rA   rH   r!   s    r#   _async_soft_closez)AsyncAdapt_dbapi_cursor._async_soft_close   sz       + 	t/? 	F%)%?%E%Et|7&
 &
"
 l  """""""""""r&   c                .   | j                                          | j        t          | j                  rd S | j        s| j                                         d S t                      r.|                     | j                                                   d S d S r   )	r   clearr   r   r   r   rH   r   r~   r!   s    r#   rH   zAsyncAdapt_dbapi_cursor.close   s    
 <4(B#C#CF+ 	.L     ]] 	.KK**,,-----	. 	.r&   NrI   r   rJ   rK   c                    	 |                      |                     ||                    S # t          $ r%}| j                            |           Y d }~d S d }~ww xY wr   )r~   _execute_async	Exceptionr|   _handle_exception)r"   rI   rJ   errors       r#   rN   zAsyncAdapt_dbapi_cursor.execute   sq    
	<;;t229jIIJJJ 	< 	< 	<"44U;;;;;;;;;	<   (+ 
AAAseq_of_parametersr   c                    	 |                      |                     ||                    S # t          $ r%}| j                            |           Y d }~d S d }~ww xY wr   )r~   _executemany_asyncr   r|   r   )r"   rI   r   r   s       r#   rQ   z#AsyncAdapt_dbapi_cursor.executemany   s{    
	<;;''	3DEE    	< 	< 	<"44U;;;;;;;;;	<r   c                  K   | j         j        4 d {V  |!| j                            |           d {V }n!| j                            ||           d {V }| j        j        r=| j        s6t          j        | j                                         d {V           | _	        |cd d d           d {V  S # 1 d {V swxY w Y   d S r   )
r|   _execute_mutexr   rN   rA   r   r   r   r\   r   )r"   rI   rJ   results       r#   r   z&AsyncAdapt_dbapi_cursor._execute_async   sx      )8 	 	 	 	 	 	 	 	!#|33I>>>>>>>>#|33IzJJJJJJJJ|' N0@ N(.T\5J5J5L5L/L/L/L/L/L/LMM
	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   BB77
CCc                   K   | j         j        4 d {V  | j                            ||           d {V cd d d           d {V  S # 1 d {V swxY w Y   d S r   )r|   r   r   rQ   )r"   rI   r   s      r#   r   z*AsyncAdapt_dbapi_cursor._executemany_async  s      
 )8 	P 	P 	P 	P 	P 	P 	P 	P11)=NOOOOOOOO	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	Ps   !A		
AAc                   |                      | j                                                   | j        j        rL| j        sGt          j        |                      | j                                                            | _        d S d S d S r   )	r~   r   rh   rA   r   r   r   r\   r   r!   s    r#   rh   zAsyncAdapt_dbapi_cursor.nextset	  s    DL((**+++<# 	D,< 	$*DL113344 DJJJ	 	 	 	r&   
inputsizesc                F    |                       | j        j        |           S r   )r~   r   r_   )r"   r   s     r#   r_   z%AsyncAdapt_dbapi_cursor.setinputsizes  s#    
 {{54<5zBCCCr&   r   c                    | S r   r    r!   s    r#   	__enter__z!AsyncAdapt_dbapi_cursor.__enter__  s    r&   type_	tracebackc                .    |                                   d S r   )rH   )r"   r   r4   r   s       r#   __exit__z AsyncAdapt_dbapi_cursor.__exit__  s    

r&   Iterator[Any]c              #  `   K   | j         r$| j                                         V  | j         "d S d S r   r   popleftr!   s    r#   __iter__z AsyncAdapt_dbapi_cursor.__iter__  sJ      j 	'*$$&&&&& j 	' 	' 	' 	' 	'r&   rR   c                F    | j         r| j                                         S d S r   r   r!   s    r#   rT   z AsyncAdapt_dbapi_cursor.fetchone!  s%    : 	:%%'''4r&   rU   rV   rW   c           	         || j         }| j        fdt          t          |t	                                        D             S )Nc                8    g | ]}                                 S r    )r   ).0_rrs     r#   
<listcomp>z5AsyncAdapt_dbapi_cursor.fetchmany.<locals>.<listcomp>+  s!    @@@

@@@r&   )rE   r   rangeminlen)r"   rU   r   s     @r#   rZ   z!AsyncAdapt_dbapi_cursor.fetchmany'  sH    <>DZ@@@@eCc"gg,>,>&?&?@@@@r&   c                `    t          | j                  }| j                                         |S r   )listr   r   )r"   retvals     r#   r\   z AsyncAdapt_dbapi_cursor.fetchall-  s*    dj!!
r&   )r   r   )r+   r)   r   r)   )r   r   r   r)   )r   r   rl   )r4   rB   r   r   r7   r   rm   )rI   r   r   r   r   r   )r   r   r   r   )r   r   )r   r   r4   r   r   r   r   r   r   r   rn   ro   rp   )r9   r:   r;   r   	__slots__r   rr   r   r   r   rq   rA   rD   rE   setterrF   r   rH   rN   rQ   r   r   rh   r_   r   r   r   rT   rZ   r\   r    r&   r#   r{   r{      sz        KI %)((((2222''''
- 
- 
- 
-0 0 0 0# # # #
 ( ( ( X(
 % % % X% & & & X& ' ' ' ' & & & X&# # # #$. . . .& ;?< < < < <
< 
< 
< 
<   P P P P   D D D D      ' ' ' '   A A A A A     r&   r{   c                  @    e Zd ZdZdZddZddZdddZddZddZ	dS )AsyncAdapt_dbapi_ss_cursorr    Tr   r   c                ~    | j         5|                     | j                                                    d | _         d S d S r   )r   r~   rH   r!   s    r#   rH   z AsyncAdapt_dbapi_ss_cursor.close7  s=    <#KK**,,---DLLL $#r&   rR   c                Z    |                      | j                                                  S r   )r~   r   rT   r!   s    r#   rT   z#AsyncAdapt_dbapi_ss_cursor.fetchone<  "    {{4<0022333r&   NrU   rV   r   c                ^    |                      | j                            |                    S )N)rU   )r~   r   rZ   rY   s     r#   rZ   z$AsyncAdapt_dbapi_ss_cursor.fetchmany?  s'    {{4<11t1<<===r&   rW   c                Z    |                      | j                                                  S r   )r~   r   r\   r!   s    r#   r\   z#AsyncAdapt_dbapi_ss_cursor.fetchallB  r   r&   r   c              #     K   | j                                         }	 	 |                     |                                          V  n# t          $ r Y d S w xY w=r   )r   rk   r~   	__anext__StopAsyncIteration)r"   iterators     r#   r   z#AsyncAdapt_dbapi_ss_cursor.__iter__E  sq      <))++	kk("4"4"6"6777777%   	s   )A 
AAr7   rn   r   )rU   rV   r   r   rp   r   )
r9   r:   r;   r   r   rH   rT   rZ   r\   r   r    r&   r#   r   r   3  s        IK       
4 4 4 4> > > > >4 4 4 4     r&   r   c                  z    e Zd ZU eZeZ ee          Z	dZ
ded<   ddZdddZ	 dddZd dZd!dZd!dZd!dZdS )"r   )dbapir   r   r}   r   r   r   c                R    || _         || _        t          j                    | _        d S r   )r   r}   asyncioLockr   )r"   r   r   s      r#   r   z$AsyncAdapt_dbapi_connection.__init__X  s%    
%%lnnr&   Fr   r   r   r{   c                Z    |r|                      |           S |                     |           S r   )_ss_cursor_cls_cursor_cls)r"   r   s     r#   r+   z"AsyncAdapt_dbapi_connection.cursor]  s2     	*&&t,,,##D)))r&   NrI   rJ   rK   c                Z    |                                  }|                    ||           |S )z2lots of DBAPIs seem to provide this, so include it)r+   rN   )r"   rI   rJ   r+   s       r#   rN   z#AsyncAdapt_dbapi_connection.executec  s*     y*---r&   r   r   r   c                ^    t          j                    }|                    |d                   )Nr   )sysexc_infowith_traceback)r"   r   r   s      r#   r   z-AsyncAdapt_dbapi_connection._handle_exceptionm  s%    <>>""8A;///r&   r   c                    	 |                      | j                                                   d S # t          $ r }|                     |           Y d }~d S d }~ww xY wr   )r~   r}   r.   r   r   r"   r   s     r#   r.   z$AsyncAdapt_dbapi_connection.rollbackr  ss    	*KK(113344444 	* 	* 	*""5)))))))))	*   ,0 
AAAc                    	 |                      | j                                                   d S # t          $ r }|                     |           Y d }~d S d }~ww xY wr   )r~   r}   r$   r   r   r   s     r#   r$   z"AsyncAdapt_dbapi_connection.commitx  ss    	*KK(//1122222 	* 	* 	*""5)))))))))	*r   c                ^    |                      | j                                                   d S r   )r~   r}   rH   r!   s    r#   rH   z!AsyncAdapt_dbapi_connection.close~  s)    D$**,,-----r&   )r   r   r   r   )F)r   r   r   r{   r   rm   )r   r   r   r   r7   )r9   r:   r;   r{   r   r   r   staticmethodr   r~   r   rr   r   r+   rN   r   r.   r$   rH   r    r&   r#   r   r   N  s         )K/N\*%%F+I''''- - - -
* * * * * ;?    0 0 0 0
* * * ** * * *. . . . . .r&   r   c                  (    e Zd ZdZ ee          ZdS )#AsyncAdaptFallback_dbapi_connectionr    N)r9   r:   r;   r   r   r   r~   r    r&   r#   r   r     s"        I\.))FFFr&   r   c                  6    e Zd ZdZdZddZddZddZdd	Zd
S )AsyncAdapt_terminatezAMixin for a AsyncAdapt_dbapi_connection to add terminate support.r    r   r   c                j   t                      r	 |                     t          j        |                                                      d S # |                                 $ r:}|                                  t          |t          j                  r Y d }~d S d }~ww xY w|                                  d S r   )	r   r~   r   shield_terminate_graceful_close_terminate_handled_exceptions_terminate_force_close
isinstanceCancelledError)r"   es     r#   	terminatezAsyncAdapt_terminate.terminate  s    == 	*GN4+I+I+K+KLLMMMMM5577 	 	 	 ++---a!788      	 '')))))s   9A B"/BBTuple[Type[BaseException], ...]c                >    t           j        t           j        t          fS )z\Returns the exceptions that should be handled when
        calling _graceful_close.
        )r   TimeoutErrorr   OSErrorr!   s    r#   r   z2AsyncAdapt_terminate._terminate_handled_exceptions  s     $g&<gFFr&   c                   K   t           )z"Try to close connection gracefullyNotImplementedErrorr!   s    r#   r   z.AsyncAdapt_terminate._terminate_graceful_close  s      !!r&   c                    t           )zTerminate the connectionr   r!   s    r#   r   z+AsyncAdapt_terminate._terminate_force_close  s    !!r&   Nr7   )r   r   )	r9   r:   r;   r<   r   r   r   r   r   r    r&   r#   r   r     ss        KKI* * * *(G G G G" " " "" " " " " "r&   r   ))r<   
__future__r   r   r   r   typingr   r   r   r   r   r	   r
   r   r   r   enginer   utilr   util.concurrencyr   r   r   util.typingr   engine.interfacesr   r   r   r   r   r   r)   rt   r{   r   r   r   r   r    r&   r#   <module>r     s"   F E " " " " " "      



                                                                         & & & & & &       - - - - - - ) ) ) ) ) ) * * * * * * " " " " " " #;;;;;;<<<<<<======//////""""""= = = = =X = = =*53 53 53 53 53 53 53 53p4 4 4 4 4 4 4 4p p p p p p p pf    !8   61. 1. 1. 1. 1."3 1. 1. 1.h* * * * **E * * *%" %" %" %" %" %" %" %" %" %"r&   