
    	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(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)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/hwPaymentPortal-be-dev/hw-payment-portal-api/venv/lib/python3.12/site-packages/sqlalchemy/connectors/asyncio.pycommitzAsyncIODBAPIConnection.commit3           c                     y r   r   )r    argskwargss      r!   cursorzAsyncIODBAPIConnection.cursor5           c                   K   y wr   r   r   s    r!   rollbackzAsyncIODBAPIConnection.rollback7   r#   r$   c                     y r   r   r    keys     r!   __getattr__z"AsyncIODBAPIConnection.__getattr__9   r)   r*   c                     y r   r   )r    r/   values      r!   __setattr__z"AsyncIODBAPIConnection.__setattr__;   r)   r*   NreturnNone)r&   r   r'   r   r5   AsyncIODBAPICursorr/   strr5   r   )r/   r9   r2   r   r5   r6   )	__name__
__module____qualname____doc__r"   r(   r,   r0   r3   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	)$r7   zZprotocol representing an async adapted version
    of a :pep:`249` database cursor.


    c                     y r   r   r   s    r!   
__aenter__zAsyncIODBAPICursor.__aenter__E   r)   r*   c                     y)z(The description attribute of the Cursor.Nr   r   s    r!   descriptionzAsyncIODBAPICursor.descriptionG   s    
 	r*   intc                     y r   r   r   s    r!   rowcountzAsyncIODBAPICursor.rowcountN   s    "r*   	arraysize	lastrowidc                   K   y wr   r   r   s    r!   closezAsyncIODBAPICursor.closeU   r#   r$   Nc                   K   y wr   r   r    	operation
parameterss      r!   executezAsyncIODBAPICursor.executeW         r$   c                   K   y wr   r   rK   s      r!   executemanyzAsyncIODBAPICursor.executemany]   rO   r$   c                   K   y wr   r   r   s    r!   fetchonezAsyncIODBAPICursor.fetchonec   r#   r$   c                   K   y wr   r   r    sizes     r!   	fetchmanyzAsyncIODBAPICursor.fetchmanye   r#   r$   c                   K   y wr   r   r   s    r!   fetchallzAsyncIODBAPICursor.fetchallg   r#   r$   c                   K   y wr   r   )r    sizess     r!   setinputsizesz AsyncIODBAPICursor.setinputsizesi   r#   r$   c                     y r   r   )r    rV   columns      r!   setoutputsizez AsyncIODBAPICursor.setoutputsizek   r)   r*   c                   K   y wr   r   )r    procnamerM   s      r!   callproczAsyncIODBAPICursor.callprocm   s	     r$   c                   K   y wr   r   r   s    r!   nextsetzAsyncIODBAPICursor.nextsetq   r#   r$   c                     y r   r   r   s    r!   	__aiter__zAsyncIODBAPICursor.__aiter__s   r)   r*   )r5   r   )r5   r   r5   rC   r4   r   rL   r   rM   z#Optional[_DBAPISingleExecuteParams]r5   r   )rL   r   rM   r   r5   r   r5   zOptional[Any]).rV   Optional[int]r5   Sequence[Any]r5   rl   )r[   rl   r5   r6   )rV   r   r^   r   r5   r6   )ra   r9   rM   rl   r5   r   )r5   zOptional[bool])r5   zAsyncIterator[Any])r:   r;   r<   r=   r@   propertyrB   rE   __annotations__rI   rN   rQ   rS   rW   rY   r\   r_   rb   rd   rf   r   r*   r!   r7   r7   >   s     %	   " "NN&
 ;? 8 
	 - 
	 3N2D@ :=)6	 32r*   r7   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!   r0   z#AsyncAdapt_dbapi_module.__getattr__}   r)   r*   Nr8   )
