
     h                        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
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rddlmZ  G d dedef   ee         Zy)z%
psycopg server-side cursor (async).
    )annotations)TYPE_CHECKINGAnyoverload)warn)AsyncIteratorIterable   )errors)ParamsQuery)AsyncRowFactoryRow)Self)AsyncCursor)ServerCursorMixin)AsyncConnectionc                      e Zd ZdZdZeddd	 	 	 	 	 	 	 dd       Zeddd	 	 	 	 	 	 	 	 	 dd       Zdddd	 	 	 	 	 	 	 	 	 dd	Zdd
Zd fdZ	 ddd	 	 	 	 	 	 	 	 	 ddZdd	 	 	 	 	 	 	 ddZ	ddZ
dddZd dZd!dZd"d#dZ xZS )$AsyncServerCursorpsycopg NF)
scrollablewithholdc                    y Nr   )self
connectionnamer   r   s        V/var/www/tech_portal/venv/lib/python3.12/site-packages/psycopg/_server_cursor_async.py__init__zAsyncServerCursor.__init__   s         c                    y r   r   r   r   r   row_factoryr   r   s         r   r    zAsyncServerCursor.__init__(   s     r!   )r$   r   r   c                   t        j                  | ||xs |j                         t        j                  | |||       y )N)r$   )r   r    r$   r   r#   s         r   r    zAsyncServerCursor.__init__3   s:     	*+*O9O9O	
 	""4z8Dr!   c                F    | j                   st        d|  dt               y y )Nzthe server-side cursor z[ was deleted while still open. Please use 'with' or '.close()' to close the cursor properly)closedr   ResourceWarning)r   s    r   __del__zAsyncServerCursor.__del__A   s,    {{)$ 0P P r!   c                  K   | j                   j                  4 d{    | j                  r	 ddd      d{    y| j                   j                  s1| j                   j                  | j	                                d{    t
        |           d{    ddd      d{    y7 7 u7 /7 7 # 1 d{  7  sw Y   yxY ww)zI
        Close the current cursor and free associated resources.
        N)_connlockr'   wait
_close_gensuperclose)r   	__class__s    r   r0   zAsyncServerCursor.closeI   s      ::?? 	" 	"{{	" 	" 	" ::$$jjoodoo&7888'-/!!	" 	" 	" 	" 9!	" 	" 	" 	"s   CB/CB9CB1CAB9B3B9B5B9C)B7*C1C3B95B97C9C?C CC)binaryc                 K   |rt        dt        |      d          | j                  j                  rt	        j
                  d      	 | j                  j                  4 d{    | j                  j                  | j                  |||             d{    ddd      d{    | S 7 J7 7 
# 1 d{  7  sw Y   | S xY w# t        j                  $ r}|j                  d      d}~ww xY 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   queryparamsr2   kwargsexs         r   executezAsyncServerCursor.executeT   s      5d6l1o5FGHH<<''%%D 	*zz P Pjjood&7&7vv&NOOOP P
 POP P P P
   	*##D))	*s   AC8C %B0&C )0B6B2B6C )B4*C .C80C 2B64C 6C	<B?=C	C C8	C C5C00C55C8T)	returningc               4   K   t        j                  d      w)z/Method not implemented for server-side cursors.z0executemany not supported on server-side cursors)r8   r9   )r   r=   
params_seqrB   s       r   executemanyzAsyncServerCursor.executemanyn   s      !!"TUUs   c                <  K   | j                   j                  4 d {    | j                   j                  | j                  d             d {   }d d d       d {    r| xj                  dz  c_        |d   S y 7 c7 37 %# 1 d {  7  sw Y   5xY ww)Nr
   r   )r+   r,   r-   
_fetch_gen_posr   recss     r   fetchonezAsyncServerCursor.fetchonet   s~     ::?? 	= 	=);<<D	= 	=IINI7N	=<	= 	= 	= 	=sV   BBB.BBBBB "BBBBBBBc                ^  K   |s| j                   }| j                  j                  4 d {    | j                  j                  | j	                  |             d {   }d d d       d {    | xj
                  t              z  c_        |S 7 f7 67 (# 1 d {  7  sw Y   8xY wwr   )	arraysizer+   r,   r-   rG   rH   len)r   sizerJ   s      r   	fetchmanyzAsyncServerCursor.fetchmany}   s     >>D::?? 	@ 	@)>??D	@ 	@		SY		@?	@ 	@ 	@ 	@sV   )B-BB-.BBB"B--B.%B-BB-B*B!B*&B-c                B  K   | j                   j                  4 d {    | j                   j                  | j                  d              d {   }d d d       d {    | xj                  t              z  c_        |S 7 f7 67 (# 1 d {  7  sw Y   8xY wwr   )r+   r,   r-   rG   rH   rN   rI   s     r   fetchallzAsyncServerCursor.fetchall   s     ::?? 	@ 	@)>??D	@ 	@		SY		@?	@ 	@ 	@ 	@sV   BBB.B
BB
BB %BB
B
BBBBc                 K   	 | j                   j                  4 d {    | j                   j                  | j                  | j                               d {   }d d d       d {    D ]  }| xj
                  dz  c_        |  t        |      | j                  k  ry 7 7 Q7 C# 1 d {  7  sw Y   SxY ww)Nr
   )r+   r,   r-   rG   itersizerH   rN   )r   rJ   recs      r   	__aiter__zAsyncServerCursor.__aiter__   s     zz M M!ZZ__T__T]]-KLLM M 		Q		 4y4==( MLM M M MsW   CB*C8B0B,B0C*B.+A C,B0.C0C6B97C>Cc                J  K   | j                   j                  4 d {    | j                   j                  | j                  ||             d {    d d d       d {    |dk(  r| xj                  |z  c_        y || _        y 7 j7 97 +# 1 d {  7  sw Y   ;xY ww)Nrelative)r+   r,   r-   _scroll_genrH   )r   valuemodes      r   scrollzAsyncServerCursor.scroll   s     ::?? 	A 	A**//$"2"25$"?@@@	A 	A :IIIDI	A@	A 	A 	A 	AsV   B#BB#/BB
BB# B!(B#
BB#B BB B#)r   zAsyncConnection[Row]r   strr   bool | Noner   bool)
r   AsyncConnection[Any]r   r]   r$   zAsyncRowFactory[Row]r   r^   r   r_   )
r   r`   r   r]   r$   zAsyncRowFactory[Row] | Noner   r^   r   r_   )returnNoner   )
r=   r   r>   zParams | Noner2   r^   r?   r   ra   r   )r=   r   rD   zIterable[Params]rB   r_   ra   rb   )ra   z
Row | None)r   )rO   intra   	list[Row])ra   rd   )ra   zAsyncIterator[Row])rX   )rZ   rc   r[   r]   ra   rb   )__name__
__module____qualname__	__slots__r   r    r)   r0   rA   rE   rK   rP   rR   rV   r\   __classcell__)r1   s   @r   r   r      s~    JI #'( 
      #'( 
 *     48"&E(E E
 1E  E E	" !%
 # 
   
6 PTVV(8VHLV	V r!   r   r`   N)__doc__
__future__r   typingr   r   r   warningsr   collections.abcr   r	    r   r8   abcr   r   rowsr   r   _compatr   cursor_asyncr   _server_cursor_baser   connection_asyncr   r   r   r!   r   <module>rv      sT    # / /  3   &  % 21D,c12K4DDr!   