a
    ´iŽ  ã                   @   sJ  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	m
Z
mZ dZe jZdad*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ej¡Zdd„ ZG dd„ deƒZG dd„ deeƒZG dd„ de eƒZ!G dd„ de"eƒZ#G d d!„ d!eƒZ$G d"d#„ d#e$ƒZ%e%Z&d$d%„ Z'edfd&d'„Z(d(d)„ Z)dS )+é    N)ÚThreadingTCPServerÚStreamRequestHandleriF#  Tc                 C   sŒ   dd l }t| |jƒr| }n*| |¡}t| dƒr:| | ¡ n
| | ¡ t|ƒ}t 	¡  z(t
ƒ  t||ƒ}t|||ƒ W t ¡  n
t ¡  0 d S )Nr   Úreadline)ÚconfigparserÚ
isinstanceZRawConfigParserÚConfigParserÚhasattrZ	read_fileÚreadÚ_create_formattersÚloggingÚ_acquireLockÚ_clearExistingHandlersÚ_install_handlersÚ_install_loggersÚ_releaseLock)ÚfnameÚdefaultsÚdisable_existing_loggersr   ÚcpÚ
formattersÚhandlers© r   ú&/usr/lib64/python3.9/logging/config.pyÚ
fileConfig3   s    	



r   c              	   C   sj   |   d¡} |  d¡}t|ƒ}| D ]D}|d | }zt||ƒ}W q  tyb   t|ƒ t||ƒ}Y q 0 q |S )NÚ.r   )ÚsplitÚpopÚ
__import__ÚgetattrÚAttributeError)ÚnameÚusedÚfoundÚnr   r   r   Ú_resolveU   s    

r$   c                 C   s   t tj| ƒS ©N)ÚmapÚstrÚstrip)Zalistr   r   r   Ú_strip_spacesc   s    r)   c                 C   s®   | d d }t |ƒsi S | d¡}t|ƒ}i }|D ]v}d| }| j|ddd d}| j|ddd d}| j|d	dd
d}tj}| |  d¡}	|	r”t|	ƒ}||||ƒ}
|
||< q2|S )Nr   Úkeysú,zformatter_%sÚformatT)ÚrawÚfallbackÚdatefmtÚstyleú%Úclass)Úlenr   r)   Úgetr   Ú	Formatterr$   )r   Úflistr   ZformZsectnameÚfsÚdfsZstlÚcÚ
class_nameÚfr   r   r   r
   f   s$    

r
   c              
   C   sh  | d d }t |ƒsi S | d¡}t|ƒ}i }g }|D ]}| d|  }|d }| dd¡}zt|ttƒƒ}W n ttfyŒ   t	|ƒ}Y n0 | dd	¡}	t|	ttƒƒ}	| d
d¡}
t|
ttƒƒ}
||	i |
¤Ž}||_
d|v rð|d }| |¡ t |ƒr| || ¡ t|tjjƒr<| dd¡}t |ƒr<| ||f¡ |||< q6|D ]\}}| || ¡ qJ|S )Nr   r*   r+   z
handler_%sr2   Ú	formatterÚ Úargsú()Úkwargsz{}ÚlevelÚtarget)r3   r   r)   r4   ÚevalÚvarsr   r   Ú	NameErrorr$   r    ÚsetLevelÚsetFormatterÚ
issubclassr   ÚMemoryHandlerÚappendZ	setTarget)r   r   Úhlistr   ZfixupsÚhandÚsectionÚklassÚfmtr>   r@   ÚhrA   rB   Útr   r   r   r   |   sD    





r   c                 C   sT   t j}| D ]D}|jj| }||v rHt|t jƒsN| t j¡ g |_d|_	q
||_
q
d S )NT)r   ÚrootÚmanagerÚ
loggerDictr   ÚPlaceHolderrF   ÚNOTSETr   Ú	propagateÚdisabled)ÚexistingÚchild_loggersÚdisable_existingrR   ÚlogÚloggerr   r   r   Ú_handle_existing_loggers¢   s    r^   c                 C   s  | d d }|  d¡}tt|ƒƒ}| d¡ | d }tj}|}d|v rX|d }| |¡ |jd d … D ]}| |¡ qf|d }	t	|	ƒr°|	  d¡}	t|	ƒ}	|	D ]}
| 
||
 ¡ qœt|jj ¡ ƒ}| ¡  g }|D ](}| d|  }|d	 }|jd
