Ë
    êëj$  ã                  ó°  — d Z ddlmZ ddlZddlmZ ddlmZmZm	Z	m
Z
 ddlmZ ddlmZmZ dd	lmZmZ dd
lmZ ddlmZ erddlmZ ddlmZ ej6                  j8                  Zej:                  j<                  Z ej>                  e «      Z! G d„ de"«      Z# G d„ dejH                  «      Z% G d„ de	e   «      Z& G d„ de&d   «      Z' G d„ de&d   «      Z(y)zC
Transaction context managers returned by Connection.transaction()
é    )ÚannotationsN)ÚTracebackType)ÚTYPE_CHECKINGÚAnyÚGenericÚIteratoré   )Úerrors)ÚpqÚsql)ÚConnectionTypeÚPQGen)ÚSelf)Úconnection_summary)Ú
Connection)ÚAsyncConnectionc                  ó&   — e Zd ZdZdZddd„Zdd„Zy)	ÚRollbacka  
    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                ó   — || _         y ©N)Útransaction)Úselfr   s     úZ/var/www/html/kelly/kelly-backend/venv/lib/python3.12/site-packages/psycopg/transaction.pyÚ__init__zRollback.__init__)   s
   € Ø&ˆÕó    c                óN   — | j                   j                  › d| j                  ›d�S )NÚ(Ú))Ú	__class__Ú__qualname__r   ©r   s    r   Ú__repr__zRollback.__repr__,   s'   € Ø—.‘.×-Ñ-Ð.¨a°×0@Ñ0@Ð/CÀ1ÐEÐEr   r   )r   z%Transaction | AsyncTransaction | None©ÚreturnÚstr)Ú__name__Ú
__module__r!   Ú__doc__r   r#   © r   r   r   r      s   „ ñð €Jô'ôFr   r   c                  ó   — e Zd ZdZy)ÚOutOfOrderTransactionNestingz)Out-of-order transaction nesting detectedN)r'   r(   r!   r)   r*   r   r   r,   r,   0   s   „ Ú3r   r,   c                  ó–   — e Zd Z	 	 d	 	 	 	 	 dd„Zedd„«       Zdd„Zdd„Z	 	 	 	 	 	 	 	 dd„Zdd„Z	dd„Z
dd	„Zdd
„Zdd„Zdd„Zdd„Zy)ÚBaseTransactionNc                ó¤   — || _         | j                   j                  | _        |xs d| _        || _        dx| _        | _        d| _        d| _        y )NÚ Féÿÿÿÿ)Ú_connÚpgconnÚ_savepoint_nameÚforce_rollbackÚ_enteredÚ_exitedÚ_outer_transactionÚ_stack_index)r   Ú
connectionÚsavepoint_namer5   s       r   r   zBaseTransaction.__init__5   sO   € ð  ˆŒ
Ø—j‘j×'Ñ'ˆŒØ-Ò3°ˆÔØ,ˆÔØ',Ð,ˆŒ˜œØ"'ˆÔØˆÕr   c                ó   — | j                   S )zV
        The name of the savepoint; `!None` if handling the main transaction.
        )r4   r"   s    r   r;   zBaseTransaction.savepoint_nameC   s   € ð ×#Ñ#Ð#r   c                ó<  — | j                   j                  › d| j                   j                  › �}t        | j                  «      }| j
                  sd}n| j                  sd}nd}| j                  r| j                  ›d�nd}d|› d|› d|› d	|› d
