o
    svXjÌ  ã                   @   sì  d Z ddlmZ ddlZddlZddlZddlZzddlZ	W n e
y)   dZ	Y nw ddlmZ ddlmZ e	p9eZejZejZejd dkrNddlmZ nzdd	lmZ W n e
ye   dd	lmZ Y nw ed
d„ eeƒD ƒƒZdD ]Zz	eeeeeƒ< W qs ey‡   Y qsw ejdZZ ej! "d¡Z#e#ržeee#ƒe#ZZ e#r£dhne$ƒ Z%e#r«dhne$ƒ Z&dZ'dde ddhZ(dddddddde ddddddhZ)dgZ*dd „ Z+efd!d"„Zd#d$„ Z,d%d&„ Z-d'd(„ Z.d)d*„ Z/e-dfd+d,„Z0G d-d.„ d.e1ƒZ2dS )/ze
This module contains utilities added by billiard, to keep
"non-core" functionality out of ``.util``.é    )Úabsolute_importNé   )ÚRestartFreqExceeded)Ú	monotonicé   ©ÚBytesIO)ÚStringIOc                 c   s(   � | ]}|  d ¡rtt|ƒ|fV  qdS )ÚSIGN)Ú
startswithÚgetattrÚsignal)Ú.0Ún© r   úL/var/www/html/myproject/venv/lib/python3.10/site-packages/billiard/common.pyÚ	<genexpr>"   s   € 
ÿ
ÿr   )ÚSIGHUPÚSIGABRTÚSIGTERMÚREMAP_SIGTERMÚSIGQUITéF   r   ÚSIGUSR1ÚSIGUSR2ÚSIGTRAPr   ÚSIGEMTÚSIGSYSÚSIGPIPEÚSIGALRMÚSIGXCPUÚSIGXFSZÚ	SIGVTALRMÚSIGPROFFc                 C   sL   | pddk r!zd  |  t|   ¡W S  ty    d  |  ¡ Y S w d  | ¡S )Nr   zsignal {0} ({1})z
signal {0}zexitcode {0})ÚformatÚSIGMAPÚKeyError)Ústatusr   r   r   Úhuman_statusZ   s   ÿ
r(   c                 C   s   |t | ƒƒS ©Nr   )ÚsÚloadr   r   r   Úpickle_loadsc   s   r,   c                 C   s0   z	t   | |¡ W d S  ttttfy   Y d S w r)   )r   ÚOSErrorÚAttributeErrorÚ
ValueErrorÚRuntimeError)ÚsignumÚhandlerr   r   r   Úmaybe_setsignalh   s
   ÿr3   c                 C   s:   t d r	t t¡ t| tjƒ dt d< t d|   ¡ d S )Nr   Té   )	Ú_should_have_exitedÚosÚ_exitÚEX_SOFTWAREr3   r   ÚSIG_DFLÚsysÚexit)r1   Úframer   r   r   Ú_shutdown_cleanupo   s
   
r=   c                 C   s   t t| d ƒS r)   )r   r   )Úsigr   r   r   r1   z   s   r1   c                 C   s   | t v p|d uo|tjkS r)   )ÚTERMSIGS_FORCEr   ÚSIG_IGN)r>   Úcurrentr   r   r   Ú_should_override_term_signal~   s   þrB   c                 C   s^   |rt ntD ]}t|ƒ}|rt|t |¡ƒrt|| ƒ qtD ]}t|ƒ}|r,t|tjƒ qd S r)   )	ÚTERMSIGS_FULLÚTERMSIGS_DEFAULTr1   rB   r   Ú	getsignalr3   ÚTERMSIGS_IGNOREr@   )r2   Úfullr>   Únumr   r   r   Úreset_signals…   s   
€€ýrI   c                   @   s"   e Zd ZeZdd„ Zddd„ZdS )Úrestart_statec                 C   s   ||| _ | _d\| _| _d S )N)r   N)ÚmaxRÚmaxTÚRÚT)ÚselfrK   rL   r   r   r   Ú__init__”   s   zrestart_state.__init__Nc                 C   s’   |d u rt ƒ n|}| j}| jr|| j | jkr|d| _| _n| jr8| j| jkr8| jr8d| _|  d|| jf ¡‚| jd u r@|| _|  jd7  _d S )Nr   z	%r in %rsr   )r   rM   rN   rL   rK   r   )rO   ÚnowrM   r   r   r   Ústep˜   s   
zrestart_state.stepr)   )Ú__name__Ú
__module__Ú__qualname__r   rP   rR   r   r   r   r   rJ   ‘   s    rJ   )3Ú__doc__Ú
__future__r   r6   r   r:   ÚpickleÚpypickleÚcPickleÚcpickleÚImportErrorÚ
exceptionsr   Úfiver   r+   Úpickle_loadÚloadsr,   Úversion_infoÚior   Ú	cStringIOr	   ÚdictÚdirr%   Ú
_alias_sigr   r.   r   ÚTERM_SIGNALÚTERM_SIGNAMEÚenvironÚgetr   ÚsetrF   r?   r8   rD   rC   r5   r(   r3   r=   r1   rB   rI   ÚobjectrJ   r   r   r   r   Ú<module>   sŽ   ÿÿÿÿ
ÿû	ñ	