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: //home/arjun/projects/env/lib/python3.10/site-packages/celery/utils/__pycache__/log.cpython-310.pyc
o

-we5"�@sJdZddlZddlZddlZddlZddlZddlZddlmZddl	m
Z
mZddlm
Z
ddlmZddlmZdd	lmZd
ZdZdaej�dd�Zd
dhZed
�ZZdd�Zdd�Zedd��Zd-dd�Z dd�Z!dd�Zed�Z"ed�Z#dd�Z$dd �Z%Gd!d"�d"ej&�Z'Gd#d$�d$�Z(d%d&�Z)d'd(�Z*d)d*�Z+d.d+d,�Z,dS)/zLogging 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_loggerrF�MP_LOG�celeryzcelery.taskcCs|adS)z8Set flag signifiying that we're inside a signal handler.N)�_in_sighandler)�value�r�I/home/arjun/projects/env/lib/python3.10/site-packages/celery/utils/log.pyr
'sr
c
cs��t�}ttjjj���t�d�g}|D]+}z |jD]}z||vr+|j	V|�
|�Wqty5YqwWqty@YqwdS�N)�set�list�logging�Logger�manager�
loggerDict�values�	getLogger�handlers�stream�add�AttributeError)�seen�loggers�l�handlerrrr�iter_open_logger_fds-s*�
�

�����r*ccs*�td�z
dVWtd�dStd�w)z5Context that records that we are in a signal handler.TNF)r
rrrrr>s
�r��cCsj|t�}}t|�D]#}||krdS||vr td|j�d���|�|�|j}|s-dSq
td|����)NTzLogger z parents recursivezLogger hierarchy exceeds F)r�range�RuntimeError�namer$�parent)r(�p�max�thisr&�_rrr�
logger_isaHs�
�r4cCst||�s||_|Sr)r4r/)�
parent_logger�logger_rrr�_using_logger_parent[s
r7cCs.t|�}tj||jfvr|turtt|�}|S)zGet logger by name.)�_get_loggerr�rootr/rr7)r.r(rrrras
rz
celery.workercCs&|tvrtd|�d���ttt|��S)z#Get logger for task module by name.zLogger name z
 is reserved!)�RESERVED_LOGGER_NAMESr-r7�task_loggerr)r.rrrrmsrcCs |rt|tj�st|��S|S)z$Convert level name/int to log level.)�
isinstance�numbers�Integralr�upper)�levelrrrrtsrcs`eZdZdZe�jZededededd�Zd�fd	d
�	Z�fdd�Z	�fd
d�Z
�ZS)r
z5Logging formatter that adds colors based on severity.�blue�yellow�red�magenta)�DEBUG�WARNING�ERROR�CRITICALNTcst��|�||_dSr)�super�__init__�	use_color)�self�fmtrK��	__class__rrrJ�s
zColorFormatter.__init__cs&|rt|t�st��}t��|�}|Sr)r<�tuple�sys�exc_inforI�formatException)rL�ei�rrNrrrS�szColorFormatter.formatExceptioncst��|�}|j�|j�}|jdkrt��n|j}|r|jrz&zt|t	�r/t	|t
|���WWSt
||��WWStyDt
|�YWSwty~}z.|j
dd�t|�|�}|_|_
zt��|�W|||_
|_WYd}~S|||_
|_wd}~wwt
|�S)Nrz<Unrepresentable {!r}: {!r}>)rI�format�colors�get�	levelnamerRrQrKr<�strr�UnicodeDecodeError�	Exception�msg�type)rL�recordr]�color�einfo�exc�prev_msgrNrrrV�s.

�
��,��zColorFormatter.format�NT)�__name__�
__module__�__qualname__�__doc__r	�names�COLORSrWrJrSrV�
__classcell__rrrNrr
{s�r
c@sdeZdZdZdZdZdZejZ	e
��Zddd�Z
dd�Zd	d
�Zdd�Zd
d�Zdd�Zdd�ZdS)rz�Forward 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.
    �wNFcCs*||_t|p|jjp|j�|_|��dSr)�loggerrr@�loglevel�_safewrap_handlers)rLrmrnrrrrJ�szLoggingProxy.__init__csdd���fdd�|jjD�S)NcSs Gdd�dtj�}|�j|_dS)Nc@seZdZdd�ZdS)zRLoggingProxy._safewrap_handlers.<locals>.wrap_handler.<locals>.WithSafeHandleErrorcSs*z
t�dtj�WdStyYdSwr)�	traceback�	print_excrQ�
__stderr__�OSError)rLr_rrr�handleError�s
�z^LoggingProxy._safewrap_handlers.<locals>.wrap_handler.<locals>.WithSafeHandleError.handleErrorN)rerfrgrtrrrr�WithSafeHandleError�sru)r�Handlerrt)r)rurrr�wrap_handler�sz5LoggingProxy._safewrap_handlers.<locals>.wrap_handlercsg|]}�|��qSrr)�.0�h�rwrr�
<listcomp>�sz3LoggingProxy._safewrap_handlers.<locals>.<listcomp>)rmr"�rLrrzrro�szLoggingProxy._safewrap_handlerscCs�trt|�}t|tjd�t|�St|jdd�rdS|rJ|jsJd|j_	z!t|��
d�}|r>|j�|j
|�t|�Wd|j_	SWd|j_	dSd|j_	wdS)z Write message to logging object.)�file�recurse_protectionFrT�
)rr�printrQrr�len�getattr�_thread�closedr~�rstriprm�logrn)rL�data�	safe_datarrr�write�s&

�
�zLoggingProxy.writecCs|D]}|�|�qdS)z�Write 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�)rL�sequence�partrrr�
writelines�s�zLoggingProxy.writelinescCsdSrrr|rrr�flush�szLoggingProxy.flushcCs
d|_dSrd)r�r|rrr�close�s
zLoggingProxy.closecCsdS)zHere for file support.Frr|rrr�isattyszLoggingProxy.isattyr)rerfrgrh�moder.r�rrGrn�	threading�localr�rJror�r�r�r�r�rrrrr�s

rcCs,zddlm}W|��StyYdSw)z"Return the multiprocessing logger.r��utilN)�billiardr��ImportErrorrr�rrrrs��rcCs>zddlm}Wn
tyYdSwt|d�rd|_dSdS)z$Reset multiprocessing logging setup.rr��_loggerN)r�r�r��hasattrr�r�rrrrs�

�rcCs,zddlm}W|��StyYdSw)Nr��process)r�r�r��current_processr�rrrr�s��r�cCs"tt�dd�}|dur||S|S)N�index)r�r�)�baser�rrr�current_process_index%sr�)r+)r)-rhrr=�osrQr�rp�
contextlibr�typingrr�	kombu.logrrr8�kombu.utils.encodingr�termr	�__all__�_process_awarer�environrXrr:rrmr
r*rr4r7r;�
worker_loggerrr�	Formatterr
rrrr�r�rrrr�<module>sH

	7U