Ë
    oj©  ã                   ó    — d Z ddlmZ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Z ee	«       G d	„ d
«      «       Z ee	«      de
ddfd„«       Zy)z
Basic log observers.
é    )ÚCallableÚOptional)Úimplementer)ÚFailureé   )ÚILogObserverÚLogEvent)ÚLoggerzITemporarily disabling observer {observer} due to exception: {log_failure}c                   ó`   — e Zd ZdZdeddfd„Zdeddfd„Zdeddfd„Zd	eddfd
„Z	dede
fd„Zy)ÚLogPublisherz˜
    I{ILogObserver} that fans out events to other observers.

    Keeps track of a set of L{ILogObserver} objects and forwards
    events to each.
    Ú	observersÚreturnNc                 óF   — t        |«      | _        t        | ¬«      | _        y )N©Úobserver)ÚlistÚ
_observersr
   Úlog)Úselfr   s     ú:/usr/lib/python3/dist-packages/twisted/logger/_observer.pyÚ__init__zLogPublisher.__init__   s   € Ü˜y›/ˆŒÜ 4Ô(ˆ�ó    r   c                 óŠ   — t        |«      st        d|›�«      ‚|| j                  vr| j                  j                  |«       yy)zq
        Registers an observer with this publisher.

        @param observer: An L{ILogObserver} to add.
        zObserver is not callable: N)ÚcallableÚ	TypeErrorr   Úappend©r   r   s     r   ÚaddObserverzLogPublisher.addObserver#   sB   € ô ˜Ô!ÜÐ8¸¸ÐEÓFÐFØ˜4Ÿ?™?Ñ*Ø�O‰O×"Ñ" 8Õ,ð +r   c                 óZ   — 	 | j                   j                  |«       y# t        $ r Y yw xY w)zv
        Unregisters an observer with this publisher.

        @param observer: An L{ILogObserver} to remove.
        N)r   ÚremoveÚ
ValueErrorr   s     r   ÚremoveObserverzLogPublisher.removeObserver.   s+   € ð	Ø�O‰O×"Ñ" 8Õ,øÜò 	Ùð	ús   ‚ ž	*©*Úeventc                 ó:  ‡ ‡— d‰vrd}ndt         ddfˆˆ fd„}g }‰ j                  D ]  }|� ||«       	  |‰«       Œ |D ].  \  }}‰ j                  |«      }|j                  t        ||¬«       Œ0 y# t        $ r |j                  |t	        «       f«       Y Œrw xY w)z8
        Forward events to contained observers.
        Ú	log_traceNr   r   c                 ó2   •— ‰d   j                  ‰| f«       y)z‹
                Add tracing information for an observer.

                @param observer: an observer being forwarded to
                r%   N)r   )r   r#   r   s    €€r   Útracez$LogPublisher.__call__.<locals>.traceB   s   ø€ ð �kÑ"×)Ñ)¨4°Ð*:Õ;r   )Úfailurer   )r   r   Ú	Exceptionr   r   Ú_errorLoggerForObserverr(   ÚOBSERVER_DISABLED)r   r#   r'   ÚbrokenObserversr   ÚbrokenObserverr(   ÚerrorLoggers   ``      r   Ú__call__zLogPublisher.__call__9   sÀ   ù€ ð ˜eÑ#Ø>B‰Eð<¤ð <°ö <ð ˆàŸ™ò 	>ˆHØÐ Ù�h”ð>Ù˜•ð	>ð (7ò 	Ñ#ˆN˜GØ×6Ñ6°~ÓFˆKØ×ÑÜ!ØØ'ð  õ ñ	øô ò >Ø×&Ñ&¨´'³)Ð'<Ö=ð>ús   µA3Á3$BÂBc                 óR   ‡— t        ˆfd„| j                  D «       Ž }t        |¬«      S )zõ
        Create an error-logger based on this logger, which does not contain the
        given bad observer.

        @param observer: The observer which previously had an error.

        @return: A L{Logger} without the given observer.
        c              3   ó,   •K  — | ]  }|‰usŒ|–— Œ y ­w)N© )Ú.0Úobsr   s     €r   ú	<genexpr>z7LogPublisher._errorLoggerForObserver.<locals>.<genexpr>g   s   øè ø€ ÒD�c°¸8Ò0CŒcÑDùs   ƒ	�r   )r   r   r
   )r   r   ÚerrorPublishers    ` r   r*   z$LogPublisher._errorLoggerForObserver]   s(   ø€ ô &ÛD˜TŸ_™_ÔDð
ˆô ˜~Ô.Ð.r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r"   r	   r/   r
   r*   r2   r   r   r   r      sg   „ ñð) <ð )°Dó )ð	- Lð 	-°Tó 	-ð	 |ð 	¸ó 	ð"˜hð "¨4ó "ðH/°ð /Àô /r   r   r#   r   Nc                  ó   — y)zD
    I{ILogObserver} that does nothing with the events it sees.
    Nr2   )r#   s    r   ÚbitbucketLogObserverr<   l   s   � r   )r:   Útypingr   r   Úzope.interfacer   Útwisted.python.failurer   Ú_interfacesr   r	   Ú_loggerr
   r+   r   r<   r2   r   r   ú<module>rB      so   ðñ
÷ &å &å *ß /Ý ð Pð ñ
 ˆ\Ó÷R/ð R/ó ðR/ñj ˆ\Óð ð ¨Tò ó ñr   