o
    @c	                     @   sb   d dl Z d dlZd dlmZ dZG dd deZe Zdd Z	dd	 Z
dad
d ZdddZdS )    N)wrapsTc                   @   s   e Zd Zdd Zdd ZdS )_InterruptHandlerc                 C   sN   d| _ || _t|tr"|tjkrtj}n|tjkrdd }ntd|| _	d S )NFc                 S   s   d S N )unused_signumunused_framer   r   NC:\Users\Chris\AppData\Local\Programs\Python\Python310\lib\unittest\signals.pydefault_handler   s   z3_InterruptHandler.__init__.<locals>.default_handlerzYexpected 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	   r   r   r   __init__
   s   




z_InterruptHandler.__init__c                 C   sR   t t j}|| ur| || | jr| || d| _t D ]}|  q d S )NT)r   	getsignalSIGINTr	   r
   _resultskeysstop)r   signumframeinstalled_handlerresultr   r   r   __call__   s   
z_InterruptHandler.__call__N)__name__
__module____qualname__r   r   r   r   r   r   r   	   s    r   c                 C   s   dt | < d S )N   )r   r   r   r   r   registerResult*   s   r$   c                 C   s   t t| d S r   )boolr   popr#   r   r   r   removeResult-   s   r'   c                  C   s2   t d u rttj} t| a ttjt  d S d S r   )_interrupt_handlerr   r   r   r   )r	   r   r   r   installHandler1   s
   r)   c                    s@    d urt   fdd}|S td urttjtj d S d S )Nc               
      sB   t t j}t  z | i |W t  t j| S t  t j| w r   )r   r   r   removeHandler)argskwargsinitialmethodr   r   inner;   s
    zremoveHandler.<locals>.inner)r   r(   r   r   r   )r/   r0   r   r.   r   r*   9   s   r*   r   )r   weakref	functoolsr   
__unittestobjectr   WeakKeyDictionaryr   r$   r'   r(   r)   r*   r   r   r   r   <module>   s     