
    fj#                         S SK r SSKJr  SSKJr   " S S\R                  5      r " S S\R                  5      r " S	 S
\5      r " S S\5      rg)    N   )connresource)
exceptionsc                   ~   ^  \ rS rSrSrSrU 4S jr\R                  S 5       r	\R                  S 5       r
S rSrU =r$ )	CursorFactory   zA cursor interface for the results of a query.

A cursor interface can be used to initiate efficient traversal of the
results of a large query.
)_state_args	_prefetch_query_timeout_record_classc                    > [         TU ]  U5        X@l        XPl        X l        X`l        X0l        Xpl        Ub  UR                  5         g g N)	super__init__r
   r   r   r   r	   r   attach)	self
connectionquerystateargsprefetchtimeoutrecord_class	__class__s	           G/var/www/html/GQ-WA/venv/lib/python3.13/site-packages/asyncpg/cursor.pyr   CursorFactory.__init__   sE     	$
!)LLN     c           	          U R                   c  SOU R                   n[        U R                  U R                  U R                  U R
                  U R                  UU R                  5      $ )N2   )r   CursorIterator_connectionr   r	   r
   r   r   )r   r   s     r   	__aiter__CursorFactory.__aiter__2   sT    /2T^^KKKKJJMM
 	
r   c                    U R                   b  [        R                  " S5      e[        U R                  U R
                  U R                  U R                  U R                  5      nUR                  U R                  5      R                  5       $ )Nz;prefetch argument can only be specified for iterable cursor)r   r   InterfaceErrorCursorr#   r   r	   r
   r   _initr   	__await__)r   cursors     r   r*   CursorFactory.__await__?   ss    >>%++MO OKKKKJJ
 ||DMM*4466r   c                     U R                   b@  U R                   R                  5         U R                  R                  U R                   5        g g r   r	   detachr#   _maybe_gc_stmtr   s    r   __del__CursorFactory.__del__M   9    ;;"KK ++DKK8 #r   )r
   r   r   r   r	   r   )__name__
__module____qualname____firstlineno____doc__	__slots__r   r   guardedr$   r*   r2   __static_attributes____classcell__r   s   @r   r   r      sR    I( 

 

 7 79 9r   r   c                   V   ^  \ rS rSrSrU 4S jrS rS rS rS r	S r
S	 rS
 rSrU =r$ )
BaseCursorS   )r	   r
   _portal_name
_exhaustedr   r   c                    > [         TU ]  U5        X@l        X0l        Ub  UR	                  5         S U l        SU l        X l        XPl        g )NF)	r   r   r
   r	   r   rB   rC   r   r   )r   r   r   r   r   r   r   s         r   r   BaseCursor.__init__^   sC    $
LLN )r   c                    U R                   c  [        R                  " S5      eU R                   R                  (       a  [        R                  " S5      eU R                  R
                  (       d  [        R                  " S5      eg )Nz(cursor: no associated prepared statementz(cursor: the prepared statement is closedz1cursor cannot be created outside of a transaction)r	   r   r'   closedr#   	_top_xactNoActiveSQLTransactionErrorr1   s    r   _check_readyBaseCursor._check_readyi   su    ;;++:< < ;;++:< < ))88CE E *r   c                 d  #    U R                  5         U R                  (       a  [        R                  " S5      eU R                  nUR
                  nUR                  S5      U l        UR                  U R                  U R                  U R                  USU5      I S h  vN u  pVU l
        U$  N7f)N!cursor already has an open portalportalT)rJ   rB   r   r'   r#   	_protocol_get_unique_idbind_executer	   r
   rC   )r   nr   conprotocolbuffer_s          r   
_bind_execBaseCursor._bind_execv   s     ++35 5 ==..x8+3+@+@KKT%6%64,J &J"4?&Js   BB0B. B0c                 P  #    U R                  5         U R                  (       a  [        R                  " S5      eU R                  nUR
                  nUR                  S5      U l        UR                  U R                  U R                  U R                  U5      I S h  vN nU$  N7f)NrM   rN   )
rJ   rB   r   r'   r#   rO   rP   bindr	   r
   )r   r   rS   rT   rU   s        r   _bindBaseCursor._bind   s     ++35 5 ==..x8}}T[[$**%)%6%6%,. . .s   BB&B$B&c                   #    U R                  5         U R                  (       d  [        R                  " S5      eU R                  R
                  nUR                  U R                  U R                  USU5      I S h  vN u  pEU l        U$  N7f)N#cursor does not have an open portalT)	rJ   rB   r   r'   r#   rO   executer	   rC   )r   rR   r   rT   rU   rV   s         r   _execBaseCursor._exec   s~       ++57 7 ##--+3+;+;KK**AtW,> &>"4?&>s   A:B<B=Bc                    #    U R                  5         U R                  (       d  [        R                  " S5      eU R                  R
                  nUR                  U R                  U5      I S h  vN   S U l        g  N7f)Nr^   )rJ   rB   r   r'   r#   rO   close_portal)r   r   rT   s      r   _close_portalBaseCursor._close_portal   sm       ++57 7 ##--##D$5$5w???  	@s   A-A>/A<0A>c           	         / nU R                   (       a  UR                  S5        UR                  S5        U R                  R                  R	                  S5      (       a  SnOU R                  R                  nSR                  X R                  R                  U R                  R                  SR                  U5      [        U 5      5      $ )N	exhausted zasyncpg.asyncpgz<{}.{} "{!s:.30}" {}{:#x}> )rC   appendr   r6   
startswithformatr5   r	   r   joinid)r   attrsmods      r   __repr__BaseCursor.__repr__   s    ??LL%R>>$$//
;;C..++C+22((KKHHUORX' 	'r   c                     U R                   b@  U R                   R                  5         U R                  R                  U R                   5        g g r   r.   r1   s    r   r2   BaseCursor.__del__   r4   r   )r
   rC   rB   r   r   r	   )r5   r6   r7   r8   r:   r   rJ   rW   r[   r`   rd   rr   r2   r<   r=   r>   s   @r   r@   r@   S   s8    I	*E 
	!' 9 9r   r@   c                   t   ^  \ rS rSrSrU 4S jr\R                  S 5       r\R                  S 5       r	Sr
