o
    —¨ÊhC  ã                   @  s  d Z ddlm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
 ddlmZmZ ddlmZ dd	lmZ e
r@dd
lmZ dZeejƒZe ej¡ e dej¡ e ejd¡ ej d¡Zddd„Zdd„ Zdd„ Z ddd„Z!G dd„ dƒZ"G dd„ de"ƒZ#d dd„Z$dS )!zLogging Utilities.é    )ÚannotationsN)ÚWatchedFileHandler)ÚTYPE_CHECKINGé   )Ú	safe_reprÚsafe_str©Úmaybe_evaluate)Úcached_property)ÚLogger)ÚLogMixinÚ
LOG_LEVELSÚget_loglevelÚsetup_loggingÚFATALÚDISABLE_TRACEBACKSÚloggerústr | Loggerc                 C  s,   t | tƒr
t | ¡} | js|  t ¡ ¡ | S )zGet logger by name.)Ú
isinstanceÚstrÚloggingÚ	getLoggerÚhandlersÚ
addHandlerÚNullHandler)r   © r   ú;/var/www/html/env/lib/python3.10/site-packages/kombu/log.pyÚ
get_logger   s
   

r   c                 C  s   t | tƒr	t|  S | S )zGet loglevel by name.)r   r   r   )Úlevelr   r   r   r   %   s   
r   c                 c  sH   � |   d¡}t|dd … ƒD ]\}}|r||d  sd n|d V  qd S )Nú%r   r   )ÚsplitÚ	enumerate)ÚfmtÚpartsÚiÚer   r   r   Únaive_format_parts,   s
   €
 ÿr&   c                 c  sR   � |st tdœn|}tt| ƒƒD ]\}}| |¡}|r!||| ƒn|| V  qd S )N)ÚsÚr)r   r   r!   r&   Úget)r"   ÚargsÚfiltersÚindexÚtypeÚfiltr   r   r   Úsafeify_format2   s   €
þr/   c                   @  sx   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zedd„ ƒZedd„ ƒZdS )r   z.Mixin that adds severity methods to any class.c                 O  ó   | j tjg|¢R i |¤ŽS ©N)Úlogr   ÚDEBUG©Úselfr*   Úkwargsr   r   r   Údebug<   ó   zLogMixin.debugc                 O  r0   r1   )r2   r   ÚINFOr4   r   r   r   Úinfo?   r8   zLogMixin.infoc                 O  r0   r1   )r2   r   ÚWARNr4   r   r   r   ÚwarnB   r8   zLogMixin.warnc                 O  ó&   |  dd¡ | jtjg|¢R i |¤ŽS ©NÚexc_infoT)Ú
setdefaultr2   r   ÚERRORr4   r   r   r   ÚerrorE   ó   zLogMixin.errorc                 O  r=   r>   )r@   r2   r   ÚCRITICALr4   r   r   r   ÚcriticalI   rC   zLogMixin.criticalc                 C  s   | j › d|› �S )Nz - )Úlogger_name)r5   Útextr   r   r   ÚannotateM   s   zLogMixin.annotatec              	   O  s¸   t r| dd ¡ | j |¡rZ| jj}t|ƒdkrFt|d tƒrFdd„ |dd … D ƒ}|||  |d  	dd¡¡gt
t|d |ƒƒ¢R i |¤ŽS | jj||  d tt|ƒ¡¡fi |¤ŽS d S )	Nr?   r   r   c                 S  s   g | ]}t |ƒ‘qS r   r   )Ú.0Úargr   r   r   Ú
<listcomp>V   s    z LogMixin.log.<locals>.<listcomp>z%rz%sú )r   Úpopr   ÚisEnabledForr2   Úlenr   r   rH   ÚreplaceÚlistr/   ÚjoinÚmapr   )r5   Úseverityr*   r6   r2   Úexpandr   r   r   r2   P   s&   ÿþþÿþøzLogMixin.logc                 C  s
   t | jƒS r1   )r   rF   ©r5   r   r   r   r   _   s   
zLogMixin.get_loggerc                 C  s   | j  |  |¡¡S r1   )r   rN   r   ©r5   r   r   r   r   Úis_enabled_forb   s   zLogMixin.is_enabled_forc                 C  s   t |tjƒs
t| S |S r1   )r   ÚnumbersÚIntegralr   rW   r   r   r   r   e   s   zLogMixin.get_loglevelc                 C  s   |   ¡ S r1   )r   rV   r   r   r   r   j   ó   zLogMixin.loggerc                 C  s   | j jS r1   )Ú	__class__Ú__name__rV   r   r   r   rF   n   r[   zLogMixin.logger_nameN)r]   Ú
__module__Ú__qualname__Ú__doc__r7   r:   r<   rB   rE   rH   r2   r   rX   r   r
   r   ÚpropertyrF   r   r   r   r   r   9   s     
r   c                      s2   e Zd Zddd„Z‡ fdd„Zedd„ ƒZ‡  ZS )	ÚLogNc                 C  s   || _ || _d S r1   )Ú_logger_nameÚ_logger)r5   Únamer   r   r   r   Ú__init__u   s   
zLog.__init__c                   s   | j r| j S tƒ  ¡ S r1   )rd   Úsuperr   rV   ©r\   r   r   r   y   s   
zLog.get_loggerc                 C  s   | j S r1   )rc   rV   r   r   r   rF   ~   s   zLog.logger_namer1   )r]   r^   r_   rf   r   ra   rF   Ú__classcell__r   r   rh   r   rb   s   s
    
rb   c                 C  s^   t  ¡ }t| pdƒ} |r|ntj}|js-t|dƒrt  |¡}nt|ƒ}| 	|¡ | 
| ¡ |S )zSetup logging.rA   Úwrite)r   r   r   ÚsysÚ
__stderr__r   ÚhasattrÚStreamHandlerr   r   ÚsetLevel)ÚloglevelÚlogfiler   Úhandlerr   r   r   r   ƒ   s   


r   )r   r   r1   )NN)%r`   Ú
__future__r   r   rY   Úosrk   Úlogging.handlersr   Útypingr   Úutils.encodingr   r   Úutils.functionalr	   Úutils.objectsr
   r   Ú__all__ÚdictÚ_nameToLevelr   ÚupdateÚ_levelToNamer@   r   Úenvironr)   r   r   r   r&   r/   r   rb   r   r   r   r   r   Ú<module>   s4    

	
: