o
    Zc                     @   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#reee#e#ZZ e#rdhne$ Z%e#rd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   E/var/www/chikooza/env/lib/python3.10/site-packages/billiard/common.py	<genexpr>"   s    

r   )SIGHUPSIGABRTSIGTERMREMAP_SIGTERMSIGQUITF   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   
		