o
     h'                     @  sh  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 deZG dd deZG dd dZG dd dZG dd deZ G d d! d!eZ!G d"d# d#e!Z"dS )$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                   @  sB   e Zd ZdZdddZdd
dZdddZdddZdddZdS )AsyncIODBAPIConnectionz^protocol representing an async adapted version of a
    :pep:`249` database connection.


    returnNonec                      d S N selfr   r   P/var/www/html/venv/lib/python3.10/site-packages/sqlalchemy/connectors/asyncio.pycommit/       zAsyncIODBAPIConnection.commitargsr   kwargsAsyncIODBAPICursorc                 O     d S r   r   )r   r    r!   r   r   r   cursor1       zAsyncIODBAPIConnection.cursorc                   r   r   r   r   r   r   r   rollback3   r   zAsyncIODBAPIConnection.rollbackkeystrc                 C  r#   r   r   r   r'   r   r   r   __getattr__5   r%   z"AsyncIODBAPIConnection.__getattr__valuec                 C  r#   r   r   )r   r'   r+   r   r   r   __setattr__7   r%   z"AsyncIODBAPIConnection.__setattr__Nr   r   )r    r   r!   r   r   r"   r'   r(   r   r   )r'   r(   r+   r   r   r   )	__name__
__module____qualname____doc__r   r$   r&   r*   r,   r   r   r   r   r   %   s    
	


r   c                   @  s   e Zd ZU dZd5ddZed6ddZed7d
dZd	ed< d	ed< d8ddZ		d9d:ddZ
d;ddZd<ddZd=d>d!d"Zd?d#d$Zd@d&d'ZdAd)d*Z	d=dBd-d.ZdCd0d1ZdDd3d4ZdS )Er"   zZprotocol representing an async adapted version
    of a :pep:`249` database cursor.


    r   r   c                 C  r#   r   r   r   r   r   r   
__aenter__A   r%   zAsyncIODBAPICursor.__aenter__r   c                 C  s   dS )z(The description attribute of the Cursor.Nr   r   r   r   r   descriptionC   s   zAsyncIODBAPICursor.descriptionintc                 C  r#   r   r   r   r   r   r   rowcountJ      zAsyncIODBAPICursor.rowcount	arraysize	lastrowidr   c                   r   r   r   r   r   r   r   closeQ   r   zAsyncIODBAPICursor.closeN	operation
parameters#Optional[_DBAPISingleExecuteParams]c                   r   r   r   r   r;   r<   r   r   r   executeS      zAsyncIODBAPICursor.executer   c                   r   r   r   r>   r   r   r   executemanyY   r@   zAsyncIODBAPICursor.executemanyOptional[Any]c                   r   r   r   r   r   r   r   fetchone_   r   zAsyncIODBAPICursor.fetchone.sizeOptional[int]Sequence[Any]c                   r   r   r   r   rD   r   r   r   	fetchmanya   r   zAsyncIODBAPICursor.fetchmanyc                   r   r   r   r   r   r   r   fetchallc   r   zAsyncIODBAPICursor.fetchallsizesc                   r   r   r   )r   rJ   r   r   r   setinputsizese   r   z AsyncIODBAPICursor.setinputsizescolumnc                 C  r#   r   r   )r   rD   rL   r   r   r   setoutputsizeg   r%   z AsyncIODBAPICursor.setoutputsizeprocnamer(   c                   r   r   r   )r   rN   r<   r   r   r   callproci   s   zAsyncIODBAPICursor.callprocOptional[bool]c                   r   r   r   r   r   r   r   nextsetm   r   zAsyncIODBAPICursor.nextsetAsyncIterator[Any]c                 C  r#   r   r   r   r   r   r   	__aiter__o   r%   zAsyncIODBAPICursor.__aiter__)r   r   )r   r   r   r5   r-   r   r;   r   r<   r=   r   r   )r;   r   r<   r   r   r   r   rB   ).rD   rE   r   rF   r   rF   )rJ   rF   r   r   )rD   r   rL   r   r   r   )rN   r(   r<   rF   r   r   )r   rP   )r   rR   )r/   r0   r1   r2   r3   propertyr4   r6   __annotations__r:   r?   rA   rC   rH   rI   rK   rM   rO   rQ   rS   r   r   r   r   r"   :   s,   
 







r"   c                   @  s6   e Zd ZerejZejZejZejZdddZ	dS dS )	AsyncAdapt_dbapi_moduler'   r(   r   r   c                 C  r#   r   r   r)   r   r   r   r*   y   r%   z#AsyncAdapt_dbapi_module.__getattr__Nr.   )
r/   r0   r1   r
   r   ErrorOperationalErrorInterfaceErrorIntegrityErrorr*   r   r   r   r   r[   r   s    r[   c                   @  s$  e Zd ZU dZdZded< ded< ded< d	ed
< dLddZdMddZdNddZe	dOddZ
e	dPddZe	dPddZejdQddZe	dPd d!ZdRd"d#Z	$dSdTd)d*ZdUd-d.ZdTd/d0ZdUd1d2ZdRd3d4ZdVd6d7ZdWd9d:ZdXd=d>ZdYd@dAZdZdCdDZdSd[dHdIZd\dJdKZd$S )]AsyncAdapt_dbapi_cursorF)_adapt_connection_connectionawait__cursor_rowsr"   rd   AsyncAdapt_dbapi_connectionra   r   rb   z
Deque[Any]re   adapt_connectionc                 C  sF   || _ |j| _|j| _| | j}| || _| js!t | _	d S d S r   )
ra   rb   rc   _make_new_cursor_aenter_cursorrd   server_sidecollectionsdequere   )r   rg   r$   r   r   r   __init__   s   z AsyncAdapt_dbapi_cursor.__init__r$   r   c                 C  s   |  | S r   )rc   r3   )r   r$   r   r   r   ri      s   z&AsyncAdapt_dbapi_cursor._aenter_cursor
connectionc                 C  s   |  S r   )r$   )r   rn   r   r   r   rh      s   z(AsyncAdapt_dbapi_cursor._make_new_cursor!Optional[_DBAPICursorDescription]c                 C     | j jS r   )rd   r4   r   r   r   r   r4         z#AsyncAdapt_dbapi_cursor.descriptionr5   c                 C  rp   r   )rd   r6   r   r   r   r   r6      rq   z AsyncAdapt_dbapi_cursor.rowcountc                 C  rp   r   rd   r8   r   r   r   r   r8      rq   z!AsyncAdapt_dbapi_cursor.arraysizer+   r   c                 C  s   || j _d S r   rr   )r   r+   r   r   r   r8      s   c                 C  rp   r   )rd   r9   r   r   r   r   r9      rq   z!AsyncAdapt_dbapi_cursor.lastrowidc                 C  s   | j   d S r   )re   clearr   r   r   r   r:      s   zAsyncAdapt_dbapi_cursor.closeNr;   r   r<   r=   c              
   C  H   z
