
    Dgs              	          d Z ddlZddlZ G d de          Z G d de          Z G d d          Zd	 Z e            Zd
 Z	d Z
d Z G d de          Z G d de          Zd Zd Z G d d          Z	 ddlZd                                D ]*Zdez   Z	  eee eee                      # e$ r Y 'w xY wdS # e$ r Y dS w xY w)a  
basic logging functionality based on a producer/consumer scheme.

XXX implement this API: (maybe put it into slogger.py?)

        log = Logger(
                    info=py.log.STDOUT,
                    debug=py.log.STDOUT,
                    command=None)
        log.info("hello", "world")
        log.command("hello", "world")

        log = Logger(info=Logger(something=...),
                     debug=py.log.STDOUT,
                     command=None)
    Nc                   &    e Zd Zd Zd Zd Zd ZdS )Messagec                 "    || _         || _        d S N)keywordsargs)selfr   r   s      @/var/www/sysmax/venv/lib/python3.11/site-packages/py/_log/log.py__init__zMessage.__init__   s     			    c                 \    d                     t          t          | j                            S )N )joinmapstrr   r	   s    r
   contentzMessage.content   s     xxC++,,,r   c                 <    dd                     | j                  z  S )Nz[%s] :)r   r   r   s    r
   prefixzMessage.prefix   s    #((4=1122r   c                 T    |                                  |                                 z   S r   )r   r   r   s    r
   __str__zMessage.__str__    s    {{}}t||~~--r   N)__name__
__module____qualname__r   r   r   r    r   r
   r   r      sP          - - -3 3 3. . . . .r   r   c                   4    e Zd ZdZeZi ZddZd Zd Zd Z	dS )Producerz (deprecated) Log producer API which sends messages to be logged
        to a 'consumer' object, which then prints them to stdout,
        stderr, files, etc. Used extensively by PyPy-1.1.
    Nc                     t          |d          r!t          |                                          }|| _        |t          }|| _        d S )Nsplit)hasattrtupler    	_keywordsdefault_keywordmapper_keywordmapper)r	   r   keywordmapperkws       r
   r   zProducer.__init__-   sK    8W%% 	/X^^--..H! 1M+r   c                 <    dd                     | j                  z  S )Nz<py.log.Producer %s>r   )r   r#   r   s    r
   __repr__zProducer.__repr__5   s    %(@(@@@r   c                     d|v rt          |          |                     | j        |fz             }t          | ||           |S )N_)AttributeError	__class__r#   setattr)r	   nameproducers      r
   __getattr__zProducer.__getattr__8   sJ    $;; &&&>>$.D7":;;dH%%%r   c                     | j                             | j                  }|& ||                     | j        |                     dS dS )z0 write a message to the appropriate consumer(s) N)r%   getconsumerr#   r   )r	   r   funcs      r
   __call__zProducer.__call__?   sN    "..t~>>Ddnd3344444 r   r   )
r   r   r   __doc__r   keywords2consumerr   r)   r1   r5   r   r   r
   r   r   $   so         
 G, , , ,A A A  5 5 5 5 5r   r   c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )KeywordMapperc                     i | _         d S r   )r7   r   s    r
   r   zKeywordMapper.__init__F   s    !#r   c                 4    | j                                         S r   )r7   copyr   s    r
   getstatezKeywordMapper.getstateI   s    %**,,,r   c                 l    | j                                          | j                             |           d S r   )r7   clearupdate)r	   states     r
   setstatezKeywordMapper.setstateL   s4    $$&&&%%e,,,,,r   c                     t          t          |          dd          D ])}	 | j        |d|                  c S # t          $ r Y &w xY w| j                            dt
                    S )a   return a consumer matching the given keywords.

            tries to find the most suitable consumer by walking, starting from
            the back, the list of keywords, the first consumer matching a
            keyword is returned (falling back to py.log.default)
        r   Ndefault)rangelenr7   KeyErrorgetdefault_consumer)r	   r   is      r
   r3   zKeywordMapper.getconsumerP   s     s8}}a,, 	 	A-hrrl;;;;   %)))5EFFFs   9
AAc                    t          |t                    r0t          t          d|                                                    }n@t          |d          r|j        }n(t          |t                    st          d|d          |Pt          j	        
                    |          s1t          |d          st          |d          t          |          }|| j        |<   dS )z' set a consumer for a set of keywords. Nr#   zkey z is not a string or tuplewritez& should be None, callable or file-like)
