
    h'                       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 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"y)$z?generic asyncio-adapted versions of DBAPI connection and cursor    )annotationsN)Any)AsyncIterator)Deque)Iterator)NoReturn)Optional)Sequence)TYPE_CHECKING   )AdaptedConnection)await_fallback)
await_only)Protocol)_DBAPICursorDescription)_DBAPIMultiExecuteParams)_DBAPISingleExecuteParams)DBAPIModule)Selfc                  8    e Zd ZdZddZd	dZddZd
dZddZy)AsyncIODBAPIConnectionz^protocol representing an async adapted version of a
    :pep:`249` database connection.


    c                   K   y wN selfs    [/var/www/html/eduruby.in/venv/lib/python3.12/site-packages/sqlalchemy/connectors/asyncio.pycommitzAsyncIODBAPIConnection.commit/           c                     y r   r   )r   argskwargss      r   cursorzAsyncIODBAPIConnection.cursor1           c                   K   y wr   r   r   s    r   rollbackzAsyncIODBAPIConnection.rollback3   r   r    c                     y r   r   r   keys     r   __getattr__z"AsyncIODBAPIConnection.__getattr__5   r%   r&   c                     y r   r   )r   r+   values      r   __setattr__z"AsyncIODBAPIConnection.__setattr__7   r%   r&   NreturnNone)r"   r   r#   r   r1   AsyncIODBAPICursorr+   strr1   r   )r+   r5   r.   r   r1   r2   )	__name__
__module____qualname____doc__r   r$   r(   r,   r/   r   r&   r   r   r   %   s     (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ddZddZddZd dZ	 d	 	 	 	 	 d!dZd"dZd#dZy	)$r3   zZprotocol representing an async adapted version
    of a :pep:`249` database cursor.


    c                     y r   r   r   s    r   
__aenter__zAsyncIODBAPICursor.__aenter__A   r%   r&   c                     y)z(The description attribute of the Cursor.Nr   r   s    r   descriptionzAsyncIODBAPICursor.descriptionC   s    
 	r&   intc                     y r   r   r   s    r   rowcountzAsyncIODBAPICursor.rowcountJ   s    "r&   	arraysize	lastrowidc                   K   y wr   r   r   s    r   closezAsyncIODBAPICursor.closeQ   r   r    Nc                   K   y wr   r   r   	operation
parameterss      r   executezAsyncIODBAPICursor.executeS         r    c                   K   y wr   r   rG   s      r   executemanyzAsyncIODBAPICursor.executemanyY   rK   r    c                   K   y wr   r   r   s    r   fetchonezAsyncIODBAPICursor.fetchone_   r   r    c                   K   y wr   r   r   sizes     r   	fetchmanyzAsyncIODBAPICursor.fetchmanya   r   r    c                   K   y wr   r   r   s    r   fetchallzAsyncIODBAPICursor.fetchallc   r   r    c                   K   y wr   r   )r   sizess     r   setinputsizesz AsyncIODBAPICursor.setinputsizese   r   r    c                     y r   r   )r   rR   columns      r   setoutputsizez AsyncIODBAPICursor.setoutputsizeg   r%   r&   c                   K   y wr   r   )r   procnamerI   s      r   callproczAsyncIODBAPICursor.callproci   s	     r    c                   K   y wr   r   r   s    r   nextsetzAsyncIODBAPICursor.nextsetm   r   r    c                     y r   r   r   s    r   	__aiter__zAsyncIODBAPICursor.__aiter__o   r%   r&   )r1   r   )r1   r   r1   r?   r0   r   rH   r   rI   z#Optional[_DBAPISingleExecuteParams]r1   r   )rH   r   rI   r   r1   r   r1   zOptional[Any]).rR   Optional[int]r1   Sequence[Any]r1   rh   )rW   rh   r1   r2   )rR   r   rZ   r   r1   r2   )r]   r5   rI   rh   r1   r   )r1   zOptional[bool])r1   zAsyncIterator[Any])r6   r7   r8   r9   r<   propertyr>   rA   __annotations__rE   rJ   rM   rO   rS   rU   rX   r[   r^   r`   rb   r   r&   r   r3   r3   :   s     %	   " "NN&
 ;? 8 
	 - 
	 3N2D@ :=)6	 32r&   r3   c                  z    e Zd Zer5ej
                  Zej                  Zej                  Zej                  ZddZ	yy)AsyncAdapt_dbapi_modulec                     y r   r   r*   s     r   r,   z#AsyncAdapt_dbapi_module.__getattr__y   r%   r&   Nr4   )