|  | ||W S  ty# } z| j| W Y d }~d S d }~ww r   )rc   _execute_async	Exceptionra   _handle_exception)r   r;   r<   errorr   r   r   r?      s   zAsyncAdapt_dbapi_cursor.executeseq_of_parametersr   c              
   C  rt   r   )rc   _executemany_asyncrv   ra   rw   )r   r;   ry   rx   r   r   r   rA      s   
z#AsyncAdapt_dbapi_cursor.executemanyc              	     s   | j j4 I d H 8 |d u r| j|I d H }n
| j||I d H }| jjr5| js5t| j I d H | _	|W  d   I d H  S 1 I d H sGw   Y  d S r   )
ra   _execute_mutexrd   r?   r4   rj   rk   rl   rI   re   )r   r;   r<   resultr   r   r   ru      s   0z&AsyncAdapt_dbapi_cursor._execute_asyncc              	     sV   | j j4 I d H  | j||I d H W  d   I d H  S 1 I d H s$w   Y  d S r   )ra   r{   rd   rA   )r   r;   ry   r   r   r   rz      s   0z*AsyncAdapt_dbapi_cursor._executemany_asyncc                 C  sB   |  | j  | jjr| jst|  | j | _d S d S d S r   )	rc   rd   rQ   r4   rj   rk   rl   rI   re   r   r   r   r   rQ      s   
zAsyncAdapt_dbapi_cursor.nextset
inputsizesc                 G  s   |  | jj| S r   )rc   rd   rK   )r   r}   r   r   r   rK      s   z%AsyncAdapt_dbapi_cursor.setinputsizesr   c                 C  s   | S r   r   r   r   r   r   	__enter__   r7   z!AsyncAdapt_dbapi_cursor.__enter__type_	tracebackc                 C  s   |    d S r   )r:   )r   r   r+   r   r   r   r   __exit__   s   z AsyncAdapt_dbapi_cursor.__exit__Iterator[Any]c                 c  s"    | j r| j  V  | j sd S d S r   re   popleftr   r   r   r   __iter__   s   z AsyncAdapt_dbapi_cursor.__iter__rB   c                 C  s   | j r| j  S d S r   r   r   r   r   r   rC      s   
z AsyncAdapt_dbapi_cursor.fetchonerD   rE   rF   c                   s4   |d u r| j }| j  fddtt|t D S )Nc                   s   g | ]}   qS r   )r   ).0_rrr   r   
<listcomp>  s    z5AsyncAdapt_dbapi_cursor.fetchmany.<locals>.<listcomp>)r8   re   rangeminlenrG   r   r   r   rH     s    z!AsyncAdapt_dbapi_cursor.fetchmanyc                 C  s   t | j}| j  |S r   )listre   rs   )r   retvalr   r   r   rI     s   

