???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................3
ft`r(                 @   s  d dl m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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ZdZe
jZe
jZe
jZe
jZe
jZdZdZdZdZd	d
 ZG dd deZee
je
je
je
je
je
jeeeedZdd Zee
je
jdZ dd Z!dd Z"d%Z#dd Z$G dd de
j%j&Z'dd Z(dd Z)G dd  d eZ*G d!d" d"eZ+e	j,j-j.ee	j,j-j/ee	j,j-j0ee	j,j-j1ee	j,j-j2ee	j,j-j3ee	j,j-j4eiZ5G d#d$ d$e	j,j-Z6e6 Z7e	j,j8j9e7 dS )&    )absolute_import)unicode_literalsNd               c                s   dd  fdd}|S )zGMethod decorator turning the method into noop on second or later calls.c              _   s   d S )N )Z_argsZ_kwargsr	   r	   /usr/lib/python3.6/logging.pynoop3   s    zonly_once.<locals>.noopc                s"    | f|| t |  j d S )N)setattr__name__)selfargskwargs)funcr   r	   r
   	swan_song5   s    zonly_once.<locals>.swan_songr	   )r   r   r	   )r   r   r
   	only_once1   s    r   c               @   s   e Zd Zdd Zdd ZdS )_MaxLevelFilterc             C   s
   || _ d S )N)	max_level)r   r   r	   r	   r
   __init__;   s    z_MaxLevelFilter.__init__c             C   s   |j | jkrdS dS )Nr      )Zlevelnor   )r   recordr	   r	   r
   filter>   s    z_MaxLevelFilter.filterN)r   
__module____qualname__r   r   r	   r	   r	   r
   r   :   s   r   )r   r   r      r      r      r   	   
   c             C   s(   d|   kodkn  st tj| tS )Nr   r    )AssertionError_VERBOSE_VAL_MAPPINGgetTRACE)
cfg_errvalr	   r	   r
   _cfg_verbose_val2levelQ   s    r&   )r   r   r   c             C   s*   d|   kodkn  st tj| tjS )Nr   r    )r!   _ERR_VAL_MAPPINGr#   loggingWARNING)r%   r	   r	   r
   _cfg_err_val2level^   s    r*   c             C   s   | d S )Nz.gzr	   )namer	   r	   r
   compression_namerc   s    r,      i   c             C   s\   t | d>}tj |d&}x|jt}|s,P |j| qW W d Q R X W d Q R X tj|  d S )Nrbwb)opengzipread
CHUNK_SIZEwriteosremove)sourcedestZsfZwfdatar	   r	   r
   compression_rotatorj   s    
"r:   c                   s&   e Zd Zd	 fdd	Zdd Z  ZS )
MultiprocessRotatingFileHandlerar   NFc                s.   t t| j|||||| tjjdd| _d S )Nz	/var/log/T)superr;   r   dnflockZbuild_log_lockrotate_lock)r   filenamemodemaxBytesbackupCountencodingZdelay)	__class__r	   r
   r   v   s    
z(MultiprocessRotatingFileHandler.__init__c             C   s   xyR| j |rD| j* tj| jj}| j  tj| j| W d Q R X tj	j
| | d S  tjjtjjfk
r~   tjd Y q tk
r   | j| d S X qW d S )Ng{Gz?)ZshouldRolloverr@   r5   statZbaseFilenamest_modeZ
doRolloverchmodr(   ZFileHandleremitr>   
exceptionsZProcessLockErrorZThreadLockErrortimeZsleep	ExceptionZhandleError)r   r   rB   r	   r	   r
   rJ   {   s    

z$MultiprocessRotatingFileHandler.emit)r<   r   r   NF)r   r   r   r   rJ   __classcell__r	   r	   )rF   r
   r;   u   s   r;   c             C   sl   t jj| s,tjjt jj|  tjj|  t| ||d}t	j
dd}tj|_|j| |rht|_t|_|S )N)rC   rD   z%%(asctime)s %(levelname)s %(message)sz%Y-%m-%dT%H:%M:%S%z)r5   pathexistsr>   utilZ
ensure_dirdirnameZtouchr;   r(   Z	FormatterrL   Z	localtimeZ	converterZsetFormatterr:   Zrotatorr,   Znamer)logfilelog_size
log_rotatelog_compresshandlerZ	formatterr	   r	   r
   _create_filehandler   s    
rX   c             C   s   | j ttjj d S )N)logINFOr>   constZ
LOG_MARKER)Zloggerr	   r	   r
   _paint_mark   s    r\   c               @   sB   e Zd Zdd Zedd Zedd Zedd Zdd
dZdS )Loggingc             C   sP   d  | _ | _tjtd tjtd tjtd tjtd tjd dt_	d S )NDDEBUGSUBDEBUGr$   ALLTF)
stdout_handlerstderr_handlerr(   ZaddLevelNamer^   r_   r$   r`   ZcaptureWarningsZraiseExceptions)r   r	   r	   r
   r      s    
