
    f}                         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e      Zej*                  Zy)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                        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dej$                  eej(                  e   df   ddf 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)configNargvreturnc                    t         |   |       dt        j                         z  }| j                  j                  di       j                  dt        j                  j                  | j                  |             t        | j                  | j                        | _        t        j                         | _        | j                  j!                  | j"                         y)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)selfr   cf_basename	__class__s      S/var/www/cvtools/html/venv/lib/python3.12/site-packages/jupyter_client/kernelapp.pyr   zKernelApp.initialize"   s    4 &53>>rww||D,<,<kJ	
  D,<,<T[[QNN$			t334    c                      t         j                  dk(  rydt        dt        j                  ddf fd}t
        j                  t
        j                  fD ]  }t        j
                  ||        y)z&Shutdown on SIGTERM or SIGINT (Ctrl-C)ntNsignoframer   c                 R    j                   j                  j                  |        y N)r#   add_callback_from_signalshutdown)r-   r.   r&   s     r)   shutdown_handlerz1KernelApp.setup_signals.<locals>.shutdown_handler4   s    II..t}}eDr*   )r   nameinttAnysignalSIGTERMSIGINT)r&   r3   sigs   `  r)   setup_signalszKernelApp.setup_signals/   s`    77d?	EC 	E 	E$ 	E NNFMM2 	1CMM#/0	1r*   r-   c                     | j                   j                  d|       | j                  j                          | j                  j                          y)zShut down the application.zShutting down on signal %dN)loginfor!   shutdown_kernelr#   stop)r&   r-   s     r)   r2   zKernelApp.shutdown:   s3    2E:!		r*   c                     | j                   j                  }| j                  j                  d|       | j                  j                  dt        j
                  j                  |             y)z'Log the connection info for the kernel.zConnection file: %sz"To connect a client: --existing %sN)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_startedF   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)zStart the application.zStarting kernel %rN)
r>   r?   r   r!   start_kernelrE   r<   r#   startcleanup_resources)r&   s    r)   rO   zKernelApp.startP   sw    *D,<,<=	(GG  "$$& IIOOGG%%'DGG%%'s   AB B3r0   )r   N)__name__
__module____qualname____doc__r   versiondescriptionr   r
   classesaliasesr   flagsr   r	   tagr   r6   UnionstrSequencer   r<   r5   r2   rE   r%   rO   __classcell__)r(   s   @r)   r   r      s    8G8K/0G * G j)*E,3WX\\ ] K5qwwsAJJsOT'AB 5d 5	1c d R	(r*   r   )rT   r   r8   typingr6   r   jupyter_core.applicationr   r   tornado.ioloopr   	traitletsr    r   
kernelspecr	   r
   managerr   r   launch_instancemain r*   r)   <module>ri      sB    F 	    ; !   = "I(
 I(X   r*   