o
    g                     @  s   d Z ddlm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	 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   )AdaptedConnection)asyncio)await_fallback)
await_onlyc                   @  s   e Zd ZdZ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#d$Zd%d& ZdS )(AsyncAdapt_dbapi_cursorF)_adapt_connection_connectionawait__cursor_rowsc                 C  sD   || _ |j| _|j| _| j }| || _| js t | _	d S d S N)
r	   r
   r   cursor_aenter_cursorr   server_sidecollectionsdequer   selfadapt_connectionr    r   W/var/www/html/api-tag/env/lib/python3.10/site-packages/sqlalchemy/connectors/asyncio.py__init__   s   
z AsyncAdapt_dbapi_cursor.__init__c                 C  s   |  | S r   )r   
__aenter__)r   r   r   r   r   r   *   s   z&AsyncAdapt_dbapi_cursor._aenter_cursorc                 C     | j jS r   )r   descriptionr   r   r   r   r   -      z#AsyncAdapt_dbapi_cursor.descriptionc                 C  r   r   )r   rowcountr   r   r   r   r   1   r   z AsyncAdapt_dbapi_cursor.rowcountc                 C  r   r   r   	arraysizer   r   r   r   r!   5   r   z!AsyncAdapt_dbapi_cursor.arraysizec                 C  s   || j _d S r   r    r   valuer   r   r   r!   9   s   c                 C  r   r   )r   	lastrowidr   r   r   r   r$   =   r   z!AsyncAdapt_dbapi_cursor.lastrowidc                 C  s   | j   d S r   )r   clearr   r   r   r   closeA   s   zAsyncAdapt_dbapi_cursor.closeNc                 C     |  | ||S r   )r   _execute_async)r   	operation
parametersr   r   r   executeF      zAsyncAdapt_dbapi_cursor.executec                 C  r'   r   )r   _executemany_asyncr   r)   seq_of_parametersr   r   r   executemanyI   s   
z#AsyncAdapt_dbapi_cursor.executemanyc              	     s   | j j4 I d H , | j||pdI d H }| jjr)| js)t| j I d H | _	|W  d   I d H  S 1 I d H s;w   Y  d S )Nr   )
r	   _execute_mutexr   r+   r   r   r   r   fetchallr   )r   r)   r*   resultr   r   r   r(   N   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   )r	   r1   r   r0   r.   r   r   r   r-   V   s   0z*AsyncAdapt_dbapi_cursor._executemany_asyncc                 C  sB   |  | j  | jjr| jst|  | j | _d S d S d S r   )	r   r   nextsetr   r   r   r   r2   r   r   r   r   r   r4   Z   s   
zAsyncAdapt_dbapi_cursor.nextsetc                 G  s   |  | jj| S r   )r   r   setinputsizes)r   
inputsizesr   r   r   r5   a   s   z%AsyncAdapt_dbapi_cursor.setinputsizesc                 c  s"    | j r| j  V  | j sd S d S r   r   popleftr   r   r   r   __iter__h   s   z AsyncAdapt_dbapi_cursor.__iter__c                 C  s   | j r| j  S d S r   r7   r   r   r   r   fetchonel   s   
z AsyncAdapt_dbapi_cursor.fetchonec                   s4   |d u r| j }| j  fddtt|t D S )Nc                   s   g | ]}   qS r   )r8   ).0_rrr   r   
<listcomp>v   s    z5AsyncAdapt_dbapi_cursor.fetchmany.<locals>.<listcomp>)r!   r   rangeminlenr   sizer   r=   r   	fetchmanyr   s    z!AsyncAdapt_dbapi_cursor.fetchmanyc                 C  s   t | j}| j  |S r   )listr   r%   )r   retvalr   r   r   r2   x   s   

