ó
    Ö›‘hy  ã            	       óì   • S r SSKJrJrJrJrJr  SSKJr  SSK	J
r
  SSKJrJr  SSKJr  SSKJrJr  \(       a  SS	KJr  \" \5       " S
 S5      5       rS\S\\\4   S\\\\4   /\\   4   SS4S jrg)z)
Integration with L{twisted.python.log}.
é    )ÚTYPE_CHECKINGÚAnyÚCallableÚDictÚOptional)Úimplementeré   )ÚformatEvent)ÚILogObserverÚLogEvent)ÚLogLevel)ÚStringifiableFromEventÚfromStdlibLogLevelMapping)r   c                   óB   • \ rS rSrSrS
S jrS\4S jrS\SS4S jr	S	r
g)ÚLegacyLogObserverWrapperé   zÙ
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.
ÚreturnNc                 ó   • Xl         g)zZ
@param legacyObserver: a legacy observer to which this observer will
    forward events.
N©ÚlegacyObserver)Úselfr   s     ÚZC:\Users\psant\Downloads\Noiseback\school\venv\Lib\site-packages\twisted/logger/_legacy.pyÚ__init__Ú!LegacyLogObserverWrapper.__init__    s
   € ð
 -Õó    c                 ó    • SR                  U S9$ )Nz0{self.__class__.__name__}({self.legacyObserver})©r   )Úformatr   s    r   Ú__repr__Ú!LegacyLogObserverWrapper.__repr__'   s   € ØA×HÑHÈdÐHÐSÐSr   Úeventc                 ó  • SU;  a  SUS'   SU;  a  US   US'   SU;  a  UR                  SS5      US'   SU;  aQ  UR                  S	S
5      b>  SUS'   [        UR                  5       5      US'   [        US   [        5      (       d  SUS'   SU;   a.  SU;  a  US   US'   SU;  a  SUS'   SU;  a  [        U5      US'   O8SU;  a2  US   [        R                  [        R                  4;   a  SUS'   OSUS'   U R                  U5        g
)zk
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__Ú!LegacyLogObserverWrapper.__call__*   s0  € ð ˜EÓ!Ø!ˆE�)Ñà˜ÓØ! *Ñ-ˆE�&‰Mà˜5Ó Ø#Ÿi™i¨°cÓ:ˆE�(‰Oð ˜5Ó  U§Y¡Y¨|¸TÓ%BÑ%Nð /ˆE�(‰OÜ"8¸¿¹»Ó"FˆE�,Ñô ˜e IÑ.´×6Ñ6Ø#%��iÑ ð ˜EÓ!Ø Ó%Ø#(¨Ñ#7��iÑ Ø Ó%Ø#$��iÑ Ø˜EÓ!Ü*¨5Ó1��e‘øØ˜eÓ#Ø�[Ñ!¤h§n¡n´h×6GÑ6GÐ%HÓHØ#$��iÒ à#$��iÑ à×Ñ˜EÕ"r   r   )r   ÚILegacyLogObserverr   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   Ústrr   r   r7   Ú__static_attributes__r$   r   r   r   r      s-   † ñô-ðT˜#ô Tð0#˜hð 0#¨4÷ 0#r   r   ÚobserverÚ	eventDictÚtextFromEventDictr   Nc                 óŒ  • SU;  a  US   US'   SU;  a  U" U5      nUb	  X1S'   SUS'   SU;  a]  SU;   a   [         US      nOBS	U;   a,  US	   (       a  [        R                  nO![        R                  nO[        R                  nUb  XAS'   S
U;  a  SUS
'   SU;  a  SU;   a  US   US'   U " U5        g! [         a    Sn N=f = f)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}r0   ÚlogLevelr.   Úlog_namespacer+   r(   r'   )r   ÚKeyErrorr   r6   Úinfo)rA   rB   rC   ÚtextÚlevels        r   ÚpublishToNewObserverrL   ]   sô   € ð, ˜Ó"Ø )¨&Ñ 1ˆ	�*Ñà˜9Ó$Ù  Ó+ˆØÑØ$(�jÑ!Ø&2ˆI�lÑ#à˜)Ó#Ø˜Ó"ðÜ1°)¸JÑ2GÑH‘ð ˜)Ó#Ø˜×#Ü ×)Ñ)‘ä Ÿ™‘ä—M‘MˆEàÑØ%*�kÑ"à˜iÓ'Ø%1ˆ	�/Ñ"à˜9Ó$¨°YÓ)>Ø"+¨HÑ"5ˆ	�,ÑáˆYÕøô' ó Ø’ðús   ¶B4 Â4CÃC)r>   Útypingr   r   r   r   r   Úzope.interfacer   Ú_formatr
   Ú_interfacesr   r   Ú_levelsr   Ú_stdlibr   r   Útwisted.python.logr9   r   r?   rL   r$   r   r   Ú<module>rT      s”   ðñ
÷ @Õ ?å &å  ß /Ý ß FæÝEñ ˆ\Ó÷C#ð C#ó ðC#ðL6Øð6à�C˜�H‰~ð6ð    c¨3 h¡Ð 0°(¸3±-Ð ?Ñ@ð6ð 
õ	6r   