
    Ne	                         d Z ddlZddlZddlZddlmZ ddlmZ ddlmZ ddl	m
Z
 ddlmZ  G d d	e      Z G d
 de
      Zedk(  r# ej                   d       ej#                          yy)z'Test kernel for signalling subprocesses    N)PIPE)Popen)ZMQDisplayHook)IPKernelApp)Kernelc                   B     e Zd ZdZdZdZdZ fdZ fdZ	 ddZ	 xZ
S )	SignalTestKernelz'Kernel for testing subprocess signaling
signaltestz0.0 c                    |j                  dd        t        |   di | g | _        t        j
                  j                  dd       dk(  r3t        j                  t        j                  t        j                         y y )Nuser_nsNO_SIGTERM_REPLY1 )
popsuper__init__childrenosenvirongetsignalSIGTERMSIG_IGN)selfkwargs	__class__s     C/usr/lib/python3/dist-packages/jupyter_client/tests/signalkernel.pyr   zSignalTestKernel.__init__   s[    

9d#"6"::>>,d3s:MM&..&..9 ;    c                    K   t         j                  j                  d      dk7  rt        |   |||       d {    y y 7 w)NNO_SHUTDOWN_REPLYr   )r   r   r   r   shutdown_request)r   streamidentparentr   s       r   r"   z!SignalTestKernel.shutdown_request   s<     ::>>-.#5'*65&AAA 6As   7AAAc                 <   |j                         }di d}|dk(  rOt        g dt              }| j                  j	                  |       | j                  d   j
                  |d   d<   |S |d	k(  r0| j                  D cg c]  }|j                          c}|d   d
<   |S |dk(  rt        j                  dd      |d   d<   |S |dk(  r 	 t        j                  d       d|d   d<   |S d|d<   d|d<   ||d<   d|z  g|d<   |S c c}w # t        $ r d|d   d<   Y |S w xY w)Nok)statususer_expressionsstart)bashz-iz-czsleep 30)stderrr)   pidcheckpollenv	TEST_VARSr   sleep
   FinterruptedTerrorr(   Errorenameevaluezno such command: %s	traceback)stripr   r   r   appendr.   r0   r   getenvtimer3   KeyboardInterrupt)r   codesilentstore_historyr)   allow_stdinreplychilds           r   
do_executezSignalTestKernel.do_execute"   sb    zz| "
 7?:4HEMM  '/3}}R/@/D/DE$%e," ! W_KO==0Y%0YE$%f-  U]/1yyb/IE$%e,  W_A

2 <A()-8 	 &E(O$E'N"E(O"7$">!?E+ 1Z % @;?()-8 @s   =DD DD)TNF)__name__
__module____qualname____doc__implementationimplementation_versionbannerr   r"   rF   __classcell__)r   s   @r   r	   r	      s-    1!N"F:B
 TYr   r	   c                       e Zd ZeZd Zy)SignalTestAppc                 N    t        | j                  | j                        | _        y )N)r   sessioniopub_socketdisplayhook)r   s    r   init_iozSignalTestApp.init_ioD   s    )$,,8I8IJr   N)rG   rH   rI   r	   kernel_classrU   r   r   r   rP   rP   A   s    #LKr   rP   __main__   )rJ   r   r   r>   
subprocessr   r   ipykernel.displayhookr   ipykernel.kernelappr   ipykernel.kernelbaser   r	   rP   rG   r3   launch_instancer   r   r   <module>r^      sg    - 
     0 + '/v /dKK K z DJJqM!!#	 r   