z AsyncAdapt_dbapi_cursor.fetchallr   )__name__
__module____qualname__r   	__slots__r   r   propertyr   r   r!   setterr$   r&   r+   r0   r(   r-   r4   r5   r9   r:   rE   r2   r   r   r   r   r      s4    






r   c                   @  sF   e Zd ZdZdZdd Zdd Zdd Zdd
dZdd Z	dd Z
d	S )AsyncAdapt_dbapi_ss_cursorr   Tc                 C  s4   || _ |j| _|j| _| j }| | | _d S r   )r	   r
   r   r   r   r   r   r   r   r   r      s
   
z#AsyncAdapt_dbapi_ss_cursor.__init__c                 C  s(   | j d ur| | j   d | _ d S d S r   )r   r   r&   r   r   r   r   r&      s   

z AsyncAdapt_dbapi_ss_cursor.closec                 C     |  | j S r   )r   r   r:   r   r   r   r   r:         z#AsyncAdapt_dbapi_ss_cursor.fetchoneNc                 C  s   |  | jj|dS )N)rD   )r   r   rE   rC   r   r   r   rE         z$AsyncAdapt_dbapi_ss_cursor.fetchmanyc                 C  rO   r   )r   r   r2   r   r   r   r   r2      rP   z#AsyncAdapt_dbapi_ss_cursor.fetchallc                 c  s:    | j  }	 z
| | V  W n
 ty   Y d S w qr   )r   	__aiter__r   	__anext__StopAsyncIteration)r   iteratorr   r   r   r9      s   
z#AsyncAdapt_dbapi_ss_cursor.__iter__r   )rH   rI   rJ   rK   r   r   r&   r:   rE   r2   r9   r   r   r   r   rN   ~   s    	
rN   c                   @  s|   e Zd ZeZeZeeZ	dZ
dd Zdd Zdd Zdd	 Zed
d Zejdd ZdddZdd Zdd Zdd ZdS )AsyncAdapt_dbapi_connection)dbapir1   c                 C  s   || _ || _t | _d S r   )rW   r
   r   Lockr1   )r   rW   
connectionr   r   r   r      s   z$AsyncAdapt_dbapi_connection.__init__c                 C  s   |  | j|S r   )r   r
   ping)r   	reconnectr   r   r   rZ      r,   z AsyncAdapt_dbapi_connection.pingc                 O  s   | j j|i | d S r   )r
   add_output_converter)r   argkwr   r   r   r\      s   z0AsyncAdapt_dbapi_connection.add_output_converterc                 C  s
   | j  S r   )r
   character_set_namer   r   r   r   r_      s   
z.AsyncAdapt_dbapi_connection.character_set_namec                 C  r   r   )r
   
autocommitr   r   r   r   r`      r   z&AsyncAdapt_dbapi_connection.autocommitc                 C  s   || j j_d S r   )r
   _connr`   r"   r   r   r   r`      s   Fc                 C  s   |r|  | S | | S r   )_ss_cursor_cls_cursor_cls)r   r   r   r   r   r      s   

z"AsyncAdapt_dbapi_connection.cursorc                 C     |  | j  d S r   )r   r
   rollbackr   r   r   r   re      rQ   z$AsyncAdapt_dbapi_connection.rollbackc                 C  rd   r   )r   r
   commitr   r   r   r   rf      rQ   z"AsyncAdapt_dbapi_connection.commitc                 C  rd   r   )r   r
   r&   r   r   r   r   r&      rQ   z!AsyncAdapt_dbapi_connection.closeN)F)rH   rI   rJ   r   rc   rN   rb   staticmethodr   r   rK   r   rZ   r\   r_   rL   r`   rM   r   re   rf   r&   r   r   r   r   rV      s"    


rV   c                   @  s   e Zd ZdZeeZdS )#AsyncAdaptFallback_dbapi_connectionr   N)rH   rI   rJ   rK   rg   r   r   r   r   r   r   rh      s    rh   )__doc__
__future__r   r   enginer   util.concurrencyr   r   r   r   rN   rV   rh   r   r   r   r   <module>   s   i$0