o
    i                     @   s   d 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r{e"  dS dS )z#A Jupyter console app to run files.    N)
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 fd	d
	Zed fdd	Zdd Zdd Z 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helpNc                    s,   t  | | | j | jdd | _dS )z!Parse the command line arguments.N)superparse_command_linebuild_kernel_argv
extra_argsfilenames_to_runselfargv	__class__ P/var/www/edux/Edux_v2/venv/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!   B   s
   
zRunApp.initializec                 G   s$   | j r
| j   dS | jd dS )zHandle SIGINT.z*Cannot interrupt kernels we didn't start.
N)kernel_managerinterrupt_kernelr   error)r   argsr   r   r   r$   K   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_requestNparent_headermsg_idcontent)kernel_timeouttimekernel_client
hb_channelunpausekernel_infoget_shell_msgqueueEmptyRuntimeErrorget)r   r+   ticr-   replyemsgr   r   r   r%   R   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readr1   execute_interactiveOUTPUT_TIMEOUT	Exceptionsysstdin)r   filenamefpcoder;   return_coder=   r   r   r   r@   d   s,   



	zRunApp.start)N)__name__
__module____qualname____doc__r
   versionnamedescriptionr   flagsaliasesr   frontend_aliasesfrontend_flagsr   r/   r   r   r!   r$   r%   r@   __classcell__r   r   r   r   r   &   s(    r   __main__)%rO   r6   r"   rF   r0   jupyter_core.applicationr   r   r   	traitletsr   r   r   traitlets.configr    r
   
consoleappr   r   r   rD   dictrS   frontend_flags_dictupdaterT   frontend_aliases_dictsetkeysrU   rV   r   launch_instancemainlaunch_new_instancerL   r   r   r   r   <module>   s0    


T
