
    (ph*$                       S r SSKJr  SSKrSSKJr  SSK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Jr  SSKJr  SSKJr  \
(       a  SSKJr  SSKJr  \R6                  R8                  r\R:                  R<                  r\R>                  " \ 5      r! " S S\"5      r# " S S\RH                  5      r% " S S\\   5      r& " S S\&S   5      r' " S S\&S   5      r(g)zC
Transaction context managers returned by Connection.transaction()
    )annotationsN)TracebackType)AnyGenericIteratorTYPE_CHECKING   )pq)sql)errors)ConnectionTypePQGen)Self)connection_summary)
Connection)AsyncConnectionc                  4    \ rS rSrSrSrSS	S jjrS
S jrSrg)Rollback    z
Exit the current `Transaction` context immediately and rollback any changes
made within this context.

If a transaction context is specified in the constructor, rollback
enclosing transactions contexts up to and including the one specified.
psycopgNc                    Xl         g Ntransaction)selfr   s     F/var/www/html/venv/lib/python3.13/site-packages/psycopg/transaction.py__init__Rollback.__init__+   s    &    c                P    U R                   R                   SU R                  < S3$ )N())	__class____qualname__r   r   s    r   __repr__Rollback.__repr__.   s'    ..--.a0@0@/C1EEr   r   r   )r   z%Transaction | AsyncTransaction | Nonereturnstr)__name__
__module__r$   __firstlineno____doc__r   r&   __static_attributes__ r   r   r   r       s     J'Fr   r   c                      \ rS rSrSrSrg)OutOfOrderTransactionNesting2   z)Out-of-order transaction nesting detectedr0   N)r+   r,   r$   r-   r.   r/   r0   r   r   r2   r2   2   s    3r   r2   c                      \ rS rSr  S     SS jj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S jrSS jrSrg)BaseTransaction6   Nc                    Xl         U R                   R                  U l        U=(       d    SU l        X0l        S=U l        U l        SU l        SU l        g )N F)_connpgconn_savepoint_nameforce_rollback_entered_exited_outer_transaction_stack_index)r   
connectionsavepoint_namer=   s       r   r   BaseTransaction.__init__7   sK      
jj''-3,',,"'r   c                    U R                   $ )zF
The name of the savepoint; `!None` if handling the main transaction.
)r<   r%   s    r   rC   BaseTransaction.savepoint_nameE   s     ###r   c                \   U R                   R                   SU R                   R                   3n[        U R                  5      nU R
                  (       d  SnOU R                  (       d  SnOSnU R                  (       a  U R                  < S3OSnSU SU SU S	U S
[        U 5      S S3$ )N.inactiveactive
terminated r8   <r!   z) z at 0xx>)	r#   r,   r$   r   r;   r>   r?   rC   id)r   clsinfostatussps        r   r&   BaseTransaction.__repr__N   s    **+1T^^-H-H,IJ!$++.}}FF!F,0,?,?##&a(R3%qAfXRvVBtHQ<qAAr   c              #     #    U R                   (       a  [        S5      eSU l         U R                  5         U R                  5        H&  nU R                  R                  U5       S h  vN   M(     g  N	7f)Nz(transaction blocks can be used only onceT)r>   	TypeError_push_savepoint_get_enter_commandsr:   _exec_command)r   commands     r   
_enter_genBaseTransaction._enter_gen[   sY     ==FGG//1Gzz//888 28s   A%A3'A1(
A3c              #    #    U(       d*  U R                   (       d  U R                  5        S h  vN   g U R                  U5       S h  vN $  N N! [         a    e [         a   n[
        R                  SX5         S nAgS nAff = f7f)NFz#error ignored in rollback of %s: %s)r=   _commit_gen_rollback_genr2   	Exceptionloggerwarning)r   exc_typeexc_valexc_tbexc2s        r   	_exit_genBaseTransaction._exit_gend   sx      t22'')))#'#5#5g#>>? * ?/   DdQsJ   ,B	AB	A 	A
A B	A B&B<B	BB	c              #     #    U R                  S5      nSU l        U(       a  UeU R                  5        H&  nU R                  R	                  U5       S h  vN   M(     g  N	7f)NcommitT)_pop_savepointr?   _get_commit_commandsr:   rZ   )r   exr[   s      r   r_   BaseTransaction._commit_gen}   sR       *H002Gzz//888 38s   AA!A
A!c              #  X  #    [        U[        5      (       a!  [        R                  U R                   S3SS9  U R                  S5      nSU l        U(       a  UeU R                  5        H&  nU R                  R                  U5       S h  vN   M(     U R                  R                  R                  5         U R                  R                  R                  U R                  5       S h  vN   [        U[        5      (       a!  UR                  (       a  UR                  U L a  gg N N=7f)Nz: Explicit rollback from: T)exc_inforollbackF)
isinstancer   rb   debugr:   rl   r?   _get_rollback_commandsrZ   	_preparedclearmaintain_genr   )r   re   rn   r[   s       r   r`   BaseTransaction._rollback_gen   s     gx((LLDJJ<'ABTLR  ,H224Gzz//888 5 	

""$::''44TZZ@@@gx((&&'*=*=*E 9 	As%   B	D*D&AD**D(+<D*(D*c              #  F  #    U R                   (       a  U R                  R                  5       v   U R                  (       a_  [        R
                  " S5      R                  [        R                  " U R                  5      5      R                  U R                  5      v   g g 7f)NzSAVEPOINT {})	r@   r:   _get_tx_start_commandr<   r   SQLformat
Identifieras_bytesr%   s    r   rY   #BaseTransaction._get_enter_commands   sg     ""**2244't';';<=$**%  s   BB!c              #  r  #    U R                   (       ao  U R                  (       d^  [        R                  " S5      R	                  [        R
                  " U R                   5      5      R                  U R                  5      v   U R                  (       a"  U R                  R                  (       a   eSv   g g 7f)Nz
RELEASE {}s   COMMIT	r<   r@   r   r|   r}   r~   r   r:   _num_transactionsr%   s    r   rm   $BaseTransaction._get_commit_commands   sv     (?(?%t';';<=$**% ""zz3333O #s   B5B7c              #  &  #    U R                   (       a  U R                  (       d  [        R                  " S5      R	                  [        R
                  " U R                   5      S9R                  U R                  5      v   [        R                  " S5      R	                  [        R
                  " U R                   5      S9R                  U R                  5      v   U R                  (       a"  U R                  R                  (       a   eSv   g g 7f)NzROLLBACK TO {n})nzRELEASE {n}s   ROLLBACKr   r%   s    r   ru   &BaseTransaction._get_rollback_commands   s     (?(?)*#..)=)=>?$**% &#..)=)=>?$**% ""zz3333 #s   DDc                ~   U R                   R                  [        :H  U l        U R                  (       a  U R                  R
                  (       a   eO2U R                  (       d!  SU R                  R
                  S-    3U l        U R                  R
                  U l        U R                  =R
                  S-  sl        g)z
Push the transaction on the connection transactions stack.

Also set the internal state of the object and verify consistency.
_pg3_r	   N)r;   transaction_statusIDLEr@   r:   r   r<   rA   r%   s    r   rX   BaseTransaction._push_savepoint   s     #'++"@"@D"H"" zz33333 '').tzz/K/Ka/O.P'Q$ JJ88

$$)$r   c                    U R                   =R                  S-  sl        U R                   R                  U R                  :X  a  g[        SU SU  35      $ )za
Pop the transaction from the connection transactions stack.

Also verify the state consistency.
r	   Nztransaction z at the wrong nesting level: )r:   r   rA   r2   )r   actions     r   rl   BaseTransaction._pop_savepoint   sR     	

$$)$::''4+<+<<+6("?vF
 	
r   )r:   r>   r?   r@   r<   rA   r=   r;   NF)rB   r   rC   
str | Noner=   bool)r)   r   r(   )r)   zPQGen[None])rd   type[BaseException] | Nonere   BaseException | Nonerf   TracebackType | Noner)   PQGen[bool])re   r   r)   r   )r)   zIterator[bytes])r)   None)r   r*   r)   zException | None)r+   r,   r$   r-   r   propertyrC   r&   r\   rh   r_   r`   rY   rm   ru   rX   rl   r/   r0   r   r   r5   r5   6   s     &*$	" # 	 $ $B9, & %	
 
29,	
"*&
r   r5   c                  T    \ rS rSrSrSr\S	S j5       rS
S jr        SS jrSr	g)Transaction   zG
Returned by `Connection.transaction()` to handle a transaction block.
r   c                    U R                   $ )z&The connection the object is managing.r:   r%   s    r   rB   Transaction.connection   s     zzr   c                    U R                   R                     U R                   R                  U R                  5       5        S S S 5        U $ ! , (       d  f       U $ = fr   r:   lockwaitr\   r%   s    r   	__enter__Transaction.__enter__   s;    ZZ__JJOODOO-.  _s   *A
Ac                    U R                   R                  [        :X  aK  U R                  R                     U R                  R                  U R                  XU5      5      sS S S 5        $ g! , (       d  f       g = fr   r;   rS   OKr:   r   r   rh   r   rd   re   rf   s       r   __exit__Transaction.__exit__   sP     ;;#zzt~~h'PQ !  !s   +A++
A9r0   N)r)   Connection[Any]r)   r   rd   r   re   r   rf   r   r)   r   )
r+   r,   r$   r-   r.   r   rB   r   r   r/   r0   r   r   r   r      sP     J 

