
    h                         S r SSK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r\" \	5       " S	 S
5      5       r\" \	5      S\
SS4S j5       rg)z
Basic log observers.
    )CallableOptional)implementer)Failure   )ILogObserverLogEvent)LoggerzITemporarily disabling observer {observer} due to exception: {log_failure}c                   r    \ rS rSrSrS\SS4S jrS\SS4S jrS\SS4S	 jrS
\	SS4S jr
S\S\4S jrSrg)LogPublisher   z
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                 @    [        U5      U l        [        U S9U l        g )Nobserver)list
_observersr
   log)selfr   s     _/root/1688_scrapy/alibaba-scraper/venv/lib/python3.13/site-packages/twisted/logger/_observer.py__init__LogPublisher.__init__   s    y/4(    r   c                     [        U5      (       d  [        SU< 35      eXR                  ;  a  U R                  R                  U5        gg)zY
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   addObserverLogPublisher.addObserver#   sC     !!8EFF??*OO""8, +r   c                 \     U R                   R                  U5        g! [         a     gf = f)z^
Unregisters an observer with this publisher.

@param observer: An L{ILogObserver} to remove.
N)r   remove
ValueErrorr   s     r   removeObserverLogPublisher.removeObserver.   s+    	OO""8, 		s    
++eventc                 H  ^ ^ ST;  a  SnOS[         SS4UU 4S jjn/ nT R                   H  nUb  U" U5         U" T5        M     U H+  u  pVT R                  U5      nUR                  [        UUS9  M-     g! [         a    UR                  U[	        5       45         Mu  f = f)z(
Forward events to contained observers.
	log_traceNr   r   c                 2   > TS   R                  TU 45        g)z[
Add tracing information for an observer.

@param observer: an observer being forwarded to
r)   N)r   )r   r'   r   s    r   trace$LogPublisher.__call__.<locals>.traceB   s     k"))4*:;r   )failurer   )r   r   	Exceptionr   r   _errorLoggerForObserverr-   OBSERVER_DISABLED)r   r'   r+   brokenObserversr   brokenObserverr-   errorLoggers   ``      r   __call__LogPublisher.__call__9   s     e#>BE< < < < H h> ( (7#N66~FK!'    (7  >&&')'<=>s   A88%B! B!c                 N   ^ [        U4S jU R                   5       6 n[        US9$ )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   4   >#    U  H  oTLd  M	  Uv   M     g 7f)N ).0obsr   s     r   	<genexpr>7LogPublisher._errorLoggerForObserver.<locals>.<genexpr>g   s     D_c80Ccc_s   	r   )r   r   r
   )r   r   errorPublishers    ` r   r/   $LogPublisher._errorLoggerForObserver]   s(     &DT__D
 ~..r   )r   r   )__name__
__module____qualname____firstlineno____doc__r   r   r    r%   r	   r4   r
   r/   __static_attributes__r8   r   r   r   r      sg    )< )D )	-L 	-T 	-	| 	 	"h "4 "H/ / /r   r   r'   r   Nc                     g)z<
I{ILogObserver} that does nothing with the events it sees.
Nr8   )r'   s    r   bitbucketLogObserverrF   l   s    r   )rC   typingr   r   zope.interfacer   twisted.python.failurer   _interfacesr   r	   _loggerr
   r0   r   rF   r8   r   r   <module>rL      so   
 & & * /  P 
 \R/ R/ R/j \ T  r   