
    (phS                    n   S r SSKJr  SSKJr  SSK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  SSKJr  SSKJr  SSKJr  SSKJ r J!r!  SSK"J#r#  SSK$J%r%J&r&J'r'  \(       a  SSKJ(r(  SSK)J*r*J+r+  \RX                  RZ                  r-\RX                  R\                  r.\R^                  R`                  r0\R^                  Rb                  r1\R^                  Rd                  r2\R^                  Rf                  r3\R^                  Rh                  r4\R^                  Rj                  r5\R^                  Rl                  r6\R^                  Rn                  r7\R^                  Rp                  r8\R^                  Rr                  r9\Rt                  Rv                  r; " S S\\\4   5      r<g)z
Psycopg BaseCursor object
    )annotations)partial)AnyGenericIterableNoReturnSequence)TYPE_CHECKING   )pq)adapt)errors)ConnectionTypeQueryParamsPQGen)RowRowMaker)capabilities)Column)connection_summary)PostgresQueryPostgresClientQuery)Prepare)executefetchsend)Transformer)PGconnPGresultc                     \ rS rSr% SR	                  5       rS\S'   S\S'   S\S'   \rS	\S
'   S5S jr	S6S7S jjr
S8S jr\S9S j5       r\S:S j5       r\S;S j5       r\S<S j5       r\S=S j5       r\S>S j5       rS?S jrS@SAS jjrSBS jr\SCS j5       rSDS jr S@SSS.         SES jjjr        SFS jr        SFS jrSSS.       SGS jjr S@     SHS jjr S@SS .         SIS! jjjrSJS" jrS@SKS# jjr S@     SLS$ jjr S%SS&.       SMS' jjr! S@     SNS( jjr"SOS) jr#SPS* jr$S@SQS+ jjr%SOS, jr&SRS- jr'SS .       SSS. jjr(STS/ jr)SUS0 jr*SVS1 jr+STS2 jr,\S8S3 j5       r-S4r.g)W
BaseCursor.   z
        _conn format _adapters arraysize _closed _results pgresult _pos
        _iresult _rowcount _query _tx _last_query _row_factory _make_row
        _pgconn _execmany_returning
        __weakref__
        r   _txRowMaker[Row]	_make_rowr   _pgconnztype[PostgresQuery]
_query_clsc                    Xl         [        U l        UR                  U l        [
        R                  " UR                  5      U l        SU l	        SU l
        S U l        U R                  5         g )Nr   F)_connTEXTformatpgconnr'   r   AdaptersMapadapters	_adapters	arraysize_closed_last_query_reset)self
connections     G/var/www/html/venv/lib/python3.13/site-packages/psycopg/_cursor_base.py__init__BaseCursor.__init__;   sR    
!((**:+>+>?)-    c                z    / U l         S U l        SU l        SU l        SU l        U   S U l        U(       a  S U l        g g )Nr   )_resultspgresult_pos_iresult	_rowcount_execmany_returning_query)r5   reset_querys     r7   r4   BaseCursor._resetE   s?    (*)-	04 DK r:   c           
     t   U R                   R                   SU R                   R                   3n[        U R                  5      nU R
                  (       a  SnOHU R                  (       a5  [        R                  " U R                  R                  5      R                  nOSnSU SU SU S[        U 5      S S	3	$ )
N.closedz	no result<z [z] z at 0xx>)	__class__
__module____qualname__r   r'   r2   r>   r   
ExecStatusstatusnameid)r5   clsinforP   s       r7   __repr__BaseCursor.__repr__Q   s    **+1T^^-H-H,IJ!$,,/<<F]]]]4==#7#78==F F3%r&D64|1==r:   c                    U R                   $ )z$The connection this cursor is using.)r*   r5   s    r7   r6   BaseCursor.connection\   s     zzr:   c                    U R                   $ N)r0   rX   s    r7   r/   BaseCursor.adaptersa   s    ~~r:   c                    U R                   $ )z`True` if the cursor is closed.)r2   rX   s    r7   rH   BaseCursor.closede   s     ||r:   c                ,   U R                   nU(       a|  UR                  (       d<  UR                  [        :X  d(  UR                  [        :X  d  UR                  [
        :X  a/  [        UR                  5       Vs/ s H  n[        X5      PM     sn$ gs  snf )zv
A list of `Column` objects describing the current resultset.

`!None` if the current resultset didn't return tuples.
N)r>   nfieldsrP   	TUPLES_OKSINGLE_TUPLETUPLES_CHUNKranger   )r5   resis      r7   descriptionBaseCursor.descriptionj   sj     mm
 KKzzY&zz\)zz\)-23;;-?@-?F4O-?@@ As   8Bc                    U R                   $ )z6Number of records affected by the precedent operation.)rA   rX   s    r7   rowcountBaseCursor.rowcount   s     ~~r:   c                    U R                   =(       a    U R                   R                  [        :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.
N)r>   rP   ra   r?   )r5   tupless     r7   	rownumberBaseCursor.rownumber   s2     D4==#7#79#D"tyy,,r:   c                    g r[    )r5   sizess     r7   setinputsizesBaseCursor.setinputsizes       r:   Nc                    g r[   rq   )r5   sizecolumns      r7   setoutputsizeBaseCursor.setoutputsize   ru   r:   c                    U R                   [        U R                  5      S-
  :  a  U R                  U R                   S-   5        gg)z