,
 &
 %	

 

r   r   r   c                  T    \ rS rSrSrSr\S	S j5       rS
S jr        SS jrSr	g)AsyncTransactioni  zL
Returned by `AsyncConnection.transaction()` to handle a transaction block.
r   c                    U R                   $ r   r   r%   s    r   rB   AsyncTransaction.connection  s    zzr   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__AsyncTransaction.__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                N  #    U R                   R                  [        :X  ac  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 S 5      IS h  vN   $ g NI N N
! , IS h  vN  (       d  f       g = f7fr   r   r   s       r   	__aexit__AsyncTransaction.__aexit__  se      ;;#zz!ZZ__T^^Hv-VWW '  'W 'sV   9B%BB%/B.B/B2B%>B	?B%B	B%B"BB"B%r0   N)r)   AsyncConnection[Any]r   r   )
r+   r,   r$   r-   r.   r   rB   r   r   r/   r0   r   r   r   r     sP     J 

,
 &
 %	

 

r   r   r   ))r.   
__future__r   loggingtypesr   typingr   r   r   r   r8   r
   r   r   eabcr   r   _compatr   pq.miscr   rB   r   connection_asyncr   TransactionStatusr   
ConnStatusr   	getLoggerr+   rb   ra   r   ProgrammingErrorr2   r5   r   r   r0   r   r   <module>r      s    #   8 8    &  '&1	  ]]			8	$Fy F$41#5#5 4m
gn- m
`/"34 <'=> r   