
    Mh                         d Z ddlZddlZ	 ddlmZ n# e$ r	 ddlmZ Y nw xY w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dS )zTornado 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)ensure_async)web)
authorized)url_path_join   )
APIHandlersessionsc                       e Zd ZdZeZdS )SessionsAPIHandlerzA Sessions API handler.N)__name__
__module____qualname____doc__AUTH_RESOURCEauth_resource     i/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/jupyter_server/services/sessions/handlers.pyr   r      s        !!!MMMr   r   c                   r    e Zd ZdZej        ed                         Zej        ed                         ZdS )SessionRootHandlerzA Session Root API handler.c                    K   | j         }t          |                                           d{V }|                     t	          j        |t                               dS )zGet a list of running sessions.Ndefault)session_managerr   list_sessionsfinishjsondumpsr   )selfsmr   s      r   getzSessionRootHandler.get%   sb       !%b&6&6&8&899999999DJx>>>?????r   c                   K   | j         }|                                 }|t          j        dd          d|v rV| j                            d           d|d<   d|d         v r|d         d         |d<   nd|d         v r|d         d         |d<   	 |d         }n(# t          $ r}t          j        dd	          |d}~ww xY w	 |d         }n(# t          $ r}t          j        dd
          |d}~ww xY w|                    dd          }|                    di           }|                    dd          }|                    dd          }	|	s|s| j                            d           d}t          |
                    |                     d{V }
|
r|                    |           d{V }n	 |                    |||	||           d{V }n# t          $ rj d|z  }d|z  }| j                            d|z             |                     d           |                     t!          j        ||d                     Y dS t$          $ r(}t          j        dt'          |                    |d}~ww xY wt)          | j        dd|d                   }|                     d|           |                     d           |                     t!          j        |t.                               dS )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  apir   Location   r   )r   get_json_bodyr   	HTTPErrorlogwarningKeyErrorr$   debugr   session_existsget_sessioncreate_sessionr   
set_statusr   r    r!   	Exceptionstrr	   base_url
set_headerr   )r"   r#   modelr,   emtyper+   r-   r/   r0   existss_modelmsg
status_msglocations                  r   postzSessionRootHandler.post-   s     
 !""$$=-%<===HMNNN&E&Mz*** %j 1& 9f5,,, %j 1& 9f	P =DD 	P 	P 	P-%GHHaO	P	P&MEE 	P 	P 	P-%GHHaO	P yy&&8R((jj..JJtT**	 	 	HNNFGGGK#B$5$54$5$@$@AAAAAAAA 	8NNN55555555GG8 " 1 1 +' !2 ! !         	 	 	GITU  ,k9
  !7+!EFFF$$$DJ3'T'TUUVVV 8 8 8mCQ00a78 !z74=QQ
H---DJw===>>>>>sO   B 
B>#B99B>C 
C0C++C04 G A0I9	I9#I44I9N)	r   r   r   r   r   authenticatedr   r$   rN   r   r   r   r   r   "   sr        %%@ @ Z @ 	B? B? Z B? B? B?r   r   c                       e Zd ZdZej        ed                         Zej        ed                         Zej        ed                         Z	dS )SessionHandlerzA handler for a single session.c                    K   | j         }|                    |           d{V }|                     t          j        |t
                               dS )z(Get the JSON model for a single session.
session_idNr   )r   r?   r   r    r!   r   )r"   rT   r#   rF   s       r   r$   zSessionHandler.getw   s\       !nn
n;;;;;;;;DJul;;;<<<<<r   c           	        K   | j         }| j        }|                                 }|t          j        dd          |                    |           d{V }i }d|v r:d|d         v r0| j                            d           |d         d         |d<   d|d<   d|v r|d         |d<   d	|v r|d	         |d	<   d|v r|d         |d<   d
|v rF|d
                             d          0|d
         d         }||vrt          j        dd|z            ||d<   n|d
                             d	          |d
         d	         }	 |	                    |||d	         |d         |d                    d{V }||d<   n# t          $ r}	d|dt          t          |	                    }
d|z  }| j                            d|           |                     d           |                     t!          j        |
|d                     Y d}	~	dS d}	~	ww xY w |j        |fi | d{V  |                    |           d{V }|d
         d         |d
         d         k    rYt'          j        t+          |                    |d
         d                                       }t/          |dd          s| d{V  |                     t!          j        |t0                               dS )zPatch updates sessions:

        - path updates session to track renamed paths
        - kernel.name starts a new kernel with a given kernelspec
        Nr&   r'   rS   r(   r,   r)   r*   r+   r-   r.   zNo such kernel: %sr0   )r/   r+   r,   r*   zThe 'z' kernel could not be started: zError starting kernel %szError starting kernel: %sr1   r2   use_pending_kernelsr   )r   kernel_managerr8   r   r9   r?   r:   r;   r$   start_kernel_for_sessionrB   reprrC   errorrA   r   r    r!   update_sessionasyncioensure_futurer   shutdown_kernelgetattrr   )r"   rT   r#   kmrF   beforechangesr0   r/   rG   rK   rL   rJ   futs                 r   patchzSessionHandler.patch   s      ! ""$$=-%<=== ~~~<<<<<<<<6U:->#>#>HMNNN!*-f5E&M&E&MU??#FmGFOU??#FmGFOU??#FmGFOuX""4((4!(OD1	B&&--AI-MNNN'0$$x$$V,,8#Hof5&(&A&A"$/#F^#F^#F^ 'B ' ' ! ! ! ! ! !I ,5GK((      $SVVC "<k!IJHNN#>LLLOOC(((KK
sZ+X+X Y YZZZFFFFF  b
66g666666666*========8T"fX&6t&<<< 'R5G5GxHXY]H^5_5_(`(`aaC24d;; 							DJw===>>>>>s   ?7E7 7
HBHHc                    K   | j         }	 |                    |           d{V  n(# t          $ r}t          j        dd          |d}~ww xY w|                     d           |                                  dS )z)Delete the session with given session_id.Ni  zKernel deleted before session   )r   delete_sessionr<   r   r9   rA   r   )r"   rT   r#   rG   s       r   deletezSessionHandler.delete   s       !	M##J////////// 	M 	M 	M-%DEE1L	M 	s   ' 
AAAN)
r   r   r   r   r   rO   r   r$   rd   rh   r   r   r   rQ   rQ   t   s        ))= = Z = 	F? F? Z F?P 		 	 Z 	 	 	r   rQ   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_core.utilsr   tornador   jupyter_server.auth.decoratorr   jupyter_server.utilsr	   base.handlersr   r   r   r   rQ   _session_id_regexdefault_handlersr   r   r   <module>rs      s     E4444444 E E EDDDDDDDDE 3 2 2 2 2 2 + + + + + +       4 4 4 4 4 4 . . . . . . ' ' ' ' ' '" " " " " " " "O? O? O? O? O?+ O? O? O?d` ` ` ` `' ` ` `N ;  ,,n=)*   s    !!