zLogging.__init__c             C   st   t jd}|jt t jtj}|jt |jt	t j
 |j| || _t jtj}|jt
 |j| || _d S )Nr>   )r(   	getLoggersetLevelr$   ZStreamHandlersysstdoutrZ   Z	addFilterr   r)   
addHandlerra   stderrrb   )r   
logger_dnfrf   rh   r	   r	   r
   	_presetup   s    





zLogging._presetupc             C   s   t jd}|jt tjj|tjj	}t
||||}|j| |j| t jd}	|	j| t jd}
|
jt tjj|tjj}t
||||}|
j| tjjj||tk t jd}d|_|jt tjj|tjj}t
||||}|j| d S )Nr>   zpy.warningslibrepozdnf.rpmF)r(   rc   rd   r$   r5   rO   joinr>   r[   ZLOGrX   rg   ZLOG_LIBREPOlibdnfZrepoZ
LibrepoLogr`   Z	propagater_   ZLOG_RPM)r   logfile_levellogdirrT   rU   rV   ri   rS   rW   logger_warningsZlogger_librepo
logger_rpmr	   r	   r
   _setup_file_loggers   s(    










zLogging._setup_file_loggersc             C   s   | j   | j||||| tjd}|j| j tjd}	|	j| j |	j| j tjd}
| jjt | jjt t	|
 t	|	 | jj| | jj| d S )Nzpy.warningszdnf.rpmr>   )
rj   rr   r(   rc   rg   rb   ra   rd   r)   r\   )r   Zverbose_levelZerror_levelrn   ro   rT   rU   rV   rp   rq   ri   r	   r	   r
   _setup   s    


zLogging._setupFc       
      C   sf   t |j}t|j}t |j}|j}|j}|j}|j}	|rL| j	|||||	S | j
|||||||	S d S )N)r&   Z
debuglevelr*   Z
errorlevelZlogfilelevelro   rT   rU   rV   rr   rs   )
r   ZconfZfile_loggers_onlyZverbose_level_rZerror_level_rZlogfile_level_rro   rT   rU   rV   r	   r	   r
   _setup_from_dnf_conf   s    


zLogging._setup_from_dnf_confN)F)	r   r   r   r   r   rj   rr   rs   rt   r	   r	   r	   r
   r]      s
   	r]   c               @   s   e Zd Zdd Zdd ZdS )Timerc             C   s   || _ tj | _d S )N)whatrL   start)r   rv   r	   r	   r
   r     s    zTimer.__init__c             C   s6   t j  | j }d| j|d f }tjdjt| d S )Nztimer: %s: %d msi  r>   )rL   rw   rv   r(   rc   rY   r^   )r   Zdiffmsgr	   r	   r
   __call__  s    zTimer.__call__N)r   r   r   r   ry   r	   r	   r	   r
   ru      s   ru   c                   s$   e Zd Z fddZdd Z  ZS )LibdnfLoggerCBc                s*   t t| j  tjd| _tjd| _d S )Nr>   rk   )r=   rz   r   r(   rc   _dnf_logger_librepo_logger)r   )rF   r	   r
   r     s    zLibdnfLoggerCB.__init__c             G   sf   t |dkr|\}}nt |dkr.|\}}}}|tjjjkrP| jjt| | n| jjt| | dS )zoLog message.

        source -- integer, defines origin (libdnf, librepo, ...) of message, 0 - unknown
        r   r   N)	lenrm   utilsLoggerZLOG_SOURCE_LIBREPOr|   rY   _LIBDNF_TO_DNF_LOGLEVEL_MAPPINGr{   )r   r7   r   levelmessagerL   pidr	   r	   r
   r4     s    
zLibdnfLoggerCB.write)r   r   r   r   r4   rN   r	   r	   )rF   r
   rz     s   rz   i   ):Z
__future__r   r   Zdnf.exceptionsr>   Z	dnf.constZdnf.lockZdnf.utilZlibdnf.reporm   r(   Zlogging.handlersr5   re   rL   warningsr1   ZSUPERCRITICALZCRITICALZERRORr)   rZ   DEBUGr^   r_   r$   r`   r   objectr   r"   r&   r'   r*   r,   r3   r:   ZhandlersZRotatingFileHandlerr;   rX   r\   r]   ru   r~   r   ZLevel_CRITICALZLevel_ERRORZLevel_WARNINGZLevel_NOTICEZ
Level_INFOZLevel_DEBUGZLevel_TRACEr   rz   ZlibdnfLoggerCBZLogZ	setLoggerr	   r	   r	   r
   <module>   sv   	

a





