o
    ZhL                     @  s  d Z ddlmZ ddlZddlZddlZddlZddlZddl	m
Z
mZmZ ddlmZmZmZ ddlmZ ddlmZ dd	lmZmZ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re&  dS dS )z#A Jupyter console app to run files.    )annotationsN)
JupyterAppbase_aliases
base_flags)AnyDictFloat)catch_config_error   )__version__)JupyterConsoleAppapp_aliases	app_flags
   c                      s   e Zd 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d fddZedd fddZdddZdddZd fddZ  ZS )RunAppz$An Jupyter Console app to run files.z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helpNargvlist[str] | NonereturnNonec                   s,   t  | | | j | jdd | _dS )z!Parse the command line arguments.N)superparse_command_lineZbuild_kernel_argv
extra_argsfilenames_to_runselfr   	__class__ L/var/www/html/lang_env/lib/python3.10/site-packages/jupyter_client/runapp.pyr   ?   s   zRunApp.parse_command_linec                   s>   | j d t | t|  ttj| j |   dS )zInitialize the app.zjupyter run: initialize...N)	logdebugr   
initializer   signalSIGINThandle_sigintinit_kernel_infor   r   r    r!   r$   E   s
   
zRunApp.initializeargst.Anyc                 G  s$   | j r
| j   dS | jd dS )zHandle SIGINT.z*Cannot interrupt kernels we didn't start.
N)Zkernel_managerZinterrupt_kernelr"   error)r   r)   r    r    r!   r'   N   s   zRunApp.handle_sigintc              
   C  s   | j }t }| jj  | j }	 z	| jjdd}W n" tjy> } zt | |kr4d}t	||W Y d}~nd}~ww |d 
d|krO|d | _dS q)	z4Wait for a kernel to be ready, and store kernel infoTr
   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emsgr    r    r!   r(   U   s$   


zRunApp.init_kernel_infoc              	     s   | j d t   | jrQ| jD ]=}| j d| t|(}| }| jj|t	d}|d d dkr5dnd}|r?t
d	| W d
   n1 sIw   Y  qd
S tj }| jj|t	d}|d d dkrhdnd}|rrd}t
|d
S )zStart the application.zjupyter run: starting...zjupyter run: executing `%s`r,   r/   statusokr   r
   zjupyter-run error running '%s'Nz!jupyter-run error running 'stdin')r"   r#   r   startr   openreadr2   Zexecute_interactiveOUTPUT_TIMEOUT	Exceptionsysstdin)r   filenamefpcoder7   Zreturn_coder9   r   r    r!   r<   g   s,   



	zRunApp.start)N)r   r   r   r   )r)   r*   r   r   )r   r   )__name__
__module____qualname____doc__r   versionnamedescriptionr   flagsaliasesr   frontend_aliasesfrontend_flagsr   r0   r   r	   r$   r'   r(   r<   __classcell__r    r    r   r!   r   )   s(    

r   __main__))rI   
__future__r   r3   r%   rA   r1   typingtZjupyter_core.applicationr   r   r   Z	traitletsr   r   r   Ztraitlets.configr	    r   Z
consoleappr   r   r   r?   dictrM   Zfrontend_flags_dictupdaterN   Zfrontend_aliases_dictsetkeysrO   rP   r   Zlaunch_instancemainZlaunch_new_instancerF   r    r    r    r!   <module>   s4    


T
