
    *Jf                        d Z ddlmZ ddlmZmZmZmZ ddlmZm	Z	m
Z
mZ ddl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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$ ej%        j&        Z& G d dedef                   Z'dS )z
psycopg async cursor objects
    )TracebackType)AnyAsyncIteratorIterableList)OptionalTypeTYPE_CHECKINGoverload)asynccontextmanager   )pq)errors)QueryParams)	AsyncCopyAsyncWriter)RowRowMakerAsyncRowFactory)
BaseCursor)Self)Pipeline)AsyncConnectionc                       e Zd ZdZdZed2d            Zedddee         fd            Zd	d
dddeee                  f fdZde	fdZ
deee                  dee         dee         dd	fdZd3dZedee         fd            Zej        dee         dd	fd            Zdee         fdZ	 d4d	d	ddedee         dee         dee         de	f
dZdddedee         dedd	fd Z	 d4d	d!dedee         dee         dee         fd"Zdee         fd#Zd5d%edee         fd&Z dee         fd'Z!dee         fd(Z"d6d*ed+e#dd	fd,Z$e%	 d4d	d-d.edee         d/ee&         dee'         fd0            Z(d3d1Z) xZ*S )7AsyncCursorpsycopg 
connectionAsyncConnection[Row]c                     d S Nr   )selfr   s     W/home/alex/cs2snipeproduction/venv/lib/python3.11/site-packages/psycopg/cursor_async.py__init__zAsyncCursor.__init__   s    <?C    AsyncConnection[Any]row_factoryc                    d S r"   r   )r#   r   r(   s      r$   r%   zAsyncCursor.__init__"   s	     sr&   N)r(   c                f    t                                          |           |p|j        | _        d S r"   )superr%   r(   _row_factory)r#   r   r(   	__class__s      r$   r%   zAsyncCursor.__init__'   s3     	$$$'A:+Ar&   returnc                 
   K   | S r"   r   r#   s    r$   
__aenter__zAsyncCursor.__aenter__0   s      r&   exc_typeexc_valexc_tbc                 >   K   |                                   d {V  d S r"   )close)r#   r2   r3   r4   s       r$   	__aexit__zAsyncCursor.__aexit__3   s.       jjllr&   c                 2   K   |                                   d S r"   )_closer0   s    r$   r6   zAsyncCursor.close;   s      r&   c                     | j         S r"   r,   r0   s    r$   r(   zAsyncCursor.row_factory>   s      r&   c                 F    || _         | j        r ||           | _        d S d S r"   )r,   pgresult	_make_row)r#   r(   s     r$   r(   zAsyncCursor.row_factoryB   s3    '= 	/([..DNNN	/ 	/r&   c                 ,    |                      |           S r"   r;   r0   s    r$   _make_row_makerzAsyncCursor._make_row_makerH   s      &&&r&   preparebinaryqueryparamsrB   rC   c          	      @  K   	 | j         j        4 d {V  | j                             |                     ||||                     d {V  d d d           d {V  n# 1 d {V swxY w Y   n,# t          j        $ r}|                    d           d }~ww xY w| S )NrA   )_connlockwait_execute_gene_NO_TRACEBACKwith_traceback)r#   rD   rE   rB   rC   exs         r$   executezAsyncCursor.executeK   sQ     	*z        joo%%eVWV%TT                                    	* 	* 	*##D)))	*s:   A2 8A A2  
A**A2 -A*.A2 2BBBF)	returning
params_seqrP   c          	        K   	 t          j                    r/| j        j        4 d {V  | j        j        }|r5| j                            |                     |||                     d {V  d d d           d {V  n# 1 d {V swxY w Y   |s| j                                        4 d {V  | j        j        4 d {V  | j                            |                     |||                     d {V  d d d           d {V  n# 1 d {V swxY w Y   d d d           d {V  n# 1 d {V swxY w Y   d S d S d S | j        j        4 d {V  | j                            |                     |||                     d {V  d d d           d {V  d S # 1 d {V swxY w Y   d S # t          j
        $ r}|                    d           d }~ww xY wr"   )r   is_supportedrG   rH   	_pipelinerI   _executemany_gen_pipelinepipeline_executemany_gen_no_pipelinerK   rL   rM   )r#   rD   rQ   rP   prN   s         r$   executemanyzAsyncCursor.executemany\   sn     	*$&&   :?        
