
    oi                         d dl Z d dlZd dlmZmZ d dlmZ d dlmZ d dl	m
Z
 	 dZd dlmZ d d	lmZ d d
lmZ d dlmZmZ d dlZd dlZd dlZer G d deee      Zy G d d      Zy# e$ r dZY Dw xY w)    N)	AwaitableUnion)JupyterHandler)WebSocketHandler)	HTTPErrorT)WebSocketMixinF)ensure_async)CellExecutionError)VoilaExecutorstrip_code_cell_warningsc                   h     e Zd Zi Z fdZdeddf fdZdeeef   dee	d   df   fdZ
d	dZ xZS )
ExecutionRequestHandlerc                 "    t         |           y N)super
initialize)selfkwargs	__class__s     o/home/ubuntu/docker-apps/notebooks/venv/lib/python3.12/site-packages/voila/tornado/execution_request_handler.pyr   z"ExecutionRequestHandler.initialize   s    G     	kernel_idreturnNc                    K   | j                   j                  d      }t        |j                  |              d{   }|t	        dd      t
        |           || _        | j                  di d       y7 <w)zCreate a new websocket connection, this connection is
            identified by the kernel id.

            Args:
                kernel_id (str): Kernel id used by the notebook when it opens
                the websocket connection.
            identity_providerNi  Unauthenticatedinitializedactionpayload)	settingsgetr	   get_userr   r   open
_kernel_idwrite_message)r   r   r   userr   s       r   r$   zExecutionRequestHandler.open   st      !% 1 12E F%&7&@&@&FGGD|%677GLN'DO-BGH Hs   9A;A9=A;message_strc           
      z  K   t        j                  |      }|j                  dd       }|j                  di       }|dk(  r|j                  d      }|| j                  k7  r| j	                  dddid       d {    y | j
                  j                  | j                        }t        |       d {   }| j                  j                  | j                  d       }|| j	                  ddd	id       d {    y |d
   }	t        |	||d   |d         x| _        }
|
j                          d {   |
_        t        |	j                        }t!        |	j                        D ]U  \  }}	 |
j#                  |d |d       d {   }|j                  dd        | j	                  d|||dd       d {    W y y 7 G7 7 7 7 D# t$        $ r |}Y Ot&        $ rM | j(                  j+                  d|       |
j-                         rt/        |       |
j1                  |       |}Y t2        $ r}| j(                  j+                  d|       t4        j6                  j9                         }|
j-                         r&dddj;                  |
j<                        dg|_        nKdtA        |      jB                  tE        |      tG        jH                  tK        jL                          dg|_        Y d }~ld }~ww xY w7 G# j                  dd        | j	                  d|||dd       d {  7   w xY ww)Nr   r    executer   execution_errorerrorzKernel ID does not matchr   zMissing notebook datanbconfigshow_tracebacks)kmr.   r/   F)store_historyz(Error at server while executing cell: %rstreamstderrz:An exception occurred at the server (not the notebook). {})output_typenametext)r4   enameevalue	tracebacksourceexecution_result)output_cell
cell_index
total_cell)'jsonloadsr"   r%   r&   kernel_manager
get_kernelr	   _execution_datapopr   	_executorasync_start_new_kernel_clientkclencells	enumerateexecute_cellTimeoutErrorr
   log	exceptionshould_strip_errorr   strip_code_cell_errors	Exceptionnbformatv4new_code_cellformatcell_error_instructionoutputstype__name__strr9   format_exceptionsysexc_info)r   r(   messager   r    request_kernel_idkernel_futurer0   execution_datar-   executorr>   cell_idx
input_cellr<   es                   r   
on_messagez"ExecutionRequestHandler.on_message-   sM     jj-G[[40Fkk)R0G"$+KK$<!$7,,&7(/1K'L    $ 3 3 > >t O'66!%!5!5!9!9$//4!P!),,&7(/1H'I   #D),9)(3$23D$E	-  %-$J$J$LL ]
,5bhh,? 6(Hj5,4,A,A&he -B - 'T $$7"00*<3>2:2<,"	 	 	[6= # 7 M' ( 1&0- 1**F
 $6684Z@$;;JG&0$ **F
 '/kk&?&?&A#668 4<,4,h,o,o(0(G(G-&!"3K/ 4;-1!W-=-=.1!f1:1K1K),2&	!"	3K/!8	 $$7"00*<3>2:2<,"	 	 	s   A9L;;G<8L;4G5AL;:G;9L;4G
59L;/GGG-L;9L :	L;L;L;
L;GK=LAK=-L/K=7B;K82L8K==L L;.L81L4
2L88L;c                     | j                   rX| j                   j                  rAt        j                  t	        | j                   j                  j                                      y y y r   )rE   rG   asynciocreate_taskr	   stop_channels)r   s    r   on_closez ExecutionRequestHandler.on_close   sB    ~~$.."3"3##L1B1B1P1P1R$ST #4~r   )r   N)rY   
__module____qualname__rC   r   rZ   r$   r   bytesr   rf   rk   __classcell__)r   s   @r   r   r      sY    	!	I 	I 	I"Z	$S%Z0Z	9T?D()Z	x	Ur   r   c                       e Zd Zy)r   N)rY   rl   rm    r   r   r   r      s    r   )rh   r?   typingr   r   jupyter_server.base.handlersr   tornado.websocketr   tornado.webr   JUPYTER_SERVER_2jupyter_server.base.websocketr   ImportErrorjupyter_core.utilsr	   nbclient.exceptionsr
   voila.executer   r   rR   r9   r\   r   rq   r   r   <module>r|      st      # 7 . !< , 2 A   
uU.2BN uUr I  s   A' 'A10A1