
    Ih4"                        d Z ddlZddlZddlZddlZddlZddlZddlmZ ddl	m
Z
mZ ddlmZ ddlmZ ddlmZ dd	lmZ d
ZdZdaej.                  j1                  dd      ZddhZ ed      xZZd Zd Zed        Zd dZ d Z!d Z ed      Z" ed      Z#d Z$d Z% G d dejL                        Z' G d d      Z(d Z)d Z*d Z+d!dZ,y)"zLogging utilities.    N)contextmanager)AnyStrSequence)
LOG_LEVELS)
get_logger)safe_str   )colored)ColorFormatterLoggingProxybase_loggerset_in_sighandlerin_sighandlerr   get_task_loggermlevelget_multiprocessing_loggerreset_multiprocessing_loggerr   FMP_LOGceleryzcelery.taskc                     | a y)z7Set flag signifying that we're inside a signal handler.N)_in_sighandler)values    I/var/www/html/planif/env/lib/python3.12/site-packages/celery/utils/log.pyr   r   '   s	     N    c               #   z  K   t               } t        t        j                  j                  j
                  j                               t        j                  d       gz   }|D ]8  }	 |j                  D ]&  }	 || vr|j                   | j                  |       ( : y # t        $ r Y 7w xY w# t        $ r Y Vw xY wwN)setlistloggingLoggermanager
loggerDictvalues	getLoggerhandlersstreamaddAttributeError)seenloggerslhandlers       r   iter_open_logger_fdsr-   -   s     5DGNN**55<<>?!!$'()G 
		:: d*%nn,)	
 &  		sN   A"B;%B,5#BB,B;	B)&B,(B))B,,	B85B;7B88B;c               #   b   K   t        d       	 d t        d       y# t        d       w xY ww)z5Context that records that we are in a signal handler.TNF)r    r   r   r   r   >   s)      d!% % s   / /,/c                     | t               }}t        |      D ]G  }||k(  r y||v rt        d| j                  d      |j	                  |       |j
                  }|rG y t        d|       )NTzLogger z parents recursivezLogger hierarchy exceeds F)r   rangeRuntimeErrornamer'   parent)r+   pmaxthisr)   _s         r   
logger_isar9   H   s    CE$D3Z >19t|"affZ'9:  HHTN;;D > 6se<==r   c                 ,    t        ||       s| |_        |S r   )r9   r4   )parent_loggerlogger_s     r   _using_logger_parentr=   [   s    g}-&Nr   c                     t        |       }t        j                  ||j                  fvr|t        urt        t        |      }|S )zGet logger by name.)_get_loggerr   rootr4   r   r=   )r3   r+   s     r   r   r   a   s8    DA||Aqxx=(Qk-A a0Hr   zcelery.workerc                 b    | t         v rt        d| d      t        t        t	        |             S )z#Get logger for task module by name.zLogger name z is reserved!)RESERVED_LOGGER_NAMESr2   r=   task_loggerr   )r3   s    r   r   r   m   s1    $$\$?@@Z-=>>r   c                 l    | r1t        | t        j                        st        | j	                            S | S )z$Convert level name/int to log level.)
isinstancenumbersIntegralr   upper)levels    r   r   r   t   s*    Zw'7'78%++-((Lr   c                        e Zd ZdZ e       j
                  Zed   ed   ed   ed   dZd
 fd	Z fdZ	 fd	Z
 xZS )r   z5Logging formatter that adds colors based on severity.blueyellowredmagenta)DEBUGWARNINGERRORCRITICALc                 2    t         |   |       || _        y r   )super__init__	use_color)selffmtrV   	__class__s      r   rU   zColorFormatter.__init__   s    "r   c                 r    |r$t        |t              st        j                         }t        |   |      }|S r   )rE   tuplesysexc_inforT   formatException)rW   eirrY   s      r   r^   zColorFormatter.formatException   s.    jU+BG#B'r   c                    t         |   |      }| j                  j                  |j                        }|j
                  dk(  rt        j
                         n|j
                  }|rI| j                  r=	 	 t        |t              rt         |t        |                  S t         ||            S t        |      S # t        $ r t        |      cY S w xY w# t        $ rq}|j                  ddj                  t        |      |      c}|_        |_        	 t         |   |      ||c|_        |_        cY d }~S # ||c|_        |_        w xY wd }~ww xY w)Nr	   z<Unrepresentable {!r}: {!r}>)rT   formatcolorsget	levelnamer]   r\   rV   rE   strr   UnicodeDecodeError	Exceptionmsgtype)rW   recordri   coloreinfoexcprev_msgrY   s          r   rb   zColorFormatter.format   s#   gnV$ 0 01 #)//Q"6FOOT^^B
)!#s+"5##788#E#J// C=  * )#C=() 	BJJ#A#H#HS	3$ 6&/6:
B 7>&12:E/FJ(E/FJ	BsT   5)B; B; ;CC CC 	E4E
D6!E
0E6EE