t        | «      d›d�S )NÚ.ÚinactiveÚactiveÚ
terminatedÚ r0   Ú<r   z) z at 0xÚxÚ>)	r    r(   r!   r   r3   r6   r7   r;   Úid)r   ÚclsÚinfoÚstatusÚsps        r   r#   zBaseTransaction.__repr__L   s�   € Ø—‘×*Ñ*Ð+¨1¨T¯^©^×-HÑ-HÐ,IÐJˆÜ! $§+¡+Ó.ˆØ�}Š}Ø‰FØ—’Ø‰Fà!ˆFà,0×,?Ò,?�×#Ñ#Ð& aÑ(ÀRˆØ�3�%�q˜˜˜A˜f˜X R¨ v¨V´B°t³H¸Q°<¸qÐAÐAr   c              #  óÜ   K  — | j                   rt        d«      ‚d| _         | j                  «        | j                  «       D ]%  }| j                  j                  |«      E d {  –—†  Œ' y 7 Œ­w)Nz(transaction blocks can be used only onceT)r6   Ú	TypeErrorÚ_push_savepointÚ_get_enter_commandsr2   Ú_exec_command)r   Úcommands     r   Ú
_enter_genzBaseTransaction._enter_genY   sZ   è ø€ Ø�=Š=ÜÐFÓGÐGØˆŒà×ÑÔØ×/Ñ/Ö1ˆGØ—z‘z×/Ñ/°Ó8×8Ñ8ñ 2Ø8ús   ‚A A,Á"A*Á#A,c              #  ó   K  — |s%| j                   s| j                  «       E d {  –—†  y	 | j                  |«      E d {  –—† S 7 Œ7 Œ# t        $ r ‚ t        $ r!}t
        j                  d| |«       Y d }~yd }~ww xY w­w)NFz#error ignored in rollback of %s: %s)r5   Ú_commit_genÚ_rollback_genr,   Ú	ExceptionÚloggerÚwarning)r   Úexc_typeÚexc_valÚexc_tbÚexc2s        r   Ú	_exit_genzBaseTransaction._exit_genb   s|   è ø€ ñ ˜t×2Ò2Ø×'Ñ'Ó)×)Ð)ØðØ#'×#5Ñ#5°gÓ#>×>Ð?ð *øð ?ùÜ/ò ð Üò Ü—‘ÐDÀdÈDÔQÜûðüsI   ‚"A>¤A¥A>«A ¿AÁ A ÁA>ÁA ÁA;ÁA6Á1A>Á6A;Á;A>c              #  ó¸   K  — | j                  d«      }d| _        |r|‚| j                  «       D ]%  }| j                  j	                  |«      E d {  –—†  Œ' y 7 Œ­w)NÚcommitT)Ú_pop_savepointr7   Ú_get_commit_commandsr2   rO   )r   ÚexrP   s      r   rS   zBaseTransaction._commit_gen{   sS   è ø€ Ø× Ñ  Ó*ˆØˆŒÙØˆHà×0Ñ0Ö2ˆGØ—z‘z×/Ñ/°Ó8×8Ñ8ñ 3Ø8ús   ‚AAÁAÁAc              #  ó0  K  — t        |t        «      r$t        j                  | j                  › d�d¬«       | j                  d«      }d| _        |r|‚| j                  «       D ]%  }| j                  j                  |«      E d {  –—†  Œ' | j                  j                  j                  «        | j                  j                  j                  | j                  «      E d {  –—†  t        |t        «      r|j                  r|j                  | u ryy7 Œ�7 Œ2­w)Nz: Explicit rollback from: T)Úexc_infoÚrollbackF)Ú
isinstancer   rV   Údebugr2   r_   r7   Ú_get_rollback_commandsrO   Ú	_preparedÚclearÚmaintain_genr   )r   rY   ra   rP   s       r   rT   zBaseTransaction._rollback_gen„   sâ   è ø€ Ü�gœxÔ(Ü�L‰L˜DŸJ™J˜<Ð'AÐBÈTˆLÔRà× Ñ  Ó,ˆØˆŒÙØˆHà×2Ñ2Ö4ˆGØ—z‘z×/Ñ/°Ó8×8Ñ8ð 5ð 	�
‰
×Ñ×"Ñ"Ô$Ø—:‘:×'Ñ'×4Ñ4°T·Z±ZÓ@×@Ð@ä�gœxÔ(Ø×&Ò&¨'×*=Ñ*=ÀÑ*EØàð 9øð 	Aús%   ‚BDÂDÂADÃ!DÃ"1DÄDc              #  ó.  K  — | j                   r| j                  j                  «       –— | j                  r]t	        j
                  d«      j                  t	        j                  | j                  «      «      j                  | j                  «      –— y y ­w)NzSAVEPOINT {})	r8   r2   Ú_get_tx_start_commandr4   r   ÚSQLÚformatÚ
IdentifierÚas_bytesr"   s    r   rN   z#BaseTransaction._get_enter_commandsš   sh   è ø€ Ø×"Ò"Ø—*‘*×2Ñ2Ó4Ò4à×Òä—‘˜Ó'ß‘œŸ™ t×';Ñ';Ó<Ó=ß‘˜$Ÿ*™*Ó%óð  ùs   ‚BBc              #  óF  K  — | j                   rh| j                  s\t        j                  d«      j	                  t        j
                  | j                   «      «      j                  | j                  «      –— | j                  r| j                  j                  rJ ‚d–— y y ­w)Nz
