
    lKj/                       d Z ddlmZ ddl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y)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 ]J  }t         j                  j                  t        ||            s-t	        | j
                  d||      |d   |<   L t        j                  t        |d            D ]a  }t         j                  j                  |      }t         j                  j                  |      \  }}	t	        | j
                  d||      |d   |<   c |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
             }/Users/ahmed/devFolder/Ultron/claude-voice/.venv/lib/python3.12/site-packages/jupyter_server/services/kernelspecs/handlers.pykernelspec_modelr#      s    yr:A 077>>%h78'4  -x(AkN8$ 0
 YYu\8<=	  +GG$$U+	!.w/?/?PTV[!\+v > H    c                F    t        | t              xr d| v xr
 d| v xr 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y)KernelSpecsAPIHandlerzA kernel spec API handler.N)__name__
__module____qualname____doc__AUTH_RESOURCEauth_resource r$   r"   r*   r*   8   s
    $!Mr$   r*   c                  >    e Zd ZdZej
                  ed               Zy)MainKernelSpecHandlerzThe root kernel spec handler.c           
     F  K   | j                   }| j                  }i }|j                  |d<   i x|d<   }t        |j	                                d{   }i }|j                         D ]  \  }}t        |      r|||<   |j                  d      }	|j                  d      }
|	| j                  j                  d|       X|
| j                  j                  d|       wt        j                  t        j                  t        | ||	|
            ||<    |j                         D ]  \  }}	 | d{   ||<    | j                  dd       | j!                  t#        j$                  |             y7  7 C# t        $ r! | j                  j                  d|d	
       Y {w xY ww)zGet the list of kernel specs.defaultr   Nr   r   zKernel spec is missing for %sz%Kernel resource_dir is missing for %sz 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(   getlogerrorasynciocreate_task	to_threadr#   	Exception
set_headerfinishjsondumps)selfksmkmmodelspecskspecstaskskernel_namekernel_infokernel_speckernel_resource_dirtasks               r"   r>   zMainKernelSpecHandler.getA   s     &&   "11i'))mu#C$5$5$788(.$K";/%0k")oof5&1oon&E#&HHNN#BKP&.HHNN#JKX%,%8%8%%(##+&k" )7, "'K_+/Zk" "/
 	(:;DJJu%&= 94 &0 _A;Y]^_sI   AF!E/CF!)E4.E2/E46:F!2E44'FF!FF!Nr+   r,   r-   r.   r   authenticatedr   r>   r1   r$   r"   r3   r3   >   s%    '%'  %'r$   r3   c                  >    e Zd ZdZej
                  ed               Zy)KernelSpecHandlerz(A handler for an individual kernel spec.c                  K   | j                   }t        |      }	 t        |j                  |             d{   }t        |      r|}n=t        j                  t        | ||j                         |j                         d{   }| j                  dd       | j                  t        j                   |             y7 # t        $ r}t        j                  dd|z        |d}~ww xY w7 hw)zGet a kernel spec model.Ni  zKernel spec %s not foundr7   r8   )r9   r   r   get_kernel_specKeyErrorr   	HTTPErrorr(   rA   rC   r#   to_dictr   rE   rF   rG   rH   )rI   rP   rJ   r   erL   s         r"   r>   zKernelSpecHandler.getn   s      &&";/	V%c&9&9+&FGGD t$E!++ !! E 	(:;DJJu%& H 	V--%?+%MNTUU	V
sD   C.C B?C AC.C,;C.?C 	C)
C$$C))C.NrU   r1   r$   r"   rX   rX   k   s%    2'  'r$   rX   z(?P<kernel_name>[\w\.\-%]+)z/api/kernelspecsz/api/kernelspecs/%s)r.   
__future__r   rA   r   rG   r   typingr   r   joinr   jupyter_core.utilsr   tornador   jupyter_server.auth.decoratorr   base.handlersr	   utilsr
   r   r/   r#   r(   r*   r3   rX   kernel_name_regexdefault_handlersr1   r$   r"   <module>ri      s    #    	 
 +  4 ' 0""J "*'1 *'Z'- ': 3  /0//1BC r$   