U =r$ )r"      )_bufferr   r   c                    > [         TU ]  XX4U5        US::  a  [        R                  " S5      e[        R
                  " 5       U l        X`l        Xpl        g )Nr   z+prefetch argument must be greater than zero)	r   r   r   r'   collectionsdequerx   r   r   )	r   r   r   r   r   r   r   r   r   s	           r   r   CursorIterator.__init__   sO     	EFq=++=? ? #((*!r   c                     U $ r    r1   s    r   r$   CursorIterator.__aiter__   s    r   c                   #    U R                   ca  U R                  R                  U R                  U R                  SU R
                  S9I S h  vN U l         U R                   R                  5         U R                  (       dZ  U R                  (       dI  U R                  U R                  U R                  5      I S h  vN nU R                  R                  U5        U R                  (       dZ  U R                  (       dI  U R                  U R                  U R                  5      I S h  vN nU R                  R                  U5        U R                  (       a4  U R                  (       a#  U R                  U R                  5      I S h  vN   U R                  (       a  U R                  R                  5       $ [         e GNp GN N N=7fNT)namedr   )r	   r#   _get_statementr   r   r   r   rB   rC   rW   r   rx   extendr`   rd   popleftStopAsyncIteration)r   rU   s     r   	__anext__CursorIterator.__anext__   s1    ;; $ 0 0 ? ?!//	 !@ ! DK KK   ??4>>4==IIFLL'||DOO::dnndmmDDFLL'$$T]]333<<<<''))  - J E 4sK   AGF=A.G<G =A*G'G(AGG6G GGG)rx   r   r	   r   )r5   r6   r7   r8   r:   r   r   r;   r$   r   r<   r=   r>   s   @r   r"   r"      sA    4I (   ! !r   r"   c                       \ rS rSrSrSrS r\R                  SS.S j5       r	\R                  SS.S j5       r
\R                  SS.S	\4S
 jj5       rSrg)r(      z-An open *portal* into the results of a query.r~   c                 0  #    U R                   cW  U R                  R                  U R                  USU R                  S9I S h  vN U l         U R                   R                  5         U R                  5         U R                  U5      I S h  vN   U $  NN N7fr   )r	   r#   r   r   r   r   rJ   r[   )r   r   s     r   r)   Cursor._init   s     ;; $ 0 0 ? ?!//	 !@ ! DK KK jj!!! 	"s%   ABBABBBBN)r   c                   #    U R                  5         US::  a  [        R                  " S5      eU R                  (       a  / $ U R	                  X5      I Sh  vN n[        U5      U:  a  SU l        U$  N7f)zReturn the next *n* rows as a list of :class:`Record` objects.

:param float timeout: Optional timeout value in seconds.

:return: A list of :class:`Record` instances.
r   n must be greater than zeroNT)rJ   r   r'   rC   r`   len)r   rR   r   recss       r   fetchCursor.fetch  se      	6++,IJJ??IZZ++t9q="DO ,s   AA5A3A5c                   #    U R                  5         U R                  (       a  gU R                  SU5      I Sh  vN n[        U5      S:  a  SU l        gUS   $  N 7f)zuReturn the next row.

:param float timeout: Optional timeout value in seconds.

:return: A :class:`Record` instance.
Nr   Tr   )rJ   rC   r`   r   )r   r   r   s      r   fetchrowCursor.fetchrow  sS      	??ZZ7++t9q="DOAw	 ,s   8AA!Areturnc                L  #    U R                  5         US::  a  [        R                  " S5      eU R                  R                  nUR                  SR                  XR                  5      U5      I Sh  vN n[        UR                  5       S   5      nXQ:  a  SU l
        U$  N.7f)zSkip over the next *n* rows.

:param float timeout: Optional timeout value in seconds.

:return: A number of rows actually skipped over (<= *n*).
r   r   zMOVE FORWARD {:d} {}Nr   T)rJ   r   r'   r#   rO   r   rm   rB   intsplitrC   )r   rR   r   rT   statusadvanceds         r   forwardCursor.forward/  s      	6++,IJJ##--~~&<&C&C  '"#*, , v||~a()<"DO,s   A1B$3B"4/B$)rC   r	   )r5   r6   r7   r8   r9   r:   r)   r   r;   r   r   r   r   r<   r~   r   r   r(   r(      sm    7I (,  " (,    *. 3  r   r(   )	rz   rh   r   r   ConnectionResourcer   r@   r"   r(   r~   r   r   <module>r      sU      B9L33 B9Jl900 l9^5!Z 5!pIZ Ir   