RELEASE {}s   COMMIT©	r4   r8   r   rm   rn   ro   rp   r2   Ú_num_transactionsr"   s    r   r`   z$BaseTransaction._get_commit_commands¥   sw   è ø€ Ø×Ò¨×(?Ò(?ä—‘˜Ó%ß‘œŸ™ t×';Ñ';Ó<Ó=ß‘˜$Ÿ*™*Ó%òð ×"Ò"Ø—z‘z×3Ò3Ð3Ð3Ø‹Oð #ùs   ‚BB!c              #  ó  K  — | j                   rÆ| j                  sºt        j                  d«      j	                  t        j
                  | j                   «      ¬«      j                  | j                  «      –— t        j                  d«      j	                  t        j
                  | j                   «      ¬«      j                  | j                  «      –— | j                  r| j                  j                  rJ ‚d–— y y ­w)NzROLLBACK TO {n})ÚnzRELEASE {n}s   ROLLBACKrr   r"   s    r   rg   z&BaseTransaction._get_rollback_commands±   s·   è ø€ Ø×Ò¨×(?Ò(?ä—‘Ð)Ó*ß‘œ#Ÿ.™.¨×)=Ñ)=Ó>�Ó?ß‘˜$Ÿ*™*Ó%òô —‘˜Ó&ß‘œ#Ÿ.™.¨×)=Ñ)=Ó>�Ó?ß‘˜$Ÿ*™*Ó%òð ×"Ò"Ø—z‘z×3Ò3Ð3Ð3ØÓð #ùs   ‚C=C?c                ó^  — | j                   j                  t        k(  | _        | j                  r| j                  j
                  r/J ‚| j                  s!d| j                  j
                  dz   › �| _        | j                  j
                  | _        | j                  xj
                  dz  c_        y)z—
        Push the transaction on the connection transactions stack.

        Also set the internal state of the object and verify consistency.
        Ú_pg3_r	   N)r3   Útransaction_statusÚIDLEr8   r2   rs   r4   r9   r"   s    r   rM   zBaseTransaction._push_savepointÂ   sŠ   € ð #'§+¡+×"@Ñ"@ÄDÑ"HˆÔØ×"Ò"ð —z‘z×3Ò3Ð3Ð3ð ×'Ò'Ø).¨t¯z©z×/KÑ/KÈaÑ/OÐ.PÐ'Q�Ô$à ŸJ™J×8Ñ8ˆÔØ�
‰
×$Ò$¨Ñ)Ö$r   c                óª   — | j                   xj                  dz  c_        | j                   j                  | j                  k(  ryt        d|› d| › �«      S )zy
        Pop the transaction from the connection transactions stack.

        Also verify the state consistency.
        r	   Nztransaction z at the wrong nesting level: )r2   rs   r9   r,   )r   Úactions     r   r_   zBaseTransaction._pop_savepointÕ   sR   € ð 	�
‰
×$Ò$¨Ñ)Õ$Ø�:‰:×'Ñ'¨4×+<Ñ+<Ò<Øä+Ø˜6˜(Ð"?À¸vÐFó
ð 	
r   ©NF)r:   r   r;   ú
str | Noner5   Úbool)r%   r}   r$   )r%   zPQGen[None])rX   útype[BaseException] | NonerY   úBaseException | NonerZ   úTracebackType | Noner%   úPQGen[bool])rY   r€   r%   r‚   )r%   zIterator[bytes])r%   ÚNone)r{   r&   r%   zException | None)r'   r(   r!   r   Úpropertyr;   r#   rQ   r\   rS   rT   rN   r`   rg   rM   r_   r*   r   r   r.   r.   4   s˜   „ ð &*Ø$ð	à"ðð #ðð ó	ð ò$ó ð$óBó9ðà,ðð &ðð %ð	ð
 
