
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
U
    ¡ê,a~6  ã                   @   sÚ  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 ddlm	Z	 ddddd	d
dddddddddgZ
d ZdZdZdZdZdZdZdadadd„ Zdd„ Zdd„ Zdd„ Zdd	„ Zd@d d
„Zd!d"„ Zd#d$„ Zeƒ Zd%d&„ Zd'd„ Ze ¡ Z e !¡ Z"d(d)„ Z#d*d„ Z$i Z%e !¡ Z&G d+d„ de'ƒZ(dAd,d-„Z)d.d„ Z*da+eee)e	j,e	j-fd/d0„Z.e /e.¡ G d1d„ de'ƒZ0G d2d„ dej1ƒZ2ze  3d3¡Z4W n e5k
�r¤   d4Z4Y nX d5d„ Z6d6d7„ Z7d8d9„ Z8d:d;„ Z9d<d=„ Z:d>d?„ Z;dS )Bé    N)Ú_args_from_interpreter_flagsé   )ÚprocessÚ	sub_debugÚdebugÚinfoÚsub_warningÚ
get_loggerÚlog_to_stderrÚget_temp_dirÚregister_after_forkÚ
is_exitingÚFinalizeÚForkAwareThreadLockÚForkAwareLocalÚclose_all_fds_exceptÚSUBDEBUGÚ
SUBWARNINGé   é
   é   é   Úmultiprocessingz+[%(levelname)s/%(processName)s] %(message)sFc                 G   s   t rt jt| f|žŽ  d S ©N)Ú_loggerÚlogr   ©ÚmsgÚargs© r   ú9/opt/alt/python38/lib64/python3.8/multiprocessing/util.pyr   ,   s    c                 G   s   t rt jt| f|žŽ  d S r   )r   r   ÚDEBUGr   r   r   r    r   0   s    c                 G   s   t rt jt| f|žŽ  d S r   )r   r   ÚINFOr   r   r   r    r   4   s    c                 G   s   t rt jt| f|žŽ  d S r   )r   r   r   r   r   r   r    r   8   s    c                  C   s|   dd l } |  ¡  z\tsj|  t¡adt_ttdƒrFt 	t
¡ t t
¡ n$tj t
di f¡ tj t
di f¡ W 5 |  ¡  X tS )Nr   Ú
unregisterr   )ÚloggingZ_acquireLockZ_releaseLockr   Z	getLoggerÚLOGGER_NAMEZ	propagateÚhasattrÚatexitr#   Ú_exit_functionÚregisterZ_exithandlersÚremoveÚappend)r$   r   r   r    r	   <   s    



c                 C   sJ   dd l }tƒ }| t¡}| ¡ }| |¡ | |¡ | rB| | ¡ dat	S )Nr   T)
r$   r	   Z	FormatterÚDEFAULT_LOGGING_FORMATZStreamHandlerZsetFormatterZ
addHandlerZsetLevelÚ_log_to_stderrr   )Úlevelr$   ZloggerZ	formatterZhandlerr   r   r    r
   W   s    



c                   C   s    t jdkrdS tt dƒrdS dS )NZlinuxTZgetandroidapilevelF)ÚsysÚplatformr&   r   r   r   r    Ú#_platform_supports_abstract_socketsl   s
    

r1   c                 C   s@   | sdS t | tƒr| d dkS t | tƒr4| d dkS tdƒ‚d S )NFr   ú z(address type of {address!r} unrecognized)Ú
isinstanceÚbytesÚstrÚ	TypeError)Zaddressr   r   r    Úis_abstract_socket_namespacet   s    