Move to the result set of the next query executed through `executemany()`
or to the next result set if `execute()` returned more than one.

Return `!True` if a new result is available, which will be the one
methods `!fetch*()` will operate on.
r   TN)r@   lenr=   _select_current_resultrX   s    r7   nextsetBaseCursor.nextset   s;     ==3t}}-11''(9:r:   c                    U R                   (       a  U R                   R                  OSnU(       a  UR                  5       $ S$ )zt
The command status tag from the last SQL command executed.

`!None` if the cursor doesn't have a result available.
N)r>   command_statusdecode)r5   msgs     r7   statusmessageBaseCursor.statusmessage   s.     /3mmdmm**"szz|,,r:   c                    [         er[   )NotImplementedErrorrX   s    r7   _make_row_makerBaseCursor._make_row_maker   s    !!r:   preparebinaryc             #    #    U R                  U5       Sh  vN   U R                  X5      nU R                  XSUS9 Sh  vN   U R                  R                  (       a,  U R                  R                  R                  5        Sh  vN   Xl        U R                  R                  R                  U R                  5       Sh  vN   g N N NF N7f)z*Generator implementing `Cursor.execute()`.Nr   )	_start_query_convert_query_maybe_prepare_genr*   	_pipeline_communicate_genr3   	_preparedmaintain_gen)r5   queryparamsr   r   pgqs         r7   _execute_genBaseCursor._execute_gen   s      $$U+++!!%0**3*OOO::zz++<<>>> ::''44TZZ@@@ 	,O> 	AsF   CC
(C CACC<CCCCCCc              #  f  #    U R                   R                  nU(       d   eU R                  U5       Sh  vN   U(       d  SU l        U R                  b   eX0l        SnU He  nU(       a  U R                  X5      nXpl        SnOWR                  U5        U R                  USS9 Sh  vN   UR                  5        Sh  vN   Mg     Xl
        U(       a  UR                  SS9 Sh  vN   U R                   R                  R                  U R                   5       Sh  vN   g N N~ Nh NB N7f)zI
Generator implementing `Cursor.executemany()` with pipelines available.
Nr   TFr   )flush)r*   r   r   rA   rB   r   rC   dumpr   r   r3   
_fetch_genr   r   )r5   r   
params_seq	returningpipelinefirstr   r   s           r7   _executemany_gen_pipeline$BaseCursor._executemany_gen_pipeline   s     ::''x$$U+++DN''///#,  F))%8! ..sD.AAA00222 ! !***666::''44TZZ@@@1 	,  B2
 7@sX   4D1D'A3D1*D)+D1D+'D1*D-+6D1!D/"D1)D1+D1-D1/D1c              #    #    U R                  U5       Sh  vN   U(       d  SU l        U R                  b   eX0l        SnU HM  nU(       a  U R                  X5      nX`l        SnOWR                  U5        U R                  USS9 Sh  vN   MO     Xl        U R                  R                  R                  U R                  5       Sh  vN   g N NH N	7f)zM
