o
    €¨Êh,  ã                   @   sp  d 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 ej	Z
ejZddlmZ edd„ eeƒD ƒƒZd	D ]Zz	eeeeeƒ< W q7 eyK   Y q7w ejd
ZZej d¡ZerbeeeƒeZZergd
hneƒ Zerodhneƒ ZdZdde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)„Z'G d*d+„ d+ƒZ(dS ),ze
This module contains utilities added by billiard, to keep
"non-core" functionality out of ``.util``.é    Né   )ÚRestartFreqExceeded)Ú	monotonic©ÚBytesIOc                 c   s(   � | ]}|  d ¡rtt|ƒ|fV  qdS )ÚSIGN)Ú
startswithÚgetattrÚsignal)Ú.0Ún© r   úA/var/www/html/env/lib/python3.10/site-packages/billiard/common.pyÚ	<genexpr>   s   € 
ÿ
ÿr   )ÚSIGHUPÚSIGABRTÚSIGTERMÚREMAP_SIGTERMÚSIGQUITéF   r   ÚSIGUSR1ÚSIGTRAPr   ÚSIGEMTÚSIGSYSÚSIGPIPEÚSIGALRMÚSIGXCPUÚSIGXFSZÚ	SIGVTALRMÚSIGPROFÚSIGUSR2Fc                 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_statusM   s   ÿ
r%   c                 C   s   |t | ƒƒS ©Nr   )ÚsÚloadr   r   r   Úpickle_loadsV   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_setsignal[   s
   ÿr0   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_SOFTWAREr0   r
   ÚSIG_DFLÚsysÚexit)r.   Úframer   r   r   Ú_shutdown_cleanupb   s
   
r:   c                 C   s   t t| d ƒS r&   )r	   r
   )Úsigr   r   r   r.   m   s   r.   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_signalq   s   þr?   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_DEFAULTr.   r?   r
   Ú	getsignalr0   ÚTERMSIGS_IGNOREr=   )r/   Úfullr;   Únumr   r   r   Úreset_signalsx   s   
€€ýrF   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)ÚselfrH   rI   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   rJ   rK   rI   rH   r   )rL   ÚnowrJ   r   r   r   Ústep‹   s   
zrestart_state.stepr&   )Ú__name__Ú
__module__Ú__qualname__r   rM   rO   r   r   r   r   rG   „   s    rG   ))Ú__doc__r3   r
   r7   ÚpickleÚ
exceptionsr   Útimer   r(   Úpickle_loadÚloadsr)   Úior   ÚdictÚdirr"   Ú
_alias_sigr	   r+   r   ÚTERM_SIGNALÚTERM_SIGNAMEÚenvironÚgetr   ÚsetrC   r<   r5   rA   r@   r2   r%   r0   r:   r.   r?   rF   rG   r   r   r   r   Ú<module>   sr    ÿÿ
ÿüñ	