r6   r7   r8   r   r   ErrorOperationalErrorInterfaceErrorIntegrityErrorr,   r   r&   r   rm   rm   r   s:    !!&77$33$333 r&   rm   c                  h   e Zd ZU dZdZ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                  d&d       Ze	d%d       Zd'dZ	 d(	 	 	 	 	 d)dZ	 	 	 	 	 	 d*dZ	 	 	 	 	 	 d)dZ	 	 	 	 	 	 d*dZd'dZd+dZd,dZd-dZd.dZd/dZd(d0dZd1d Zy)2AsyncAdapt_dbapi_cursorF)_adapt_connection_connectionawait__cursor_rowsr3   rx   AsyncAdapt_dbapi_connectionru   r   rv   z
Deque[Any]ry   c                   || _         |j                  | _        |j                  | _        | j                  | j                        }| j	                  |      | _        | j                  st        j                         | _	        y y r   )
ru   rv   rw   _make_new_cursor_aenter_cursorrx   server_sidecollectionsdequery   )r   adapt_connectionr$   s      r   __init__z AsyncAdapt_dbapi_cursor.__init__   sk    !1+77&--&&t'7'78**62$**,DJ  r&   c                @    | j                  |j                               S r   )rw   r<   )r   r$   s     r   r}   z&AsyncAdapt_dbapi_cursor._aenter_cursor   s    {{6,,.//r&   c                "    |j                         S r   )r$   )r   
connections     r   r|   z(AsyncAdapt_dbapi_cursor._make_new_cursor   s       ""r&   c                .    | j                   j                  S r   )rx   r>   r   s    r   r>   z#AsyncAdapt_dbapi_cursor.description   s    ||'''r&   c                .    | j                   j                  S r   )rx   rA   r   s    r   rA   z AsyncAdapt_dbapi_cursor.rowcount   s    ||$$$r&   c                .    | j                   j                  S r   rx   rB   r   s    r   rB   z!AsyncAdapt_dbapi_cursor.arraysize       ||%%%r&   c                &    || j                   _        y r   r   )r   r.   s     r   rB   z!AsyncAdapt_dbapi_cursor.arraysize   s    !&r&   c                .    | j                   j                  S r   )rx   rC   r   s    r   rC   z!AsyncAdapt_dbapi_cursor.lastrowid   r   r&   c                8    | j                   j                          y r   )ry   clearr   s    r   rE   zAsyncAdapt_dbapi_cursor.close   s     	

r&   Nc                    	 | j                  | j                  ||            S # t        $ r%}| j                  j	                  |       Y d }~y d }~ww xY wr   )rw   _execute_async	Exceptionru   _handle_exception)r   rH   rI   errors       r   rJ   zAsyncAdapt_dbapi_cursor.execute   sJ    
	<;;t229jIJJ 	<""44U;;	<    # 	AAAc                    	 | j                  | j                  ||            S # t        $ r%}| j                  j	                  |       Y d }~y d }~ww xY wr   )rw   _executemany_asyncr   ru   r   )r   rH   seq_of_parametersr   s       r   rM   z#AsyncAdapt_dbapi_cursor.executemany   sR    
	<;;''	3DE   	<""44U;;	<r   c                  K   | j                   j                  4 d {    |$| j                  j                  |       d {   }n$| j                  j                  ||       d {   }| j                  j                  rF| j
                  s:t        j                  | j                  j                          d {         | _	        |cd d d       d {    S 7 7 7 w7 &7 # 1 d {  7  sw Y   y xY wwr   )
ru   _execute_mutexrx   rJ   r>   r~   r   r   rU   ry   )r   rH   rI   results       r   r   z&AsyncAdapt_dbapi_cursor._execute_async   s      ))88 	 	!#||33I>>#||33IzJJ||''0@0@(..T\\5J5J5L/LM
	 	 	>J 0M	 	 	 	s{   C:CC:!C%C$C%'C(AC%:C!
;C%	C:C#C:C%C%!C%#C:%C7+C.,C73C:c                   K   | j                   j                  4 d {    | j                  j                  ||       d {   cd d d       d {    S 7 97 7 	# 1 d {  7  sw Y   y xY wwr   )ru   r   rx   rM   )r   rH   r   s      r   r   z*AsyncAdapt_dbapi_cursor._executemany_async   sk     
 ))88 	P 	P11)=NOO	P 	P 	PO	P 	P 	P 	PsV   A2AA2 AAAA2AA2AA2A/#A&$A/+A2c                    | j                  | j                  j                                | j                  j                  rO| j                  sBt        j                  | j                  | j                  j                                     | _        y y y r   )	rw   rx   r`   r>   r~   r   r   rU   ry   r   s    r   r`   zAsyncAdapt_dbapi_cursor.nextset   sc    DLL((*+<<##D,<,<$**DLL1134DJ -=#r&   c                R    | j                   | j                  j                  |       S r   )rw   rx   rX   )r   
