HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //usr/lib/python3/dist-packages/twisted/logger/__pycache__/_observer.cpython-38.pyc
U

�b��@s~dZddlmZmZddlmZddlmZddlm	Z	m
Z
ddlmZdZ
ee	�Gd	d
�d
��Zee	�e
dd�d
d��ZdS)z
Basic log observers.
�)�Callable�Optional)�implementer)�Failure�)�ILogObserver�LogEvent)�LoggerzITemporarily disabling observer {observer} due to exception: {log_failure}c@s`eZdZdZedd�dd�Zedd�dd�Zedd�d	d
�Zedd�dd
�Z	ee
d�dd�ZdS)�LogPublisherz�
    I{ILogObserver} that fans out events to other observers.

    Keeps track of a set of L{ILogObserver} objects and forwards
    events to each.
    N)�	observers�returncGst|�|_t|d�|_dS)N��observer)�list�
_observersr	�log)�selfr�r�:/usr/lib/python3/dist-packages/twisted/logger/_observer.py�__init__s
zLogPublisher.__init__�rrcCs0t|�std|����||jkr,|j�|�dS)zq
        Registers an observer with this publisher.

        @param observer: An L{ILogObserver} to add.
        zObserver is not callable: N)�callable�	TypeErrorr�append�rrrrr�addObserver#s
zLogPublisher.addObservercCs*z|j�|�Wntk
r$YnXdS)zv
        Unregisters an observer with this publisher.

        @param observer: An L{ILogObserver} to remove.
        N)r�remove�
ValueErrorrrrr�removeObserver.szLogPublisher.removeObserver��eventrc	s�d�krd}ntdd���fdd�}g}�jD]F}|dk	rB||�z|��Wq.tk
rr|�|t�f�Yq.Xq.|D]"\}}��|�}|jt||d�qzdS)z8
        Forward events to contained observers.
        �	log_traceNrcs�d��|f�dS)z�
                Add tracing information for an observer.

                @param observer: an observer being forwarded to
                r!N)rr
�r rrr�traceBsz$LogPublisher.__call__.<locals>.trace)�failurer)rr�	Exceptionrr�_errorLoggerForObserverr$�OBSERVER_DISABLED)rr r#ZbrokenObserversrZbrokenObserverr$ZerrorLoggerrr"r�__call__9s$

�zLogPublisher.__call__cs"t�fdd�|jD��}t|d�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.
        c3s|]}|�k	r|VqdS)Nr)�.0Zobsr
rr�	<genexpr>gsz7LogPublisher._errorLoggerForObserver.<locals>.<genexpr>r
)r
rr	)rrZerrorPublisherrr
rr&]s	�z$LogPublisher._errorLoggerForObserver)�__name__�
__module__�__qualname__�__doc__rrrrrr(r	r&rrrrr
s$r
NrcCsdS)zD
    I{ILogObserver} that does nothing with the events it sees.
    Nr)r rrr�bitbucketLogObserverlsr/)r.�typingrr�zope.interfacer�twisted.python.failurer�_interfacesrr�_loggerr	r'r
r/rrrr�<module>s�U