
    Xh.                     $   d 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mZ d	d
lmZ ddlmZ dZ G d de      Z G d de      Z G d de      Z G d de      ZdZdZdefdez  efde de efdez  efgZy# e$ r	 ddlmZ Y w xY w)zTornado handlers for kernels.

Preliminary documentation at https://github.com/ipython/ipython/wiki/IPEP-16%3A-Notebook-multi-directory-dashboard-and-URL-mapping#kernels-api
    N)json_default)date_default)ensure_async)web)
authorized)
url_escapeurl_path_join   )
APIHandler   )KernelWebsocketHandlerkernelsc                       e Zd ZdZeZy)KernelsAPIHandlerzA kernels API handler.N)__name__
__module____qualname____doc__AUTH_RESOURCEauth_resource     \/var/www/html/myenv/lib/python3.12/site-packages/jupyter_server/services/kernels/handlers.pyr   r      s
     !Mr   r   c                   l    e Zd ZdZej
                  ed               Zej
                  ed               Zy)MainKernelHandlerzThe root kernel handler.c                    K   | j                   }t        |j                                d{   }| j                  t	        j
                  |t                     y7 /w)z Get the list of running kernels.Ndefault)kernel_managerr   list_kernelsfinishjsondumpsr   )selfkmr   s      r   getzMainKernelHandler.get$   sC        $R__%677DJJw=> 8s   )AA0Ac                 2  K   | j                   }| j                         }|d|j                  i}n|j                  d|j                         t	        |j                  |d   |j                  d                   d{   }t	        |j                  |             d{   }t        | j                  ddt        |            }| j                  d|       | j                  d       | j                  t        j                  |t         	             y7 7 uw)
zStart a kernel.Nnamepath)kernel_namer)   apir   Location   r   )r   get_json_bodydefault_kernel_name
setdefaultr   start_kernelr&   kernel_modelr	   base_urlr   
set_header
set_statusr!   r"   r#   r   )r$   r%   model	kernel_idlocations        r   postzMainKernelHandler.post,   s        ""$=R334EVR%;%;<&OO!&M		&0A  
 
	
 #2??9#=>> y*YBWX
H-DJJul;<

 ?s%   A;D=D>!DD A4DDN)	r   r   r   r   r   authenticatedr   r&   r9   r   r   r   r   r   !   sG    "?  ? 	=  =r   r   c                   l    e Zd ZdZej
                  ed               Zej
                  ed               Zy)KernelHandlerzA kernel API handler.c                    K   | j                   }t        |j                  |             d{   }| j                  t	        j
                  |t                     y7 /w)zGet a kernel model.Nr   )r   r   r2   r!   r"   r#   r   )r$   r7   r%   r6   s       r   r&   zKernelHandler.getF   sE        "2??9#=>>DJJul;< ?s   *AA0Ac                    K   | j                   }t        |j                  |             d{    | j                  d       | j	                          y7 &w)zRemove a kernel.N   )r   r   shutdown_kernelr5   r!   )r$   r7   r%   s      r   deletezKernelHandler.deleteN   sF        2--i8999 	:s   *AA'AN)	r   r   r   r   r   r:   r   r&   rA   r   r   r   r<   r<   C   sG    =  = 	  r   r<   c                   >    e Zd ZdZej
                  ed               Zy)KernelActionHandlerzA kernel action API handler.c                 b  K   | j                   }|dk(  r3t        |j                  |             d{    | j                  d       |dk(  rf	 |j	                  |       d{    t        |j                  |             d{   }| j                  t        j                  |t                     | j                          y7 7 c7 C# t        $ rZ d}| j                  j                  |d       | j                  t        j                  |d	d
             | j                  d       Y yw xY ww)zInterrupt or restart a kernel.	interruptNr?   restartr   zException restarting kernelT)exc_info )message	tracebacki  )r   r   interrupt_kernelr5   restart_kernelr2   writer"   r#   r   	Exceptionlogerrorr!   )r$   r7   actionr%   r6   rI   s         r   r9   zKernelActionHandler.post[   s        [ r229=>>>OOC Y	D''	222 +2??9+EFF

4::e\BC ? 3 G  %7w6

4::'&KLM$	%sY   /D/CD/C	 !C"C	 &D/CA D/C	 D/	A D,)D/+D,,D/N)r   r   r   r   r   r:   r   r9   r   r   r   rC   rC   X   s%    &  r   rC   z"(?P<kernel_id>\w+-\w+-\w+-\w+-\w+)z(?P<action>restart|interrupt)z/api/kernelsz/api/kernels/%sz/api/kernels//z/api/kernels/%s/channels)r   r"   jupyter_client.jsonutilr   ImportErrorr   jupyter_core.utilsr   tornador   jupyter_server.auth.decoratorr   jupyter_server.utilsr   r	   base.handlersr   	websocketr   r   r   r   r<   rC   _kernel_id_regex_kernel_action_regexdefault_handlersr   r   r   <module>r^      s    E4 ,  4 : ' -"
 "=) =D% *+ 8 9 7  '(**M:)*!,@+AB !#335KL W  EDEs   B BB