
    (ph9                    n   S r SSKJr  SSKJrJrJrJrJrJ	r	  SSK
Jr  SSKJr  SSKJr  SSKJr  SS	KJrJrJrJr  SS
KJrJrJr  SSKJr  SSKJr  SSKJr  SSK J!r!  SSK"J#r#  \(       a  SSK$J%r%  SSK&J'r'  Sr(\RR                  RT                  r*\RR                  RV                  r+\RX                  RZ                  r-\RX                  R\                  r.\R^                  R`                  r0\R^                  Rb                  r1 " S S\!\\4   5      r2 " S S\2S\4   \\   5      r3 " S S\2S\4   \#\   5      r4g)z%
psycopg server-side cursor objects.
    )annotations)AnyAsyncIteratorIterableIteratorTYPE_CHECKINGoverload)warn   )pq)sql)errors)ConnectionTypeQueryParamsPQGen)Row
RowFactoryAsyncRowFactory)Cursor)Self)execute)
BaseCursor)AsyncCursor)
Connection)AsyncConnectiond   c                    ^  \ rS rSrSrSR                  5       r      SS jrSU 4S jjr\	SS j5       r
\	SS j5       r\	SS j5       r\	SS	 j5       r  S       SS
 jjrSS jrSS jrSS jrSS jrSS jrSrU =r$ )ServerCursorMixin'   zDMixin to add ServerCursor behaviour and implementation a BaseCursor.z7_name _scrollable _withhold _described itersize _formatc                b    Xl         X l        X0l        SU l        [        U l        [        U l        g )NF)_name_scrollable	_withhold
_describedDEFAULT_ITERSIZEitersizeTEXT_format)selfname
scrollablewithholds       H/var/www/html/venv/lib/python3.13/site-packages/psycopg/server_cursor.py__init__ServerCursorMixin.__init__,   s)     
%!-    c                   > [         TU ]  5       R                  S S5      nUR                  SU R                  < 5        SR                  U5      $ )Nr    )super__repr__splitinsertr"   join)r*   parts	__class__s     r.   r5   ServerCursorMixin.__repr__9   s?     "((q1Q4::.*xxr1   c                    U R                   $ )zThe name of the cursor.)r"   r*   s    r.   r+   ServerCursorMixin.name?   s     zzr1   c                    U R                   $ )z
Whether the cursor is scrollable or not.

