
    (phi$                       % S r SSKJr  SSKrSSK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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  SSK J!r!J"r"  SSK#J$r$  SSK%J&r&  SSK'J(r(  Sr)S\*S'   \
RV                  RX                  r,\
RV                  RZ                  r-\
R\                  R^                  r/\
R`                  Rb                  r1\Rd                  " S5      r3 " S S5      r4 " S S\45      r5 " S S\45      r6g)z
commands pipeline management
    )annotationsN)TracebackType)AnyTYPE_CHECKING   )pq)errors)PipelineCommandPQGen)DequeSelf	TypeAlias)connection_summary)pipeline_communicate
fetch_manysend)capabilities)PGresult)
Connection)KeyPrepare)
BaseCursor)BaseConnection)AsyncConnectionzEtuple[BaseCursor[Any, Any], tuple[Key, Prepare, bytes] | None] | Noner   PendingResultpsycopgc                      \ rS rSr% S\S'   S\S'   SS jrSS jr\SS j5       r\	SS	 j5       r
SS
 jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSrg)BasePipeline+   zDeque[PipelineCommand]command_queuezDeque[PendingResult]result_queuec                    Xl         UR                  U l        [        [           " 5       U l        [        [
           " 5       U l        SU l        g )Nr   )_connpgconnr   r
   r    r   r!   level)selfconns     D/var/www/html/venv/lib/python3.13/site-packages/psycopg/_pipeline.py__init__BasePipeline.__init__/   s9    
kk"?35!-02
    c                    U R                   R                   SU R                   R                   3n[        U R                  R
                  5      nSU SU S[        U 5      S S3$ )N.< z at 0xx>)	__class__
__module____qualname__r   r#   r$   id)r&   clsinfos      r(   __repr__BasePipeline.__repr__6   s]    **+1T^^-H-H,IJ!$**"3"343%qfRXaL22r+   c                V    [         R                  " U R                  R                  5      $ N)r   PipelineStatusr$   pipeline_statusr&   s    r(   statusBasePipeline.status;   s      !<!<==r+   c                ,    [         R                  " 5       $ )zCReturn `!True` if the psycopg libpq wrapper supports pipeline mode.)r   has_pipeline)r6   s    r(   is_supportedBasePipeline.is_supported?   s     ((**r+   c              #  F  #    [         R                  " SS9  U R                  S:X  a  U R                  R	                  5         OGU R
                  (       d  U R                  R                  [        :X  a  U R                  5        S h  vN   U =R                  S-  sl        g  N7f)NT)checkr   r   )	r   rB   r%   r$   enter_pipeline_moder    transaction_statusACTIVE	_sync_genr>   s    r(   
_enter_genBasePipeline._enter_genD   sl     !!-::?KK++-4;;#A#AV#K ~~'''

a
 (s   BB!BB!c                b   U =R                   S-  sl         U R                   S:X  a;  U R                  R                  [        :w  a   U R                  R	                  5         g g g ! [
        R                   a8  nU(       a  [        R                  SX5         S nAg UR                  S 5      eS nAff = f)Nr   r   zerror ignored exiting %r: %s)
r%   r$   r?   BADexit_pipeline_modeeOperationalErrorloggerwarningwith_traceback)r&   excexc2s      r(   _exitBasePipeline._exitR   s    

a
::?t{{11S8	4..0  9? %% 4 NN#A4NN--d334s   A" "B.6B)B))B.c              #     #    U R                  5         U R                  5        S h  vN   U R                  SS9 S h  vN   g  N N7f)NFflush_enqueue_sync_communicate_gen
_fetch_genr>   s    r(   rJ   BasePipeline._sync_gen`   s?     ((***???/// 	+/s   $AAAAAAc              #     #     U R                  5         U R                  5        Sh  vN   U R                  SS9 Sh  vN   g N N! U R                  SS9 Sh  vN    f = f7f)zO
Exit current pipeline by sending a Sync and fetch back all remaining results.
NTrZ   r\   r>   s    r(   	_exit_genBasePipeline._exit_gene   sX     	3 ,,...T222 /2tT222sG   A%#A AA A%AA%A A%A"AA""A%c              #  2  #    [        U R                  U R                  5       Sh  vN nSnU H/  nU R                  R	                  5       n U R                  XC5        M1     Ub  Ueg NA! [        R                   a  nUc  Un SnAMZ   SnAM`  SnAff = f7f)zaCommunicate with pipeline to send commands and possibly fetch
results, which are then processed.
N)r   r$   r    r!   popleft_process_resultsrP   Error)r&   fetched	exceptionresultsqueuedrU   s         r(   r^   BasePipeline._communicate_geno   s      2$++t?Q?QRR	G&&..0F$%%f6   O ! S 77 $$ #I %$s9   $BA(%BA*B*B>BBBBc             #    #    U R                   (       d  gU(       a7  U R                  R                  5         [        U R                  5       Sh  vN   SnU R                   (       ad  [	        U R                  5       Sh  vN nU(       d  O?U R                   R                  5       n U R                  XC5        U R                   (       a  Md  Ub  Ueg N NS! [        R                   a  nUc  Un SnAN;SnAff = f7f)a.  Fetch available results from the connection and process them with
pipeline queued items.

If 'flush' is True, a PQsendFlushRequest() is issued in order to make
sure results can be fetched. Otherwise, the caller may emit a
PQpipelineSync() call to ensure the output buffer gets flushed before
fetching.
N)	r!   r$   send_flush_requestr   r   re   rf   rP   rg   )r&   r[   ri   rj   rk   rU   s         r(   r_   BasePipeline._fetch_gen   s        KK**,DKK(((	!+DKK!88G &&..0F$%%f6   O ! ) 9 77 $$ #I$sT   AC:C/C:>C?&C:&C 7C:
C:C:C7(C2-C:2C77C:c                   Uck  Uu  nUR                   [        :X  a(  [        R                  " X0R                  R
                  S9eUR                   [        :X  a  [        R                  " S5      egUu  pEU(       a+  Uu  pgnUR                  R                  R                  XgX5        UR                  U5        UR                  U5        g)aJ  Process a results set fetched from the current pipeline.

This matches 'results' with its respective element in the pipeline
queue. For commands (None value in the pipeline queue), results are
checked directly. For prepare statement creation requests, update the
cache. Otherwise, results are attached to their respective cursor.
N)encodingzpipeline aborted)r?   FATAL_ERRORrP   error_from_resultr$   	_encodingPIPELINE_ABORTEDPipelineAbortedr#   	_preparedvalidate_check_results_set_results)	r&   rk   rj   resultcursorprepinfokeyprepnames	            r(   rf   BasePipeline._process_results   s     >IV}}+))&;;;P;PQQ"22''(:;; 3  &F"*4&&//4I!!'*(r+   c                    U R                   R                  U R                  R                  5        U R                  R                  S5        g)z#Enqueue a PQpipelineSync() command.N)r    appendr$   pipeline_syncr!   r>   s    r(   r]   BasePipeline._enqueue_sync   s4    !!$++";";<  &r+   )r#   r    r%   r$   r!   N)r'   zBaseConnection[Any]returnNone)r   str)r   zpq.PipelineStatus)r   bool)r   PQGen[None])rU   BaseException | Noner   r   )r[   r   r   r   )rk   r   rj   zlist[PGresult]r   r   r   r   )__name__r3   r4   __firstlineno____annotations__r)   r8   propertyr?   classmethodrC   rK   rW   rJ   rb   r^   r_   rf   r]   __static_attributes__ r+   r(   r   r   +   si    ))&&3
 > > + +40
3 @).'r+   r   c                  n   ^  \ rS rSr% SrSrS\S'   SU 4S jjrSS jrSS jr        SS	 jr	S
r
U =r$ )Pipeline   z(Handler for connection in pipeline mode.r   Connection[Any]r#   c                $   > [         TU ]  U5        g r;   superr)   r&   r'   r2   s     r(   r)   Pipeline.__init__       r+   c                    U R                   R                     U R                   R                  U R                  5       5        SSS5        g! , (       d  f       g= f! [        R
                   a  nUR                  S5      eSnAff = f)z[Sync the pipeline, send any pending command and receive and process
all available results.
Nr#   lockwaitrJ   rP   _NO_TRACEBACKrT   r&   exs     r(   syncPipeline.sync   sW    	*

 01 ! 	*##D))	*s4   A *AA 
AA A B0BBc                    U R                   R                     U R                   R                  U R                  5       5        S S S 5        U $ ! , (       d  f       U $ = fr;   r#   r   r   rK   r>   s    r(   	__enter__Pipeline.__enter__   s;    ZZ__JJOODOO-.  _s   *A
Ac                    U R                   R                     U R                   R                  U R                  5       5        S S S 5        U R                  U5        g ! , (       d  f       N = f! [         a8  nU(       a  [
        R                  SX5         S nANOUR                  S 5      eS nAff = f! U R                  U5        f = fNz error ignored terminating %r: %s	r#   r   r   rb   	ExceptionrR   rS   rT   rW   r&   exc_typeexc_valexc_tbrV   s        r(   __exit__Pipeline.__exit__   s    
	 

 01 ! JJw ! 	0A4NN))$//	0 JJwsR   A- *AA- 
A*&A- )B2 *A- -
B/7B*B2 B**B//B2 2Cr   )r'   r   r   r   r   r   r   r   ztype[BaseException] | Noner   r   r   zTracebackType | Noner   r   )r   r3   r4   r   __doc__r   r)   r   r   r   r   __classcell__r2   s   @r(   r   r      sP    2J*
 ,  &  %	 
 
   r+   r   c                  n   ^  \ rS rSr% SrSrS\S'   SU 4S jjrSS jrSS jr        SS	 jr	S
r
U =r$ )AsyncPipeline   z.Handler for async connection in pipeline mode.r   AsyncConnection[Any]r#   c                $   > [         TU ]  U5        g r;   r   r   s     r(   r)   AsyncPipeline.__init__   r   r+   c                h  #     U R                   R                   IS h  vN   U R                   R                  U R                  5       5      I S h  vN   S S S 5      IS h  vN   g  NF N N	! , IS h  vN  (       d  f       g = f! [        R
                   a  nUR                  S 5      eS nAff = f7fr;   r   r   s     r(   r   AsyncPipeline.sync   so     	*zzjjoodnn&6777 '7 ' 	*##D))	*s   B2B A%B -A+A'A+B A) B $B2%B 'A+)B +B1A42B>B B2B B/B**B//B2c                  #    U R                   R                   IS h  vN   U R                   R                  U R                  5       5      I S h  vN   S S S 5      IS h  vN   U $  NG N N
! , IS h  vN  (       d  f       U $ = f7fr;   r   r>   s    r(   
__aenter__AsyncPipeline.__aenter__   sQ     ::???**//$//"3444 #? #4 #??sV   BA%B-A+A'A+BA)B'A+)B+B1A42B>Bc                  #     U R                   R                   IS h  vN   U R                   R                  U R                  5       5      I S h  vN   S S S 5      IS h  vN   U R                  U5        g  NW N( N! , IS h  vN  (       d  f       N/= f! [         a8  nU(       a  [
        R                  SX5         S nAN^UR                  S 5      eS nAff = f! U R                  U5        f = f7fr   r   r   s        r(   	__aexit__AsyncPipeline.__aexit__   s     
	 zzjjoodnn&6777 ' JJw '7 ' 	0A4NN))$//	0 JJws   C1B A6B -A<A8A<B A: B $C16B 8A<:B <BBBB C B 
C C=C CCC C..C1r   )r'   r   r   r   r   r   r   )r   r3   r4   r   r   r   r)   r   r   r   r   r   r   s   @r(   r   r      sP    8J*
 ,  &  %	 
 
   r+   r   )7r   
__future__r   loggingtypesr   typingr   r    r   r	   rP   abcr
   r   _compatr   r   r   pq.miscr   
generatorsr   r   r   _capabilitiesr   pq.abcr   
connectionr   
_preparingr   r   _cursor_baser   _connection_baser   connection_asyncr   r   r   
ExecStatusrr   ru   
ConnStatusrN   TransactionStatusrI   	getLoggerrR   r   r   r   r   r+   r(   <module>r      s    #   %   ' + + ' > > ' &((01 L y  mm''==11 mm				$	$			9	%N' N'b( | ( V% L % r+   