
    (ph                         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  SS
K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   )SelfTypeVar   )abc)PGconn)connection_summary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     D/var/www/html/venv/lib/python3.13/site-packages/psycopg/pq/_debug.py__init__PGconnDebug.__init__3   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__6   sW    **+1T^^-H-H,IJ!$,,/3%qfRXaL22r   attrc                     [        U R                  U5      n[        U5      (       a  [        U5      $ [        R                  SX5        U$ )NzPGconn.%s -> %s)getattrr   callable	debuggingloggerr(   r   r+   values      r   __getattr__PGconnDebug.__getattr__;   s:    d+E??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__C   s    d*%t3r   conninfoc                 L    U " [        [        R                  5      " U5      5      $ N)r/   r   connectr'   r8   s     r   r;   PGconnDebug.connectG   s    9V^^,X677r   c                 L    U " [        [        R                  5      " U5      5      $ r:   )r/   r   connect_startr<   s     r   r?   PGconnDebug.connect_startK   s    9V1128<==r   c                 @    [        [        R                  5      " U5      $ r:   )r/   r   ping)r   r8   s     r   rB   PGconnDebug.pingO   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$ )N=zPGconn.%s(%s)z, z	    <- %r)	appenditemsr0   r(   rE   joininspect	signaturereturn_annotation)	rQ   rR   reprsargkvrvrarO   s	           r   
debugging_debugging.<locals>.debugging_W   s    CLLC7$ LLNDALLA3au& # 	OQZZ51AB q!33>R^KKR(	r   )r   r   )rO   ra   s   ` r   r/   r/   T   s8     1X#      r   )rG   rX   loggingtypingr   r   	functoolsr   _compatr   r    r
   r   miscr   r   	getLoggerr0   r   r/   rD   r   r   <module>rj      sg   <      #   $vXc3h/0			?	+#0 #0L $ r   