o
    Df:                     @   sr  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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   H/home/ubuntu/webapp/venv/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_statusN   s   
r%   c                 C   s   |t | S Nr   )sloadr   r   r   pickle_loadsW   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_cleanupc   s
   
r:   c                 C   s   t t| d S r&   )r	   r
   )sigr   r   r   r.   n   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_signalr   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_signalsy   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>   st    
		