Ë
    :vžj™!  ã                   óü   — d Z ddl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d	lmZ dd
lmZ ddlmZ dZ G d„ de«      Z G d„ de«      Z G d„ de«      ZdZdez  efdefgZy# e$ r	 ddlmZ Y Œhw xY w)zÀTornado handlers for the sessions web service.

Preliminary documentation at https://github.com/ipython/ipython/wiki/IPEP-16%3A-Notebook-multi-directory-dashboard-and-URL-mapping#sessions-api
é    N)Újson_default)Údate_default)ÚNoSuchKernel)ÚDuplicateKernelError)Úensure_async)Úweb)Ú
authorized)Úurl_path_joiné   )Ú
APIHandlerÚsessionsc                   ó   — e Zd ZdZeZy)ÚSessionsAPIHandlerzA Sessions API handler.N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚAUTH_RESOURCEÚauth_resource© ó    úz/workspace/moltex-experiments/.pixi/envs/default/lib/python3.12/site-packages/jupyter_server/services/sessions/handlers.pyr   r      s
   „ Ù!à!�Mr   r   c                   ól   — e Zd ZdZej
                  ed„ «       «       Zej
                  ed„ «       «       Zy)ÚSessionRootHandlerzA Session Root API handler.c              ƒ   ó¾   K  — | j                   }t        |j                  «       «      ƒ d{  –—† }| j                  t	        j
                  |t        ¬«      «       y7 Œ/­w)zGet a list of running sessions.N©Údefault)Úsession_managerr   Úlist_sessionsÚfinishÚjsonÚdumpsr   )ÚselfÚsmr   s      r   ÚgetzSessionRootHandler.get&   sE   è ø€ ð ×!Ñ!ˆÜ% b×&6Ñ&6Ó&8Ó9×9ˆØ�‰”D—J‘J˜x´Ô>Õ?ð :ús   ‚)A«A¬0Ac              ƒ   ó¸  K  — | j                   }| j                  «       }|€t        j                  dd«      ‚d|v rE| j                  j                  d«       d|d<   d|d   v r|d   d   |d<   nd|d   v r|d   d   |d<   	 |d   }	 |d   }|j                  dd«      }|j                  di «      }|j                  dd«      }|j                  dd«      }	|	s|s| j                  j                  d«       d}t        |j                  |¬«      «      ƒ d{  –—† }
|
r|j                  |¬«      ƒ d{  –—† }n	 |j                  |||	||¬«      ƒ d{  –—† }t+        | j,                  dd|d   «      }| j/                  d|«       | j                  d«       | j                  t!        j"                  |t0        ¬«      «       y# t        $ r}t        j                  dd	«      |‚d}~ww xY w# t        $ r}t        j                  dd
«      |‚d}~ww xY w7 Œù7 Œß7 ŒÁ# t        $ rc d|z  }d|z  }| j                  j                  d|z  «       | j                  d«       | j                  t!        j"                  ||dœ«      «       Y yt$        $ r%}t        j                  dt'        |«      «      |‚d}~wt(        $ r%}t        j                  dt'        |«      «      |‚d}~ww xY w­w)zCreate a new session.Né�  úNo JSON data providedÚnotebookú.Sessions API changed, see updated swagger docsÚtypeÚnameÚpathz Missing field in JSON data: pathz Missing field in JSON data: typeÚkernelÚidz)No kernel specified, using default kernel)r-   )r-   Úkernel_nameÚ	kernel_idr,   r+   zfThe '%s' kernel is not available. Please pick another suitable kernel instead, or install that kernel.z%s not foundzKernel not found: %séõ  ©ÚmessageÚshort_messagei™  iô  Úapir   ÚLocationéÉ   r   )r   Úget_json_bodyr   Ú	HTTPErrorÚlogÚwarningÚKeyErrorr%   Údebugr   Úsession_existsÚget_sessionÚcreate_sessionr   Ú
set_statusr    r!   r"   r   ÚstrÚ	Exceptionr
   Úbase_urlÚ
