o
    tf
                     @   sr   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 d	ZG d
d deje	Zde efgZdS )zKernelspecs API Handlers.    N)ensure_async)web)
authorized   )JupyterHandler)kernel_name_regexZkernelspecsc                   @   sF   e Zd ZdZdZeZdd Zej	e
dddZej	e
dd	 Zd
S )KernelSpecResourceHandlerzA Kernelspec resource handler.)GETHEADc                 C   s   t jj| dd dS )z)Initialize a kernelspec resource handler. )pathN)r   StaticFileHandler
initialize)self r   l/var/www/html/software/conda/envs/catlas/lib/python3.10/site-packages/jupyter_server/kernelspecs/handlers.pyr      s   z$KernelSpecResourceHandler.initializeTc           	   
      s  | j }| dr| ddd  | j }t|drO|||I dH }|durB|| _t|d p4d}| d	| | 	| dS | j
d
| d| d zt||I dH }|j| _W n tyt } z	tdd| |d}~ww | j
d| j tjj| ||dI dH S )zGet a kernelspec resource.z.pngzCache-Controlzmax-age=i ' get_kernel_spec_resourceNr   z
text/plainzContent-TypezKernelspec resource 'z' for 'ze' not found.  Kernel spec manager may not support resource serving. Falling back to reading from diski  zKernel spec %s not foundz Serving kernel resource from: %sinclude_body)Zkernel_spec_managerlowerendswithZ
set_headerhasattrr   Zabsolute_path	mimetypes
guess_typefinishlogwarningr   Zget_kernel_specresource_dirrootKeyErrorr   	HTTPErrordebugr   get)	r   kernel_namer   r   ZksmZkernel_spec_resmimetypeZkspecer   r   r   r"      s2   

zKernelSpecResourceHandler.getc                    s   t | j||ddI dH S )z(Get the head info for a kernel resource.Fr   N)r   r"   )r   r#   r   r   r   r   head;   s   zKernelSpecResourceHandler.headN)T)__name__
__module____qualname____doc__ZSUPPORTED_METHODSAUTH_RESOURCEZauth_resourcer   r   authenticatedr   r"   r&   r   r   r   r   r      s    r   z/kernelspecs/%s/(?P<path>.*))r*   r   Zjupyter_core.utilsr   tornador   Zjupyter_server.auth.decoratorr   Zbase.handlersr   Zservices.kernelspecs.handlersr   r+   r   r   Zdefault_handlersr   r   r   r   <module>   s    
3