z AsyncAdapt_dbapi_cursor.fetchall)rg   rf   )r$   r"   r   r"   )rn   r   r   r"   )r   ro   rT   )r+   r5   r   r   r-   r   rU   )r;   r   ry   r   r   r   )r}   r   r   r   )r   r   )r   r   r+   r   r   r   r   r   r   r   rV   rW   rX   )r/   r0   r1   rj   	__slots__rZ   rm   ri   rh   rY   r4   r6   r8   setterr9   r:   r?   rA   ru   rz   rQ   rK   r~   r   r   rC   rH   rI   r   r   r   r   r`   |   sD   
 













r`   c                   @  sH   e Zd ZdZdZdddZddd	ZddddZdddZdddZ	d
S )AsyncAdapt_dbapi_ss_cursorr   Tr   r   c                 C  s(   | j d ur| | j   d | _ d S d S r   )rd   rc   r:   r   r   r   r   r:     s   

z AsyncAdapt_dbapi_ss_cursor.closerB   c                 C     |  | j S r   )rc   rd   rC   r   r   r   r   rC        z#AsyncAdapt_dbapi_ss_cursor.fetchoneNrD   rE   r   c                 C  s   |  | jj|dS )N)rD   )rc   rd   rH   rG   r   r   r   rH        z$AsyncAdapt_dbapi_ss_cursor.fetchmanyrF   c                 C  r   r   )rc   rd   rI   r   r   r   r   rI     r   z#AsyncAdapt_dbapi_ss_cursor.fetchallr   c                 c  s:    | j  }	 z
| | V  W n
 ty   Y d S w qr   )rd   rS   rc   	__anext__StopAsyncIteration)r   iteratorr   r   r   r     s   
z#AsyncAdapt_dbapi_ss_cursor.__iter__r-   rV   r   )rD   rE   r   r   rX   r   )
r/   r0   r1   r   rj   r:   rC   rH   rI   r   r   r   r   r   r     s    


r   c                   @  sv   e Zd ZU eZeZeeZ	dZ
ded< d"ddZd#d$ddZ	d%d&ddZd'ddZd(ddZd(ddZd(d d!ZdS ))rf   )dbapir{   r   rb   r   r   rn   c                 C  s   || _ || _t | _d S r   )r   rb   asyncioLockr{   )r   r   rn   r   r   r   rm   2  s   z$AsyncAdapt_dbapi_connection.__init__Frj   boolr   r`   c                 C  s   |r|  | S | | S r   )_ss_cursor_cls_cursor_cls)r   rj   r   r   r   r$   7  s   

z"AsyncAdapt_dbapi_connection.cursorNr;   r<   r=   c                 C  s   |   }||| |S )z2lots of DBAPIs seem to provide this, so include it)r$   r?   )r   r;   r<   r$   r   r   r   r?   =  s   z#AsyncAdapt_dbapi_connection.executerx   rv   r   c                 C  s   t  }||d )Nr   )sysexc_infowith_traceback)r   rx   r   r   r   r   rw   G  s   z-AsyncAdapt_dbapi_connection._handle_exceptionr   c              
   C  H   z|  | j  W d S  ty# } z| | W Y d }~d S d }~ww r   )rc   rb   r&   rv   rw   r   rx   r   r   r   r&   L     z$AsyncAdapt_dbapi_connection.rollbackc              
   C  r   r   )rc   rb   r   rv   rw   r   r   r   r   r   R  r   z"AsyncAdapt_dbapi_connection.commitc                 C  s   |  | j  d S r   )rc   rb   r:   r   r   r   r   r:   X  r   z!AsyncAdapt_dbapi_connection.close)r   r   rn   r   )F)rj   r   r   r`   r   rU   )rx   rv   r   r   r-   )r/   r0   r1   r`   r   r   r   staticmethodr   rc   r   rZ   rm   r$   r?   rw   r&   r   r:   r   r   r   r   rf   (  s   
 
	



rf   c                   @  s   e Zd ZdZeeZdS )#AsyncAdaptFallback_dbapi_connectionr   N)r/   r0   r1   r   r   r   rc   r   r   r   r   r   \  s    r   )#r2   
__future__r   r   rk   r   typingr   r   r   r   r   r   r	   r
   enginer   util.concurrencyr   r   util.typingr   engine.interfacesr   r   r   r   r   r   r"   r[   r`   r   rf   r   r   r   r   r   <module>   s>   8
 4