ENT)__name__
__module____qualname____doc__r
   namesCOLORSrc   rU   r^   rb   __classcell__)rY   s   @r   r   r   {   sL    ? Y__F(#9%	F#! !r   r   c                       e Zd ZdZdZdZdZej                  Z	 e
j                         ZddZd Zd Zd Zd	 Zd
 Zd Zy)r   zForward file object to :class:`logging.Logger` instance.

    Arguments:
        logger (~logging.Logger): Logger instance to forward to.
        loglevel (int, str): Log level to use when logging messages.
    wNFc                     || _         t        |xs$ | j                   j                  xs | j                        | _        | j	                          y r   )loggerr   rI   loglevel_safewrap_handlers)rW   r{   r|   s      r   rU   zLoggingProxy.__init__   s;     xM4;;+<+<MN!r   c                 f    d }| j                   j                  D cg c]
  } ||       c}S c c}w )Nc                 b     G d dt         j                        } |       j                  | _        y )Nc                       e Zd Zd Zy)RLoggingProxy._safewrap_handlers.<locals>.wrap_handler.<locals>.WithSafeHandleErrorc                 l    	 t        j                  d t        j                         y # t        $ r Y y w xY wr   )	traceback	print_excr\   
__stderr__OSError)rW   rk   s     r   handleErrorz^LoggingProxy._safewrap_handlers.<locals>.wrap_handler.<locals>.WithSafeHandleError.handleError   s-    !++D#..A" s   $' 	33N)rq   rr   rs   r   r/   r   r   WithSafeHandleErrorr      s    r   r   )r   Handlerr   )r,   r   s     r   wrap_handlerz5LoggingProxy._safewrap_handlers.<locals>.wrap_handler   s%    goo  #6"7"C"CGr   )r{   r%   )rW   r   hs      r   r}   zLoggingProxy._safewrap_handlers   s,    

	D *.)=)=>AQ>>>s   .c                    t         r1t        |      }t        |t        j                         t        |      S t        | j                  dd      ry|r| j                  sd| j                  _	        	 t        |      j                  d      }|rB| j                  j                  | j                  |       t        |      d| j                  _	        S 	 d| j                  _	        yy# d| j                  _	        w xY w)z Write message to logging object.)filerecurse_protectionFr   T
)r   r   printr\   r   lengetattr_threadclosedr   rstripr{   logr|   )rW   data	safe_datas      r   writezLoggingProxy.write   s      I)#..1y>!4<<!5u=.2DLL+8$TN11$7	KKOODMM9=y>27/	  38/ 38/s   0AC" "C5c                 4    |D ]  }| j                  |        y)zWrite list of strings to file.

        The sequence can be any iterable object producing strings.
        This is equivalent to calling :meth:`write` for each string.
        N)r   )rW   sequenceparts      r   
writelineszLoggingProxy.writelines   s      	DJJt	r   c                      y r   r/   rW   s    r   flushzLoggingProxy.flush   s     	r   c                     d| _         y rp   )r   r   s    r   closezLoggingProxy.close   s     r   c                      y)zHere for file support.Fr/   r   s    r   isattyzLoggingProxy.isatty  s    r   r   )rq   rr   rs   rt   moder3   r   r   rQ   r|   	threadinglocalr   rU   r}   r   r   r   r   r   r/   r   r   r   r      sR     DDF}}HiooG"?$*

r   r   c                  N    	 ddl m}  | j                         S # t        $ r Y yw xY w)z"Return the multiprocessing logger.r   utilN)billiardr   r   ImportErrorr   s    r   r   r     s-    !!         	$$c                  X    	 ddl m}  t        | d      rd| _        yy# t        $ r Y yw xY w)z$Reset multiprocessing logging setup.r   r   _loggerN)r   r   hasattrr   r   r   s    r   r   r     s6     ! 4#DL $  s    	))c                  N    	 ddl m}  | j                         S # t        $ r Y y w xY w)Nr   process)r   r   current_processr   r   s    r   r   r     s/    )$ &&((  r   c                 >    t        t               dd       }||| z   S |S )Nindex)r   r   )baser   s     r   current_process_indexr   %  s'    O%w5E ,54<7%7r   )i  )r	   )-rt   r   rF   osr\   r   r   
contextlibr   typingr   r   	kombu.logr   r   r?   kombu.utils.encodingr   termr
   __all___process_awarer   environrd   r   rB   r   r{   r   r-   r   r9   r=   rC   worker_loggerr   r   	Formatterr   r   r   r   r   r   r/   r   r   <module>r      s       	 
   % #   / )  	%	(!=1  #8, ,f" ! !& '?+?4!W&& 4!nR Rj! )8r   