§
    YŠtj  ã                   óÞ   — d Z ddlZddlZddlmZ ddlmZ ddlmZ ddl	m
Z
mZ ddlmZ d	d
lmZmZ  ededef         ¬¦  «        Z ej        d¦  «        Z G d„ d¦  «        Zdedefd„ZdS )a²  
libpq debugging tools

These functionalities are exposed here for convenience, but are not part of
the public interface and are subject to change at any moment.

Suggested usage::

    import logging
    import psycopg
    from psycopg import pq
    from psycopg.pq._debug import PGconnDebug

    logging.basicConfig(level=logging.INFO, format="%(message)s")
    logger = logging.getLogger("psycopg.debug")
    logger.setLevel(logging.INFO)

    assert pq.__impl__ == "python"
    pq.PGconn = PGconnDebug

    with psycopg.connect("") as conn:
        conn.pgconn.trace(2)
        conn.pgconn.set_trace_flags(
            pq.Trace.SUPPRESS_TIMESTAMPS | pq.Trace.REGRESS_MODE)
        ...

é    N)ÚAny)Úwraps)ÚCallableé   )ÚPGconnÚabc)Úconnection_summaryé   )ÚSelfÚTypeVarÚFunc.)Úboundzpsycopg.debugc                   óØ   ‡ — e Zd ZU dZej        ed<   dej        fˆ fd„Zdefd„Z	dede
fd„Zded	e
dd
fd„Zededefd„¦   «         Zededefd„¦   «         Zededefd„¦   «         Zˆ xZS )ÚPGconnDebugz,Wrapper for a PQconn logging all its access.Ú_pgconnÚpgconnc                 óL   •— t          ¦   «                              d|¦  «         d S )Nr   )ÚsuperÚ__setattr__)Úselfr   Ú	__class__s     €úO/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/psycopg/pq/_debug.pyÚ__init__zPGconnDebug.__init__3   s#   ø€ Ý‰Œ×Ò˜I vÑ.Ô.Ð.Ð.Ð.ó    Úreturnc                 ó”   — | j         j        › d| j         j        › �}t          | j        ¦  «        }d|› d|› dt          | ¦  «        d›d�S )Nú.ú<ú z at 0xÚxú>)r   Ú
__module__Ú__qualname__r	   r   Úid)r   ÚclsÚinfos      r   Ú__repr__zPGconnDebug.__repr__6   sX   € Ø”Ô*ÐJÐJ¨T¬^Ô-HÐJÐJˆÝ! $¤,Ñ/Ô/ˆØ2�3Ð2Ð2˜Ð2Ð2¥R¨¡X¤XÐ2Ð2Ð2Ð2Ð2r   Úattrc                 ó¤   — t          t          | j        |¦  «        x}¦  «        rt          |¦  «        S t                               d||¦  «         |S )NzPGconn.%s -> %s)ÚcallableÚgetattrr   Ú	debuggingÚloggerr&   ©r   r(   Úvalues      r   Ú__getattr__zPGconnDebug.__getattr__;   sM   € Ý�W T¤\°4Ñ8Ô8Ð8�EÑ9Ô9ð 	Ý˜UÑ#Ô#Ð#å�KŠKÐ)¨4°Ñ7Ô7Ð7ØˆLr   r/   Nc                 ój   — t          | j        ||¦  «         t                               d||¦  «         d S )NzPGconn.%s <- %s)Úsetattrr   r-   r&   r.   s      r   r   zPGconnDebug.__setattr__B   s3   € Ý�”˜d EÑ*Ô*Ð*Ý�ŠÐ% t¨UÑ3Ô3Ð3Ð3Ð3r   Úconninfoc                 óX   —  |  t          t          j        ¦  «        |¦  «        ¦  «        S ©N)r,   r   Úconnect©r%   r3   s     r   r6   zPGconnDebug.connectF   s'   € àˆsÐ,•9�Vœ^Ñ,Ô,¨XÑ6Ô6Ñ7Ô7Ð7r   c                 óX   —  |  t          t          j        ¦  «        |¦  «        ¦  «        S r5   )r,   r   Úconnect_startr7   s     r   r9   zPGconnDebug.connect_startJ   s(   € àˆsÐ2•9�VÔ1Ñ2Ô2°8Ñ<Ô<Ñ=Ô=Ð=r   c                 óF   —  t          t          j        ¦  «        |¦  «        S r5   )r,   r   Úping)r   r3   s     r   r;   zPGconnDebug.pingN   s   € à%�y�œÑ%Ô% hÑ/Ô/Ð/r   )Ú__name__r"   r#   Ú__doc__r   r   Ú__annotations__r   Ústrr'   r   r0   r   ÚclassmethodÚbytesr   r6   r9   Úintr;   Ú__classcell__)r   s   @r   r   r   .   sL  ø€ € € € € € Ø6Ð6àŒZÐÐÑð/˜sœzð /ð /ð /ð /ð /ð /ð3˜#ð 3ð 3ð 3ð 3ð
 ð ¨ð ð ð ð ð4 ð 4¨Cð 4°Dð 4ð 4ð 4ð 4ð ð8˜uð 8¨ð 8ð 8ð 8ñ „[ð8ð ð> Uð >¨tð >ð >ð >ñ „[ð>ð ð0˜Uð 0 sð 0ð 0ð 0ñ „[ð0ð 0ð 0ð 0ð 0r   r   Úfr   c                 óh   ‡ — t          ‰ ¦  «        dt          dt          dt          fˆ fd„¦   «         }|S )zGWrap a function in order to log its arguments and return value on call.ÚargsÚkwargsr   c                  óð  •— g }| D ]}|                      |›¦  «         Œ|                     ¦   «         D ]\  }}|                      |› d|›�¦  «         Œ t                               d‰	j        d                     |¦  «        ¦  «         	  ‰	| i |¤Ž}t          j        ‰	¦  «        j        }|€|�t                               d|¦  «         |S # t          $ r!}t                               d|¦  «         ‚ d }~ww xY w)Nú=zPGconn.%s(%s)z, z	    <- %r)
