
    \dy              	          d Z ddlmZmZmZ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dlmZmZ erdd	lmZ  ee           G d
 d                      Zdedeeef         deeeef         gee         f         ddfdZdS )z)
Integration with L{twisted.python.log}.
    )TYPE_CHECKINGAnyCallableDictOptional)implementer   )formatEvent)ILogObserverLogEvent)LogLevel)StringifiableFromEventfromStdlibLogLevelMapping)r   c                   6    e Zd ZdZd
dZdefdZdeddfd	ZdS )LegacyLogObserverWrapperz
    L{ILogObserver} that wraps a L{twisted.python.log.ILogObserver}.

    Received (new-style) events are modified prior to forwarding to
    the legacy observer to ensure compatibility with observers that
    expect legacy events.
    legacyObserverILegacyLogObserverreturnNc                     || _         dS )zr
        @param legacyObserver: a legacy observer to which this observer will
            forward events.
        N)r   )selfr   s     6lib/python3.11/site-packages/twisted/logger/_legacy.py__init__z!LegacyLogObserverWrapper.__init__    s    
 -    c                 .    d                     |           S )Nz0{self.__class__.__name__}({self.legacyObserver})r   )formatr   s    r   __repr__z!LegacyLogObserverWrapper.__repr__'   s    AHHdHSSSr   eventc                 $   d|vrd|d<   d|vr|d         |d<   d|vr|                     dd          |d<   d|vr_|                     d	d
          Id|d<   t          |                                          |d<   t          |d         t                    sd|d<   d|v r/d|vr|d         |d<   d|vrd|d<   d|vrt          |          |d<   n/d|vr+|d         t          j        t          j        fv rd|d<   nd|d<   | 	                    |           d
S )z
        Forward events to the legacy observer after editing them to
        ensure compatibility.

        @param event: an event
        message timelog_timesystem
log_system-r   
log_formatNz%(log_legacy)s
log_legacylog_failurefailureisErrorr	   why	log_levelr   )
getr   copy
isinstancetupler
   r   errorcriticalr   )r   r   s     r   __call__z!LegacyLogObserverWrapper.__call__*   sk    E!!!E)!*-E&M5  #iic::E(O 5  UYY|T%B%B%N /E(O"8"F"FE, eI.66 &#%i  E!!%%#(#7i %%#$i E!!*511ee##[!hnh6G%HHH#$i  #$i E"""""r   )r   r   r   N)	__name__
__module____qualname____doc__r   strr   r   r4   r!   r   r   r   r      st         - - - -T# T T T T0#h 0#4 0# 0# 0# 0# 0# 0#r   r   observer	eventDicttextFromEventDictr   Nc                 x   d|vr|d         |d<   d|vr ||          }|
||d<   d|d<   d|vrdd|v r'	 t           |d                  }nD# t          $ r d}Y n6w xY wd	|v r"|d	         rt          j        }nt          j        }nt          j        }|||d<   d
|vrd|d
<   d|vrd|v r|d         |d<    | |           dS )a"  
    Publish an old-style (L{twisted.python.log}) event to a new-style
    (L{twisted.logger}) observer.

    @note: It's possible that a new-style event was sent to a
        L{LegacyLogObserverWrapper}, and may now be getting sent back to a
        new-style observer.  In this case, it's already a new-style event,
        adapted to also look like an old-style event, and we don't need to
        tweak it again to be a new-style event, hence this checks for
        already-defined new-style keys.

    @param observer: A new-style observer to handle this event.
    @param eventDict: An L{old-style <twisted.python.log>}, log event.
    @param textFromEventDict: callable that can format an old-style event as a
        string.  Passed here rather than imported to avoid circular dependency.
    r#   r"   r'   Nlog_textz
{log_text}r-   logLevelr+   log_namespacer(   r%   r$   )r   KeyErrorr   r3   info)r:   r;   r<   textlevels        r   publishToNewObserverrE   ]   s4   , "" )& 1	*9$$  ++$(Ij!&2Il#)##""1)J2GH   )### & ) ME%*Ik"i''%1	/"9$$Y)>)>"+H"5	,HYs   A AA)r8   typingr   r   r   r   r   zope.interfacer   _formatr
   _interfacesr   r   _levelsr   _stdlibr   r   twisted.python.logr   r   r9   rE   r!   r   r   <module>rM      sh  
  @ ? ? ? ? ? ? ? ? ? ? ? ? ? & & & & & &             / / / / / / / /       F F F F F F F F FEEEEEE \C# C# C# C# C# C# C# C#L66CH~6  c3h 0(3- ?@6 
	6 6 6 6 6 6r   