r:   r;   r<   r   r   ErrorOperationalErrorInterfaceErrorIntegrityErrorr0   r   r*   r!   rq   rq   v   s:    !!&77$33$333 r*   rq   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                  d*d       Ze
d)d       Z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d0dZd1d Zd2d!Zd3d"Zd,d4d#Zd5d$Zy)6AsyncAdapt_dbapi_cursorF)_adapt_connection_connectionawait__cursor_rows_soft_closed_memoizedTbool_awaitable_cursor_closer7   r|   AsyncAdapt_dbapi_connectionry   r   rz   z
Deque[Any]r}   c                   || _         |j                  | _        |j                  | _        | j                  | j                        }| j	                  |      | _        t        | _        | j                  st        j                         | _        y y r   )ry   rz   r{   _make_new_cursor_aenter_cursorr|   r   r~   server_sidecollectionsdequer}   )r    adapt_connectionr(   s      r!   __init__z AsyncAdapt_dbapi_cursor.__init__   ss    !1+77&--&&t'7'78**62%/"$**,DJ  r*   c                @    | j                  |j                               S r   )r{   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                h    d| j                   v r| j                   d   S | j                  j                  S )NrB   )r~   r|   rB   r   s    r!   rB   z#AsyncAdapt_dbapi_cursor.description   s1    D666--m<<||'''r*   c                .    | j                   j                  S r   )r|   rE   r   s    r!   rE   z AsyncAdapt_dbapi_cursor.rowcount   s    ||$$$r*   c                .    | j                   j                  S r   r|   rF   r   s    r!   rF   z!AsyncAdapt_dbapi_cursor.arraysize       ||%%%r*   c                &    || j                   _        y r   r   )r    r2   s     r!   rF   z!AsyncAdapt_dbapi_cursor.arraysize   s    !&r*   c                .    | j                   j                  S r   )r|   rG   r   s    r!   rG   z!AsyncAdapt_dbapi_cursor.lastrowid   r   r*   c                   K   | j                   r| j                  ry| j                  j                  d| j                  j
                  i      | _        | j                  j                          d{    y7 w)zclose the cursor but keep the results pending, and memoize the
        description.

        .. versionadded:: 2.0.44

        NrB   )r   r   r~   unionr|   rB   rI   r   s    r!   _async_soft_closez)AsyncAdapt_dbapi_cursor._async_soft_close   sa      ++t/?/?%)%?%?%E%Et||77&