dd}t |¡}||v rv| |¡d }|d }t	|ƒ}t	|ƒ}||k rl|| d |… |kr`| || ¡ |d7 }q2| |¡ d|v r’|d }| |¡ |jd d … D ]}| |¡ q ||_d|_|d }	t	|	ƒrÐ|	  d¡}	t|	ƒ}	|	D ]}
| 
||
 ¡ qäqÐt|||ƒ d S )NÚloggersr*   r+   rR   Zlogger_rootrA   r   z	logger_%sÚqualnamerW   é   )r.   r   r   )r   Úlistr)   Úremover   rR   rF   r   ÚremoveHandlerr3   Ú
addHandlerrS   rT   r*   ÚsortZgetintÚ	getLoggerÚindexrJ   rW   rX   r^   )r   r   r[   ZllistrM   rR   r\   rA   rP   rK   rL   rY   rZ   ZqnrW   r]   ÚiÚprefixedÚpflenÚnum_existingr   r   r   r   ¸   sd    











r   c                   C   s.   t j ¡  t  t jd d … ¡ t jd d …= d S r%   )r   Ú	_handlersÚclearÚshutdownÚ_handlerListr   r   r   r   r     s    
r   z^[a-z_][a-z0-9_]*$c                 C   s   t  | ¡}|std|  ƒ‚dS )Nz!Not a valid Python identifier: %rT)Ú
IDENTIFIERÚmatchÚ
ValueError)ÚsÚmr   r   r   Úvalid_ident  s    
rv   c                   @   s   e Zd Zddd„Zdd„ ZdS )ÚConvertingMixinTc                 C   sB   | j  |¡}||ur>|r || |< t|ƒtttfv r>| |_||_|S r%   )ÚconfiguratorÚconvertÚtypeÚConvertingDictÚConvertingListÚConvertingTupleÚparentÚkey)Úselfr   ÚvalueÚreplaceÚresultr   r   r   Úconvert_with_key#  s    
ÿz ConvertingMixin.convert_with_keyc                 C   s0   | j  |¡}||ur,t|ƒtttfv r,| |_|S r%   )rx   ry   rz   r{   r|   r}   r~   )r€   r   rƒ   r   r   r   ry   /  s    
ÿzConvertingMixin.convertN)T)Ú__name__Ú
__module__Ú__qualname__r„   ry   r   r   r   r   rw      s   
rw   c                   @   s(   e Zd Zdd„ Zddd„Zd	dd„ZdS )
r{   c                 C   s   t  | |¡}|  ||¡S r%   )ÚdictÚ__getitem__r„   ©r€   r   r   r   r   r   r‰   D  s    zConvertingDict.__getitem__Nc                 C   s   t  | ||¡}|  ||¡S r%   )rˆ   r4   r„   ©r€   r   Údefaultr   r   r   r   r4   H  s    zConvertingDict.getc                 C   s   t  | ||¡}| j||ddS ©NF)r‚   )rˆ   r   r„   r‹   r   r   r   r   L  s    zConvertingDict.pop)N)N)r…   r†   r‡   r‰   r4   r   r   r   r   r   r{   A  s   
r{   c                   @   s   e Zd Zdd„ Zddd„ZdS )r|   c                 C   s   t  | |¡}|  ||¡S r%   )rb   r‰   r„   rŠ   r   r   r   r‰   R  s    zConvertingList.__getitem__éÿÿÿÿc                 C   s   t  | |¡}|  |¡S r%   )rb   r   ry   )r€   Úidxr   r   r   r   r   V  s    zConvertingList.popN)rŽ   )r…   r†   r‡   r‰   r   r   r   r   r   r|   P  s   r|   c                   @   s   e Zd Zdd„ ZdS )r}   c                 C   s   t  | |¡}| j||ddS r   )Útupler‰   r„   rŠ   r   r   r   r‰   \  s    zConvertingTuple.__getitem__N)r…   r†   r‡   r‰   r   r   r   r   r}   Z  s   r}   c                   @   sˆ   e Zd Ze d¡Ze d¡Ze d¡Ze d¡Ze d¡Z	dddœZ
eeƒZd	d
„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS )ÚBaseConfiguratorz%^(?P<prefix>[a-z]+)://(?P<suffix>.*)$z^\s*(\w+)\s*z^\.\s*(\w+)\s*z^\[\s*(\w+)\s*\]\s*z^\d+$Úext_convertÚcfg_convert)ÚextZcfgc                 C   s   t |ƒ| _| | j_d S r%   )r{   Úconfigrx   )r€   r•   r   r   r   Ú__init__u  s    
zBaseConfigurator.__init__c           	   	   C   s¾   |  d¡}| d¡}z\|  |¡}|D ]F}|d| 7 }zt||ƒ}W q$ tyh   |  |¡ t||ƒ}Y q$0 q$|W S  ty¸   t ¡ dd … \}}td||f ƒ}|| |_	|_
|‚Y n0 d S )Nr   r   ra   zCannot resolve %r: %s)r   r   Úimporterr   r   ÚImportErrorÚsysÚexc_infors   Ú	__cause__Ú__traceback__)	r€   rt   r    r!   r"   ÚfragÚeÚtbÚvr   r   r   Úresolvey  s"    



zBaseConfigurator.resolvec                 C   s
   |   |¡S r%   )r¡   ©r€   r   r   r   r   r’     s    zBaseConfigurator.ext_convertc                 C   sü   |}| j  |¡}|d u r&td| ƒ‚nÒ|| ¡ d … }| j| ¡ d  }|rø| j |¡}|rn|| ¡ d  }nb| j |¡}|rÐ| ¡ d }| j |¡s || }n0zt	|ƒ}|| }W n t
yÎ   || }Y n0 |ræ|| ¡ d … }qHtd||f ƒ‚qH|S )NzUnable to convert %rr   zUnable to convert %r at %r)ÚWORD_PATTERNrr   rs   Úendr•   ÚgroupsÚDOT_PATTERNÚINDEX_PATTERNÚDIGIT_PATTERNÚintÚ	TypeError)r€   r   Úrestru   Údr   r#   r   r   r   r“   ”  s4    
ÿzBaseConfigurator.cfg_convertc                 C   sÐ   t |tƒs$t |tƒr$t|ƒ}| |_n¨t |tƒsHt |tƒrHt|ƒ}| |_n„t |tƒsvt |tƒrvt|dƒsvt|ƒ}| |_nVt |t	ƒrÌ| j
 |¡}|rÌ| ¡ }|d }| j |d ¡}|rÌ|d }t| |ƒ}||ƒ}|S )NÚ_fieldsÚprefixÚsuffix)r   r{   rˆ   rx   r|   rb   r}   r   r   r'   ÚCONVERT_PATTERNrr   Ú	groupdictÚvalue_convertersr4   r   )r€   r   ru   r¬   r®   Ú	converterr¯   r   r   r   ry   ¶  s0    
ÿÿ

zBaseConfigurator.convertc                    sn   ˆ   d¡}t|ƒs|  |¡}ˆ   dd ¡}‡ fdd„ˆ D ƒ}|f i |¤Ž}|rj| ¡ D ]\}}t|||ƒ qT|S )Nr?   r   c                    s   i | ]}t |ƒr|ˆ | “qS r   ©rv   ©Ú.0Úk©r•   r   r   Ú
<dictcomp>Ù  ó    z5BaseConfigurator.configure_custom.<locals>.<dictcomp>)r   Úcallabler¡   ÚitemsÚsetattr)r€   r•   r9   Úpropsr@   rƒ   r    r   r   r¸   r   Úconfigure_customÒ  s    

z!BaseConfigurator.configure_customc                 C   s   t |tƒrt|ƒ}|S r%   )r   rb   r   r¢   r   r   r   Úas_tupleà  s    
zBaseConfigurator.as_tupleN)r…   r†   r‡   ÚreÚcompiler°   r£   r¦   r§   r¨   r²   Ústaticmethodr   r—   r–   r¡   r’   r“   ry   r¿   rÀ   r   r   r   r   r‘   a  s    




þ"r‘   c                   @   sZ   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zddd„Z	ddd„Z
ddd„ZdS )ÚDictConfiguratorc                 C   sä  | j }d|vrtdƒ‚|d dkr2td|d  ƒ‚| dd¡}i }t ¡  zˆ|r¦| d|¡}|D ]†}|tjvr€td| ƒ‚qdz6tj| }|| }| d	d ¡}|r´| t |¡¡ W qd t	yè }	 ztd
| ƒ|	‚W Y d }	~	qdd }	~	0 0 qd| d|¡}
|
D ]P}z|  
||
| d¡ W qü t	yJ }	 ztd| ƒ|	‚W Y d }	~	qüd }	~	0 0 qü| dd ¡}|rÊz|  |d¡ W n0 t	y  }	 ztdƒ|	‚W Y d }	~	n
d }	~	0 0 n$| dd¡}tƒ  | d|¡}|D ]R}z|  || ¡||< W n4 t	y }	 ztd| ƒ|	‚W Y d }	~	n
d }	~	0 0 qÈ| d|¡}|D ]R}z|  || ¡||< W n4 t	yz }	 ztd| ƒ|	‚W Y d }	~	n
d }	~	0 0 q,| d|¡}g }t|ƒD ]x}z |  || ¡}||_|||< W nP t	y }	 z6dt|	jƒv rê| |¡ ntd
| ƒ|	‚W Y d }	~	n
d }	~	0 0 q˜|D ]\}z |  || ¡}||_|||< W n4 t	yn }	 ztd
| ƒ|	‚W Y d }	~	n
d }	~	0 0 qtj}t|jj ¡ ƒ}| ¡  g }| d|¡}
|
D ]Ä}||v r| |¡d }|d }t|ƒ}t|ƒ}||k r|| d |… |kr| || ¡ |d7 }qÚ| |¡ z|  
||
| ¡ W n4 t	yf }	 ztd| ƒ|	‚W Y d }	~	n
d }	~	0 0 q¦t|||ƒ | dd ¡}|rÊz|  |¡ W n0 t	yÈ }	 ztdƒ|	‚W Y d }	~	n
d }	~	0 0 W t ¡  n
t ¡  0 d S )NÚversionz$dictionary doesn't specify a versionra   zUnsupported version: %sÚincrementalFr   zNo handler found with name %rrA   zUnable to configure handler %rr_   TzUnable to configure logger %rrR   zUnable to configure root loggerr   r   z Unable to configure formatter %rÚfilterszUnable to configure filter %rútarget not configured yetr   ) r•   rs   r   r   r   r4   rm   rF   Ú_checkLevelÚ	ExceptionÚconfigure_loggerÚconfigure_rootr   Úconfigure_formatterÚconfigure_filterÚsortedÚconfigure_handlerr    r'   r›   rJ   rR   rb   rS   rT   r*   rf   rh   r3   rc   r^   r   )r€   r•   rÆ   Ú
EMPTY_DICTr   r    ÚhandlerZhandler_configrA   rž   r_   rR   r[   r   rÇ   ZdeferredrY   rZ   ri   rj   rk   rl   r   r   r   Ú	configureì  s   
ÿ
ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ


ÿÿÿÿzDictConfigurator.configurec           
   
   C   sä   d|v rt|d }z|   |¡}W qà typ } z:dt|ƒvr<‚ | d¡|d< ||d< |   |¡}W Y d }~qàd }~0 0 nl| dd ¡}| dd ¡}| dd¡}| dd ¡}|s°tj}	nt|ƒ}	d	|v rÔ|	||||d	 ƒ}n|	|||ƒ}|S )
Nr?   z'format'r,   rO   r/   r0   r1   r2   Úvalidate)r¿   rª   r'   r   r4   r   r5   r$   )
r€   r•   Úfactoryrƒ   ÚterO   Zdfmtr0   Úcnamer9   r   r   r   rÍ   Š  s*    "z$DictConfigurator.configure_formatterc                 C   s.   d|v r|   |¡}n| dd¡}t |¡}|S )Nr?   r    r=   )r¿   r4   r   ÚFilter)r€   r•   rƒ   r    r   r   r   rÎ   ®  s
    
z!DictConfigurator.configure_filterc                 C   sZ   |D ]P}z|  | jd | ¡ W q tyR } ztd| ƒ|‚W Y d }~qd }~0 0 qd S )NrÇ   zUnable to add filter %r)Ú	addFilterr•   rÊ   rs   )r€   ZfiltererrÇ   r;   rž   r   r   r   Úadd_filters·  s
    zDictConfigurator.add_filtersc              
      s’  t ˆ ƒ}ˆ  dd ¡}|r^z| jd | }W n2 ty\ } ztd| ƒ|‚W Y d }~n
d }~0 0 ˆ  dd ¡}ˆ  dd ¡}dˆ v r¢ˆ  d¡}t|ƒsš|  |¡}|}nˆ  d¡}	|  |	¡}
t|
tj	j
ƒrJdˆ v rJz>| jd	 ˆ d  }t|tjƒsˆ  |¡ td
ƒ‚|ˆ d< W n8 tyF } ztdˆ d  ƒ|‚W Y d }~n
d }~0 0 nZt|
tj	jƒrxdˆ v rx|  ˆ d ¡ˆ d< n,t|
tj	jƒr¤dˆ v r¤|  ˆ d ¡ˆ d< |
}ˆ  dd ¡}‡ fdd„ˆ D ƒ}z|f i |¤Ž}W nR ty* } z8dt|ƒvrú‚ | d¡|d< |f i |¤Ž}W Y d }~n
d }~0 0 |r<| |¡ |d urV| t |¡¡ |rh|  ||¡ |rŽ| ¡ D ]\}}t|||ƒ qv|S )Nr<   r   zUnable to set formatter %rrA   rÇ   r?   r2   rB   r   rÈ   zUnable to set target handler %rZmailhostÚaddressr   c                    s   i | ]}t |ƒr|ˆ | “qS r   r´   rµ   r¸   r   r   r¹   ç  rº   z6DictConfigurator.configure_handler.<locals>.<dictcomp>z'stream'ÚstreamZstrm)rˆ   r   r•   rÊ   rs   r»   r¡   rH   r   r   rI   r   ÚHandlerÚupdaterª   ZSMTPHandlerrÀ   ZSysLogHandlerr'   rG   rF   rÉ   rÚ   r¼   r½   )r€   r•   Zconfig_copyr<   rž   rA   rÇ   r9   rÕ   r×   rN   Úthr¾   r@   rƒ   rÖ   r    r   r   r¸   r   rÐ   ¿  s~    ÿÿ



ÿ
ÿÿÿÿ$

z"DictConfigurator.configure_handlerc                 C   sZ   |D ]P}z|  | jd | ¡ W q tyR } ztd| ƒ|‚W Y d }~qd }~0 0 qd S )Nr   zUnable to add handler %r)re   r•   rÊ   rs   )r€   r]   r   rP   rž   r   r   r   Úadd_handlersþ  s
    zDictConfigurator.add_handlersFc                 C   s‚   |  dd ¡}|d ur$| t |¡¡ |s~|jd d … D ]}| |¡ q6|  dd ¡}|rb|  ||¡ |  dd ¡}|r~|  ||¡ d S )NrA   r   rÇ   )r4   rF   r   rÉ   r   rd   rà   rÚ   )r€   r]   r•   rÆ   rA   rP   r   rÇ   r   r   r   Úcommon_logger_config  s    z%DictConfigurator.common_logger_configc                 C   s6   t  |¡}|  |||¡ | dd ¡}|d ur2||_d S )NrW   )r   rg   rá   r4   rW   )r€   r    r•   rÆ   r]   rW   r   r   r   rË     s
    
z!DictConfigurator.configure_loggerc                 C   s   t  ¡ }|  |||¡ d S r%   )r   rg   rá   )r€   r•   rÆ   rR   r   r   r   rÌ      s    zDictConfigurator.configure_rootN)F)F)F)r…   r†   r‡   rÓ   rÍ   rÎ   rÚ   rÐ   rà   rá   rË   rÌ   r   r   r   r   rÄ   æ  s    $	?

rÄ   c                 C   s   t | ƒ ¡  d S r%   )ÚdictConfigClassrÓ   r¸   r   r   r   Ú
dictConfig'  s    rã   c                    sD   G dd„ dt ƒ}G dd„ dtƒ}G ‡ fdd„dtjƒ‰ ˆ ||| |ƒS )Nc                   @   s   e Zd Zdd„ ZdS )z#listen.<locals>.ConfigStreamHandlerc                 S   sB  z| j }| d¡}t|ƒdkrt d|¡d }| j  |¡}t|ƒ|k rb|| |t|ƒ ¡ }q>| jjd urz| j |¡}|d urð| d¡}zdd l}| 	|¡}t
|ƒ W nD tyî   t |¡}zt|ƒ W n tyè   t ¡  Y n0 Y n0 | jjr| jj ¡  W n4 ty< } z|jtkr(‚ W Y d }~n
d }~0 0 d S )Né   z>Lr   zutf-8)Ú
connectionÚrecvr3   ÚstructÚunpackÚserverÚverifyÚdecodeÚjsonÚloadsrã   rÊ   ÚioÚStringIOr   Ú	tracebackÚ	print_excÚreadyÚsetÚOSErrorÚerrnoÚRESET_ERROR)r€   ÚconnÚchunkZslenrì   r¬   Úfilerž   r   r   r   ÚhandleG  s6    




z*listen.<locals>.ConfigStreamHandler.handleN)r…   r†   r‡   rú   r   r   r   r   ÚConfigStreamHandler@  s   rû   c                   @   s,   e Zd ZdZdedddfdd„Zdd„ ZdS )z$listen.<locals>.ConfigSocketReceiverra   Ú	localhostNc                 S   s>   t  | ||f|¡ t ¡  d| _t ¡  d| _|| _|| _d S )Nr   ra   )	r   r–   r   r   Úabortr   Útimeoutrò   rê   )r€   ÚhostÚportrÒ   rò   rê   r   r   r   r–   u  s    z-listen.<locals>.ConfigSocketReceiver.__init__c                 S   s`   dd l }d}|sT|  | j ¡ gg g | j¡\}}}|r<|  ¡  t ¡  | j}t ¡  q|  	¡  d S )Nr   )
ÚselectÚsocketÚfilenorþ   Zhandle_requestr   r   rý   r   Zserver_close)r€   r  rý   ZrdÚwrÚexr   r   r   Úserve_until_stopped  s    þ

