U
    -er6                     @   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   
         multiprocessz+[%(levelname)s/%(processName)s] %(message)sFc                 G   s   t rt jt| f|  d S N)_loggerlogr   msgargs r   R/var/www/html/Darija-Ai-Train/env/lib/python3.8/site-packages/multiprocess/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 )z-
    Returns logger used by multiprocess
    r   N
unregisterr   )logging_acquireLock_releaseLockr   	getLoggerLOGGER_NAME	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 )zB
    Turn on logging and add a handler which prints to stderr
    r   NT)
r$   r	   	FormatterDEFAULT_LOGGING_FORMATStreamHandlersetFormatter
addHandlersetLevel_log_to_stderrr   )levelr$   logger	formatterhandlerr   r   r    r
   W   s    



c                   C   s    t jdkrdS tt drdS dS )NlinuxTgetandroidapilevelF)sysplatformr*   r   r   r   r    #_platform_supports_abstract_socketsl   s
    

r?   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)addressr   r   r    is_abstract_socket_namespacet   s    

rF   c                 C   s&   | | t  }|d k	r"d |jd< d S )Ntempdir)r   current_process_config)rmtreerG   rH   r   r   r    _remove_temp_dir   s    rK   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 )NrG   r   zpymp-)prefixzcreated temp directory %si)r   exitpriority)r   rH   rI   getshutiltempfilemkdtempr   r   rK   rJ   )rG   rO   rP   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   )rT   indexidentfuncobjer   r   r    _run_after_forkers   s    r\   c                 C   s   | t ttt| |f< d S r   )rS   next_afterfork_counterid)rZ   rY   r   r   r    r      s    c                   @   sF   e Zd 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   zA
    Class which supports object finalization using weakrefs
    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)rA   intrD   formattypeweakrefref_weakref
ValueError	_callback_args_kwargsr]   _finalizer_counter_keyosgetpid_pid_finalizer_registry)selfrZ   callbackr   kwargsrM   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 )zQ
        Run the callback unless it has already been called or cancelled
        zfinalizer no longer registeredz+finalizer ignored because different processNz/finalizer calling %s with args %s and kwargs %s)rk   KeyErrorrn   rg   rh   ri   re   )rp   wrro   r   rm   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 )z3
        Cancel finalization of the object
        N)ro   rk   rt   re   rg   rh   ri   rp   r   r   r    cancel   s     zFinalize.cancelc                 C   s
   | j tkS )zS
        Return whether this finalizer is still waiting to invoke callback
        )rk   ro   rx   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=>)re   AttributeErrorrD   	__class__r{   getattrrg   rh   rC   ri   rk   )rp   rZ   xr   r   r    __repr__   s"    
zFinalize.__repr__)r   NN)r{   
__module____qualname____doc__rs   ro   r   rl   rm   rw   ry   rz   r   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rt   dS )z
    Run all finalizers whose exit priority is not None and at least minpriority

    Finalizers with highest priority are called first; finalizers with
    the same priority will be called in reverse order of creation.
    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 r   r   r   )minpriorityr   r    r     r   c                    s   g | ]} |r|qS r   r   ).0key)fr   r    
<listcomp>#  s      z#_run_finalizers.<locals>.<listcomp>T)reversez
calling %sr   )	ro   rR   rU   rN   r   rV   	traceback	print_excclear)r   keysr   	finalizerr   r   )r   r   r    _run_finalizers  s$    



r   c                   C   s   t p
t dkS )z6
    Returns true if the process is shutting down
    N)_exitingr   r   r   r    r   8  s    c                 C   s   t sd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   daemonname_popen	terminatejoin)r   r   r   active_childrenrH   r   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   rx   r   r   r    rs   q  s    zForkAwareThreadLock.__init__c                 C   s"   t  | _| jj| _| jj| _d S r   )	threadingLock_lockacquirereleaserx   r   r   r    r   u  s    

zForkAwareThreadLock._resetc                 C   s
   | j  S r   )r   	__enter__rx   r   r   r    r   z  s    zForkAwareThreadLock.__enter__c                 G   s   | j j| S r   )r   __exit__)rp   r   r   r   r    r   }  s    zForkAwareThreadLock.__exit__N)r{   r   r   rs   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   )rZ   r   r   r    r     r   z)ForkAwareLocal.__init__.<locals>.<lambda>)r   rx   r   r   r    rs     s    zForkAwareLocal.__init__c                 C   s   t | dfS )Nr   )rb   rx   r   r   r    
__reduce__  s    zForkAwareLocal.__reduce__N)r{   r   r   rs   r   r   r   r   r    r     s   SC_OPEN_MAX   c                 C   sb   t | dtg } |   | d tks,tdtt| d D ] }t| | d | |d   q<d S )Nzfd too larger   )rR   MAXFDrU   AssertionErrorrangelenrl   
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OSErrorrf   rl   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flushr}   rf   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mapr`   rl   piper   	fork_execfsencode)pathr   Zpassfdsr   errpipe_readerrpipe_writer   r   r    spawnv_passfds  s2     
             
r   c                  G   s   | D ]}t | qdS )z/Close each file descriptor given as an argumentN)rl   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 )zKCleanup multiprocessing resources when multiprocessing tests
    completed.r   )support)
forkserver)resource_trackerN)testr   r   _cleanupr   r   Z_forkserver_stopr   Z_resource_trackerr   Z
gc_collectZreap_children)r   r   r   r   r   r    _cleanup_tests  s    

r   )N)N)<rl   	itertoolsr=   rc   r+   r   
subprocessr    r   __all__NOTSETr   r!   r"   r   r(   r1   r   r6   r   r   r   r   r	   r
   r?   rF   Zabstract_sockets_supportedrK   r   WeakValueDictionaryrS   countr^   r\   r   ro   rj   objectr   r   r   r   r   rH   r,   r-   r   localr   sysconfr   rV   r   r   r   r   r   r   r   r   r   r    <module>
   s              

		V
,
*



