B
    l‚z]0  ã               @   sp   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
ddlmZ eeƒZdZdd	„ Zed
d„ ƒZdS )é    )Úabsolute_importÚdivisionÚprint_functionÚunicode_literals)Úcontextmanager)Ú	getLoggerNé   )Ú	iteritems)ÚSIGABRTÚSIGINTÚSIGTERMÚSIGQUITZSIGBREAKc                s   t ‡ fdd„t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)Úsignum© ú3lib/python3.7/site-packages/conda/common/signals.pyú	<genexpr>   s    z"get_signal_name.<locals>.<genexpr>N)Únextr	   ÚsignalÚ__dict__)r   r   )r   r   Úget_signal_name   s    r   c             c   sâ   t  ¡ }g |_xxtD ]p}tt|d ƒ}|rt d|¡ y t || ¡}|j ||f¡ W q t	k
r‚ } zt d|¡ W d d }~X Y qX qW z
d V  W d tj
tjf}x:|jD ]0\}}t|ƒsÀ||kr¨t d|¡ t ||¡ q¨W X d S )Nzregistering handler for %sz%rzde-registering handler for %s)Ú	threadingZ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   Úcompatr	   Ú__name__r   r   r   r%   r   r   r   r   Ú<module>   s   