isinstancer   r"   filterr    r!   r#   	TypeErrorpybuiltincallableFiler7   )r	   r   consumers      r
   setconsumerzKeywordMapper.setconsumer^   s     h$$ 	MVD(..*:*:;;<<HHX{++ 	M)HHHe,, 	M)KLLL
(;(;H(E(E8W-- NBJ((LN N NH~~H+3x(((r   N)r   r   r   r   r=   rB   r3   rV   r   r   r
   r9   r9   E   sb        $ $ $- - -- - -G G G4 4 4 4 4r   r9   c                 d    t           j                            t          |           dz              dS )zD the default consumer, prints the message to stdout (using 'print') 
NsysstderrrM   r   msgs    r
   rJ   rJ   o   (    JSXXd]#####r   c                 <    t                               | |           d S r   )r$   rV   )r   rU   s     r
   rV   rV   v   s    %%h99999r   c                 :    t                               |            d S r   )r$   rB   )rA   s    r
   rB   rB   z   s    ""5)))))r   c                  4    t                                           S r   )r$   r=   r   r   r
   r=   r=   ~   s     ))+++r   c                       e Zd ZdZd Zd ZdS )rT   z, log consumer wrapping a file(-like) object c                 8    t          |d          sJ || _        d S )NrM   )r!   _file)r	   fs     r
   r   zFile.__init__   s#    q'"""""


r   c                     | j                             t          |          dz              t          | j         d          r| j                                          dS dS ) write a message to the log rX   flushN)rd   rM   r   r!   rh   r	   r]   s     r
   r5   zFile.__call__   sZ    
SD)))4:w'' 	J	 	r   Nr   r   r   r6   r   r5   r   r   r
   rT   rT      s8        66  
    r   rT   c                   *    e Zd ZdZ	 	 ddZd Zd ZdS )Pathz. log consumer that opens and writes to a Path Fc                 z    || _         t          |          | _        || _        |s|                                  d S d S r   )_appendr   	_filename
_buffering	_openfile)r	   filenameappenddelayed_create	bufferings        r
   r   zPath.__init__   sE    X# 	NN	 	r   c                 T    | j         rdpd}t          | j        |          }|| _        d S )Naw)rn   openro   rd   )r	   modere   s      r
   rq   zPath._openfile   s/    |#*s&&


r   c                     t          | d          s|                                  | j                            t	          |          dz              | j        s| j                                         dS dS )rg   rd   rX   N)r!   rq   rd   rM   r   rp   rh   ri   s     r
   r5   zPath.__call__   sr    tW%% 	NN
SD))) 	J	 	r   N)FFF)r   r   r   r6   r   rq   r5   r   r   r
   rl   rl      sR        88(-16     
    r   rl   c                 d    t           j                            t          |           dz              dS )z$ consumer that writes to sys.stdout rX   N)rZ   stdoutrM   r   r\   s    r
   STDOUTr~      r^   r   c                 d    t           j                            t          |           dz              dS )z$ consumer that writes to sys.stderr rX   NrY   r\   s    r
   STDERRr      r^   r   c                        e Zd ZdZddZd ZdS )Syslogz+ consumer that writes to the syslog daemon Nc                 &    || j         }|| _        d S r   )LOG_INFOpriority)r	   r   s     r
   r   zSyslog.__init__   s    }H r   c                 T    ddl } |j         | j        t          |                     dS )rg   r   N)syslogr   r   )r	   r]   r   s      r
   r5   zSyslog.__call__   s-    dmSXX.....r   r   rj   r   r   r
   r   r      s=        55! ! ! !
/ / / / /r   r   z.EMERG ALERT CRIT ERR WARNING NOTICE INFO DEBUGLOG_)r6   rQ   rZ   objectr   r   r9   rJ   r$   rV   rB   r=   rT   rl   r~   r   r   r   r    _prior.   getattrr,   ImportErrorr   r   r
   <module>r      s0     
			 



. . . . .f . . .5 5 5 5 5v 5 5 5B'4 '4 '4 '4 '4 '4 '4 '4T$ $ $ & : : :* * *, , ,    6       6   0$ $ $
$ $ $
/ / / / / / / /
MMM BGGII  	GFE7765#9#9:::: 	 	 	D		   	 	 	DD	s$   :B? B22B:9B:?CC