�`^c@s�ddlZddlZddlZddlZddlZddlmZddlmZm Z dddddd d
ddd
ddddgZ
dZdZdZ
dZdZdZdZdaead�Zd�Zd�Zd�Zd�Zdd�Zd�Zej�Zej�Z d �Z!d!�Z"iZ#ej�Z$d
e%fd"��YZ&dd#�Z'd$�Z(ea)eee'e ed%�Z*ej+e*�de%fd&��YZ,dej-fd'��YZ.dS((i�N(t_args_from_interpreter_flags(tcurrent_processtactive_childrent sub_debugtdebugtinfotsub_warningt
get_loggert
log_to_stderrtget_temp_dirtregister_after_forkt
is_exitingtFinalizetForkAwareThreadLocktForkAwareLocaltSUBDEBUGt
SUBWARNINGiii
iitmultiprocessings+[%(levelname)s/%(processName)s] %(message)scGs trtjt||�ndS(N(t_loggertlogR(tmsgtargs((s*/sys/lib/python2.7/multiprocessing/util.pyRDscGs trtjt||�ndS(N(RRtDEBUG(RR((s*/sys/lib/python2.7/multiprocessing/util.pyRHscGs trtjt||�ndS(N(RRtINFO(RR((s*/sys/lib/python2.7/multiprocessing/util.pyRLscGs trtjt||�ndS(N(RRR(RR((s*/sys/lib/python2.7/multiprocessing/util.pyRPscCs�ddl}ddl}|j�z�ts�|jt�adt_|jtd�|jt d�t
|d�r�|jt�|j
t�q�|jjtdif�|jjtdif�nWd|j�XtS( s0
Returns logger used by multiprocessing
i�NiRRt
unregister(((tloggingtatexitt_acquireLockRt getLoggertLOGGER_NAMEt propagatetaddLevelNameRRthasattrRt_exit_functiontregistert
_exithandlerstremovetappendt_releaseLock(RR((s*/sys/lib/python2.7/multiprocessing/util.pyRTs
cCsjddl}t�}|jt�}|j�}|j|�|j|�|r`|j|�nta t
S(sB
Turn on logging and add a handler which prints to stderr
i�N(RRt FormattertDEFAULT_LOGGING_FORMATt
StreamHandlertsetFormattert
addHandlertsetLeveltTruet_log_to_stderrR(tlevelRtloggert formatterthandler((s*/sys/lib/python2.7/multiprocessing/util.pyRqs
cCs�t�jdkrwddl}ddl}|jdd�}td|�td|jd|gdd�|t�_nt�jS(Ni�tprefixspymp-screated temp directory %sRtexitpriorityi��Rt_tempdirtNonetshutilttempfiletmkdtempRRtrmtree(R7R8ttempdir((s*/sys/lib/python2.7/multiprocessing/util.pyR �s
cCsqttj��}|j�xN|D]F\\}}}}y||�Wq#tk
rh}td|�q#Xq#WdS(Ns after forker raised exception %s(tlistt_afterfork_registrytitemstsortt ExceptionR(R>tindextidenttfunctobjte((s*/sys/lib/python2.7/multiprocessing/util.pyt_run_after_forkers�s
cCs#|ttj�t|�|f<dS(N(R=t_afterfork_countertnexttid(RDRC((s*/sys/lib/python2.7/multiprocessing/util.pyR
�scBsGeZdZdddd�Zdd�Zd�Zd�Zd�ZRS(sA
Class which supports object finalization using weakrefs
cCs�|dks$t|�tks$t�|dk rHtj||�|_n|dk sZt�||_||_|pui|_ |t
j�f|_t
j�|_|t|j<dS(N(R6ttypetinttAssertionErrortweakreftreft_weakreft _callbackt_argst_kwargst_finalizer_counterRHt_keytostgetpidt_pidt_finalizer_registry(tselfRDtcallbackRtkwargsR4((s*/sys/lib/python2.7/multiprocessing/util.pyt__init__�s$ cCs�yt|j=Wntk
r+td�n�X|jtj�krTtd�d}n4td|j|j |j
�|j|j |j
�}d|_|_|_ |_
|_|SdS(sQ
Run the callback unless it has already been called or cancelled
sfinalizer no longer registereds+finalizer ignored because different processs/finalizer calling %s with args %s and kwargs %sN(RXRTtKeyErrorRRWRURVR6RPRQRRRO(RYtwrtres((s*/sys/lib/python2.7/multiprocessing/util.pyt__call__�s
%cCsKyt|j=Wntk
r!n&Xd|_|_|_|_|_dS(s3
Cancel finalization of the object
N(RXRTR]R6RORPRQRR(RY((s*/sys/lib/python2.7/multiprocessing/util.pytcancel�s
cCs
|jtkS(sS
Return whether this finalizer is still waiting to invoke callback
(RTRX(RY((s*/sys/lib/python2.7/multiprocessing/util.pytstill_active�scCs�y|j�}Wnttfk
r/d}nX|dkr@dSdt|jd|j�}|jr|dt|j�7}n|jr�|dt|j�7}n|j ddk r�|dt|j d�7}n|dS( Ns<Finalize object, dead>s<Finalize object, callback=%st__name__s, args=s , kwargs=is, exitprority=t>(
ROtAttributeErrort TypeErrorR6tgetattrRPRQtstrRRRT(RYRDtx((s*/sys/lib/python2.7/multiprocessing/util.pyt__repr__�s
(N( Rct
__module__t__doc__R6R\R`RaRbRj(((s*/sys/lib/python2.7/multiprocessing/util.pyR�s cs�tdkrdS�dkr(d�}n�fd�}gtj�D]}||�rD|^qD}|jdt�xV|D]N\}}td|�y|�Wqytk
r�ddl}|j�qyXqyW�dkr�j �ndS(s�
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.
NcSs|dddk S(Ni(R6(tp((s*/sys/lib/python2.7/multiprocessing/util.pyt<lambda>scs&|dddk o%|dd�kS(Ni(R6(Rm(tminpriority(s*/sys/lib/python2.7/multiprocessing/util.pyRn
streverses
calling %si�(
RXR6R>R?R-RR@t tracebackt print_exctclear(RotfRiR>tkeyt finalizerRq((Ros*/sys/lib/python2.7/multiprocessing/util.pyt_run_finalizers�s +
cCstptdkS(s6
Returns true if the process is shutting down
N(t_exitingR6(((s*/sys/lib/python2.7/multiprocessing/util.pyRscCs�|d�|d�|d�|�dk r�x:|�D]/}|jr7|d|j�|jj�q7q7Wx.|�D] }|d|j�|j�qtWn|d�|�dS(Nsprocess shutting downs2running all "atexit" finalizers with priority >= 0is!calling terminate() for daemon %sscalling join() for process %ss)running the remaining "atexit" finalizers(R6t _daemonictnamet_popent terminatetjoin(RRRwRRRm((s*/sys/lib/python2.7/multiprocessing/util.pyR!&s
cBseZd�Zd�ZRS(cCs|j�t|tj�dS(N(t_resetR
R
(RY((s*/sys/lib/python2.7/multiprocessing/util.pyR\Qs
cCs1tj�|_|jj|_|jj|_dS(N(t threadingtLockt_locktacquiretrelease(RY((s*/sys/lib/python2.7/multiprocessing/util.pyR~Us(RcRkR\R~(((s*/sys/lib/python2.7/multiprocessing/util.pyR
Ps cBseZd�Zd�ZRS(cCst|d��dS(NcSs
|jj�S(N(t__dict__Rs(RD((s*/sys/lib/python2.7/multiprocessing/util.pyRn\s(R
(RY((s*/sys/lib/python2.7/multiprocessing/util.pyR\[scCst|�dfS(N((RJ(RY((s*/sys/lib/python2.7/multiprocessing/util.pyt
__reduce__]s(RcRkR\R�(((s*/sys/lib/python2.7/multiprocessing/util.pyRZs (/RUt itertoolsRMRRt
subprocessRtmultiprocessing.processRRt__all__tNOTSETRRRRRR(R6RtFalseR.RRRRRRR tWeakValueDictionaryR=tcountRGRFR
RXRStobjectRRwRRxR!R"R
tlocalR(((s*/sys/lib/python2.7/multiprocessing/util.pyt<module>#sT N$ "
|