o
    Zh}                     @   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 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dejeeje df ddf 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)Zkernelipdebugz"The name of a kernel type to start)helpT)configNargvreturnc                    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joinZruntime_dirr
   r   kmr   currentloopZadd_callback_record_started)selfr   Zcf_basename	__class__ O/var/www/html/lang_env/lib/python3.10/site-packages/jupyter_client/kernelapp.pyr   "   s   
zKernelApp.initializec                    sL   t jdkrdS dtdtjddf fdd}tjtjfD ]}t|| qdS )z&Shutdown on SIGTERM or SIGINT (Ctrl-C)ntNsignoframer   c                    s    j  j|  d S N)r   Zadd_callback_from_signalshutdown)r&   r'   r    r#   r$   shutdown_handler4   s   z1KernelApp.setup_signals.<locals>.shutdown_handler)r   nameinttAnysignalSIGTERMSIGINT)r    r+   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   Zshutdown_kernelr   stop)r    r&   r#   r#   r$   r)   :   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   r5   r6   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!
        Z*JUPYTER_CLIENT_TEST_RECORD_STARTUP_PRIVATENwb)r   environgetopen)r    fnr#   r#   r$   r   F   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)
r5   r6   r   r   Zstart_kernelr:   r4   r   startcleanup_resourcesr*   r#   r#   r$   r@   P   s   
zKernelApp.startr(   )r   N)__name__
__module____qualname____doc__r   versiondescriptionr
   r	   classesaliasesr   flagsr   r   tagr   r.   UnionstrSequencer   r4   r-   r)   r:   r   r@   __classcell__r#   r#   r!   r$   r      s$    *



r   )rE   r   r0   typingr.   r   Zjupyter_core.applicationr   r   Ztornado.ioloopr   Z	traitletsr    r   Z
kernelspecr   r	   managerr
   r   Zlaunch_instancemainr#   r#   r#   r$   <module>   s    
L