,A "joo ::5*iXX                                    #z2244        djo        "joo ::5*iXX                                                                 
  :?        *//99%YWW                                       	* 	* 	*##D)))	*s   &F5 AB .F5  
B

F5 B
$F5 2D06D;D0
D	D0D	D0F5 0
D::F5 =D:>F5 F5 6F"F5 "
F,,F5 /F,0F5 5GGGrC   c               h  K   | j         j        rt          j        d          | j        j        4 d {V  	 | j                            |                     |||                     d {V  d}| j                            |                     |                     d {V rZ| j	        
                    d| j                  }|W V  d}| j                            |                     |                     d {V Zn,# t          j        $ r}|                    d           d }~ww xY w| j         j        t          k    r| j                                         	 | j                            |                     d                     d {V r5	 | j                            |                     d                     d {V 5n# t"          $ r Y nw xY w	 | j                            |                     d                     d {V  n# t"          $ r Y nw xY wn# | j         j        t          k    r| j                                         	 | j                            |                     d                     d {V r5	 | j                            |                     d                     d {V 5n# t"          $ r Y nw xY w	 | j                            |                     d                     d {V  w # t"          $ r Y w w xY ww xY wd d d           d {V  d S # 1 d {V swxY w Y   d S )Nz(stream() cannot be used in pipeline moderZ   Tr   F)first)_pgconnpipeline_statusrK   ProgrammingErrorrG   rH   rI   _stream_send_gen_stream_fetchone_gen_txload_rowr>   rL   rM   transaction_statusACTIVEcancel	Exception)r#   rD   rE   rC   r\   recrN   s          r$   streamzAsyncCursor.stream{   s      <' 	Q$%OPPP:? !	 !	 !	 !	 !	 !	 !	 !	 joo))%)GG          JOOD,E,Ee,L,LMMMMMMMM "#x00DNCCCIIII!E	 !JOOD,E,Ee,L,LMMMMMMMM " ? . . .''---. <2f<< J%%'''$(JOO 55E5BB% %       ! ! %)JOO 55E5BB% %       ! %   
"jood.G.Ge.G.T.TUUUUUUUUUU$   ! =4<2f<< J%%'''$(JOO 55E5BB% %       ! ! %)JOO 55E5BB% %       ! %   
"jood.G.Ge.G.T.TUUUUUUUUUU$   ! =!!	 !	 !	 !	 !	 !	 !	 !	 !	 !	 !	 !	 !	 !	 !	 !	 !	 !	 !	 !	 !	 !	 !	 !	 !	 !	 !	 !	 !	 !	s   L!CC=<H=D&D!!D&&H).L!A)GL!
GL!GL!4H	L!	
HL!HL!/L
A)J43L4
K	>L K	L4K:9L:
L	LL	LL!!
L+.L+c                    K   |                                   d {V  |                                  | j                            | j        | j                  }|| xj        dz  c_        |S )Nr   )_fetch_pipeline_check_result_for_fetchrb   rc   _posr>   )r#   records     r$   fetchonezAsyncCursor.fetchone   sq      ""$$$$$$$$$$$&&&""49dn==IINIIr&   r   sizec                 P  K   |                                   d {V  |                                  | j        sJ |s| j        }| j                            | j        t          | j        |z   | j        j                  | j	                  }| xj        t          |          z  c_        |S r"   )rk   rl   r=   	arraysizerb   	load_rowsrm   minntuplesr>   len)r#   rp   recordss      r$   	fetchmanyzAsyncCursor.fetchmany   s      ""$$$$$$$$$$$&&&} 	">D($$I	D $-"788N
 

 			S\\!		r&   c                    K   |                                   d {V  |                                  | j        sJ | j                            | j        | j        j        | j                  }| j        j        | _        |S r"   )rk   rl   r=   rb   rs   rm   ru   r>   )r#   rw   s     r$   fetchallzAsyncCursor.fetchall   s}      ""$$$$$$$$$$$&&&}($$TY0Et~VVM)	r&   c                    K                                      d {V                                    dt          dt          t                   f fd}	  | j                  }|d S  xj        dz  c_        |W V  *)Nposr.   c                 D    j                             | j                  S r"   )rb   rc   r>   )r|   r#   s    r$   loadz#AsyncCursor.__aiter__.<locals>.load   s    8$$S$.999r&   Tr   )rk   rl   intr   r   rm   )r#   r~   rows   `  r$   	__aiter__zAsyncCursor.__aiter__   s      ""$$$$$$$$$$$&&&	:c 	:hsm 	: 	: 	: 	: 	: 	:	$ty//C{IINIIIIII	r&   relativevaluemodec                 j   K   |                                   d {V  |                     ||           d S r"   )rk   _scroll)r#   r   r   s      r$   scrollzAsyncCursor.scroll   sD      ""$$$$$$$$$UD!!!!!r&   writer	statementr   c                 K   	 | j         j        4 d{V  | j                             |                     ||                     d{V  ddd          d{V  n# 1 d{V swxY w Y   t	          | |          4 d{V }|W V  ddd          d{V  n# 1 d{V swxY w Y   n,# t
          j        $ r}|                    d          d}~ww xY w|                     d           dS )z#
        :rtype: AsyncCopy
        Nr   r   )	rG   rH   rI   _start_copy_genr   rK   rL   rM   _select_current_result)r#   r   rE   r   copyrN   s         r$   r   zAsyncCursor.copy   s;     	*z O O O O O O O Ojood&:&:9f&M&MNNNNNNNNNO O O O O O O O O O O O O O O O O O O O O O O O O O O !f555       



                           	* 	* 	*##D)))	* 	##A&&&&&s^   B/ 5AB/ 
