
    Rhc	                     z    d dl Z d dlZd dlmZ dZ G d de      Z ej                         Zd Z	d Z
dad Zd
d	Zy)    N)wrapsTc                       e Zd Zd Zd Zy)_InterruptHandlerc                     d| _         || _        t        |t              rT|t        j
                  k(  rt        j                  }|| _	        y |t        j                  k(  rd }|| _	        y t        d      || _	        y )NFc                      y N )unused_signumunused_frames     '/usr/lib/python3.12/unittest/signals.pydefault_handlerz3_InterruptHandler.__init__.<locals>.default_handler   s        zYexpected SIGINT signal handler to be signal.SIG_IGN, signal.SIG_DFL, or a callable object)
calledoriginal_handler
isinstanceintsignalSIG_DFLdefault_int_handlerSIG_IGN	TypeErrorr   )selfr   s     r   __init__z_InterruptHandler.__init__
   sw     /os+&..0"("<"<  / !FNN2  /   !2 3 3  /r   c                    t        j                  t         j                        }|| ur| j                  ||       | j                  r| j                  ||       d| _        t
        j                         D ]  }|j                           y )NT)r   	getsignalSIGINTr   r   _resultskeysstop)r   signumframeinstalled_handlerresults        r   __call__z_InterruptHandler.__call__   sm    ",,V]];D(   /;;  /mmo 	FKKM	r   N)__name__
__module____qualname__r   r$   r	   r   r   r   r   	   s    /$r   r   c                     dt         | <   y )N   )r   r#   s    r   registerResultr+   *   s    HVr   c                 @    t        t        j                  | d             S r   )boolr   popr*   s    r   removeResultr/   -   s    VT*++r   c                      t         Wt        j                  t        j                        } t	        |       a t        j                  t        j                  t                y y r   )_interrupt_handlerr   r   r   r   )r   s    r   installHandlerr2   1   s?    ! **6==9.?fmm%78 "r   c                       t                fd       }|S t        3t        j                  t        j                  t        j                         y y )Nc                  
   t        j                  t         j                        }t                	  | i |t        j                   t         j                  |       S # t        j                   t         j                  |       w xY wr   )r   r   r   removeHandler)argskwargsinitialmethods      r   innerzremoveHandler.<locals>.inner;   sS    &&v}}5GO6t.v.fmmW5fmmW5s   A &B)r   r1   r   r   r   )r9   r:   s   ` r   r5   r5   9   sL    	v	6 
	6  %fmm%7%H%HI &r   r   )r   weakref	functoolsr   
__unittestobjectr   WeakKeyDictionaryr   r+   r/   r1   r2   r5   r	   r   r   <module>r@      sO      
 @ %7$$&,  9Jr   