o
    DDi6                     @  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 (sync).
    )annotations)TYPE_CHECKINGAnyoverload)Iterable   )errors)ParamsQuery)Row
RowFactory)Cursor)Self)ServerCursorMixin)
Connectionc                      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ServerCursorpsycopg NF)
scrollablewithhold
connectionConnection[Row]namestrr   bool | Noner   boolc                C     d S Nr   )selfr   r   r   r   r   r   O/var/www/Datamplify/venv/lib/python3.10/site-packages/psycopg/_server_cursor.py__init__   s   zServerCursor.__init__Connection[Any]row_factoryRowFactory[Row]c                C  r   r   r   r   r   r   r"   r   r   r   r   r   r    (   s   	)r"   r   r   RowFactory[Row] | Nonec                C  s*   t j| ||p|jd t| ||| d S )N)r"   )r   r    r"   r   r$   r   r   r   r    3   s   	returnNonec                   sh   | j j& | jr	 W d   dS | j js| j |   t   W d   dS 1 s-w   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.   A   s   
"zServerCursor.close)binaryqueryr
   paramsParams | Noner2   kwargsr   r   c             
   K  s   |rt dt|d  | jjrtdz$| jj | j| 	||| W d   W | S 1 s3w   Y  W | S  tj
yL } 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   executeL   s"   

zServerCursor.executeT)	returning
params_seqIterable[Params]rB   c                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   executemanyf   s   
zServerCursor.executemany
Row | Nonec                 C  sX   | j j | j | d}W d    n1 sw   Y  |r*|  jd7  _|d S d S )Nr   r   )r(   r)   r+   
_fetch_gen_posr   recsr   r   r   fetchonel   s   
zServerCursor.fetchoner   sizeint	list[Row]c                 C  sZ   |s| j }| jj | j| |}W d    n1 sw   Y  |  jt|7  _|S r   )	arraysizer(   r)   r+   rG   rH   len)r   rL   rJ   r   r   r   	fetchmanyu   s   
zServerCursor.fetchmanyc                 C  sP   | j j | j | d }W d    n1 sw   Y  |  jt|7  _|S r   )r(   r)   r+   rG   rH   rP   rI   r   r   r   fetchall}   s
   
zServerCursor.fetchallc                 C  s   | S r   r   r/   r   r   r   __iter__   s   zServerCursor.__iter__r   c                 C  s   | j d u s| jt| j   kr| jkr8n n"| jj | j| | j| _ d| _W d    n1 s3w   Y  | jt| j krDt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   StopIterationrH   )r   recr   r   r   __next__   s   
"
zServerCursor.__next__relativevaluemodec                 C  s`   | j j | j | || W d    n1 sw   Y  |dkr+|  j|7  _d S || _d S )NrZ   )r(   r)   r+   _scroll_genrH   )r   r[   r\   r   r   r   scroll   s   

zServerCursor.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   cursorr   _compatr   _server_cursor_baser   r   r   r   r   r   r   r   <module>   s   "