r7   c                 C   s&   | |ƒ t  ¡ }|d k	r"d |jd< d S )NÚtempdir)r   Úcurrent_processÚ_config)Úrmtreer8   r9   r   r   r    Ú_remove_temp_dir„   s    r<   c                  C   sf   t  ¡ j d¡} | d krbdd l}dd l}|jdd�} td| ƒ td t	|j
| fdd� | t  ¡ jd< | S )Nr8   r   zpymp-)Úprefixzcreated temp directory %siœÿÿÿ)r   Úexitpriority)r   r9   r:   ÚgetÚshutilÚtempfileZmkdtempr   r   r<   r;   )r8   r@   rA   r   r   r    r   �   s    
ÿc                  C   sf   t t ¡ ƒ} |  ¡  | D ]H\\}}}}z||ƒ W q tk
r^ } ztd|ƒ W 5 d }~X Y qX qd S )Nz after forker raised exception %s)ÚlistÚ_afterfork_registryÚitemsÚsortÚ	Exceptionr   )rD   ÚindexZidentÚfuncÚobjÚer   r   r    Ú_run_after_forkers¢   s    rK   c                 C   s   | t ttƒt| ƒ|f< d S r   )rC   ÚnextÚ_afterfork_counterÚid)rI   rH   r   r   r    r   «   s    c                   @   sB   e Zd Zddd„Zdeeejfdd„Zdd„ Z	d	d
„ Z
dd„ ZdS )r   r   Nc                 C   sŠ   |d k	r&t |tƒs&td |t|ƒ¡ƒ‚|d k	r>t || ¡| _n|d krNtdƒ‚|| _	|| _
|p`i | _|ttƒf| _t ¡ | _| t| j< d S )Nz3Exitpriority ({0!r}) must be None or int, not {1!s}z+Without object, exitpriority cannot be None)r3   Úintr6   ÚformatÚtypeÚweakrefÚrefÚ_weakrefÚ
ValueErrorÚ	_callbackÚ_argsÚ_kwargsrL   Ú_finalizer_counterÚ_keyÚosÚgetpidÚ_pidÚ_finalizer_registry)ÚselfrI   Úcallbackr   Úkwargsr>   r   r   r    Ú__init__º   s"     ÿÿ

zFinalize.__init__c                 C   sŽ   z|| j = W n tk
r(   |dƒ Y nbX | j|ƒ krD|dƒ d }n$|d| j| j| jƒ | j| j| jŽ}d  | _ | _ | _ | _| _ |S d S )Nzfinalizer no longer registeredz+finalizer ignored because different processz/finalizer calling %s with args %s and kwargs %s)rZ   ÚKeyErrorr]   rV   rW   rX   rT   )r_   Zwrr^   r   r\   Úresr   r   r    Ú__call__Í   s$      ÿÿ zFinalize.__call__c                 C   sD   zt | j= W n tk
r    Y n X d  | _ | _ | _ | _| _d S r   )r^   rZ   rc   rT   rV   rW   rX   ©r_   r   r   r    Úcancelå   s    ÿ ÿzFinalize.cancelc                 C   s
   | j tkS r   )rZ   r^   rf   r   r   r    Ústill_activeñ   s    zFinalize.still_activec              	   C   s¶   z|   ¡ }W n ttfk
r(   d }Y nX |d kr>d| jj S d| jjt| jd| jƒf }| jrr|dt| jƒ 7 }| j	rŠ|dt| j	ƒ 7 }| j
d d k	r®|dt| j
d ƒ 7 }|d S )	Nz<%s object, dead>z<%s object, callback=%sÚ__name__z, args=z	, kwargs=r   z, exitpriority=ú>)rT   ÚAttributeErrorr6   Ú	__class__ri   ÚgetattrrV   rW   r5   rX   rZ   )r_   rI   Úxr   r   r    Ú__repr__÷   s"    
þzFinalize.__repr__)r   NN)ri   Ú
__module__Ú__qualname__rb   r^   r   r[   r\   re   rg   rh   ro   r   r   r   r    r   ¶   s   
 ü
c              	      s¶   t d krd S ˆd krdd„ ‰ n‡fdd„‰ ‡ fdd„tt ƒD ƒ}|jdd� |D ]P}t  |¡}|d k	rPtd|ƒ z
|ƒ  W qP tk
rž   d	d l}| ¡  Y qPX qPˆd kr²t  ¡  d S )
Nc                 S   s   | d d k	S ©Nr   r   ©Úpr   r   r    Ú<lambda>  ó    z!_run_finalizers.<locals>.<lambda>c                    s   | d d k	o| d ˆ kS rr   r   rs   )Úminpriorityr   r    ru     rv   c                    s   g | ]}ˆ |ƒr|‘qS r   r   )Ú.0Úkey)Úfr   r    Ú
<listcomp>#  s      z#_run_finalizers.<locals>.<listcomp>T)Úreversez
calling %sr   )	r^   rB   rE   r?   r   rF   Ú	tracebackÚ	print_excÚclear)rw   Úkeysry   Ú	finalizerr}   r   )rz   rw   r    Ú_run_finalizers  s$    



r‚   c                   C   s   t p
t d kS r   )Ú_exitingr   r   r   r    r   8  s    c                 C   s„   t s€da | dƒ |dƒ |dƒ |ƒ d k	rr|ƒ D ] }|jr0| d|jƒ |j ¡  q0|ƒ D ]}| d|jƒ | ¡  qX|dƒ |ƒ  d S )NTzprocess shutting downz2running all "atexit" finalizers with priority >= 0r   z!calling terminate() for daemon %szcalling join() for process %sz)running the remaining "atexit" finalizers)rƒ   ZdaemonÚnameZ_popenZ	terminateÚjoin)r   r   r‚   Úactive_childrenr9   rt   r   r   r    r(   @  s    	



r(   c                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
r   c                 C   s   |   ¡  t| tj ƒ d S r   )Ú_resetr   r   rf   r   r   r    rb   q  s    zForkAwareThreadLock.__init__c                 C   s"   t  ¡ | _| jj| _| jj| _d S r   )Ú	threadingZLockÚ_lockÚacquireÚreleaserf   r   r   r    r‡   u  s    

zForkAwareThreadLock._resetc                 C   s
   | j  ¡ S r   )r‰   Ú	__enter__rf   r   r   r    rŒ   z  s    zForkAwareThreadLock.__enter__c                 G   s   | j j|Ž S r   )r‰   Ú__exit__)r_   r   r   r   r    r�   }  s    zForkAwareThreadLock.__exit__N)ri   rp   rq   rb   r‡   rŒ   r�   r   r   r   r    r   p  s   c                   @   s   e Zd Zdd„ Zdd„ ZdS )r   c                 C   s   t | dd„ ƒ d S )Nc                 S   s
   | j  ¡ S r   )Ú__dict__r   )rI   r   r   r    ru   ƒ  rv   z)ForkAwareLocal.__init__.<locals>.<lambda>)r   rf   r   r   r    rb   ‚  s    zForkAwareLocal.__init__c                 C   s   t | ƒdfS )Nr   )rQ   rf   r   r   r    Ú
__reduce__„  s    zForkAwareLocal.__reduce__N)ri   rp   rq   rb   r�   r   r   r   r    r   �  s   ÚSC_OPEN_MAXé   c                 C   sN   t | ƒdtg } |  ¡  tt| ƒd ƒD ] }t | | d | |d  ¡ q(d S )Néÿÿÿÿr   )rB   ÚMAXFDrE   ÚrangeÚlenr[   Ú
closerange)ÚfdsÚir   r   r    r   �  s    c               	   C   s”   t jd krd S zt j ¡  W n ttfk
r4   Y nX z@t tjtj¡} zt| dd�t _W n   t | ¡ ‚ Y nX W n ttfk
rŽ   Y nX d S )NF)Úclosefd)	r/   ÚstdinÚcloseÚOSErrorrU   r[   ÚopenÚdevnullÚO_RDONLY)Úfdr   r   r    Ú_close_stdinš  s    

r¡   c                	   C   sT   zt j ¡  W n ttfk
r&   Y nX zt j ¡  W n ttfk
rN   Y nX d S r   )r/   ÚstdoutÚflushrk   rU   Ústderrr   r   r   r    Ú_flush_std_streams±  s    r¥   c                 C   sx   dd l }tttt|ƒƒƒ}t ¡ \}}z6| |t 	| ¡gd|d d dddddd||ddd ¡W ¢S t |¡ t |¡ X d S )Nr   Tr’   F)
Ú_posixsubprocessÚtupleÚsortedÚmaprO   r[   Úpiper›   Z	fork_execÚfsencode)Úpathr   Zpassfdsr¦   Zerrpipe_readZerrpipe_writer   r   r    Úspawnv_passfds¿  s2     
             ý
r­   c                  G   s   | D ]}t  |¡ qd S r   )r[   r›   )r—   r    r   r   r    Ú	close_fdsÍ  s    r®   c                  C   sZ   ddl m}  t ¡  ddlm} |j ¡  ddlm} |j	 ¡  t
ƒ  |  ¡  |  ¡  d S )Nr   )Úsupport)Ú
forkserver)Úresource_tracker)Ztestr¯   r   Z_cleanupr   r°   Z_forkserverZ_stopr±   Z_resource_trackerr‚   Z
gc_collectZreap_children)r¯   r°   r±   r   r   r    Ú_cleanup_testsÓ  s    

r²   )N)N)<r[   Ú	itertoolsr/   rR   r'   rˆ   Ú
subprocessr   Ú r   Ú__all__ZNOTSETr   r!   r"   r   r%   r,   r   r-   r   r   r   r   r	   r
   r1   r7   Zabstract_sockets_supportedr<   r   ZWeakValueDictionaryrC   ÚcountrM   rK   r   r^   rY   Úobjectr   r‚   r   rƒ   r†   r9   r(   r)   r   Zlocalr   Úsysconfr“   rF   r   r¡   r¥   r­   r®   r²   r   r   r   r    Ú<module>
   sŒ              ü

		V
,þ
*



