o
    i'                     @   s   d Z ddlZddlZddlZddlmZmZ ddlmZ ddl	m
Z
 ddlmZ ddlmZmZ dd	lmZ G d
d deZejZdS )z@An application to launch a kernel by name in a local subprocess.    N)
JupyterApp
base_flags)IOLoop)Unicode   )__version__)NATIVE_KERNEL_NAMEKernelSpecManager)KernelManagerc                       s   e Zd ZdZeZdZeegZ	dddZ
ded iZeeddjd	d
Zd fdd	ZdddZdeddfddZdddZdddZdddZ  ZS )	KernelAppz.Launch a kernel by name in a local subprocess.z$Run a kernel locally in a subprocesszKernelApp.kernel_namezKernelManager.ip)kernelipdebugz"The name of a kernel type to start)helpT)configNc                    sh   t  | dt  }| jdi dtj| j	| t
| j| jd| _t | _| j| j dS )zInitialize the application.zkernel-%s.jsonr
   connection_file)kernel_namer   N)super
initializeuuiduuid4r   
setdefaultospathjoinruntime_dirr
   r   kmr   currentloopadd_callback_record_started)selfargvcf_basename	__class__ S/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/jupyter_client/kernelapp.pyr   !   s   
zKernelApp.initializereturnc                    s<   t jdkrdS  fdd}tjtjfD ]}t|| qdS )z&Shutdown on SIGTERM or SIGINT (Ctrl-C)ntNc                    s    j  j|  d S N)r   add_callback_from_signalshutdown)signoframer!   r&   r'   shutdown_handler3   s   z1KernelApp.setup_signals.<locals>.shutdown_handler)r   namesignalSIGTERMSIGINT)r!   r0   sigr&   r/   r'   setup_signals.   s   
zKernelApp.setup_signalsr-   c                 C   s&   | j d| | j  | j  dS )zShut down the application.zShutting down on signal %dN)loginfor   shutdown_kernelr   stop)r!   r-   r&   r&   r'   r,   9   s   
zKernelApp.shutdownc                 C   s0   | j j}| jd| | jdtj| dS )z'Log the connection info for the kernel.zConnection file: %sz"To connect a client: --existing %sN)r   r   r7   r8   r   r   basename)r!   cfr&   r&   r'   log_connection_info?   s   zKernelApp.log_connection_infoc                 C   sH   t jd}|dur"t|d	 W d   dS 1 sw   Y  dS dS )zvFor tests, create a file to indicate that we've started

        Do not rely on this except in our own tests!
        *JUPYTER_CLIENT_TEST_RECORD_STARTUP_PRIVATENwb)r   environgetopen)r!   fnr&   r&   r'   r    E   s   "zKernelApp._record_startedc                 C   sR   | j d| j z| j  |   |   | j  W | j	  dS | j	  w )zStart the application.zStarting kernel %rN)
r7   r8   r   r   start_kernelr=   r6   r   startcleanup_resourcesr/   r&   r&   r'   rE   O   s   
zKernelApp.startr*   )r(   N)__name__
__module____qualname____doc__r   versiondescriptionr
   r	   classesaliasesr   flagsr   r   tagr   r   r6   intr,   r=   r    rE   __classcell__r&   r&   r$   r'   r      s$    



r   )rJ   r   r2   r   jupyter_core.applicationr   r   tornado.ioloopr   	traitletsr    r   
kernelspecr   r	   managerr
   r   launch_instancemainr&   r&   r&   r'   <module>   s    
L