"
 ll  """s   A-A7/A50A7c                2   | j                   j                          | j                  t        | j                        ry | j
                  s| j                  j                          y t               r*| j                  | j                  j                                y y r   )	r}   clearr|   r   r~   r   rI   r   r{   r   s    r!   rI   zAsyncAdapt_dbapi_cursor.close   sj    

 <<4(B(B#C++LL ]KK**,- r*   Nc                    	 | j                  | j                  ||            S # t        $ r%}| j                  j	                  |       Y d }~y d }~ww xY wr   )r{   _execute_async	Exceptionry   _handle_exception)r    rL   rM   errors       r!   rN   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   )r{   _executemany_asyncr   ry   r   )r    rL   seq_of_parametersr   s       r!   rQ   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   )
ry   _execute_mutexr|   rN   rB   r   r   r   rY   r}   )r    rL   rM   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   )ry   r   r|   rQ   )r    rL   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   )	r{   r|   rd   rB   r   r   r   rY   r}   r   s    r!   rd   zAsyncAdapt_dbapi_cursor.nextset	  sc    DLL((*+<<##D,<,<$**DLL1134DJ -=#r*   c                R    | j                   | j                  j                  |       S r   )r{   r|   r\   )r    
inputsizess     r!   r\   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   )rI   )r    type_r2   	tracebacks       r!   __exit__z AsyncAdapt_dbapi_cursor.__exit__  s    

r*   c              #  x   K   | j                   r*| j                   j                          | j                   r)y y wr   r}   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!   rS   z AsyncAdapt_dbapi_cursor.fetchone!  s    ::::%%''r*   c                    || j                   }| j                  }t        t        |t	        |                  D cg c]  }|j                          c}S c c}w r   )rF   r}   rangeminlenr   )r    rV   rr_s       r!   rW   z!AsyncAdapt_dbapi_cursor.fetchmany'  sC    <>>DZZ&+Cc"g,>&?@

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

r*   )r   r   )r(   r7   r5   r7   )r   r   r5   r7   )r5   z!Optional[_DBAPICursorDescription]rg   )r2   rC   r5   r6   r4   r   rh   )rL   r   r   r   r5   r   )r   r   r5   r6   )r5   r   )r   r   r2   r   r   r   r5   r6   r5   zIterator[Any]ri   rj   rm   )r:   r;   r<   r   	__slots__r   ro   r   r   r   rn   rB   rE   rF   setterrG   r   rI   rN   rQ   r   r   rd   r\   r   r   r   rS   rW   rY   r   r*   r!   rx   rx      sy   KI %)T(22''
-0#0#	#
 ( (
 % % & & ' ' & &#$.& ;?<< 8< 
	<
<
< 4
< 
	
<*M	PP 4P 
	PD'Ar*   rx   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   )r|   r{   rI   r   s    r!   rI   z AsyncAdapt_dbapi_ss_cursor.close7  s1    <<#KK**,-DL $r*   c                T    | j                  | j                  j                               S r   )r{   r|   rS   r   s    r!   rS   z#AsyncAdapt_dbapi_ss_cursor.fetchone<      {{4<<00233r*   Nc                X    | j                  | j                  j                  |            S )N)rV   )r{   r|   rW   rU   s     r!   rW   z$AsyncAdapt_dbapi_ss_cursor.fetchmany?  s#    {{4<<11t1<==r*   c                T    | j                  | j                  j                               S r   )r{   r|   rY   r   s    r!   rY   z#AsyncAdapt_dbapi_ss_cursor.fetchallB  r   r*   c              #     K   | j                   j                         }	 	 | j                  |j                                ## t        $ r Y y w xY wwr   )r|   rf   r{   	__anext__StopAsyncIteration)r    iterators     r!   r   z#AsyncAdapt_dbapi_ss_cursor.__iter__E  sP     <<))+kk("4"4"677  & s(   A!A  A	A
AAAr4   ri   r   )rV   rk   r5   r   rm   r   )
r:   r;   r<   r   r   rI   rS   rW   rY   r   r   r*   r!   r   r   3  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)r   )dbapir   r   rz   c                R    || _         || _        t        j                         | _        y r   )r   rz   asyncioLockr   )r    r   r   s      r!   r   z$AsyncAdapt_dbapi_connection.__init__X  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.cursor]  s'    &&t,,##D))r*   Nc                J    | j                         }|j                  ||       |S )z2lots of DBAPIs seem to provide this, so include it)r(   rN   )r    rL   rM   r(   s       r!   rN   z#AsyncAdapt_dbapi_connection.executec  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_exceptionm  s"    <<>""8A;//r*   c                    	 | j                  | j                  j                                y # t        $ r}| j	                  |       Y d }~y d }~ww xY wr   )r{   rz   r,   r   r   r    r   s     r!   r,   z$AsyncAdapt_dbapi_connection.rollbackr  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   )r{   rz   r"   r   r   r   s     r!   r"   z"AsyncAdapt_dbapi_connection.commitx  sC    	*KK((//12 	*""5))	*r   c                V    | j                  | j                  j                                y r   )r{   rz   rI   r   s    r!   rI   z!AsyncAdapt_dbapi_connection.close~  s    D$$**,-r*   )r   r   r   r   )F)r   r   r5   rx   r   rh   )r   r   r5   r   r4   )r:   r;   r<   rx   r   r   r   staticmethodr   r{   r   ro   r   r(   rN   r   r,   r"   rI   r   r*   r!   r   r   N  se    )K/N*%F+I''-
* ;? 8 
	0
**.r*   r   c                       e Zd ZdZ ee      Zy)#AsyncAdaptFallback_dbapi_connectionr   N)r:   r;   r<   r   r   r   r{   r   r*   r!   r   r     s    I.)Fr*   r   c                  4    e Zd ZdZdZddZd	dZddZddZy)
AsyncAdapt_terminatezAMixin for a AsyncAdapt_dbapi_connection to add terminate support.r   c                6   t               r4	 | j                  t        j                  | j	                                      y | j                          y # | j                         $ r5}| j                          t        |t        j                        r Y d }~y d }~ww xY wr   )	r   r{   r   shield_terminate_graceful_close_terminate_handled_exceptions_terminate_force_close
isinstanceCancelledError)r    es     r!   	terminatezAsyncAdapt_terminate.terminate  sy    =GNN4+I+I+KLM '') 557 	 ++-a!7!78 9	s   2A B#+BBc                L    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         w)z"Try to close connection gracefullyNotImplementedErrorr   s    r!   r   z.AsyncAdapt_terminate._terminate_graceful_close  s     !!s   	c                    t         )zTerminate the connectionr   r   s    r!   r   z+AsyncAdapt_terminate._terminate_force_close  s    !!r*   Nr4   )r5   zTuple[Type[BaseException], ...])	r:   r;   r<   r=   r   r   r   r   r   r   r*   r!   r   r     s    KI*(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   r7   rq   rx   r   r   r   r   r   r*   r!   <module>r      s    F "   
             &  - ) * ";<=/"=X =*53 53p4 4p pf!8 61."3 1.h**E *%" %"r*   