§
    YŠtjL'  ã                  óÀ  — d Z ddlmZ ddlZddlmZ ddlmZ ddlm	Z	m
Z
mZ ddl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j        j        Zej         j!        Z! ej"        e#¦  «        Z$ G d„ de%¦  «        Z& G d„ dej'        ¦  «        Z( G d„ dee         ¦  «        Z) G d„ de)d         ¦  «        Z* G d„ de)d         ¦  «        Z+dS )zC
Transaction context managers returned by Connection.transaction()
é    )ÚannotationsN)ÚEnum)Ú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dS )Ú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.
    ÚpsycopgNÚtransactionú%Transaction | AsyncTransaction | Nonec                ó   — || _         d S ©N)r   )Úselfr   s     úQ/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/psycopg/transaction.pyÚ__init__zRollback.__init__+   s   € Ø&ˆÔÐÐó    ÚreturnÚstrc                ó0   — | j         j        › d| j        ›d�S )Nú(ú))Ú	__class__Ú__qualname__r   ©r   s    r   Ú__repr__zRollback.__repr__.   s!   € Ø”.Ô-ÐEÐE°Ô0@ÐEÐEÐEÐEr   r   )r   r   ©r   r    )Ú__name__Ú
__module__r%   Ú__doc__r   r'   © r   r   r   r       sX   € € € € € ðð ð €Jð'ð 'ð 'ð 'ð 'ðFð Fð Fð Fð Fð Fr   r   c                  ó   — e Zd ZdZdS )ÚOutOfOrderTransactionNestingz)Out-of-order transaction nesting detectedN)r)   r*   r%   r+   r,   r   r   r.   r.   2   s   € € € € € Ø3Ð3Ð3Ð3r   r.   c                  ó¢   — e Zd Z G d„ dee¦  «        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dS )/ÚBaseTransactionc                  ó*   — e Zd ZdZdZdZdZdZdZdZ	dS )	úBaseTransaction.StatuszÁ
        The current status of a transaction.

        Exposed as the `~psycopg.Transaction.status` attribute of
        `~psycopg.Transaction` and `~psycopg.AsyncTransaction` objects.
        Únot_startedÚactiveÚ	committedÚfailedÚrolled_back_explicitlyÚrolled_back_with_errorN)
r)   r*   r%   r+   ÚNOT_STARTEDÚACTIVEÚ	COMMITTEDÚFAILEDÚROLLED_BACK_EXPLICITLYÚROLLED_BACK_WITH_ERRORr,   r   r   ÚStatusr2   7   s<   € € € € € ð	ð 	ð $ˆØˆØˆ	ØˆØ!9ÐØ!9ÐÐÐr   r?   NFÚ
connectionr   Úsavepoint_nameú
str | NoneÚforce_rollbackÚboolc                ó”   — || _         | j         j        | _        |pd| _        || _        | j        j        | _        d| _        d| _        d S )NÚ Féÿÿÿÿ)	Ú_connÚpgconnÚ_savepoint_namerC   r?   r9   ÚstatusÚ_outer_transactionÚ_stack_index)r   r@   rA   rC   s       r   r   zBaseTransaction.__init__F   sN   € ð  ˆŒ
Ø”jÔ'ˆŒØ-Ð3°ˆÔØ,ˆÔØ”kÔ-ˆŒØ"'ˆÔØˆÔÐÐr   r   c                ó   — | j         S )zV
        The name of the savepoint; `!None` if handling the main transaction.
        )rJ   r&   s    r   rA   zBaseTransaction.savepoint_nameT   s   € ð Ô#Ð#r   r    c                óÚ   — | j         j        › d| j         j        › �}t          | j        ¦  «        }| j        r
