
    ,h                         S r SSKrSSKrSSKJrJr  SSKJr  SSKJ	r	J
r
  SSKJr  SS	KJrJr  \" S
\S\4   S9r\R"                  " S5      r " S S5      rS\S\4S jrg)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Callable)wraps   )PGconnabc)connection_summary   )SelfTypeVarFunc.)boundzpsycopg.debugc                      ^  \ rS rSr% Sr\R                  \S'   S\R                  4U 4S jjrS\	4S jr
S\	S\4S	 jrS\	S
\SS4S jr\S\S\4S j5       r\S\S\4S j5       r\S\S\4S j5       rSrU =r$ )PGconnDebug-   z,Wrapper for a PQconn logging all its access._pgconnpgconnc                 &   > [         TU ]  SU5        g )Nr   )super__setattr__)selfr   	__class__s     L/var/www/html/Ai_home/venv/lib/python3.13/site-packages/psycopg/pq/_debug.py__init__PGconnDebug.__init__2   s    Iv.    returnc                     U R                   R                   SU R                   R                   3n[        U R                  5      nSU SU S[        U 5      S S3$ )N.< z at 0xx>)r   
__module____qualname__r	   r   id)r   clsinfos      r   __repr__PGconnDebug.__repr__5   sW    **+1T^^-H-H,IJ!$,,/3%qfRXaL22r   attrc                     [        [        U R                  U5      =n5      (       a  [        U5      $ [        R                  SX5        U$ )NzPGconn.%s -> %s)callablegetattrr   	debuggingloggerr(   r   r+   values      r   __getattr__PGconnDebug.__getattr__:   s<    gdllD99U;;U##KK)47Lr   r2   Nc                 \    [        U R                  X5        [        R                  SX5        g )NzPGconn.%s <- %s)setattrr   r0   r(   r1   s      r   r   PGconnDebug.__setattr__A   s    d*%t3r   conninfoc                 L    U " [        [        R                  5      " U5      5      $ N)r/   r   connectr'   r8   s     r   r;   PGconnDebug.connectE   s    9V^^,X677r   c                 L    U " [        [        R                  5      " U5      5      $ r:   )r/   r   connect_startr<   s     r   r?   PGconnDebug.connect_startI   s    9V1128<==r   c                 @    [        [        R                  5      " U5      $ r:   )r/   r   ping)r   r8   s     r   rB   PGconnDebug.pingM   s    %h//r    )__name__r$   r%   __firstlineno____doc__r   r   __annotations__r   strr)   r   r3   r   classmethodbytesr   r;   r?   intrB   __static_attributes____classcell__)r   s   @r   r   r   -   s    6ZZ/szz /3# 3
  4 4C 4D 4 8u 8 8 8 >U >t > > 0U 0s 0 0r   r   fr   c                 X   ^  [        T 5      S[        S[        S[        4U 4S jj5       nU$ )zGWrap a function in order to log its arguments and return value on call.argskwargsr   c                    > / nU  H  nUR                  U< 5        M     UR                  5        H  u  pEUR                  U SU< 35        M     [        R                  ST	R                  SR                  U5      5         T	" U 0 UD6n[        R                  " T	5      R                  nUc  Ub  [        R                  SU5        U$ ! [         a  n[        R                  SU5        e S nAff = f)N=zPGconn.%s(%s)z, z	    <- %r)
appenditemsr0   r(   rE   joininspect	signaturereturn_annotation	Exception)
rQ   rR   reprsargkvrvraexrO   s
            r   
debugging_debugging.<locals>.debugging_U   s    CLLC7$ LLNDALLA3au& # 	OQZZ51AB	D#F#B ""1%77B~K,I  	KKR(	s   C 
C-C((C-)r   r   )rO   rc   s   ` r   r/   r/   R   s8     1X#    * r   )rG   rX   loggingtypingr   r   	functoolsr    r   r   miscr	   _compatr   r   r   	getLoggerr0   r   r/   rD   r   r   <module>rl      sd   <       $ #vXc3h/0			?	+"0 "0J $ r   