Generator implementing `Cursor.executemany()` with pipelines not available.
Nr   TFr   )r   rA   rB   r   rC   r   r   r3   r*   r   r   )r5   r   r   r   r   r   r   s          r7   _executemany_gen_no_pipeline'BaseCursor._executemany_gen_no_pipeline   s      $$U+++DN''///#,  F))%8! ..sD.AAA ! !::''44TZZ@@@' 	,  B 	As5   CCA3CCA CCCCCc             #    #    U R                  X5      u  pEU[        R                  L a  U R                  XS9  OU[        R                  L a}  U R                  XQ5        U R                  R                  (       dQ  [        U R                  5       S h  vN u  nUR                  [        :X  a  [        R                  " X`R                  S9eU R                  XQUS9  U R                  R                   R#                  XU5      nU R                  R                  (       a:  S nUb  XtU4nU R                  R                  R$                  R'                  X45        g [        U R                  5       S h  vN n	Ub&  U R                  R                   R)                  XtXY5        U R+                  U	5        U R-                  U	5        g  GN- NS7f)Nr   encoding)_get_preparedr   NO_execute_sendSHOULD_send_preparer*   r   r   r'   rP   FATAL_ERROReerror_from_result	_encoding_send_query_preparedr   maybe_add_to_cacheresult_queueappendvalidate_check_results_set_results)
r5   r   r   r   preprQ   resultkeyqueuedresultss
             r7   r   BaseCursor._maybe_prepare_gen	  sa     ''5
7::s2 w~~%""4-zz+++24<<+@ @IV}}311&>>RR%%d%?
 jj""55cF::FT*JJ  --44d^D %T\\22?JJ  ))#TCG$'"3 !A& 3s&   BGF=CG,G -AG Gc                L    U R                   R                  R                  X5      $ r[   )r*   r   get)r5   r   r   s      r7   r   BaseCursor._get_prepared5  s     zz##''55r:   r   c             #    #    U R                  U5       Sh  vN   U R                  X5      nU R                  XSSS9  US:  a  [        S5      eUS:X  a  U R                  R                  5         O/[        R                  " SS9  U R                  R                  U5        Xl	        [        U R                  5       Sh  vN   g N N7f)z2Generator to send the query for `Cursor.stream()`.NT)r   force_extendedr   zsize must be >= 1)check)r   r   r   