| j        ›d�nd}d|› d|› d| j        j        › d|› dt          | ¦  «        d›d	�S )
Nú.ú rF   ú<r"   z) z at 0xÚxú>)	r$   r*   r%   r   rI   rA   rK   ÚvalueÚid)r   ÚclsÚinfoÚsps       r   r'   zBaseTransaction.__repr__]   s‹   € Ø”Ô*ÐJÐJ¨T¬^Ô-HÐJÐJˆÝ! $¤+Ñ.Ô.ˆØ,0Ô,?ÐG�Ô#Ð(Ð(Ð(Ð(ÀRˆØL�3ÐLÐL˜ÐLÐL˜dœkÔ/ÐLÐL°4ÐLÐL½rÀ$¹x¼xÐLÐLÐLÐLÐLr   úPQGen[None]c              #  ó
  K  — | j         | j        j        k    rt          d¦  «        ‚| j        j        | _         |                      ¦   «          |                      ¦   «         D ]"}| j                             |¦  «        E d {V —† Œ#d S )Nz(transaction blocks can be used only once)	rK   r?   r9   Ú	TypeErrorr:   Ú_push_savepointÚ_get_enter_commandsrH   Ú_exec_command)r   Úcommands     r   Ú
_enter_genzBaseTransaction._enter_genc   s•   è è € ØŒ;˜$œ+Ô1Ò1Ð1ÝÐFÑGÔGÐGØ”kÔ(ˆŒà×ÒÑÔÐØ×/Ò/Ñ1Ô1ð 	9ð 	9ˆGØ”z×/Ò/°Ñ8Ô8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8ð	9ð 	9r   Úexc_typeútype[BaseException] | NoneÚexc_valúBaseException | NoneÚexc_tbúTracebackType | NoneúPQGen[bool]c              #  ó  K  — |s#| j         s|                      ¦   «         E d {V —† dS 	 |                      |¦  «        E d {V —†S # t          $ r ‚ t          $ r'}t
                               d| |¦  «         Y d }~dS d }~ww xY w)NFz#error ignored in rollback of %s: %s)rC   Ú_commit_genÚ_rollback_genr.   Ú	ExceptionÚloggerÚwarning)r   rb   rd   rf   Úexc2s        r   Ú	_exit_genzBaseTransaction._exit_genl   sÈ   è è € ð ð 	˜tÔ2ð 	Ø×'Ò'Ñ)Ô)Ð)Ð)Ð)Ð)Ð)Ð)Ð)Ø�5ðØ#'×#5Ò#5°gÑ#>Ô#>Ð>Ð>Ð>Ð>Ð>Ð>Ð?øÝ/ð ð ð ð Ýð ð ð Ý—’ÐDÀdÈDÑQÔQÐQØ�u�u�u�u�uøøøøðøøøs   ©A ÁA?ÁA:Á:A?c              #  óÌ   K  — |                       d¦  «        }| j        j        | _        |r|‚|                      ¦   «         D ]"}| j                             |¦  «        E d {V —† Œ#d S )NÚcommit)Ú_pop_savepointr?   r;   rK   Ú_get_commit_commandsrH   r_   )r   Úexr`   s      r   rj   zBaseTransaction._commit_gen…   s‚   è è € Ø× Ò  Ñ*Ô*ˆØ”kÔ+ˆŒØð 	ØˆHà×0Ò0Ñ2Ô2ð 	9ð 	9ˆGØ”z×/Ò/°Ñ8Ô8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8ð	9ð 	9r   c              #  óx  K  — t          |t          ¦  «        r$t                               | j        › d�d¬¦  «         |                      d¦  «        }t          |t          ¦  «        s| j        r| j        j        | _	        n| j        j
        | _	        |r|‚|                      ¦   «         D ]"}| j                             |¦  «        E d {V —† Œ#| j        j                             ¦   «          | j        j                             | j        ¦  «        E d {V —† t          |t          ¦  «        r|j        r	|j        | u rdS dS )Nz: Explicit rollback from: T)Úexc_infoÚrollbackF)Ú