set_headerr   )r#   r$   Úmodelr-   ÚeÚmtyper,   r.   r0   r1   ÚexistsÚs_modelÚmsgÚ
status_msgÚlocations                  r   ÚpostzSessionRootHandler.post.   sÔ  è ø€ ð
 ×!Ñ!ˆà×"Ñ"Ó$ˆØˆ=Ü—-‘- Ð%<Ó=Ð=à˜ÑØ�H‰H×ÑÐMÔNØ&ˆE�&‰MØ˜˜zÑ*Ñ*Ø % jÑ 1°&Ñ 9��f’Ø˜5 Ñ,Ñ,Ø % jÑ 1°&Ñ 9��f‘ð	Pð ˜‘=ˆDð	PØ˜&‘MˆEð �y‰y˜ Ó&ˆØ—‘˜8 RÓ(ˆØ—j‘j ¨Ó.ˆØ—J‘J˜t TÓ*ˆ	á¡Ø�H‰H�N‰NÐFÔGØˆKä# B×$5Ñ$5¸4Ð$5Ó$@ÓA×AˆÙØŸN™N°˜NÓ5×5‰Gð8Ø "× 1Ñ 1ØØ +Ø'ØØð !2ó !÷ �ô, ! §¡°°zÀ7È4Á=ÓQˆØ�‰˜
 HÔ-Ø�‰˜ÔØ�‰”D—J‘J˜w´Ô=Õ>øô_ ò 	PÜ—-‘- Ð%GÓHÈaÐOûð	Pûô
 ò 	PÜ—-‘- Ð%GÓHÈaÐOûð	Púð Bøà5øðùô  ò 	ðGØITñUð ð ,¨kÑ9�
Ø—‘× Ñ Ð!7¸+Ñ!EÔFØ—‘ Ô$Ø—‘œDŸJ™J°3ÈÑ'TÓUÔVÙÜ'ò 8Ü—m‘m C¬¨Q«Ó0°aÐ7ûÜò 8Ü—m‘m C¬¨Q«Ó0°aÐ7ûð8üs·   ‚A>KÂF= ÂG% ÂBKÄHÄKÄ/HÄ0KÄ6H ÅHÅH ÅA)KÆ=	G"ÇGÇG"Ç"KÇ%	H
Ç.HÈH
È
KÈKÈH ÈA)KÉ<KÉ>KÊ J&Ê&KÊ2 KËKËKN)	r   r   r   r   r   Úauthenticatedr	   r%   rO   r   r   r   r   r   #   sK   „ Ù%à×ÑØñ@ó ó ð@ð 	×ÑØñD?ó ó ñD?r   r   c                   óš   — e Zd ZdZej
                  ed„ «       «       Zej
                  ed„ «       «       Zej
                  ed„ «       «       Z	y)ÚSessionHandlerzA handler for a single session.c              ƒ   ó°   K  — | j                   }|j                  |¬«      ƒ d{  –—† }| j                  t        j                  |t
        ¬«      «       y7 Œ/­w)z(Get the JSON model for a single session.©Ú
session_idNr   )r   r@   r    r!   r"   r   )r#   rU   r$   rG   s       r   r%   zSessionHandler.getz   sB   è ø€ ð ×!Ñ!ˆØ—n‘n°
�nÓ;×;ˆØ�‰”D—J‘J˜u¬lÔ;Õ<ð <ús   ‚"A¤A¥0Ac           	   ƒ   ó0  K  — | j                   }| j                  }| j                  «       }|€t        j                  dd«      ‚|j                  |¬«      ƒ d{  –—† }i }d|v r2d|d   v r+| j                  j                  d«       |d   d   |d<   d|d<   d|v r|d   |d<   d	|v r|d	   |d	<   d|v r|d   |d<   d
|v rˆ|d
   j                  d«      �+|d
   d   }||vrt        j                  dd|z  «      ‚||d<   nI|d
   j                  d	«      �5|d
   d	   }	 |j                  |||d	   |d   |d   ¬«      ƒ d{  –—† }||d<    |j$                  |fi |¤Žƒ d{  –—†  |j                  |¬«      ƒ d{  –—† }|d
   d   |d
   d   k7  rJt'        j(                  t+        |j-                  |d
   d   «      «      «      }t/        |dd«      s
