U
    ôáêb  ã                   @   sd   d dl mZmZmZmZ d dlmZ d dlmZ d dl	Z	d dl
Z
eeƒZdZdd„ Zedd	„ ƒZdS )
é    )Úabsolute_importÚdivisionÚprint_functionÚunicode_literals)Úcontextmanager)Ú	getLoggerN)ÚSIGABRTÚSIGINTÚSIGTERMÚSIGQUITZSIGBREAKc                    s   t ‡ fdd„tj ¡ D ƒdƒS )zo
    Examples:
        >>> from signal import SIGINT
        >>> get_signal_name(SIGINT)
        'SIGINT'

    c                 3   s2   | ]*\}}|ˆ kr|  d ¡r|  d¡s|V  qdS )ZSIGZSIG_N)Ú
startswith)Ú.0ÚkÚv©Zsignum© ú3lib/python3.8/site-packages/conda/common/signals.pyÚ	<genexpr>   s
     
 
ÿz"get_signal_name.<locals>.<genexpr>N)ÚnextÚsignalÚ__dict__Úitemsr   r   r   r   Úget_signal_name   s    þr   c                 c   sÚ   t  ¡ }g |_tD ]p}tt|d ƒ}|rt d|¡ z t || ¡}|j ||f¡ W q t	k
r€ } zt d|¡ W 5 d }~X Y qX qz
d V  W 5 tj
tjf}|jD ]0\}}t|ƒsº||kr¢t d|¡ t ||¡ q¢X d S )Nzregistering handler for %sz%rzde-registering handler for %s)Ú	threadingÚlocalZprevious_handlersÚINTERRUPT_SIGNALSÚgetattrr   ÚlogÚdebugÚappendÚ
ValueErrorÚSIG_IGNÚSIG_DFLÚcallable)ZhandlerZ_thread_localZsignameZsigZprev_handlerÚeZstandard_handlersZprevious_handlerr   r   r   Úsignal_handler"   s$     
r%   )Z
__future__r   r   r   r   Ú
contextlibr   Zloggingr   r   r   Ú__name__r   r   r   r%   r   r   r   r   Ú<module>   s   