inputsizess     r   rX   z%AsyncAdapt_dbapi_cursor.setinputsizes   s%    
 {{54<<55zBCCr&   c                    | S r   r   r   s    r   	__enter__z!AsyncAdapt_dbapi_cursor.__enter__   s    r&   c                $    | j                          y r   )rE   )r   type_r.   	tracebacks       r   __exit__z AsyncAdapt_dbapi_cursor.__exit__   s    

r&   c              #  x   K   | j                   r*| j                   j                          | j                   r)y y wr   ry   popleftr   s    r   __iter__z AsyncAdapt_dbapi_cursor.__iter__   s)     jj**$$&& jjs   5::c                P    | j                   r| j                   j                         S y r   r   r   s    r   rO   z AsyncAdapt_dbapi_cursor.fetchone   s    ::::%%''r&   c                    || j                   }| j                  }t        t        |t	        |                  D cg c]  }|j                          c}S c c}w r   )rB   ry   rangeminlenr   )r   rR   rr_s       r   rS   z!AsyncAdapt_dbapi_cursor.fetchmany  sC    <>>DZZ&+Cc"g,>&?@

@@@s   Ac                d    t        | j                        }| j                  j                          |S r   )listry   r   )r   retvals     r   rU   z AsyncAdapt_dbapi_cursor.fetchall  s%    djj!

