o
    DDig                     @  s   d Z ddlmZ ddlmZmZmZ ddlmZ ddl	m
Z ddlmZmZ ddlmZmZ dd	lmZ dd
lmZ ddlmZ erHddlmZ G dd dedef ee ZdS )z%
psycopg server-side cursor (async).
    )annotations)TYPE_CHECKINGAnyoverload)Iterable   )errors)ParamsQuery)AsyncRowFactoryRow)Self)AsyncCursor)ServerCursorMixin)AsyncConnectionc                      s   e Zd ZdZdZeddddBddZeddddCddZdddddDddZdE fddZ	dFdddGd$d%Zd&d'dHd+d,ZdId.d/Z	dJdKd4d5Z
dLd6d7ZdMd8d9ZdNd;d<ZdOdPd@dAZ  ZS )QAsyncServerCursorpsycopg NF)
scrollablewithhold
connectionAsyncConnection[Row]namestrr   bool | Noner   boolc                C     d S Nr   )selfr   r   r   r   r   r   U/var/www/Datamplify/venv/lib/python3.10/site-packages/psycopg/_server_cursor_async.py__init__   s   zAsyncServerCursor.__init__AsyncConnection[Any]row_factoryAsyncRowFactory[Row]c                C  r   r   r   r   r   r   r"   r   r   r   r   r   r    '   s   	)r"   r   r   AsyncRowFactory[Row] | Nonec                C  s*   t j| ||p|jd t| ||| d S )N)r"   )r   r    r"   r   r$   r   r   r   r    2   s   	returnNonec              	     s   | j j4 I dH 2 | jr	 W d  I dH  dS | j js(| j |  I dH  t  I dH  W d  I dH  dS 1 I dH sAw   Y  dS )zI
        Close the current cursor and free associated resources.
        N)_connlockclosedwait
_close_gensupercloser   	__class__r   r   r.   @   s   .zAsyncServerCursor.close)binaryqueryr
   paramsParams | Noner2   kwargsr   r   c             
     s   |rt dt|d  | jjrtdz1| jj4 I dH  | j| 	|||I dH  W d  I dH  W | S 1 I dH sAw   Y  W | S  tj
yZ } z|dd}~ww )zC
        Open a cursor to execute a query to the database.
        zkeyword not supported: r   z2server-side cursors not supported in pipeline modeN)	TypeErrorlist_pgconnpipeline_statuseNotSupportedErrorr(   r)   r+   _declare_gen_NO_TRACEBACKwith_traceback)r   r3   r4   r2   r6   exr   r   r   executeK   s$   
zAsyncServerCursor.executeT)	returning
params_seqIterable[Params]rB   c                  s   t d)z/Method not implemented for server-side cursors.z0executemany not supported on server-side cursors)r;   r<   )r   r3   rC   rB   r   r   r   executemanye   s   
zAsyncServerCursor.executemany
Row | Nonec              	     st   | j j4 I d H  | j | dI d H }W d   I d H  n1 I d H s&w   Y  |r8|  jd7  _|d S d S )Nr   r   )r(   r)   r+   
_fetch_gen_posr   recsr   r   r   fetchonek   s   (zAsyncServerCursor.fetchoner   sizeint	list[Row]c              	     sv   |s| j }| jj4 I d H  | j| |I d H }W d   I d H  n1 I d H s+w   Y  |  jt|7  _|S r   )	arraysizer(   r)   r+   rG   rH   len)r   rL   rJ   r   r   r   	fetchmanyt   s   (zAsyncServerCursor.fetchmanyc              	     sl   | j j4 I d H  | j | d I d H }W d   I d H  n1 I d H s&w   Y  |  jt|7  _|S r   )r(   r)   r+   rG   rH   rP   rI   r   r   r   fetchall|   s   (zAsyncServerCursor.fetchallc                 C  s   | S r   r   r/   r   r   r   	__aiter__   s   zAsyncServerCursor.__aiter__r   c              	     s   | j d u s| jt| j   kr| jkrFn n/| jj4 I d H  | j| | jI d H | _ d| _W d   I d H  n1 I d H sAw   Y  | jt| j krRtd| j | j }|  jd7  _|  j	d7  _	|S )Nr   zno more records to returnr   )

_iter_rows	_page_posrP   itersizer(   r)   r+   rG   StopAsyncIterationrH   )r   recr   r   r   	__anext__   s   
"(zAsyncServerCursor.__anext__relativevaluemodec              	     s|   | j j4 I d H  | j | ||I d H  W d   I d H  n1 I d H s'w   Y  |dkr9|  j|7  _d S || _d S )NrZ   )r(   r)   r+   _scroll_genrH   )r   r[   r\   r   r   r   scroll   s   (
zAsyncServerCursor.scroll)r   r   r   r   r   r   r   r   )
r   r!   r   r   r"   r#   r   r   r   r   )
r   r!   r   r   r"   r%   r   r   r   r   )r&   r'   r   )
r3   r
   r4   r5   r2   r   r6   r   r&   r   )r3   r
   rC   rD   rB   r   r&   r'   )r&   rF   )r   )rL   rM   r&   rN   )r&   rN   )r&   r   )r&   r   )rZ   )r[   rM   r\   r   r&   r'   )__name__
__module____qualname__	__slots__r   r    r.   rA   rE   rK   rQ   rR   rS   rY   r^   __classcell__r   r   r0   r   r      s8    	
	


r   r!   N)__doc__
__future__r   typingr   r   r   collections.abcr    r   r;   abcr	   r
   rowsr   r   _compatr   cursor_asyncr   _server_cursor_baser   connection_asyncr   r   r   r   r   r   <module>   s    