z8listen.<locals>.ConfigSocketReceiver.serve_until_stopped)r…   r†   r‡   Zallow_reuse_addressÚDEFAULT_LOGGING_CONFIG_PORTr–   r  r   r   r   r   ÚConfigSocketReceivern  s
   ÿ

r  c                       s&   e Zd Z‡‡ fdd„Zdd„ Z‡  ZS )zlisten.<locals>.Serverc                    s4   t ˆ | ƒ ¡  || _|| _|| _|| _t ¡ | _d S r%   )	Úsuperr–   ÚrcvrÚhdlrr   rê   Ú	threadingÚEventrò   )r€   r
  r  r   rê   )ÚServerÚ	__class__r   r   r–     s    zlisten.<locals>.Server.__init__c                 S   sZ   | j | j| j| j| jd}| jdkr0|jd | _| j ¡  t ¡  |a	t 
¡  | ¡  d S )N)r   rÒ   rò   rê   r   ra   )r
  r   r  rò   rê   Zserver_addressró   r   r   Ú	_listenerr   r  )r€   ré   r   r   r   Úrun—  s    þ

zlisten.<locals>.Server.run)r…   r†   r‡   r–   r  Ú__classcell__r   ©r  )r  r   r    s   r  )r   r   r  ÚThread)r   rê   rû   r  r   r  r   Úlisten,  s    .r  c                   C   s2   t  ¡  ztrdt_d aW t  ¡  n
t  ¡  0 d S )Nra   )r   r   r  rý   r   r   r   r   r   ÚstopListening¦  s    r  )NT)*rõ   rî   r   Zlogging.handlersrÁ   rç   r™   r  rð   Úsocketserverr   r   r  Z
ECONNRESETrö   r  r   r$   r)   r
   r   r^   r   r   rÂ   ÚIrq   rv   Úobjectrw   rˆ   r{   rb   r|   r   r}   r‘   rÄ   râ   rã   r  r  r   r   r   r   Ú<module>   sF   
"&W!
   Az