B
    \}	                 @   s   d Z ddlmZ ddlmZmZ ddlZddlZddlm	Z	 ddl
mZ ddlmZ G dd	 d	eZG d
d deZedkred e  dS )z'Test kernel for signalling subprocesses    )print_function)PopenPIPEN)ZMQDisplayHook)Kernel)IPKernelAppc                   sB   e Zd ZdZdZdZdZ fddZdd
dZ fddZ	  Z
S )SignalTestKernelz'Kernel for testing subprocess signalingZ
signaltestz0.0 c                s(   | dd  tt| jf | g | _d S )NZuser_ns)popsuperr   __init__children)selfkwargs)	__class__ @lib/python3.7/site-packages/jupyter_client/tests/signalkernel.pyr      s    zSignalTestKernel.__init__TNFc             C   s   |  }di d}|dkrPtddddgtd}| j| | jd	 j|d
 d< n|dkrrdd | jD |d
 d< nl|dkrytd W n  tk
r   d|d
 d< Y qX d|d
 d< n&d|d< d|d< ||d< d| g|d< |S )Nok)statususer_expressionsstartZbashz-iz-czsleep 30)stderrr   pidZcheckc             S   s   g | ]}|  qS r   )poll).0childr   r   r   
<listcomp>(   s    z/SignalTestKernel.do_execute.<locals>.<listcomp>r   sleep
   TZinterruptedFerrorr   ErrorZenameZevaluezno such command: %s	traceback)	stripr   r   r   appendr   timer   KeyboardInterrupt)r   codeZsilentZstore_historyr   Zallow_stdinZreplyr   r   r   r   
do_execute   s(    zSignalTestKernel.do_executec                s   t t| j||S )zuAdd delay to kernel_info_request
        
        triggers slow-response code in KernelClient.wait_for_ready
        )r   r   kernel_info_request)r   argsr   )r   r   r   r)   7   s    z$SignalTestKernel.kernel_info_request)TNF)__name__
__module____qualname____doc__implementationZimplementation_versionZbannerr   r(   r)   __classcell__r   r   )r   r   r      s    
r   c               @   s   e Zd ZeZdd ZdS )SignalTestAppc             C   s   t | j| j| _d S )N)r   ZsessionZiopub_socketdisplayhook)r   r   r   r   init_io@   s    zSignalTestApp.init_ioN)r+   r,   r-   r   Zkernel_classr3   r   r   r   r   r1   >   s   r1   __main__   )r.   Z
__future__r   
subprocessr   r   sysr%   Zipykernel.displayhookr   Zipykernel.kernelbaser   Zipykernel.kernelappr   r   r1   r+   r   Zlaunch_instancer   r   r   r   <module>   s   -