If `!None` leave the choice to the server. Use `!True` if you want to
use `scroll()` on the cursor.
)r#   r=   s    r.   r,   ServerCursorMixin.scrollableD   s     r1   c                    U R                   $ )zI
If the cursor can be used after the creating transaction has committed.
)r$   r=   s    r.   r-   ServerCursorMixin.withholdN   s    
 ~~r1   c                    U R                   nU=(       a)    UR                  [        :H  =(       d    UR                  S:H  nU(       a  U R                  $ S$ )z_Index of the next row to fetch in the current result.

`!None` if there is no result to fetch.
r1   N)pgresultstatus	TUPLES_OKcommand_status_pos)r*   restupless      r.   	rownumberServerCursorMixin.rownumberU   sC     mm O#**	1NS5G5G35N"tyy,,r1   c              #  @  #    U R                  U5      nU R                  (       a  U R                  5        Sh  vN   SU l        U R                  U5       Sh  vN   U R	                  X5      nU R                  USS9  [        U R                  R                  5       Sh  vN nUS   R                  [        :w  a  U R                  US   5        Uc  U R                  U l        OU(       a  [        O[        U l        U R!                  5        Sh  vN   g N N Ny N7f)z0Generator implementing `ServerCursor.execute()`.NFT)force_extended)_make_declare_statementr%   
_close_gen_start_query_convert_query_execute_sendr   _connpgconnrE   
COMMAND_OK_raise_for_resultformatr)   BINARYr(   _describe_gen)r*   queryparamsbinarypgqresultss         r.   _declare_genServerCursorMixin._declare_genb   s      ,,U3 ??(((#DO$$U+++!!%03t4$TZZ%6%6772;+""72;/ >;;DL%+6DL %%'''# ) 	, 8 	(sG   6DDDDAD D!A/DDDDDDc              #  6  #    U R                   R                  U R                  R                  U R                  5      5        [        U R                   5       S h  vN nU R                  U5        Xl        U R                  SU R                  S9  SU l
        g  N=7f)Nr   )rY   T)_pgconnsend_describe_portalr"   encode	_encodingr   _check_results_results_select_current_resultr)   r%   )r*   r`   s     r.   r[   ServerCursorMixin._describe_gen   sq     ))$***;*;DNN*KL$T\\22G$##Adll#;	 3s   ABB>Bc              #    #    U R                   R                  R                  nU[        :w  a  U[        :w  a  g U R
                  (       d  U[        :X  a  g U R                  (       d|  [        R                  " S5      R                  [        R                  " U R                  5      5      nU R                   R                  U5       S h  vN nUc   eUR                  S:X  a  g [        R                  " S5      R                  [        R                  " U R                  5      5      nU R                   R                  U5       S h  vN   g  N N7f)Nz3SELECT 1 FROM pg_catalog.pg_cursors WHERE name = {}r   zCLOSE {})rU   rV   transaction_statusIDLEINTRANSr$   r%   r   SQLrY   Literalr"   _exec_commandntuples
Identifier)r*   tsr\   rI   s       r.   rQ   ServerCursorMixin._close_gen   s     ZZ11 :"- ~~"* GGEfS[[,-  "ZZ55e<<C?"?{{a
#**3>>$**+EF::++E222 = 	3s%   CEEA;EE
E
Ec              #    #    U R                   (       a  [        R                  " S5      eU R                  (       d0  U R	                  5        S h  vN   U R                  5        S h  vN   [        R                  " S5      R                  Uc  [        R                  " S5      O[        R                  " U5      [        R                  " U R                  5      5      nU R                  R                  X R                  S9 S h  vN nUc   eX0l        U R                   R#                  USS9  U R                   R%                  SUR&                  U R(                  5      $  GN N N_7f)Nzthe cursor is closedzFETCH FORWARD {} FROM {}ALL)result_formatF)set_loadersr   )closedeInterfaceErrorr%   rR   r[   r   rp   rY   rq   rt   r"   rU   rr   r)   rD   _txset_pgresult	load_rowsrs   	_make_row)r*   numr\   rI   s       r.   
_fetch_genServerCursorMixin._fetch_gen   s    ;;""#9::((***))+++23::!kCGGENs{{3/?NN4::&
 11%||1TTcu5xx!!!S[[$..AA ++ Us8   AE$EE$&E 'BE$E"AE$ E$"E$c              #  j  #    US;  a  [        SU S35      e[        R                  " S5      R                  [        R                  " US:X  a  SOS5      [        R                  " U5      [        R
                  " U R                  5      5      nU R                  R                  U5       S h  vN   g  N7f)N)relativeabsolutez
bad mode: z'. It should be 'relative' or 'absolute'zMOVE{} {} FROM {}r   z	 ABSOLUTE )	
ValueErrorr   rp   rY   rq   rt   r"   rU   rr   )r*   valuemoder\   s       r.   _scroll_genServerCursorMixin._scroll_gen   s     //z$/VWXX+,33GG4:#5K2>KKNN4::&

 ::++E222s   B)B3+B1,B3c                .   [        U[        5      (       a  UR                  U R                  5      n[        U[        R
                  5      (       d  [        R                  " U5      n[        R                  " S5      [        R                  " U R                  5      /nU R                  b8  UR                  [        R                  " U R                  (       a  SOS5      5        UR                  [        R                  " S5      5        U R                  (       a%  UR                  [        R                  " S5      5        UR                  [        R                  " S5      5        UR                  U5        [        R                  " S5      R                  U5      $ )NDECLARESCROLLz	NO SCROLLCURSORz	WITH HOLDFORr3   )
isinstancebytesdecoderg   r   
Composablerp   rt   r"   r#   appendr$   r8   )r*   r\   r9   s      r.   rP   )ServerCursorMixin._make_declare_statement   s    eU##LL0E%00GGENE GGINN4::&
 'LLT-=-=;OPSWWX&'>>LL-.SWWU^$Uwws|  ''r1   )r%   r)   r"   ri   r#   r$   r'   rD   )r+   strr,   bool | Noner-   bool)returnr   )r   r   )r   r   )r   
int | None)NN)r\   r   r]   Params | Noner^   r   r   PQGen[None])r   r   )r   r   r   zPQGen[list[Row]])r   intr   r   r   r   )r\   r   r   zsql.Composed)__name__
__module____qualname____firstlineno____doc__r6   	__slots__r/   r5   propertyr+   r,   r-   rK   ra   r[   rQ   r   r   rP   __static_attributes____classcell__r:   s   @r.   r   r   '   s    NIOOQI   	         
- 
- !%"	(( ( 	(
 
(>34B(3( (r1   r   c                  F  ^  \ rS rSrSrSr\SSS.       SS jj5       r\SSS.         SS jj5       rSSSS	.         SS
 jjrSS jrSU 4S jjr SSS.         SS jjjr	SS.       SS jjr
SS jrS S!S jjrS"S jrS#S jrS$S%S jjrSrU =r$ )&ServerCursor   psycopg NFr,   r-   c                   g Nr   r*   
connectionr+   r,   r-   s        r.   r/   ServerCursor.__init__        r1   c                   g r   r   r*   r   r+   row_factoryr,   r-   s         r.   r/   r           r1   r   r,   r-   c                   [         R                  " XU=(       d    UR                  S9  [        R                  XXE5        g N)r   )r   r/   r   r   r   s         r.   r/   r      s2     	+*O9O9O	
 	""4zDr1   c                P    U R                   (       d  [        SU  S3[        5        g g Nzthe server-side cursor z[ was deleted while still open. Please use 'with' or '.close()' to close the cursor properlyr{   r
   ResourceWarningr=   s    r.   __del__ServerCursor.__del__   ,    {{)$ 0P P r1   c                @  > U R                   R                     U R                  (       a
   SSS5        gU R                   R                  (       d)  U R                   R                  U R	                  5       5        [
        TU ]  5         SSS5        g! , (       d  f       g= f)z9
Close the current cursor and free associated resources.
NrU   lockr{   waitrQ   r4   closer*   r:   s    r.   r   ServerCursor.close  sZ     ZZ__{{ _ ::$$

 12GMO __s   BAB
Br^   c                  U(       a  [        S[        U5      S    35      eU R                  R                  (       a  [        R
                  " S5      e U R                  R                     U R                  R                  U R                  XU5      5        SSS5        U $ ! , (       d  f       U $ = f! [        R                   a  nUR                  S5      eSnAff = f)z3
Open a cursor to execute a query to the database.
keyword not supported: r   2server-side cursors not supported in pipeline modeN	TypeErrorlistrd   pipeline_statusr|   NotSupportedErrorrU   r   r   ra   _NO_TRACEBACKwith_tracebackr*   r\   r]   r^   kwargsexs         r.   r   ServerCursor.execute  s     5d6l1o5FGHH<<''%%D 	*

 1 1% HI !
  !
   	*##D))	*s6   B2 *,B B2  
B/*B2 /B2 2CCCT	returningc               .    [         R                  " S5      e)z/Method not implemented for server-side cursors.0executemany not supported on server-side cursorsr|   r   r*   r\   
params_seqr   s       r.   executemanyServerCursor.executemany*  s     !!"TUUr1   c                    U R                   R                     U R                   R                  U R                  S5      5      nS S S 5        W(       a  U =R                  S-  sl        US   $ g ! , (       d  f       N0= fNr   r   rU   r   r   r   rH   r*   recss     r.   fetchoneServerCursor.fetchone4  sQ    ZZ__::??4??1#56D IINI7N _s   +A,,
A:c                   U(       d  U R                   nU R                  R                     U R                  R                  U R	                  U5      5      nS S S 5        U =R
                  [        W5      -  sl        U$ ! , (       d  f       N.= fr   	arraysizerU   r   r   r   rH   lenr*   sizer   s      r.   	fetchmanyServerCursor.fetchmany=  sX    >>DZZ__::??4??4#89D 		SY	 _s   +A==
Bc                    U R                   R                     U R                   R                  U R                  S 5      5      nS S S 5        U =R                  [        W5      -  sl        U$ ! , (       d  f       N.= fr   rU   r   r   r   rH   r   r   s     r.   fetchallServerCursor.fetchallE  sL    ZZ__::??4??4#89D 		SY	 _s   +A**
A8c              #  P  #     U R                   R                     U R                   R                  U R                  U R                  5      5      nS S S 5        W H  nU =R
                  S-  sl        Uv   M     [        U5      U R                  :  a  g M  ! , (       d  f       NL= f7fNr   rU   r   r   r   r'   rH   r   r*   r   recs      r.   __iter__ServerCursor.__iter__K  sr     zztt}}'EF !		Q		  4y4==(  s   B&5BAB&
B#B&c                    U R                   R                     U R                   R                  U R                  X5      5        S S S 5        US:X  a  U =R                  U-  sl        g Xl        g ! , (       d  f       N1= f)Nr   )rU   r   r   r   rH   r*   r   r   s      r.   scrollServerCursor.scrollU  sR    ZZ__JJOOD,,U9:  :IIII _s   +A--
A;)rH   )r   zConnection[Row]r+   r   r,   r   r-   r   )
r   Connection[Any]r+   r   r   zRowFactory[Row]r,   r   r-   r   )
r   r  r+   r   r   zRowFactory[Row] | Noner,   r   r-   r   r   Noner   
r\   r   r]   r   r^   r   r   r   r   r   r\   r   r   zIterable[Params]r   r   r   r  r   z
Row | Noner   r   r   r   	list[Row]r   r
  )r   zIterator[Row]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   s   @r.   r   r      s   JI #'# 
      #'# 
 %     /3"&E#E E
 ,E  E E	 !%
 # 
   
> VV %V
 V 
V r1   r   r  c                  F  ^  \ rS rSrSrSr\SSS.       SS jj5       r\SSS.         SS jj5       rSSSS	.         SS
 jjrSS jrSU 4S jjr SSS.         SS jjjr	SS.       SS jjr
SS jrSS S jjrS!S jrS"S jrS#S$S jjrSrU =r$ )%AsyncServerCursori_  r   r   NFr   c                   g r   r   r   s        r.   r/   AsyncServerCursor.__init__e  r   r1   c                   g r   r   r   s         r.   r/   r  o  r   r1   r   c                   [         R                  " XU=(       d    UR                  S9  [        R                  XXE5        g r   )r   r/   r   r   r   s         r.   r/   r  z  s4     	+*O9O9O	
 	""4zDr1   c                P    U R                   (       d  [        SU  S3[        5        g g r   r   r=   s    r.   r   AsyncServerCursor.__del__  r   r1   c                  >#    U R                   R                   IS h  vN   U R                  (       a   S S S 5      IS h  vN   g U R                   R                  (       d1  U R                   R                  U R	                  5       5      I S h  vN   [
        TU ]  5       I S h  vN   S S S 5      IS h  vN   g  N Nz N/ N N! , IS h  vN  (       d  f       g = f7fr   r   r   s    r.   r   AsyncServerCursor.close  s}     ::???{{ #?? ::$$jjoodoo&7888'-/!! #?? 9! #???s   CB9CCC B;CACB=C#B?$C(C3C4C;C=C?CCC	C
CCr   c                 #    U(       a  [        S[        U5      S    35      eU R                  R                  (       a  [        R
                  " S5      e U R                  R                   IS h  vN   U R                  R                  U R                  XU5      5      I S h  vN   S S S 5      IS h  vN   U $  NI N N
! , IS h  vN  (       d  f       U $ = f! [        R                   a  nUR                  S 5      eS nAff = f7f)Nr   r   r   r   r   s         r.   r   AsyncServerCursor.execute  s      5d6l1o5FGHH<<''%%D 	*zzjjood&7&7v&NOOO '
  'O '
   	*##D))	*s   ADC 0B:1C 4/C #B<$C (C 3B>4C 8D:C <C >C  CC	CC DC D/D  DDTr   c               6   #    [         R                  " S5      e7f)Nr   r   r   s       r.   r   AsyncServerCursor.executemany  s      !!"TUUs   c                P  #    U R                   R                   IS h  vN   U R                   R                  U R                  S5      5      I S h  vN nS S S 5      IS h  vN   W(       a  U =R                  S-  sl        US   $ g  Nh N8 N*! , IS h  vN  (       d  f       N?= f7fr   r   r   s     r.   r   AsyncServerCursor.fetchone  sf     ::???);<<D #?IINI7N #< #???sV   B&BB&.BBBB&B
 'B&B
B&B#BB#B&c                r  #    U(       d  U R                   nU R                  R                   IS h  vN   U R                  R                  U R	                  U5      5      I S h  vN nS S S 5      IS h  vN   U =R
                  [        W5      -  sl        U$  Nf N6 N(! , IS h  vN  (       d  f       N== f7fr   r   r   s      r.   r   AsyncServerCursor.fetchmany  sm     >>D::???)>??D #?		SY	 #? #???sV   .B7BB7.B"B#B'B72B3%B7BB7B4#B&$B40B7c                L  #    U R                   R                   IS h  vN   U R                   R                  U R                  S 5      5      I S h  vN nS S S 5      IS h  vN   U =R                  [        W5      -  sl        U$  Nf N6 N(! , IS h  vN  (       d  f       N== f7fr   r   r   s     r.   r   AsyncServerCursor.fetchall  sa     ::???)>??D #?		SY	 #? #???sV   B$BB$.B
BB
B$B %B$B
B$
B!BB!B$c                 #     U R                   R                   IS h  vN   U R                   R                  U R                  U R                  5      5      I S h  vN nS S S 5      IS h  vN   W H  nU =R
                  S-  sl        U7v   M     [        U5      U R                  :  a  g M   N NU NG! , IS h  vN  (       d  f       N\= f7fr   r   r   s      r.   	__aiter__AsyncServerCursor.__aiter__  s     zz!ZZ__T__T]]-KLL '		Q		  4y4==( &L 'sW   CB.C8B4B0B4C*B2+AC0B42C4C:B=;CCc                  #    U R                   R                   IS h  vN   U R                   R                  U R                  X5      5      I S h  vN   S S S 5      IS h  vN   g  NG N N	! , IS h  vN  (       d  f       g = f7fr   )rU   r   r   r   r   s      r.   r   AsyncServerCursor.scroll  sJ     ::???**//$"2"25"?@@@ #??@ #???sV   BA%B.A+A'A+BA) B'A+)B+B1A42B>B)r   zAsyncConnection[Row]r+   r   r,   r   r-   r   )
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   r  r   r  r  r  r  r	  r  )r   zAsyncIterator[Row]r  r  )r   r   r   r   r   r	   r/   r   r   r   r   r   r   r   r#  r   r   r   r   s   @r.   r  r  _  s    JI #'( 
      #'( 
 *     48"&E(E E
 1E  E E" !%
 # 
   
8 VV %V
 V 
VA Ar1   r  r'  N)5r   
__future__r   typingr   r   r   r   r   r	   warningsr
   r   r   r   r   r|   abcr   r   r   r   rowsr   r   r   cursorr   _compatr   
generatorsr   _cursor_baser   cursor_asyncr   r   r   connection_asyncr   r&   Formatr(   rZ   
ExecStatusrW   rF   TransactionStatusrn   ro   r   r   r  r   r1   r.   <module>r6     s   # R R     5 5 2 2    $ %&1 	yy~~			]]%%
MM##		  



&
&l(
>3#67 l(^F$%6%;<fSk FR|A,c12K4D|Ar1   