
    MhP                       d Z ddlmZ ddlZddlZddlZddlmZ ej        j	        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Zd Zd Z G d de          Z G d de          Z G d de          ZdZdefdez  efgZdS )zTornado handlers for kernel specifications.

Preliminary documentation at https://github.com/ipython/ipython/wiki/IPEP-25%3A-Registry-of-installed-kernels#rest-api
    )annotationsN)Any)ensure_async)web)
authorized   )
APIHandler)url_path_joinurl_unescapekernelspecsc                   ||i d}dD ]O}t           j                            t          ||                    r t	          | j        d||          |d         |<   Pt          j        t          |d                    D ]c}t           j                            |          }t           j                            |          \  }}	t	          | j        d||          |d         |<   d|S )z7Load a KernelSpec by name and return the REST API model)namespec	resources)z	kernel.jsz
kernel.cssr   r   zlogo-*)	ospathexistspjoinr
   base_urlglobbasenamesplitext)
handlerr   	spec_dictresource_dirdresource	logo_filefnameno_ext_s
             l/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/jupyter_server/services/kernelspecs/handlers.pykernelspec_modelr#      s    yr::A 0  7>>%h7788 	'4 -x( (AkN8$ Yu\8<<== ] ]	  ++G$$U++	!.w/?PTV[!\!\+vH    c                D    t          | t                    od| v od| v od| v S )z[Returns True if spec_dict is already in proper form.  This will occur when using a gateway.r   r   r   )
isinstancedict)r   s    r"   is_kernelspec_modelr(   -   s?     	9d## 	%i	%i	% 9$	r$   c                      e Zd ZdZeZdS )KernelSpecsAPIHandlerzA kernel spec API handler.N)__name__
__module____qualname____doc__AUTH_RESOURCEauth_resource r$   r"   r*   r*   7   s        $$!MMMr$   r*   c                  B    e Zd ZdZej        ed                         ZdS )MainKernelSpecHandlerzThe root kernel spec handler.c                  K   | j         }| j        }i }|j        |d<   i x|d<   }t          |                                           d{V }|                                D ]i\  }}	 t          |          r|}nt          | ||d         |d                   }n-# t          $ r  | j	        
                    d|d           Y `w xY w|||<   j|                     d	d
           |                     t          j        |                     dS )zGet the list of kernel specs.defaultr   Nr   r   z Failed to load kernel spec: '%s'T)exc_infoContent-Typeapplication/json)kernel_spec_managerkernel_managerdefault_kernel_namer   get_all_specsitemsr(   r#   	Exceptionlogerror
set_headerfinishjsondumps)	selfksmkmmodelspecskspecskernel_namekernel_infor   s	            r"   getzMainKernelSpecHandler.get@   sF      &  "1i'))mu#C$5$5$7$788888888(. 	# 	#$K&{33 #AA(##F+#N3	 A    A;Y]^^^ "#E+(:;;;DJu%%&&&&&s   %0B'C ?C Nr+   r,   r-   r.   r   authenticatedr   rM   r1   r$   r"   r3   r3   =   sA        ''' ' Z ' ' 'r$   r3   c                  B    e Zd ZdZej        ed                         ZdS )KernelSpecHandlerz(A handler for an individual kernel spec.c                  K   | j         }t          |          }	 t          |                    |                     d{V }n+# t          $ r}t          j        dd|z            |d}~ww xY wt          |          r|}n)t          | ||	                                |j
                  }|                     dd           |                     t          j        |                     dS )zGet a kernel spec model.Ni  zKernel spec %s not foundr7   r8   )r9   r   r   get_kernel_specKeyErrorr   	HTTPErrorr(   r#   to_dictr   rA   rB   rC   rD   )rE   rK   rF   r   erH   s         r"   rM   zKernelSpecHandler.get`   s       &";//	V%c&9&9+&F&FGGGGGGGGDD 	V 	V 	V-%?+%MNNTUU	Vt$$ 	[EE$T;HYZZE(:;;;DJu%%&&&&&s   (A 
A+A&&A+NrN   r1   r$   r"   rQ   rQ   ]   sA        22' ' Z ' ' 'r$   rQ   z(?P<kernel_name>[\w\.\-%]+)z/api/kernelspecsz/api/kernelspecs/%s)r.   
__future__r   r   rC   r   typingr   r   joinr   jupyter_core.utilsr   tornador   jupyter_server.auth.decoratorr   base.handlersr	   utilsr
   r   r/   r#   r(   r*   r3   rQ   kernel_name_regexdefault_handlersr1   r$   r"   <module>rb      s    # " " " " "   				      
 + + + + + +       4 4 4 4 4 4 ' ' ' ' ' ' 0 0 0 0 0 0 0 0  "  " " " " "J " " "' ' ' ' '1 ' ' '@' ' ' ' '- ' ' '. 3  /0//1BC   r$   