
    Ke                     L   d Z ddlZddlmZ 	 ddlmZ n# e$ r	 ddlmZ Y nw xY w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dS )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)	format_tb)json_default)date_default)ensure_async)web)
authorized)
url_escapeurl_path_join   )
APIHandler   )KernelWebsocketHandlerkernelsc                       e Zd ZdZeZdS )KernelsAPIHandlerzA kernels API handler.N)__name__
__module____qualname____doc__AUTH_RESOURCEauth_resource     Hlib/python3.11/site-packages/jupyter_server/services/kernels/handlers.pyr   r      s          !MMMr   r   c                   r    e Zd ZdZej        ed                         Zej        ed                         ZdS )MainKernelHandlerzThe root kernel handler.c                    K   | j         }t          |                                           d{V }|                     t	          j        |t                               dS )z Get the list of running kernels.Ndefault)kernel_managerr   list_kernelsfinishjsondumpsr   )selfkmr   s      r   getzMainKernelHandler.get$   s`        $R__%6%677777777DJw===>>>>>r   c                 ^  K   | j         }|                                 }|
d|j        i}n|                    d|j                   t	          |                    |d         |                    d                               d{V }t	          |                    |                     d{V }t          | j	        ddt          |                    }|                     d|           |                     d           |                     t          j        |t           	                     dS )
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4EEVR%;<<<&OO!&M		&0A0A   
 
 
 
 
 
 
 
	
 #2??9#=#=>>>>>>>> y*YBWBWXX
H---DJul;;;<<<<<r   N)	r   r   r   r   r   authenticatedr   r'   r:   r   r   r   r   r   !   sj        ""? ? Z ? 	= = Z = = =r   r   c                   r    e Zd ZdZej        ed                         Zej        ed                         ZdS )KernelHandlerzA kernel API handler.c                    K   | j         }t          |                    |                     d{V }|                     t	          j        |t                               dS )zGet a kernel model.Nr   )r    r   r3   r"   r#   r$   r   )r%   r8   r&   r7   s       r   r'   zKernelHandler.getF   sb        "2??9#=#=>>>>>>>>DJul;;;<<<<<r   c                    K   | j         }t          |                    |                     d{V  |                     d           |                                  dS )zRemove a kernel.N   )r    r   shutdown_kernelr6   r"   )r%   r8   r&   s      r   deletezKernelHandler.deleteN   sa        2--i88999999999r   N)	r   r   r   r   r   r;   r   r'   rB   r   r   r   r=   r=   C   sj        = = Z = 	  Z   r   r=   c                   B    e Zd ZdZej        ed                         ZdS )KernelActionHandlerzA kernel action API handler.c                   K   | j         }|dk    r=t          |                    |                     d{V  |                     d           |dk    r	 |                    |           d{V  t          |                    |                     d{V }|                     t          j        |t                               n# t          $ r{}d}| j                            |d           t          |j                  }|                     t          j        ||d	                     |                     d
           Y d}~nd}~ww xY w|                                  dS )zInterrupt or restart a kernel.	interruptNr@   restartr   zException restarting kernelT)exc_info)message	tracebacki  )r    r   interrupt_kernelr6   restart_kernelr3   writer#   r$   r   	Exceptionlogerrorr   __traceback__r"   )r%   r8   actionr&   r7   erI   rJ   s           r   r:   zKernelActionHandler.post[   s       [  r229==>>>>>>>>>OOC   Y
D''	222222222 +2??9+E+EFFFFFFFF

4:e\BBBCCCC  % % %7w666%ao66	

4:'	&R&RSSTTT$$$$$$$$% 	s   C 
EA1EEN)r   r   r   r   r   r;   r   r:   r   r   r   rD   rD   X   sA        &&  Z   r   rD   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#   rJ   r   jupyter_client.jsonutilr   ImportErrorr   jupyter_core.utilsr   tornador   jupyter_server.auth.decoratorr   jupyter_server.utilsr	   r
   base.handlersr   	websocketr   r   r   r   r=   rD   _kernel_id_regex_kernel_action_regexdefault_handlersr   r   r   <module>r`      s          E4444444 E E EDDDDDDDDE , + + + + +       4 4 4 4 4 4 : : : : : : : : ' ' ' ' ' ' - - - - - -" " " " "
 " " "= = = = =) = = =D    %   *    +   : 9 7  '(**M:B)BB,@BB !#335KL   s    ##