B
    2d                 @   s$  d dl 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
 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 d	dlmZ dZeeZeeZee eeZeeZee ee Zee ZG dd deeZej  Z!Z"e#dkr e!  dS )    N)base_aliases)
base_flags)
JupyterApp)Any)Dict)Float)catch_config_error   )__version__)app_aliases)	app_flags)JupyterConsoleApp
   c                   s   e Zd ZeZdZdZeeZee	Z	e
eZe
eZeddddZd fdd		Zed fd
d	Zdd Zdd Z fddZ  ZS )RunAppzjupyter runzRun Jupyter kernel code.<   Ta5  Timeout for giving up on a kernel (in seconds).

        On first connect and restart, the console tests whether the
        kernel is running and responsive by sending kernel_info_requests.
        This sets the timeout in seconds for how long the kernel can take
        before being presumed dead.
        )confighelpNc                s,   t  | | | j | jd d  | _d S )N)superparse_command_lineZbuild_kernel_argv
extra_argsfilenames_to_run)selfargv)	__class__ b/work/yifan.wang/ringdown/master-ringdown-env/lib/python3.7/site-packages/jupyter_client/runapp.pyr   ?   s    zRunApp.parse_command_linec                s>   | j d t | t|  ttj| j |   d S )Nzjupyter run: initialize...)	logdebugr   
initializer   signalSIGINThandle_sigintinit_kernel_info)r   r   )r   r   r   r   D   s
    
zRunApp.initializec             G   s"   | j r| j   n| jd d S )Nz*Cannot interrupt kernels we didn't start.
)Zkernel_managerZinterrupt_kernelr   error)r   argsr   r   r   r!   L   s    zRunApp.handle_sigintc          
   C   s   | j }t }| jj  | j }xvy| jjdd}W n> tjk
rv } zt | |krft	d|W dd}~X Y q&X |d 
d|kr&|d | _dS q&W dS )z4Wait for a kernel to be ready, and store kernel infor	   )timeoutz,Kernel didn't respond to kernel_info_requestNZparent_headermsg_idcontent)kernel_timeouttimekernel_clientZ
hb_channelZunpauseZkernel_infoZget_shell_msgqueueEmptyRuntimeErrorget)r   r%   Zticr&   replyer   r   r   r"   R   s    

zRunApp.init_kernel_infoc          
      s   | j d t   | jrx| jD ]h}| j d|  t|F}| }| jj|t	d}|d d dkrndnd}|rt
d	| W d Q R X q$W n>tj }| jj|t	d}|d d dkrdnd}|rt
d
d S )Nzjupyter run: starting...zjupyter run: executing `%s`)r%   r'   statusokr   r	   zjupyter-run error running '%s'z!jupyter-run error running 'stdin')r   r   r   startr   openreadr*   Zexecute_interactiveOUTPUT_TIMEOUT	Exceptionsysstdin)r   filenamefpcoder/   Zreturn_code)r   r   r   r3   c   s     


zRunApp.start)N)N)__name__
__module____qualname__r
   versionnamedescriptionr   flagsaliasesr   frontend_aliasesfrontend_flagsr   r(   r   r   r   r!   r"   r3   __classcell__r   r   )r   r   r   +   s"   r   __main__)$r+   r   r8   r)   Zjupyter_core.applicationr   r   r   Z	traitletsr   r   r   Ztraitlets.configr    r
   Z
consoleappr   r   r   r6   dictrC   Zfrontend_flags_dictupdaterD   Zfrontend_aliases_dictsetkeysrE   rF   r   Zlaunch_instancemainZlaunch_new_instancer=   r   r   r   r   <module>   s6   

L

