Ë
    :vžj/  ã                  ó  — 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)z¤Tornado 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
             ú}/workspace/moltex-experiments/.pixi/envs/default/lib/python3.12/site-packages/jupyter_server/services/kernelspecs/handlers.pyÚkernelspec_modelr#      sÃ   € à˜y°rÑ:€Aó 0ˆÜ�7‰7�>‰>œ% ¨hÓ7Õ8Ü'4Ø× Ñ  -°°xó(ˆAˆk‰N˜8Ò$ð 0ô
 —Y‘Yœu \°8Ó<Ö=ˆ	Ü—‘× Ñ  Ó+ˆÜ—G‘G×$Ñ$ UÓ+‰	ˆ�Ü!.¨w×/?Ñ/?ÀÐPTÐV[Ó!\ˆˆ+‰�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<   € ô 	�9œdÓ#ò 	%Ø�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Ò"à)Ÿo™o¨fÓ5�Ø&1§o¡o°nÓ&EÐ#ØÐ&Ø—H‘H—N‘NÐ#BÀKÔPØà&Ð.Ø—H‘H—N‘NÐ#JÈKÔXØÜ%,×%8Ñ%8Ü×%Ñ%Ü(ØØ#Ø#Ø+óó&��kÒ"ð )7ð, "'§¡¦ÑˆK˜ð_Ø+/§Z��kÒ"ð "/ð
 	�‰˜Ð(:Ô;Ø�‰”D—J‘J˜uÓ%Õ&ð= 9ùð4 &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×GˆDô ˜tÔ$Ø‰Eä!×+Ñ+Ü ØØØ—‘“Ø×!Ñ!ó÷ ˆEð 	�‰˜Ð(:Ô;Ø�‰”D—J‘J˜uÓ%Õ&ð HùÜò 	VÜ—-‘- Ð%?À+Ñ%MÓNÐTUÐ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$   