A''B/ *A'+B/ BB/ 
B''B/ *B'+B/ /C>CCc                 8  K   | j         dur| j        s| j        j        r{| j        j        4 d {V  | j                            | j        j                            d                     d {V  d d d           d {V  d S # 1 d {V swxY w Y   d S d S d S d S )NFT)flush)_execmany_returningr=   rG   rT   rH   rI   
_fetch_genr0   s    r$   rk   zAsyncCursor._fetch_pipeline   sk     $E11M 2
$ 2 z S S S S S S S Sjoodj&:&E&ED&E&Q&QRRRRRRRRRS S S S S S S S S S S S S S S S S S S S S S S S S S S S S S	 211111s   ?B
BB)r   r    )r.   Nr"   )r   )r   )+__name__
__module____qualname__	__slots__r   r%   r   r   r   r   r1   r	   BaseExceptionr   r7   r6   propertyr(   setterr   r@   r   r   boolrO   r   rY   r   ri   ro   r   r   rx   rz   r   strr   r   AsyncCopyWriterr   r   rk   __classcell__)r-   s   @r$   r   r      s%       JI??? X?0BQRUBV   X 7;	B B B*B oc23	B B B B B B$    4./ -( '	
 
       !_S1 ! ! ! X! /s'; / / / / /
'# ' ' ' ' $(
 #'!%    
 $  
   ,  * * ** V$*
 * 
* * * *D $(+
 "&+ + ++  +
 + 
s	+ + + +Z     C S	    S	    s!3    " "# "S "$ " " " "  $('
 -1' ' ''  '
 )' 
y	!' ' ' '*S S S S S S S Sr&   r   r'   N)(__doc__typesr   typingr   r   r   r   r   r	   r
   r   
contextlibr    r   r   rK   abcr   r   r   r   r   r   rowsr   r   r   cursorr   _compatr   rT   r   connection_asyncr   TransactionStatusre   r   r   r&   r$   <module>r      s           5 5 5 5 5 5 5 5 5 5 5 5 : : : : : : : : : : : : * * * * * *                     ; ; ; ; ; ; ; ; 0 0 0 0 0 0 0 0 0 0                   2111111			$[S [S [S [S [S*3S89 [S [S [S [S [Sr&   