óó29óó,	ó
óó"*ô&
r   r.   c                  óF   — e Zd ZdZdZedd„«       Zdd„Z	 	 	 	 	 	 	 	 d	d„Zy)
ÚTransactionzO
    Returned by `Connection.transaction()` to handle a transaction block.
    r   c                ó   — | j                   S )z&The connection the object is managing.©r2   r"   s    r   r:   zTransaction.connectionë   s   € ð �z‰zÐr   c                ó°   — | j                   j                  5  | j                   j                  | j                  «       «       d d d «       | S # 1 sw Y   | S xY wr   ©r2   ÚlockÚwaitrQ   r"   s    r   Ú	__enter__zTransaction.__enter__ð   s9   € Ø�Z‰Z�_‹_Ø�J‰J�O‰O˜DŸO™OÓ-Ô.÷ àˆ÷ àˆús   —*AÁAc                óî   — | j                   j                  t        k(  rL| j                  j                  5  | j                  j                  | j                  |||«      «      cd d d «       S y# 1 sw Y   y xY wr|   ©r3   rI   ÚOKr2   r‹   rŒ   r\   ©r   rX   rY   rZ   s       r   Ú__exit__zTransaction.__exit__õ   sR   € ð �;‰;×Ñ¤Ò#Ø—‘—“Ø—z‘z—‘ t§~¡~°hÀÈÓ'PÓQ÷ !‘ð ÷ !�ús   ´,A+Á+A4N)r%   úConnection[Any]©r%   r   ©rX   r   rY   r€   rZ   r�   r%   r~   )r'   r(   r!   r)   r„   r:   r�   r’   r*   r   r   r†   r†   ä   sP   „ ñð €Jàòó ðóð

à,ð
ð &ð
ð %ð	
ð
 
ô
r   r†   r“   c                  óF   — e Zd ZdZdZedd„«       Zdd„Z	 	 	 	 	 	 	 	 d	d„Zy)
ÚAsyncTransactionzT
    Returned by `AsyncConnection.transaction()` to handle a transaction block.
    r   c                ó   — | j                   S r   rˆ   r"   s    r   r:   zAsyncTransaction.connection	  s   € à�z‰zÐr   c              ƒ  ó  K  — | j                   j                  4 ƒd {  –—†  | j                   j                  | j                  «       «      ƒ d {  –—†  d d d «      ƒd {  –—†  | S 7 ŒG7 Œ7 Œ
# 1 ƒd {  –—†7  sw Y   | S xY w­wr   rŠ   r"   s    r   Ú
__aenter__zAsyncTransaction.__aenter__  sW   è ø€ Ø—:‘:—?—?“?Ø—*‘*—/‘/ $§/¡/Ó"3Ó4×4Ð4÷ #—?àˆð #øØ4øð #ø—?—?�?àˆüsV   ‚B�A%žB¡-A+ÁA'ÁA+ÁBÁA)ÁBÁ'A+Á)BÁ+A>Á1A4Á2A>Á9Bc              ƒ  óD  K  — | j                   j                  t        k(  rd| j                  j                  4 ƒd {  –—†  | j                  j                  | j                  |||«      «      ƒ d {  –—† cd d d «      ƒd {  –—†  S y7 ŒJ7 Œ7 Œ
# 1 ƒd {  –—†7  sw Y   y xY w­wr|   r�   r‘   s       r   Ú	__aexit__zAsyncTransaction.__aexit__  sk   è ø€ ð �;‰;×Ñ¤Ò#Ø—z‘z——“Ø!ŸZ™ZŸ_™_¨T¯^©^¸HÀgÈvÓ-VÓW×W÷ '—‘ð ð 'øØWøð 'ø——‘üsV   ‚8B ºB»B ¾0BÁ.BÁ/BÁ2B Á>B	Á?B ÂBÂ	B ÂBÂBÂBÂB N)r%   úAsyncConnection[Any]r”   r•   )r'   r(   r!   r)   r„   r:   rš   rœ   r*   r   r   r—   r—     sP   „ ñð €Jàòó ðóð

à,ð
ð &ð
ð %ð	
ð
 
ô
r   r—   r�   ))r)   Ú
__future__r   ÚloggingÚtypesr   Útypingr   r   r   r   r0   r
   Úer   r   Úabcr   r   Ú_compatr   Úpq.miscr   r:   r   Úconnection_asyncr   ÚTransactionStatusry   Ú
ConnStatusr�   Ú	getLoggerr'   rV   rU   r   ÚProgrammingErrorr,   r.   r†   r—   r*   r   r   Ú<module>r«      s½   ðñõ #ã Ý ß 8Ó 8å ß ß &Ý Ý 'áÝ&Ý1à	×Ñ× Ñ €à‡]�]×Ñ€à	ˆ×	Ñ	˜8Ó	$€ôFˆyô Fô$4 1×#5Ñ#5ô 4ôm
�g˜nÑ-ô m
ô`�/Ð"3Ñ4ô ô<�Ð'=Ñ>õ r   