§
    øÛ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      úA/granary/edev/quantum/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    € Ø�xŠx��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   € Ý�8˜WÑ%Ô%ð 	/Ý˜XŸ^š^Ñ-Ô-Ñ.Ô.ˆHØ!ˆŒØÐ Ý1ˆMØ+ˆÔÐÐ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   € Ø�$ˆ;ˆ;Ý  Ñ&Ô&Ð&Ø—>’> $¤.°D°7Ñ":Ñ;Ô;ˆÝ��d˜HÑ%Ô%Ð%Øˆ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�—’˜dœn¨dÑ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€   € õ •s˜8‘}”} a¨Ñ,Ô,ð 	ð 	ˆAðØÔ-¨h°r¸°r¬lÔ;Ð;Ð;Ð;øÝð ð ð Ø�ðøøøàÔ%×)Ò)¨)Õ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Ý�V D¨(¯.ª.Ñ*:Ô*:Ñ;Ô;Ñ<Ô<ˆHˆHÝ�X˜{Ñ+Ô+ð 	MØÔ)ˆHˆHÝ˜H¥eÑ,Ô,ð 	MÝ�)ÀÀÀÐKÑLÔLÐLØÐ­¬
×(;Ò(;¸HÑ(EÔ(EÐÝ˜8 WÑ-Ô-ð 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˜‘X”X˜d‘]Ñ#Ô#Ð#Ð#Ð#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™œˆŒØ#ˆŒØð 	Ø�NŠNÑÔÐÐÐð	ð 	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   € å�t˜WÑ%Ô%ð 	Ø�NŠNÑÔÐØŒ
×Ò�˜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-   € àˆˆˆØˆŒ�d”m¥S¨¡X¤XÑ.Ô.Ð.Ð.Ð.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ð 5ˆvñ 5ô 5ð 5ðB'4ð '4ð '4ð '4ð '4ñ '4ô '4ð '4ðT$ð $ð $ð &˜™œÐ ð:ð :ð :ð*ð *ð *ð,ð ,ð ,ðð ð ð ð ˆ6ñ ô ð ðð ð ð ð ˆ6ñ ô ð ð0$ð $ð $ð
$ð $ð $ð
/ð /ð /ð /ð /ñ /ô /ð /ð
Ø€M€M€Mð B×GÒGÑIÔIð ð ˆØ˜‘ˆð	ØˆG�F˜E 7 7¨6°5Ñ#9Ô#9Ñ:Ô:Ð:Ð:øØð 	ð 	ð 	ØˆDð	øøøð	ð øð ð 	ð 	ð 	Ø€D€Dð	øøøs$   Á:B? ÂB2Â2B:Â9B:Â?CÃC