
    ^h.                     &   S r SSKr SSKJr  SSKJr  SSKJ	r	  SSK
Jr  SSKJrJr  S	S
KJr  SSKJr  Sr " S S\5      r " S S\5      r " S S\5      r " S S\5      rSrSrS\4S\-  \4S\ S\ 3\4S\-  \4/rg! \ a	    SSKJr   Nf = f)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                       \ rS rSrSr\rSrg)KernelsAPIHandler   zA kernels API handler. N)__name__
__module____qualname____firstlineno____doc__AUTH_RESOURCEauth_resource__static_attributes__r       b/home/james-whalen/.local/lib/python3.13/site-packages/jupyter_server/services/kernels/handlers.pyr   r      s
     !Mr   r   c                   t    \ rS rSrSr\R                  \S 5       5       r\R                  \S 5       5       r	Sr
g)MainKernelHandler!   zThe root kernel handler.c                    #    U R                   n[        UR                  5       5      I Sh  vN nU R                  [        R
                  " U[        S95        g N-7f)z Get the list of running kernels.Ndefault)kernel_managerr   list_kernelsfinishjsondumpsr   )selfkmr   s      r   getMainKernelHandler.get$   sB        $R__%677DJJw=> 8s   )AA.Ac                 *  #    U R                   nU R                  5       nUc  SUR                  0nOUR                  SUR                  5        [	        UR                  US   UR                  S5      S95      I Sh  vN n[	        UR                  U5      5      I Sh  vN n[        U R                  SS[        U5      5      nU R                  SU5        U R                  S5        U R                  [        R                  " U[         S	95        g N Ns7f)
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   postMainKernelHandler.post,   s        ""$=R334EVR%;%;<&OO!&M		&0A  
 
	
 #2??9#=>> y*YBWX
H-DJJul;<

 ?s%   A9D;D<!DDA2DDr   N)r   r   r   r   r   r   authenticatedr   r*   r>   r   r   r   r   r   r   !   sG    "?  ? 	=  =r   r   c                   t    \ rS rSrSr\R                  \S 5       5       r\R                  \S 5       5       r	Sr
g)KernelHandlerC   zA kernel API handler.c                    #    U R                   n[        UR                  U5      5      I Sh  vN nU R                  [        R
                  " U[        S95        g N-7f)zGet a kernel model.Nr!   )r#   r   r7   r%   r&   r'   r   )r(   r<   r)   r;   s       r   r*   KernelHandler.getF   sD        "2??9#=>>DJJul;< ?s   *AA.Ac                    #    U R                   n[        UR                  U5      5      I Sh  vN   U R                  S5        U R	                  5         g N&7f)zRemove a kernel.N   )r#   r   shutdown_kernelr:   r%   )r(   r<   r)   s      r   deleteKernelHandler.deleteN   sE        2--i8999 	:s   *AA'Ar   N)r   r   r   r   r   r   r@   r   r*   rI   r   r   r   r   rB   rB   C   sG    =  = 	  r   rB   c                   F    \ rS rSrSr\R                  \S 5       5       rSr	g)KernelActionHandlerX   zA kernel action API handler.c                 `  #    U R                   nUS:X  a3  [        UR                  U5      5      I Sh  vN   U R                  S5        US:X  ad   UR	                  U5      I Sh  vN   [        UR                  U5      5      I Sh  vN nU R                  [        R                  " U[        S95        U R                  5         g N Na NA! [         aX    SnU R                  R                  USS9  U R                  [        R                  " US	S
.5      5        U R                  S5         Nxf = f7f)zInterrupt or restart a kernel.	interruptNrG   restartr!   zException restarting kernelT)exc_info )message	tracebacki  )r#   r   interrupt_kernelr:   restart_kernelr7   writer&   r'   r   	Exceptionlogerrorr%   )r(   r<   actionr)   r;   rS   s         r   r>   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$	%sX   0D.CD.C	 #C$C	 (D.C>D.C	 D.	AD+(D.*D++D.r   N)
r   r   r   r   r   r   r@   r   r>   r   r   r   r   rL   rL   X   s%    &  r   rL   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   rB   rL   _kernel_id_regex_kernel_action_regexdefault_handlersr   r   r   <module>ri      s    E4 ,  4 : ' -"
 "=) =D% *+ 8 9 7  '(**M:)*!,@+AB !#335KL W  EDEs   B BB