
    =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    m/var/www/html/phonemate/phone_mate_backend/venv/lib/python3.12/site-packages/sqlalchemy/connectors/asyncio.pycommitzAsyncIODBAPIConnection.commit/   s     C   c                     y r   r   )r   argskwargss      r   cursorzAsyncIODBAPIConnection.cursor1   s    s    c                   K   y wr   r   r   s    r   rollbackzAsyncIODBAPIConnection.rollback3   s     cr   c                     y r   r   r   keys     r   __getattr__z"AsyncIODBAPIConnection.__getattr__5   s    Cr$   c                     y r   r   )r   r)   values      r   __setattr__z"AsyncIODBAPIConnection.__setattr__7   s    r$   NreturnNone)r!   r   r"   r   r/   AsyncIODBAPICursorr)   strr/   r   )r)   r3   r,   r   r/   r0   )	__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	)$r1   zZprotocol representing an async adapted version
    of a :pep:`249` database cursor.


    c                     y r   r   r   s    r   
__aenter__zAsyncIODBAPICursor.__aenter__A   s    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   s     3r   Nc                   K   y wr   r   r   	operation
parameterss      r   executezAsyncIODBAPICursor.executeS         r   c                   K   y wr   r   rE   s      r   executemanyzAsyncIODBAPICursor.executemanyY   rI   r   c                   K   y wr   r   r   s    r   fetchonezAsyncIODBAPICursor.fetchone_        sr   c                   K   y wr   r   r   sizes     r   	fetchmanyzAsyncIODBAPICursor.fetchmanya   s     3r   c                   K   y wr   r   r   s    r   fetchallzAsyncIODBAPICursor.fetchallc   rN   r   c                   K   y wr   r   )r   sizess     r   setinputsizesz AsyncIODBAPICursor.setinputsizese   s     r   c                     y r   r   )r   rQ   columns      r   setoutputsizez AsyncIODBAPICursor.setoutputsizeg   s    Sr$   c                   K   y wr   r   )r   procnamerG   s      r   callproczAsyncIODBAPICursor.callproci   s	     r   c                   K   y wr   r   r   s    r   nextsetzAsyncIODBAPICursor.nextsetm   rN   r   c                     y r   r   r   s    r   	__aiter__zAsyncIODBAPICursor.__aiter__o   s    sr$   )r/   r   )r/   r   r/   r=   r.   r   rF   r   rG   z#Optional[_DBAPISingleExecuteParams]r/   r   )rF   r   rG   r   r/   r   r/   zOptional[Any]).rQ   Optional[int]r/   Sequence[Any]r/   rg   )rV   rg   r/   r0   )rQ   r   rY   r   r/   r0   )r\   r3   rG   rg   r/   r   )r/   zOptional[bool])r/   zAsyncIterator[Any])r4   r5   r6   r7   r:   propertyr<   r?   __annotations__rC   rH   rK   rM   rR   rT   rW   rZ   r]   r_   ra   r   r$   r   r1   r1   :   s     %	   " "NN&
 ;? 8 
	 - 
	 3N2D@ :=)6	 32r$   r1   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   s    r$   Nr2   )
r4   r5   r6   r   r   ErrorOperationalErrorInterfaceErrorIntegrityErrorr*   r   r$   r   rl   rl   r   s:    !!&77$33$333 r$   rl   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_rowsr1   rw   AsyncAdapt_dbapi_connectionrt   r   ru   z
Deque[Any]rx   c                   || _         |j                  | _        |j                  | _        | j                  | j                        }| j	                  |      | _        | j                  st        j                         | _	        y y r   )
rt   ru   rv   _make_new_cursor_aenter_cursorrw   server_sidecollectionsdequerx   )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   )rv   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   )rw   r<   r   s    r   r<   z#AsyncAdapt_dbapi_cursor.description   s    ||'''r$   c                .    | j                   j                  S r   )rw   r?   r   s    r   r?   z AsyncAdapt_dbapi_cursor.rowcount   s    ||$$$r$   c                .    | j                   j                  S r   rw   r@   r   s    r   r@   z!AsyncAdapt_dbapi_cursor.arraysize       ||%%%r$   c                &    || j                   _        y r   r   )r   r,   s     r   r@   z!AsyncAdapt_dbapi_cursor.arraysize   s    !&r$   c                .    | j                   j                  S r   )rw   rA   r   s    r   rA   z!AsyncAdapt_dbapi_cursor.lastrowid   r   r$   c                8    | j                   j                          y r   )rx   clearr   s    r   rC   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   )rv   _execute_async	Exceptionrt   _handle_exception)r   rF   rG   errors       r   rH   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   )rv   _executemany_asyncr   rt   r   )r   rF   seq_of_parametersr   s       r   rK   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   )
rt   _execute_mutexrw   rH   r<   r}   r~   r   rT   rx   )r   rF   rG   results       r   r   z&AsyncAdapt_dbapi_cursor._execute_async   s      ))888!#||33I>>#||33IzJJ||''0@0@(..T\\5J5J5L/LM
 988>J 0M 9888s{   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   )rt   r   rw   rK   )r   rF   r   s      r   r   z*AsyncAdapt_dbapi_cursor._executemany_async   sQ     
 ))88811)=NOO 988O 9888sV   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   )	rv   rw   r_   r<   r}   r~   r   rT   rx   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   )rv   rw   rW   )r   
