a
    åzeŽ  ã                   @   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)ZfnameÚdefaultsÚdisable_existing_loggersr   ÚcpÚ
formattersÚhandlers© r   ú$/usr/lib/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_%sr1   Ú	formatterÚ Úargsú()Úkwargsz{}ÚlevelÚtarget)r2   r   r(   r3   ÚevalÚvarsr   r   Ú	NameErrorr#   r   ÚsetLevelÚsetFormatterÚ
issubclassr   ÚMemoryHandlerÚappendZ	setTarget)r   r   Úhlistr   ZfixupsÚhandÚsectionÚklassÚfmtr=   r?   Úhr@   rA   Ú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   ÚPlaceHolderrE   ÚNOTSETr   Ú	propagateÚdisabled)ÚexistingÚchild_loggersÚdisable_existingrQ   Ú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*   rQ   Zlogger_rootr@   r   z	logger_%sÚqualnamerV   é   )r-   r   r   )r   Úlistr(   Úremover   rQ   rE   r   ÚremoveHandlerr2   Ú
addHandlerrR   rS   r)   ÚsortZgetintÚ	getLoggerÚindexrI   rV   rW   r]   )r   r   rZ   ZllistrL   rQ   r[   r@   rO   rJ   rK   rX   rY   ZqnrV   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    
ru   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$   )rw   rx   ry   rz   r{   r|   r}   )r   r€   r‚   r   r   r   rx   /  s    
ÿzConvertingMixin.convertN)T)Ú__name__Ú
__module__Ú__qualname__rƒ   rx   r   r   r   r   rv      s   
rv   c                   @   s(   e Zd Zdd„ Zddd„Zd	dd„ZdS )
rz   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‡   r3   rƒ   ©r   r~   Údefaultr€   r   r   r   r3   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ˆ   r3   r   r   r   r   r   rz   A  s   
rz   c                   @   s   e Zd Zdd„ Zddd„ZdS )r{   c                 C   s   t  | |¡}|  ||¡S r$   )ra   rˆ   rƒ   r‰   r   r   r   rˆ   R  s    zConvertingList.__getitem__éÿÿÿÿc                 C   s   t  | |¡}|  |¡S r$   )ra   r   rx   )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$   )rz   Úconfigrw   )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   r`   zCannot resolve %r: %s)r   r   Úimporterr   r   ÚImportErrorÚsysÚexc_inforr   Ú	__cause__Ú__traceback__)	r   rs   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_PATTERNrq   rr   Úendr”   ÚgroupsÚDOT_PATTERNÚINDEX_PATTERNÚDIGIT_PATTERNÚintÚ	TypeError)r   r€   Úrestrt   Ú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   rz   r‡   rw   r{   ra   r|   r   r   r&   ÚCONVERT_PATTERNrq   Ú	groupdictÚvalue_convertersr3   r   )r   r€   rt   r«   r­   Ú	converterr®   r   r   r   rx   ¶  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   ©ru   ©Ú.0Úk©r”   r   r   Ú
<dictcomp>Ù  ó    z5BaseConfigurator.configure_custom.<locals>.<dictcomp>)r   Úcallabler    ÚitemsÚsetattr)r   r”   r8   Úpropsr?   r‚   r   r€   r   r·   r   Úconfigure_customÒ  s    

z!BaseConfigurator.configure_customc                 C   s   t |tƒrt|ƒ}|S r$   )r   ra   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’   rx   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 versionr`   zUnsupported version: %sÚincrementalFr   zNo handler found with name %rr@   zUnable to configure handler %rr^   TzUnable to configure logger %rrQ   zUnable to configure root loggerr   r   z Unable to configure formatter %rÚfilterszUnable to configure filter %rútarget not configured yetr   ) r”   rr   r   r   r   r3   rl   rE   Ú_checkLevelÚ	ExceptionÚconfigure_loggerÚconfigure_rootr   Úconfigure_formatterÚconfigure_filterÚsortedÚconfigure_handlerr   r&   rš   rI   rQ   ra   rR   rS   r)   re   rg   r2   rb   r]   r   )r   r”   rÅ   Ú
EMPTY_DICTr   r   ÚhandlerZhandler_configr@   r   r^   rQ   rZ   r   rÆ   ZdeferredrX   rY   rh   ri   rj   rk   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+   rN   r.   r/   r0   r1   Úvalidate)r¾   r©   r&   r   r3   r   r4   r#   )
r   r”   Úfactoryr‚   ÚterN   Zdfmtr/   Úcnamer8   r   r   r   rÌ   Š  s*    "z$DictConfigurator.configure_formatterc                 C   s.   d|v r|   |¡}n| dd¡}t |¡}|S )Nr>   r   r<   )r¾   r3   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É   rr   )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 %rr@   rÆ   r>   r1   rA   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É   rr   rº   r    rG   r   r   rH   r   ÚHandlerÚupdater©   ZSMTPHandlerr¿   ZSysLogHandlerr&   rF   rE   rÈ   rÙ   r»   r¼   )r   r”   Zconfig_copyr;   r   r@   rÆ   r8   rÔ   rÖ   rM   Ú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)rd   r”   rÉ   rr   )r   r\   r   rO   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 )Nr@   r   rÆ   )r3   rE   r   rÈ   r   rc   rß   rÙ   )r   r\   r”   rÅ   r@   rO   r   rÆ   r   r   r   Úcommon_logger_config  s    z%DictConfigurator.common_logger_configc                 C   s6   t  |¡}|  |||¡ | dd ¡}|d ur2||_d S )NrV   )r   rf   rà   r3   rV   )r   r   r”   rÅ   r\   rV   r   r   r   rÊ     s
    
z!DictConfigurator.configure_loggerc                 C   s   t  ¡ }|  |||¡ d S r$   )r   rf   rà   )r   r”   rÅ   rQ   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Úrecvr2   Ú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>.ConfigSocketReceiverr`   Ú	localhostNc                 S   s>   t  | ||f|¡ t ¡  d| _t ¡  d| _|| _|| _d S )Nr   r`   )	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   r`   )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 )Nr`   )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Á   ÚIrp   ru   Úobjectrv   r‡   rz   ra   r{   r   r|   r   rÃ   rá   râ   r  r  r   r   r   r   Ú<module>   sF   
"&W!
   Az