isinstancer   rm   ÚdebugrH   rs   rC   r?   r=   rK   r>   Ú_get_rollback_commandsr_   Ú	_preparedÚclearÚmaintain_genr   )r   rd   ru   r`   s       r   rk   zBaseTransaction._rollback_genŽ   sP  è è € Ý�g�xÑ(Ô(ð 	SÝ�LŠL˜DœJÐBÐBÐBÈTˆLÑRÔRÐRà× Ò  Ñ,Ô,ˆå�g�xÑ(Ô(ð 	=¨DÔ,?ð 	=Øœ+Ô<ˆDŒKˆKàœ+Ô<ˆDŒKàð 	ØˆHà×2Ò2Ñ4Ô4ð 	9ð 	9ˆGØ”z×/Ò/°Ñ8Ô8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8ð 	Œ
Ô×"Ò"Ñ$Ô$Ð$Ø”:Ô'×4Ò4°T´ZÑ@Ô@Ð@Ð@Ð@Ð@Ð@Ð@Ð@å�g�xÑ(Ô(ð 	ØÔ&ð ¨'Ô*=ÀÐ*EÐ*EØ�tàˆur   úIterator[bytes]c              #  ó  K  — | j         r| j                             ¦   «         V — | j        rZt	          j        d¦  «                             t	          j        | j        ¦  «        ¦  «                             | j        ¦  «        V — d S d S )NzSAVEPOINT {})	rL   rH   Ú_get_tx_start_commandrJ   r   ÚSQLÚformatÚ
IdentifierÚas_bytesr&   s    r   r^   z#BaseTransaction._get_enter_commands©   s�   è è € ØÔ"ð 	5Ø”*×2Ò2Ñ4Ô4Ð4Ð4Ð4àÔð 	å”˜Ñ'Ô'ß’�œ tÔ';Ñ<Ô<Ñ=Ô=ß’˜$œ*Ñ%Ô%ðð ð ð ð ð	ð 	r   c              #  ó  K  — | j         r_| j        sXt          j        d¦  «                             t          j        | j         ¦  «        ¦  «                             | j        ¦  «        V — | j        r| j        j        rJ ‚dV — d S d S )Nz
RELEASE {}s   COMMIT©	rJ   rL   r   r‚   rƒ   r„   r…   rH   Ú_num_transactionsr&   s    r   rt   z$BaseTransaction._get_commit_commands´   s•   è è € ØÔð 	¨Ô(?ð 	å”˜Ñ%Ô%ß’�œ tÔ';Ñ<Ô<Ñ=Ô=ß’˜$œ*Ñ%Ô%ðð ð ð Ô"ð 	Ø”zÔ3Ð3Ð3Ð3ØˆOˆOˆOˆOˆOð	ð 	r   c              #  óÀ  K  — | j         r¹| j        s²t          j        d¦  «                             t          j        | j         ¦  «        ¬¦  «                             | j        ¦  «        V — t          j        d¦  «                             t          j        | j         ¦  «        ¬¦  «                             | j        ¦  «        V — | j        r| j        j        rJ ‚dV — d S d S )NzROLLBACK TO {n})ÚnzRELEASE {n}s   ROLLBACKr‡   r&   s    r   r{   z&BaseTransaction._get_rollback_commandsÀ   sæ   è è € ØÔð 
	¨Ô(?ð 
	å”Ð)Ñ*Ô*ß’�#œ.¨Ô)=Ñ>Ô>�Ñ?Ô?ß’˜$œ*Ñ%Ô%ðð ð õ ”˜Ñ&Ô&ß’�#œ.¨Ô)=Ñ>Ô>�Ñ?Ô?ß’˜$œ*Ñ%Ô%ðð ð ð Ô"ð 	Ø”zÔ3Ð3Ð3Ð3ØÐÐÐÐÐð	ð 	r   ÚNonec                óî   — | j         j        t          k    | _        | j        r| j        j        rJ ‚n| j        sd| j        j        dz   › �| _        | j        j        | _        | j        xj        dz  c_        dS )z—
        Push the transaction on the connection transactions stack.

        Also set the internal state of the object and verify consistency.
        Ú_pg3_r
   N)rI   Útransaction_statusÚIDLErL   rH   rˆ   rJ   rM   r&   s    r   r]   zBaseTransaction._push_savepointÑ   s‰   € ð #'¤+Ô"@ÅDÒ"HˆÔØÔ"ð 	Rð ”zÔ3Ð3Ð3Ð3Ð3ð Ô'ð RØ'Q¨t¬zÔ/KÈaÑ/OÐ'QÐ'Q�Ô$à œJÔ8ˆÔØŒ
Ð$Ô$¨Ñ)Ð$Ô$Ð$Ð$r   ÚactionúException | Nonec                ó„   — | j         xj        dz  c_        | j         j        | j        k    rdS 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: )rH   rˆ   rM   r.   )r   r�   s     r   rs   zBaseTransaction._pop_savepointä   sW   € ð 	Œ
Ð$Ô$¨Ñ)Ð$Ô$ØŒ:Ô'¨4Ô+<Ò<Ð<Ø�4å+ØF˜6ÐFÐFÀÐFÐFñ
ô 
ð 	
r   ©NF)r@   r   rA   rB   rC   rD   )r   rB   r(   )r   rZ   )rb   rc   rd   re   rf   rg   r   rh   )rd   re   r   rh   )r   r   )r   r‹   )r�   r    r   r‘   )r)   r*   r%   r    r   r?   r   ÚpropertyrA   r'   ra   rp   rj   rk   r^   rt   r{   r]   rs   r,   r   r   r0   r0   6   sM  € € € € € ð:ð :ð :ð :ð :��dñ :ô :ð :ð$ &*Ø$ð	ð ð ð ð ð ð$ð $ð $ñ „Xð$ðMð Mð Mð Mð9ð 9ð 9ð 9ðð ð ð ð29ð 9ð 9ð 9ðð ð ð ð6	ð 	ð 	ð 	ð
ð 
ð 
ð 
ðð ð ð ð"*ð *ð *ð *ð&
ð 
ð 
ð 
ð 
ð 
r   r0   c                  ó>   — e Zd ZdZdZedd„¦   «         Zdd„Zdd„ZdS )ÚTransactionzO
    Returned by `Connection.transaction()` to handle a transaction block.
    r   r   úConnection[Any]c                ó   — | j         S )zLThe connection the object is managing.

        :type: `Connection`
        ©rH   r&   s    r   r@   zTransaction.connectionú   ó   € ð ŒzÐr   r   c                ó¦   — | j         j        5  | j                              |                      ¦   «         ¦  «         d d d ¦  «         n# 1 swxY w Y   | S r   ©rH   ÚlockÚwaitra   r&   s    r   Ú	__enter__zTransaction.__enter__  s„   € ØŒZŒ_ð 	/ð 	/ØŒJ�OŠO˜DŸOšOÑ-Ô-Ñ.Ô.Ð.ð	/ð 	/ð 	/ñ 	/ô 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/øøøð 	/ð 	/ð 	/ð 	/àˆs   �-AÁA
ÁA
rb   rc   rd   re   rf   rg   rD   c                óü   — | j         j        t          k    rU| j        j        5  | j                             |                      |||¦  «        ¦  «        cd d d ¦  «         S # 1 swxY w Y   d S | j        j        | _        dS r“   ©	rI   rK   ÚOKrH   r�   rž   rp   r?   r<   ©r   rb   rd   rf   s       r   Ú__exit__zTransaction.__exit__  sÊ   € ð Œ;Ô¥Ò#Ð#Ø””ð Rð RØ”z—’ t§~¢~°hÀÈÑ'PÔ'PÑQÔQðRð Rð Rð Rñ Rô Rð Rð Rð Rð Rð Rð Røøøð Rð Rð Rð Rð Rð Rð œ+Ô,ˆDŒKØ�5s   ¢/AÁA"Á%A"N)r   r—   ©r   r   ©rb   rc   rd   re   rf   rg   r   rD   )r)   r*   r%   r+   r”   r@   rŸ   r¤   r,   r   r   r–   r–   ó   ók   € € € € € ðð ð €Jàðð ð ñ „Xððð ð ð ð
ð ð ð ð ð r   r–   r—   c                  ó>   — e Zd ZdZdZedd„¦   «         Zdd„Zdd„ZdS )ÚAsyncTransactionzT
    Returned by `AsyncConnection.transaction()` to handle a transaction block.
    r   r   úAsyncConnection[Any]c                ó   — | j         S )zQThe connection the object is managing.

        :type: `AsyncConnection`
        r™   r&   s    r   r@   zAsyncTransaction.connection  rš   r   r   c              ƒ  óÚ   K  — | j         j        4 ƒd {V —† | j                              |                      ¦   «         ¦  «        ƒ d {V —† d d d ¦  «        ƒd {V —† n# 1 ƒd {V —†swxY w Y   | S r   rœ   r&   s    r   Ú
__aenter__zAsyncTransaction.__aenter__$  sô   è è € Ø”:”?ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5Ø”*—/’/ $§/¢/Ñ"3Ô"3Ñ4Ô4Ð4Ð4Ð4Ð4Ð4Ð4Ð4ð	5ð 	5ð 	5ñ 	5ô 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5øøøð 	5ð 	5ð 	5ð 	5àˆs   •3AÁ
A$Á'A$rb   rc   rd   re   rf   rg   rD   c              ƒ  ó0  K  — | j         j        t          k    rm| j        j        4 ƒd {V —† | j                             |                      |||¦  «        ¦  «        ƒ d {V —†cd d d ¦  «        ƒd {V —† S # 1 ƒd {V —†swxY w Y   d S | j        j        | _        dS r“   r¡   r£   s       r   Ú	__aexit__zAsyncTransaction.__aexit__)  sL  è è € ð Œ;Ô¥Ò#Ð#Ø”z”ð Xð Xð Xð Xð Xð Xð Xð XØ!œZŸ_š_¨T¯^ª^¸HÀgÈvÑ-VÔ-VÑWÔWÐWÐWÐWÐWÐWÐWðXð Xð Xð Xñ Xô Xð Xð Xð Xð Xð Xð Xð Xð Xð Xð Xð Xð Xð Xð Xð Xð Xð Xð Xøøøð Xð Xð Xð Xð Xð Xð œ+Ô,ˆDŒKØ�5s   ª5A2Á2
A<Á?A<N)r   rª   r¥   r¦   )r)   r*   r%   r+   r”   r@   r­   r¯   r,   r   r   r©   r©     r§   r   r©   rª   ),r+   Ú
__future__r   ÚloggingÚenumr   Útypesr   Útypingr   r   r   Úcollections.abcr	   rF   r   Úer   r   Úabcr   r   Ú_compatr   Úpq.miscr   r@   r   Úconnection_asyncr   ÚTransactionStatusr�   Ú
ConnStatusr¢   Ú	getLoggerr)   rm   rl   r   ÚProgrammingErrorr.   r0   r–   r©   r,   r   r   ú<module>r¿      s;  ððð ð #Ð "Ð "Ð "Ð "Ð "à €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ø $Ð $Ð $Ð $Ð $Ð $à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ð Ð Ø &Ð &Ð &Ð &Ð &Ð &Ð &Ð &Ø Ð Ð Ð Ð Ð Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'àð 2Ø&Ð&Ð&Ð&Ð&Ð&Ø1Ð1Ð1Ð1Ð1Ð1à	ÔÔ €à„]Ô€à	ˆÔ	˜8Ñ	$Ô	$€ðFð Fð Fð Fð Fˆyñ Fô Fð Fð$4ð 4ð 4ð 4ð 4 1Ô#5ñ 4ô 4ð 4ðz
ð z
ð z
ð z
ð z
�g˜nÔ-ñ z
ô z
ð z
ðzð ð ð ð �/Ð"3Ô4ñ ô ð ðDð ð ð ð �Ð'=Ô>ñ ô ð ð ð r   