
    Nen
                         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  G d de      Zej$                  Zy)    N)
base_flags)
JupyterApp)IOLoop)Unicode   )__version__)KernelSpecManager)NATIVE_KERNEL_NAME)KernelManagerc                        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      j                  d	
      Zd fd	ZddZdeddfdZddZddZddZ x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                    t         |   |       dt        j                         z  }| j                  j                  di       j                  dt        j                  j                  | j                  |             t        | j                  | j                        | _        t        j                         | _        | j                  j!                  | j"                         y )Nzkernel-%s.jsonr   connection_file)kernel_namer   )super
initializeuuiduuid4r   
setdefaultospathjoinruntime_dirr   r   kmr   currentloopadd_callback_record_started)selfargvcf_basename	__class__s      :/usr/lib/python3/dist-packages/jupyter_client/kernelapp.pyr   zKernelApp.initialize"   s    4 &53>>rww||D,<,<kJ	
  D,<,<T[[QNN$			t334    returnc                      t         j                  dk(  ry fd}t        j                  t        j                  fD ]  }t        j                  ||        y)z&Shutdown on SIGTERM or SIGINT (Ctrl-C)ntNc                 R    j                   j                  j                  |        y N)r!   add_callback_from_signalshutdown)signoframer$   s     r(   shutdown_handlerz1KernelApp.setup_signals.<locals>.shutdown_handler3   s    II..t}}eDr)   )r   namesignalSIGTERMSIGINT)r$   r3   sigs   `  r(   setup_signalszKernelApp.setup_signals.   sD    77d?	E NNFMM2 	1CMM#/0	1r)   r1   c                     | j                   j                  d|z         | j                  j                          | j                  j                          y )NzShutting down on signal %d)loginfor   shutdown_kernelr!   stop)r$   r1   s     r(   r0   zKernelApp.shutdown9   s6    2U:;!		r)   c                     | j                   j                  }| j                  j                  d|       | j                  j                  dt        j
                  j                  |             y )NzConnection file: %sz"To connect a client: --existing %s)r   r   r;   r<   r   r   basename)r$   cfs     r(   log_connection_infozKernelApp.log_connection_info>   sF    WW$$+R0:BGG<L<LR<PQr)   c                     t         j                  j                  d      }|t        |d      5  	 ddd       yy# 1 sw Y   yxY w)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$   fns     r(   r#   zKernelApp._record_startedC   sG    
 ZZ^^HI>b$    s	   :Ac                 l   | j                   j                  d| j                         	 | j                  j	                          | j                          | j                          | j                  j                          | j                  j                          y # | j                  j                          w xY w)NzStarting kernel %r)
r;   r<   r   r   start_kernelrB   r9   r!   startcleanup_resources)r$   s    r(   rL   zKernelApp.startM   sw    *D,<,<=	(GG  "$$& IIOOGG%%'DGG%%'s   AB B3r.   )r*   N)__name__
__module____qualname____doc__r   versiondescriptionr   r	   classesaliasesr   flagsr   r
   tagr   r   r9   intr0   rB   r#   rL   __classcell__)r'   s   @r(   r   r      s    8G8K/0G * G j)*E,3WX\\ ] K
5	1c d 
R
(r)   r   )r   r5   r   jupyter_core.applicationr   r   tornado.ioloopr   	traitletsr    r   
kernelspecr	   r
   managerr   r   launch_instancemain r)   r(   <module>rc      sB    	   / / !   ) * "E(
 E(P   r)   