o
    j                     @  s   d Z ddlm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
 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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  s>   || _ |j| _|j| _| j }| | | _t | _d S N)	r	   r
   r   cursor
__aenter__r   collectionsdequer   selfadapt_connectionr    r   ]/var/www/html/LicenciasMiG/venv/lib/python3.10/site-packages/sqlalchemy/connectors/asyncio.py__init__    s   
z AsyncAdapt_dbapi_cursor.__init__c                 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   .   r   z AsyncAdapt_dbapi_cursor.rowcountc                 C  r   r   r   	arraysizer   r   r   r   r   2   r   z!AsyncAdapt_dbapi_cursor.arraysizec                 C  s   || j _d S r   r   r   valuer   r   r   r   6   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   close>   s   zAsyncAdapt_dbapi_cursor.closeNc                 C     |  | ||S r   )r   _execute_async)r   	operation
parametersr   r   r   executeC      zAsyncAdapt_dbapi_cursor.executec                 C  r%   r   )r   _executemany_asyncr   r'   seq_of_parametersr   r   r   executemanyF   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   server_sider   r   fetchallr   )r   r'   r(   resultr   r   r   r&   K   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	   r/   r   r.   r,   r   r   r   r+   W   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   r0   r   r   r1   r   r   r   r   r   r3   [   s   
zAsyncAdapt_dbapi_cursor.nextsetc                 G  s   |  | jj| S r   )r   r   setinputsizes)r   
inputsizesr   r   r   r4   b   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__i   s   z AsyncAdapt_dbapi_cursor.__iter__c                 C  s   | j r| j  S d S r   r6   r   r   r   r   fetchonem   s   
z AsyncAdapt_dbapi_cursor.fetchonec                 C  s:   |d u r| j }t| j}tt|d|}t|| _|S )Nr   )r   iterr   list	itertoolsislicer   r   )r   sizerrretvalr   r   r   	fetchmanys   s   
z!AsyncAdapt_dbapi_cursor.fetchmanyc                 C  s   t | j}| j  |S r   )r;   r   r#   )r   r@   r   r   r   r1   |   s   

z AsyncAdapt_dbapi_cursor.fetchallr   )__name__
__module____qualname__r0   	__slots__r   propertyr   r   r   setterr"   r$   r)   r.   r&   r+   r3   r4   r8   r9   rA   r1   r   r   r   r   r      s2    







	r   c                   @  s>   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	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   r9   r   r   r   r   r9         z#AsyncAdapt_dbapi_ss_cursor.fetchoneNc                 C  s   |  | jj|dS )N)r>   )r   r   rA   )r   r>   r   r   r   rA         z$AsyncAdapt_dbapi_ss_cursor.fetchmanyc                 C  rI   r   )r   r   r1   r   r   r   r   r1      rJ   z#AsyncAdapt_dbapi_ss_cursor.fetchallr   )
rB   rC   rD   rE   r0   r   r$   r9   rA   r1   r   r   r   r   rH      s    	
rH   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)dbapir/   c                 C  s   || _ || _t | _d S r   )rM   r
   r   Lockr/   )r   rM   
connectionr   r   r   r      s   z$AsyncAdapt_dbapi_connection.__init__c                 C  s   |  | j|S r   )r   r
   ping)r   	reconnectr   r   r   rP      r*   z AsyncAdapt_dbapi_connection.pingc                 O  s   | j j|i | d S r   )r
   add_output_converter)r   argkwr   r   r   rR      s   z0AsyncAdapt_dbapi_connection.add_output_converterc                 C  s
   | j  S r   )r
   character_set_namer   r   r   r   rU      s   
z.AsyncAdapt_dbapi_connection.character_set_namec                 C  r   r   )r
   
autocommitr   r   r   r   rV      r   z&AsyncAdapt_dbapi_connection.autocommitc                 C  s   || j j_d S r   )r
   _connrV   r    r   r   r   rV      s   Fc                 C  s   |r|  | S | | S r   )_ss_cursor_cls_cursor_cls)r   r0   r   r   r   r      s   

z"AsyncAdapt_dbapi_connection.cursorc                 C     |  | j  d S r   )r   r
   rollbackr   r   r   r   r[      rK   z$AsyncAdapt_dbapi_connection.rollbackc                 C  rZ   r   )r   r
   commitr   r   r   r   r\      rK   z"AsyncAdapt_dbapi_connection.commitc                 C  rZ   r   )r   r
   r$   r   r   r   r   r$      rK   z!AsyncAdapt_dbapi_connection.closeN)F)rB   rC   rD   r   rY   rH   rX   staticmethodr   r   rE   r   rP   rR   rU   rF   rV   rG   r   r[   r\   r$   r   r   r   r   rL      s"    


rL   c                   @  s   e Zd ZdZeeZdS )#AsyncAdaptFallback_dbapi_connectionr   N)rB   rC   rD   rE   r]   r   r   r   r   r   r   r^      s    r^   )__doc__
__future__r   r   r<   enginer   util.concurrencyr   r   r   r   rH   rL   r^   r   r   r   r   <module>   s   l0