o
    ^i
                     @   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_regex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   ^/home/ubuntu/hpml_nyu/venv/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)kernel_spec_managerlowerendswith
set_headerhasattrr   absolute_path	mimetypes
guess_typefinishlogwarningr   get_kernel_specresource_dirrootKeyErrorr   	HTTPErrordebugr   get)	r   kernel_namer   r   ksmkernel_spec_resmimetype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__SUPPORTED_METHODSAUTH_RESOURCEauth_resourcer   r   authenticatedr   r'   r.   r   r   r   r   r	      s    r	   z/kernelspecs/%s/(?P<path>.*))r2   r   jupyter_core.utilsr   tornador   jupyter_server.auth.decoratorr   base.handlersr   services.kernelspecs.handlersr   r4   r   r	   default_handlersr   r   r   r   <module>   s    
3