
    ,hT                    f   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  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%  SSK&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)TYPE_CHECKINGAnyGenericIterableNoReturnSequence)partial   )adapt)errors)pq)ConnectionTypeParamsPQGenQuery)RowRowMaker)Column)connection_summary)PostgresClientQueryPostgresQuery)Prepare)executefetchsend)capabilities)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+SWS2 jr,\S8S3 j5       r-S4r.g)X
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     O/var/www/html/Ai_home/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._resetD   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__P   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.adapters`   s    ~~r:   c                    U R                   $ )z`True` if the cursor is closed.)r2   rX   s    r7   rH   BaseCursor.closedd   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.descriptioni   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_prepared4  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_gen9  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_genO  s     */*==;\!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_queryj  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5      S:w  a  [        R                  " S5      eU R                  US   5        U R!                  U5        g N NL7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_geny  s      ::%%&LMM$$&&& %dhh/CKK	*		I##I.5/gdll&;;<w=B$$%QRR
+'" 	' <s&   ADDA;D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[        :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     mm#F3%%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!''*%%"mm+KMM  )++A. 
 #"4"4"99 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                l   U R                   (       a  [        R                  " S5      eU R                  =n(       d  [        R                  " S5      eUR
                  =n[        :X  a  U$ U[        :X  a  [        R                  " XR                  S9eU[        :X  a  [        R                  " S5      eUR                  (       a  SUR                  R                  5        S3nO' [        R                  " U5      R                   nSU S3n[        R                  " S	U 35      e! ["         a    U S3n N0f = f)
Nr   zno result availabler   r   z (command status: )z
 - unknownz (result status: z)the last operation didn't produce records)rH   r   r   r>   r   rP   ra   r   r   r   r   r   r   r   r   rO   rQ   r   )r5   re   rP   detailstatus_names        r7   _check_result_for_fetch"BaseCursor._check_result_for_fetch8  s   ;;""#9::}}$$$$%:;;jj FY.J{"%%cNNCC''##$677!!-c.@.@.G.G.I-J!L8"$--"7"<"<K -[M;$$;F8D  " 8%+HJ"7K8s   " D! !D32D3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_resultR  so     W( 2{"%%f~~FF$$//1}}V/D/I/I.JL r:   c                    U R                  5       n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                  :  d  O  [	        S5      eX@l        g )Nrelativeabsolutez
bad mode: z'. It should be 'relative' or 'absolute'r   zposition out of bound)r  r?   r   r   
IndexError)r5   valuemodere   newposs        r7   _scrollBaseCursor._scrolla  sj    **,:YY&FZFz$/VWXXF(S[[(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._closem  s     	&r:   c                .    U R                   R                  $ r[   )r'   r   rX   s    r7   r   BaseCursor._encodingt  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#  )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	.4
 & &r:   r"   N)=__doc__
__future__r   typingr   r   r   r   r   r	   	functoolsr
    r   r   r   r   abcr   r   r   r   rowsr   r   _columnr   pq.miscr   _queriesr   r   
_preparingr   
generatorsr   r   r   _capabilitiesr   r   pq.abcr   r    Formatr+   r   rO   r   r   ra   r   r   r   r   rb   rc   r   TransactionStatusACTIVEr"   rq   r:   r7   <module>rC     s$   # L L     5 5   ' 8  , , ' (	yy~~			mm'']]%%
MM##	==!!
--

MM##	mm''}}))}}))==11 				$	$I	&,- I	&r:   