ValueErrorr'   set_single_row_moder   has_stream_chunkedset_chunked_rows_moder3   r   )r5   r   r   r   rw   r   s         r7   _stream_send_genBaseCursor._stream_send_gen:  s      $$U+++!!%03dC!8011QYLL,,.++$7LL..t4 %%% 	, 	&s"   CCB$C<C=CCc              #    #    [        U R                  5       S h  vN nUc  g UR                  nU[        :X  d
  U[        :X  a=  X l        U R                  R                  X!S9  U(       a  U R                  5       U l	        U$ U[        :X  d
  U[        :X  aN  U(       a&  [        U R                  5       S h  vN nU(       a  M&  U[        :w  a  [        R                  " S5      eg U R                  U5      $  N NA7f)N)set_loadersz1the operation in stream() didn't produce a result)r   r'   rP   rb   rc   r>   r$   set_pgresultr   r&   ra   
COMMAND_OKr   ProgrammingError_raise_for_result)r5   r   re   rP   s       r7   _stream_fetchone_genBaseCursor._stream_fetchone_genP  s     t||,,;\!V|%;MHH!!#!9!%!5!5!7Jy Fj$8!&t||!44 #"((G   ))#..1 - 5s(   C8C4BC84C65C83C86C8c              #  F  #    U R                   (       a  [        R                  " S5      eU R                  5         U R                  (       a  U R                  ULa"  SU l        [
        R                  " U 5      U l        U R                  R                  5        Sh  vN   g N7f)zGenerator to start the processing of a query.

It is implemented as generator because it may send additional queries,
such as `begin`.
the cursor is closedN)
rH   r   InterfaceErrorr4   r3   r   r   r$   r*   r   )r5   r   s     r7   r   BaseCursor._start_queryk  so      ;;""#9::D$4$4E$A#D((.DH::**,,,s   BB!BB!c              #  (  #    U R                   R                  (       a  [        R                  " S5      eU R	                  5        Sh  vN   U(       a2  [        U R                  5      nUR                  X5        UR                  nU R                  U5      nU R                  USS9  [        U R                  5       Sh  vN n[        U5      S:w  a  [        R                  " S5      eU R                  US   5        U R!                  U5        g N NQ7f)z<Generator implementing sending a command for `Cursor.copy().z$COPY cannot be used in pipeline modeNFr   r   z*COPY cannot be mixed with other operationsr   )r*   r   r   NotSupportedErrorr   r   r$   convertr   r   r   r   r'   r|   r   _check_copy_resultr   )r5   	statementr   r   r   r   s         r7   _start_copy_genBaseCursor._start_copy_genz  s      ::%%&LMM$$&&& %dhh/CKK	*		I##I.5/$T\\22w<1$$%QRR
+'"! 	' 3s&   ADDA6D>D?ADDF)r   r   c                  Uc  U R                   nOU(       a  [        O[        nXl        U R                  R
                  (       ax  U R                  R
                  R                  R                  [        U R                  R                  UR                  UR                  UR                  UR                  US95        gU(       d  UR                  (       d
  U[        :X  aF  U R                  R                  UR                  UR                  UR                  UR                  US9  gU R                  R                  UR                  5        g)z
Implement part of execute() before waiting common to sync and async.

This is not a generator, but a normal non-blocking function.
N)param_formatsparam_typesresult_format)r,   BINARYr+   rC   r*   r   command_queuer   r   r'   send_query_paramsr   r   formatstypes
send_query)r5   r   r   r   fmts        r7   r   BaseCursor._execute_send  s     >++C"&C:: JJ  ..55LL22KKLL"'-- %"%	 u||sf}LL**#mm!KK! +  LL##EKK0r:   c                ^    U R                  U R                  5      nUR                  X5        U$ r[   )r(   r$   r   )r5   r   r   r   s       r7   r   BaseCursor._convert_query  s'     oodhh'E"
r:   c                    U(       d  [         R                  " S5      eU HD  nUR                  nU[        :w  d  M  U[        :w  d  M'  U[
        :w  d  M3  U R                  U5        MF     g)z
Verify that the results of a query are valid.

Verify that the query returned at least one result and that they all
represent a valid result from the database.
zgot no result from the queryN)r   InternalErrorrP   ra   r   EMPTY_QUERYr   )r5   r   re   rP   s       r7   r   BaseCursor._check_results  sN     //"@AACZZF"v';+@U&&s+ r:   c                   UR                   nU[        :X  a  [        R                  " XR                  S9eU[
        :X  a  [        R                  " S5      eU[        :X  d  U[        :X  d
  U[        :X  a  [        R                  " S5      e[        R                  " S[        R                  " U5      R                   35      e)zF
Raise an appropriate error message for an unexpected database result
r   pipeline abortedz8COPY cannot be used with this method; use copy() insteadz%unexpected result status from query: )rP   r   r   r   r   PIPELINE_ABORTEDPipelineAbortedCOPY_INCOPY_OUT	COPY_BOTHr   r   r   rO   rQ   r5   r   rP   s      r7   r   BaseCursor._raise_for_result  s     [ %%f~~FF''##$677w&H"4)8K$$J  //:2==;P;U;U:VW r:   c                p   Xl         U R                  U   =o0l        U R                  R	                  X2S9  SU l        UR                  [        :X  a  U R                  R                  U l	        O6UR                  [        :w  a"  U R                  R                  nUb  UOSU l	        U R                  5       U l        g)z<
Select one of the results in the cursor as the active one.
)r,   r   Nr<   )r@   r=   r>   r$   r   r?   rP   ra   ntuplesrA   r   command_tuplesr   r&   )r5   rf   r,   re   nrowss        r7   r}   !BaseCursor._select_current_result  s     "mmA..m
 	c1	::"!]]22DN
 ZZ8#MM00E&+&7URDN--/r:   c                n   U R                   c   XR                  S S & U R                  S5        g U R                   (       aF  U R                  (       + nU R                  R                  U5        U(       a  U R                  S5        g g U H+  nU =R                  UR
                  =(       d    S-  sl        M-     g )Nr   )rB   r=   r}   extendrA   r   )r5   r   first_batchre   s       r7   r   BaseCursor._set_results  s    ##+&MM!''* ''"&--/$$W-//2 
 #CNNc&8&8&=A=N #r:   c           	        U R                   R                  (       a  U R                   R                  R                  R                  [	        U R
                  R                  UUR                  UR                  S95        U R                   R                  R                  R                  S 5        g U R
                  R                  XR                  UR                  S9  g )N)r   )
r*   r   r   r   r   r'   send_preparer   r   r   )r5   rQ   r   s      r7   r   BaseCursor._send_prepare  s    ::JJ  ..55LL--KK %	 JJ  --44T:LL%%dKKU[[%Qr:   c          
        Uc  U R                   nOU(       a  [        O[        nU R                  R                  (       ac  U R                  R                  R
                  R                  [        U R                  R                  UUR                  UR                  US95        g U R                  R                  XR                  UR                  US9  g )N)r   r   )r,   r   r+   r*   r   r   r   r   r'   send_query_preparedr   r   )r5   rQ   r   r   r   s        r7   r   BaseCursor._send_query_prepared&  s     >++C"&C::JJ  ..55LL44JJ"%++"% LL,,jj3 - r:   c                   U R                   (       a  [        R                  " S5      eU R                  nU(       d  [        R                  " S5      eUR
                  nU[        :X  a  g U[        :X  a  [        R                  " XR                  S9eU[        :X  a  [        R                  " S5      e[        R                  " S5      e)Nr   zno result availabler   r   z*the last operation didn't produce a result)rH   r   r   r>   r   rP   ra   r   r   r   r   r   )r5   re   rP   s      r7   _check_result_for_fetch"BaseCursor._check_result_for_fetch=  s    ;;""#9::mm$$%:;;Y{"%%cNNCC''##$677$$%QRRr:   c                   UR                   nU[        :X  d
  U[        :X  a  gU[        :X  a  [        R
                  " XR                  S9e[        R                  " S[        R                  " U5      R                   35      e)zF
Check that the value returned in a copy() operation is a legit COPY.
Nr   zZcopy() should be used only with COPY ... TO STDOUT or COPY ... FROM STDIN statements, got )rP   r   r   r   r   r   r   r   r   rO   rQ   r   s      r7   r   BaseCursor._check_copy_resultN  so     W( 2{"%%f~~FF$$//1}}V/D/I/I.JL r:   c                   U R                  5         U R                  (       d   eUS:X  a  U R                  U-   nOUS:X  a  UnO[        SU S35      eSUs=::  a  U R                  R                  :  d  O  [        S5      eX0l        g )Nrelativeabsolutez
bad mode: z'. It should be 'relative' or 'absolute'r   zposition out of bound)r  r>   r?   r   r   
IndexError)r5   valuemodenewposs       r7   _scrollBaseCursor._scroll]  sz    $$&}}}:YY&FZFz$/VWXXF2T]]222455	r:   c                0    U R                  SS9  SU l        g)z3Non-blocking part of closing. Common to sync/async.F)rD   TN)r4   r2   rX   s    r7   _closeBaseCursor._closej  s     	&r:   c                .    U R                   R                  $ r[   )r'   r   rX   s    r7   r   BaseCursor._encodingq  s    ||%%%r:   )r0   r2   r*   rB   r@   r3   r&   r'   r?   rC   r=   rA   r$   r1   r,   r>   )r6   r   )T)rD   boolreturnNone)r  str)r  r   )r  zadapt.AdaptersMap)r  r  )r  zlist[Column] | None)r  int)r  
int | None)rr   zSequence[Any]r  r   r[   )rw   r   rx   r#  r  r   )r  bool | None)r  z
str | None)r  r%   )
r   r   r   Params | Noner   r$  r   r$  r  PQGen[None])r   r   r   zIterable[Params]r   r  r  r&  )r   r   r   r$  r   r$  r  r&  )r   r   r   r$  r  ztuple[Prepare, bytes])
r   r   r   r%  r   r$  rw   r"  r  r&  )r   r  r  zPQGen[PGresult | None])r   zQuery | Noner  r&  )r   r   r   r%  r  r&  )r   r   r   r  r   r$  r  r   )r   r   r   r%  r  r   )r   zlist[PGresult]r  r   )r   r    r  r   )rf   r"  r,   zpq.Format | Noner  r   )rQ   bytesr   r   r  r   )rQ   r'  r   r   r   r$  r  r   )r  r   )r   r    r  r   )r  r"  r  r!  r  r   )/__name__rM   rN   __firstlineno__split	__slots____annotations__r   r(   r8   r4   rU   propertyr6   r/   rH   rg   rj   rn   rs   ry   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   __static_attributes__rq   r:   r7   r"   r"   .   s   
 EG  
O&3J#3
	>        *   - - - -" !%A
  $"AA A
 A A 
A$!A!A(8!AEI!A	!AFAA(8AEIA	A>  $"*#*# 	*#
 *# 
*#Z :>6 6+66	6 !%&
 #&& &
 & & 
&,/6-  9=##(5#	#@  %"+1+1 	+1
 +1 
+1\ 59$1	,$04>&R IM -:E	.S" & &r:   r"   N)=__doc__
__future__r   	functoolsr   typingr   r   r   r   r	   r
    r   r   r   r   abcr   r   r   r   rowsr   r   _capabilitiesr   _columnr   pq.miscr   _queriesr   r   
_preparingr   
generatorsr   r   r   r   pq.abcr   r    Formatr+   r   rO   r   r   ra   r   r   r   r   rb   rc   r   TransactionStatusACTIVEr"   rq   r:   r7   <module>r@     s'   #  = =      5 5  '  ' 8  , , (	yy~~			mm'']]%%
MM##	==!!
--

MM##	mm''}}))}}))==11 				$	$E	&,- E	&r:   