r&   )r   rz   )r$   r3   r1   r3   )r   r   r1   r3   )r1   z!Optional[_DBAPICursorDescription]rc   )r.   r?   r1   r2   r0   r   rd   )rH   r   r   r   r1   r   )r   r   r1   r2   )r1   r   )r   r   r.   r   r   r   r1   r2   r1   zIterator[Any]re   rf   ri   )r6   r7   r8   r~   	__slots__rk   r   r}   r|   rj   r>   rA   rB   setterrC   rE   rJ   rM   r   r   r`   rX   r   r   r   rO   rS   rU   r   r&   r   rt   rt   |   si   KI  22''
-0#0#	#
 ( ( % % & & ' ' & & ;?<< 8< 
	<
<
< 4
< 
	
<*M	PP 4P 
	PD'Ar&   rt   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	y)AsyncAdapt_dbapi_ss_cursorr   Tc                ~    | j                   1| j                  | j                   j                                d | _         y y r   )rx   rw   rE   r   s    r   rE   z AsyncAdapt_dbapi_ss_cursor.close  s1    <<#KK**,-DL $r&   c                T    | j                  | j                  j                               S r   )rw   rx   rO   r   s    r   rO   z#AsyncAdapt_dbapi_ss_cursor.fetchone      {{4<<00233r&   Nc                X    | j                  | j                  j                  |            S )N)rR   )rw   rx   rS   rQ   s     r   rS   z$AsyncAdapt_dbapi_ss_cursor.fetchmany  s#    {{4<<11t1<==r&   c                T    | j                  | j                  j                               S r   )rw   rx   rU   r   s    r   rU   z#AsyncAdapt_dbapi_ss_cursor.fetchall  r   r&   c              #     K   | j                   j                         }	 	 | j                  |j                                ## t        $ r Y y w xY wwr   )rx   rb   rw   	__anext__StopAsyncIteration)r   iterators     r   r   z#AsyncAdapt_dbapi_ss_cursor.__iter__  sP     <<))+kk("4"4"677  & s(   A!A  A	A
AAAr0   re   r   )rR   rg   r1   r   ri   r   )
r6   r7   r8   r   r~   rE   rO   rS   rU   r   r   r&   r   r   r     s%    IK 
4>4r&   r   c                  |    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y)rz   )dbapir   r   rv   c                R    || _         || _        t        j                         | _        y r   )r   rv   asyncioLockr   )r   r   r   s      r   r   z$AsyncAdapt_dbapi_connection.__init__2  s    
%%llnr&   c                J    |r| j                  |       S | j                  |       S r   )_ss_cursor_cls_cursor_cls)r   r~   s     r   r$   z"AsyncAdapt_dbapi_connection.cursor7  s'    &&t,,##D))r&   Nc                J    | j                         }|j                  ||       |S )z2lots of DBAPIs seem to provide this, so include it)r$   rJ   )r   rH   rI   r$   s       r   rJ   z#AsyncAdapt_dbapi_connection.execute=  s"     y*-r&   c                R    t        j                         }|j                  |d         )Nr   )sysexc_infowith_traceback)r   r   r   s      r   r   z-AsyncAdapt_dbapi_connection._handle_exceptionG  s"    <<>""8A;//r&   c                    	 | j                  | j                  j                                y # t        $ r}| j	                  |       Y d }~y d }~ww xY wr   )rw   rv   r(   r   r   r   r   s     r   r(   z$AsyncAdapt_dbapi_connection.rollbackL  sC    	*KK((1134 	*""5))	*   ), 	AAAc                    	 | j                  | j                  j                                y # t        $ r}| j	                  |       Y d }~y d }~ww xY wr   )rw   rv   r   r   r   r   s     r   r   z"AsyncAdapt_dbapi_connection.commitR  sC    	*KK((//12 	*""5))	*r   c                V    | j                  | j                  j                                y r   )rw   rv   rE   r   s    r   rE   z!AsyncAdapt_dbapi_connection.closeX  s    D$$**,-r&   )r   r   r   r   )F)r~   boolr1   rt   r   rd   )r   r   r1   r   r0   )r6   r7   r8   rt   r   r   r   staticmethodr   rw   r   rk   r   r$   rJ   r   r(   r   rE   r   r&   r   rz   rz   (  se    )K/N*%F+I''-
* ;? 8 
	0
**.r&   rz   c                       e Zd ZdZ ee      Zy)#AsyncAdaptFallback_dbapi_connectionr   N)r6   r7   r8   r   r   r   rw   r   r&   r   r   r   \  s    I.)Fr&   r   )#r9   
__future__r   r   r   r   typingr   r   r   r   r   r	   r
   r   enginer   util.concurrencyr   r   util.typingr   engine.interfacesr   r   r   r   r   r   r3   rm   rt   r   rz   r   r   r&   r   <module>r      s    F "   
           & - ) ";<=/"=X =*53 53p4 4N Nb!8 61."3 1.h**E *r&   