ÚappendÚitemsr-   r&   r<   ÚjoinÚinspectÚ	signatureÚreturn_annotationÚ	Exception)
rF   rG   ÚreprsÚargÚkÚvÚrvÚraÚexrD   s
            €r   Ú
debugging_zdebugging.<locals>.debugging_V   s  ø€ àˆØð 	%ð 	%ˆCØ�LŠL˜C˜Ñ$Ô$Ð$Ð$Ø—L’L‘N”Nð 	'ð 	'‰DˆAˆqØ�LŠL˜A˜˜ ˜˜Ñ&Ô&Ð&Ð&å�Š�O Q¤Z°·²¸5Ñ1AÔ1AÑBÔBÐBð	Ø��DÐ#˜FÐ#Ð#ˆBõ Ô" 1Ñ%Ô%Ô7ˆBØˆ~  Ý—’˜K¨Ñ,Ô,Ð,ØˆIøõ ð 	ð 	ð 	Ý�KŠK˜ RÑ(Ô(Ð(Øøøøøð	øøøs   ÂC
 Ã

C5ÃC0Ã0C5)r   r   )rD   rX   s   ` r   r,   r,   S   sP   ø€ õ ˆ1�X„Xð�#ð ­ð µð ð ð ð ð ñ „Xðð* Ðr   )r=   rM   ÚloggingÚtypingr   Ú	functoolsr   Úcollections.abcr   Ú r   r   Úmiscr	   Ú_compatr   r   r   Ú	getLoggerr-   r   r,   © r   r   ú<module>rb      s  ððð ð< €€€Ø €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø $Ð $Ð $Ð $Ð $Ð $à Ð Ð Ð Ð Ð Ð Ð Ø $Ð $Ð $Ð $Ð $Ð $Ø #Ð #Ð #Ð #Ð #Ð #Ð #Ð #à€wˆv˜X c¨3 hÔ/Ð0Ñ0Ô0€à	ˆÔ	˜?Ñ	+Ô	+€ð"0ð "0ð "0ð "0ð "0ñ "0ô "0ð "0ðJ�ð ˜$ð ð ð ð ð ð r   