inputsizess     r   rW   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   )rC   )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   rx   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   rM   z AsyncAdapt_dbapi_cursor.fetchone   s    ::::%%''r$   c                    || j                   }| j                  }t        t        |t	        |                  D cg c]  }|j                          c}S c c}w r   )r@   rx   rangeminlenr   )r   rQ   rr_s       r   rR   z!AsyncAdapt_dbapi_cursor.fetchmany  sI    <>>DZZ&+Cc"g,>&?@&?

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

r$   )r   ry   )r#   r1   r/   r1   )r   r   r/   r1   )r/   z!Optional[_DBAPICursorDescription]rb   )r,   r=   r/   r0   r.   r   rc   )rF   r   r   r   r/   r   )r   r   r/   r0   )r/   r   )r   r   r,   r   r   r   r/   r0   r/   zIterator[Any]rd   re   rh   )r4   r5   r6   r}   	__slots__rj   r   r|   r{   ri   r<   r?   r@   setterrA   rC   rH   rK   r   r   r_   rW   r   r   r   rM   rR   rT   r   r$   r   rs   rs   |   si   KI  22''
-0#0#	#
 ( ( % % & & ' ' & & ;?<< 8< 
	<
<
< 4
< 
	
<*M	PP 4P 
	PD'Ar$   rs   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   )rw   rv   rC   r   s    r   rC   z AsyncAdapt_dbapi_ss_cursor.close  s1    <<#KK**,-DL $r$   c                T    | j                  | j                  j                               S r   )rv   rw   rM   r   s    r   rM   z#AsyncAdapt_dbapi_ss_cursor.fetchone      {{4<<00233r$   Nc                X    | j                  | j                  j                  |            S )N)rQ   )rv   rw   rR   rP   s     r   rR   z$AsyncAdapt_dbapi_ss_cursor.fetchmany  s#    {{4<<11t1<==r$   c                T    | j                  | j                  j                               S r   )rv   rw   rT   r   s    r   rT   z#AsyncAdapt_dbapi_ss_cursor.fetchall  r   r$   c              #     K   | j                   j                         }	 	 | j                  |j                                ## t        $ r Y y w xY wwr   )rw   ra   rv   	__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r.   rd   r   )rQ   rf   r/   r   rh   r   )
r4   r5   r6   r   r}   rC   rM   rR   rT   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)ry   )dbapir   r   ru   c                R    || _         || _        t        j                         | _        y r   )r   ru   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#   rH   )r   rF   rG   r#   s       r   rH   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   )rv   ru   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   )rv   ru   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   )rv   ru   rC   r   s    r   rC   z!AsyncAdapt_dbapi_connection.closeX  s    D$$**,-r$   )r   r   r   r   )F)r}   boolr/   rs   r   rc   )r   r   r/   r   r.   )r4   r5   r6   rs   r   r   r   staticmethodr   rv   r   rj   r   r#   rH   r   r&   r   rC   r   r$   r   ry   ry   (  se    )K/N*%F+I''-
* ;? 8 
	0
**.r$   ry   c                       e Zd ZdZ ee      Zy)#AsyncAdaptFallback_dbapi_connectionr   N)r4   r5   r6   r   r   r   rv   r   r$   r   r   r   \  s    I.)Fr$   r   )#r7   
__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   r1   rl   rs   r   ry   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$   