o
    i                     @   s   d Z ddlZddlmZ zddlmZ W n ey#   ddlmZ Y n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ZG dd deZG dd deZG dd deZG dd deZdZdZdefde efde de 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kernelsc                   @   s   e Zd ZdZeZdS )KernelsAPIHandlerzA kernels API handler.N)__name__
__module____qualname____doc__AUTH_RESOURCEauth_resource r   r   c/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/jupyter_server/services/kernels/handlers.pyr      s    r   c                   @   4   e Zd ZdZejedd Zejedd ZdS )MainKernelHandlerzThe root kernel handler.c                    s2   | j }t| I dH }| tj|td dS )z Get the list of running kernels.Ndefault)kernel_managerr   list_kernelsfinishjsondumpsr   )selfkmr   r   r   r   get#   s   zMainKernelHandler.getc                    s   | j }|  }|du rd|ji}n|d|j t|j|d |ddI dH }t||I dH }t| j	ddt
|}| d| | d | tj|td	 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locationr   r   r   post+   s   

zMainKernelHandler.postN)	r   r   r   r   r   authenticatedr   r!   r3   r   r   r   r   r           r   c                   @   r   )KernelHandlerzA kernel API handler.c                    s4   | j }t||I dH }| tj|td dS )zGet a kernel model.Nr   )r   r   r,   r   r   r   r   )r   r1   r    r0   r   r   r   r!   C   s   zKernelHandler.getc                    s2   | j }t||I dH  | d |   dS )zRemove a kernel.N   )r   r   shutdown_kernelr/   r   )r   r1   r    r   r   r   deleteK   s
   
zKernelHandler.deleteN)	r   r   r   r   r   r4   r   r!   r9   r   r   r   r   r6   @   r5   r6   c                   @   s"   e Zd ZdZejedd ZdS )KernelActionHandlerzA kernel action API handler.c              
      s   | j }|dkrt||I dH  | d |dkrkz
||I dH  W n1 tyV } z%d}| jj|dd t|j	}| 
t||d | d	 W Y d}~nd}~ww t||I dH }| 
tj|td
 |   dS )zInterrupt or restart a kernel.	interruptNr7   restartzException restarting kernelT)exc_info)message	tracebacki  r   )r   r   interrupt_kernelr/   restart_kernel	Exceptionlogerrorr   __traceback__writer   r   r,   r   r   )r   r1   actionr    er>   r?   r0   r   r   r   r3   X   s&   

zKernelActionHandler.postN)r   r   r   r   r   r4   r   r3   r   r   r   r   r:   U   s
    r:   z"(?P<kernel_id>\w+-\w+-\w+-\w+-\w+)z(?P<action>restart|interrupt)z/api/kernelsz/api/kernels/%sz/api/kernels//)r   r   r?   r   jupyter_client.jsonutilr   ImportErrorr   jupyter_core.utilsr   tornador   jupyter_server.authr   jupyter_server.utilsr   r	   base.handlersr   r   r   r   r6   r:   _kernel_id_regex_kernel_action_regexdefault_handlersr   r   r   r   <module>   s4     