|ƒ d{  –—†  | j                  t!        j"                  |t0        ¬«      «       y7 �Œ¨7 ŒÇ# t        $ r}}	d|›dt        t        |	«      «      ›�}
d|z  }| j                  j                  d|«       | j                  d«       | j                  t!        j"                  |
|dœ«      «       Y d}	~	yd}	~	ww xY w7 �Œ37 �Œ7 ŒÃ­w)z™Patch updates sessions:

        - path updates session to track renamed paths
        - kernel.name starts a new kernel with a given kernelspec
        Nr'   r(   rT   r)   r-   r*   r+   r,   r.   r/   zNo such kernel: %sr1   )r0   r,   r-   r+   zThe 'z' kernel could not be started: zError starting kernel %szError starting kernel: %sr2   r3   Úuse_pending_kernelsr   )r   Úkernel_managerr9   r   r:   r@   r;   r<   r%   Ústart_kernel_for_sessionrD   ÚreprrC   ÚerrorrB   r    r!   r"   Úupdate_sessionÚasyncioÚensure_futurer   Úshutdown_kernelÚgetattrr   )r#   rU   r$   ÚkmrG   ÚbeforeÚchangesr1   r0   rH   rL   rM   rK   Úfuts                 r   ÚpatchzSessionHandler.patch‚   sÊ  è ø€ ð ×!Ñ!ˆØ× Ñ ˆØ×"Ñ"Ó$ˆØˆ=Ü—-‘- Ð%<Ó=Ð=ð —~‘~°�~Ó<×<ˆàˆØ˜Ñ 6¨U°:Ñ->Ñ#>Ø�H‰H×ÑÐMÔNØ! *Ñ-¨fÑ5ˆE�&‰MØ&ˆE�&‰MØ�U‰?Ø# F™mˆG�F‰OØ�U‰?Ø# F™mˆG�F‰OØ�U‰?Ø# F™mˆG�F‰OØ�uÑà�X‰×"Ñ" 4Ó(Ð4Ø! (™O¨DÑ1�	Ø BÑ&ÜŸ-™-¨Ð-AÀIÑ-MÓNÐNØ'0�˜Ò$Ø�x‘×$Ñ$ VÓ,Ð8Ø# H™o¨fÑ5�ðØ&(×&AÑ&AØ"Ø$/Ø# F™^Ø# F™^Ø# F™^ð 'Bó '÷ !�Ið ,5�G˜KÑ(ð   ˆb×Ñ 
Ñ6¨gÑ6×6Ð6ØŸ™°*˜Ó=×=ˆà�8Ñ˜TÑ" f¨XÑ&6°tÑ&<Ò<ô ×'Ñ'¬°R×5GÑ5GÈÈxÑHXÐY]ÑH^Ó5_Ó(`ÓaˆCä˜2Ð4°dÔ;Ø—	�	Ø�‰”D—J‘J˜w´Ô=Õ>ðs =ùð0!ùô !ó ò $ÜœS ›Vœð�Cð "<¸kÑ!I�JØ—H‘H—N‘NÐ#>ÀÔLØ—O‘O CÔ(Ø—K‘K¤§
¡
°sÈZÑ+XÓ YÔZÜûðúð 	7ùØ=ùð ús�   ‚AJÁH ÁB?JÄ"H Ä;HÄ<	H ÅJÅJÅJÅ5JÅ6AJÇJÇ0JÈH È	JÈA3JÊJÊJÊJÊJÊJc              ƒ   óî   K  — | j                   }	 |j                  |«      ƒ d{  –—†  | j                  d«       | j                  «        y7 Œ&# t        $ r}t        j                  dd«      |‚d}~ww xY w­w)z)Delete the session with given session_id.Niš  zKernel deleted before sessionéÌ   )r   Údelete_sessionr=   r   r:   rB   r    )r#   rU   r$   rH   s       r   ÚdeletezSessionHandler.deleteÌ   sn   è ø€ ð ×!Ñ!ˆð	MØ×#Ñ# JÓ/×/Ð/ð 	�‰˜ÔØ�‰�ð 0ùÜò 	Mä—-‘- Ð%DÓEÈ1ÐLûð	Müs7   ‚A5�A ¤A¥A ©"A5ÁA Á	A2ÁA-Á-A2Á2A5N)
r   r   r   r   r   rP   r	   r%   re   ri   r   r   r   rR   rR   w   sl   „ Ù)à×ÑØñ=ó ó ð=ð 	×ÑØñF?ó ó ðF?ðP 	×ÑØñ	ó ó ñ	r   rR   z#(?P<session_id>\w+-\w+-\w+-\w+-\w+)z/api/sessions/%sz/api/sessions)r   r]   r!   Újupyter_client.jsonutilr   ÚImportErrorr   Újupyter_client.kernelspecr   Ú!jupyter_client.multikernelmanagerr   Újupyter_core.utilsr   Útornador   Újupyter_server.auth.decoratorr	   Újupyter_server.utilsr
   Úbase.handlersr   r   r   r   rR   Ú_session_id_regexÚdefault_handlersr   r   r   Ú<module>ru      s£   ðñó Û ðEÝ4õ 3Ý BÝ +Ý å 4Ý .å 'à€ô"˜ô "ôQ?Ð+ô Q?ôh`Ð'ô `ðN ;Ð ð Ð,Ñ,¨nÐ=ØÐ)Ð*ðÑ øðg ò EßDðEús   ŒA- Á-A;Á:A;