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: //lib/python3/dist-packages/twisted/logger/__pycache__/_observer.cpython-310.pyc
o

�b��@s�dZddlmZmZddlmZddlmZddlm	Z	m
Z
ddlmZdZ
ee	�Gd	d
�d
��Zee	�de
dd
fdd��Zd
S)z
Basic log observers.
�)�Callable�Optional)�implementer)�Failure�)�ILogObserver�LogEvent)�LoggerzITemporarily disabling observer {observer} due to exception: {log_failure}c@sjeZdZdZdeddfdd�Zdeddfdd	�Zdeddfd
d�Zdeddfd
d�Z	dede
fdd�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.
    �	observers�returnNcGst|�|_t|d�|_dS)N��observer)�list�
_observersr	�log)�selfr�r�:/usr/lib/python3/dist-packages/twisted/logger/_observer.py�__init__s
zLogPublisher.__init__rcCs4t|�std|����||jvr|j�|�dSdS)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�|�WdStyYdSw)zv
        Unregisters an observer with this publisher.

        @param observer: An L{ILogObserver} to remove.
        N)r�remove�
ValueErrorrrrr�removeObserver.s
�zLogPublisher.removeObserver�eventc	s�d�vrd}ndtddf��fdd�}g}�jD]!}|dur"||�z|��Wqty9|�|t�f�Yqw|D]\}}��|�}|jt||d�q<dS)z8
        Forward events to contained observers.
        �	log_traceNrrcs�d��|f�dS)z�
                Add tracing information for an observer.

                @param observer: an observer being forwarded to
                rN)rr
�rrrr�traceBsz$LogPublisher.__call__.<locals>.trace)�failurer)rr�	Exceptionrr�_errorLoggerForObserverr"�OBSERVER_DISABLED)rrr!�brokenObserversr�brokenObserverr"�errorLoggerrr 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�|]	}|�ur|VqdS)Nr)�.0�obsr
rr�	<genexpr>gs�z7LogPublisher._errorLoggerForObserver.<locals>.<genexpr>r
)r
rr	)rr�errorPublisherrr
rr$]s	�
z$LogPublisher._errorLoggerForObserver)�__name__�
__module__�__qualname__�__doc__rrrrrr)r	r$rrrrr
s$r
rrNcCsdS)zD
    I{ILogObserver} that does nothing with the events it sees.
    Nr)rrrr�bitbucketLogObserverlsr2)r1�typingrr�zope.interfacer�twisted.python.failurer�_interfacesrr�_loggerr	r%r
r2rrrr�<module>s�U