§
    ÁÞMhÏ  ã                   óv   — d 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ee
¦  «        ZdS )z/Tornado handlers for WebSocket <-> ZMQ sockets.é    )Úensure_async)Úweb)ÚWebSocketHandler)Úws_authenticated)ÚJupyterHandler)ÚWebSocketMixinÚkernelsc                   óz   ‡ — e Zd ZdZeZed„ ¦   «         Zd„ Zd„ Z	d„ Z
eˆ fd„¦   «         Zˆ fd„Zd„ Zd	„ Zd
„ Zˆ xZS )ÚKernelWebsocketHandlerz$The kernels websocket should connectc                 ó6   — | j                              d¦  «        S )z&The kernel websocket connection class.Ú!kernel_websocket_connection_class©ÚsettingsÚget©Úselfs    úi/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/jupyter_server/services/kernels/websocket.pyr   z8KernelWebsocketHandler.kernel_websocket_connection_class   s   € ð Œ}× Ò Ð!DÑEÔEÐEó    c                 ó   — dS )zhUndo the set_default_headers in JupyterHandler

        which doesn't make sense for websockets
        N© r   s    r   Úset_default_headersz*KernelWebsocketHandler.set_default_headers   s   € € € r   c                 ó8   — | j                              dd¦  «        S )z"Get the socket connection options.Úwebsocket_compression_optionsNr   r   s    r   Úget_compression_optionsz.KernelWebsocketHandler.get_compression_options    s   € àŒ}× Ò Ð!@À$ÑGÔGÐGr   c              ƒ   ó<  K  — | j         }t          | j                             | |dd¦  «        ¦  «        ƒ d{V —†}|st	          j        d¦  «        ‚| j                             | j        ¦  «        }|  	                    || | j
        ¬¦  «        | _        |                      dd¦  «        r%|                      d¦  «        | j        j        _        n| j                             d¦  «         t!          | j        d¦  «        r!| j                             ¦   «         ƒ d{V —† dS dS )	zHandle a pre_get.Úexecuter	   Ni“  )ÚparentÚwebsocket_handlerÚconfigÚ
session_idzNo session ID specifiedÚprepare)Úcurrent_userr   Ú
authorizerÚis_authorizedr   Ú	HTTPErrorÚkernel_managerÚ
get_kernelÚ	kernel_idr   r   Ú
connectionÚget_argumentÚsessionÚlogÚwarningÚhasattrr!   )r   ÚuserÚ
authorizedÚkernels       r   Úpre_getzKernelWebsocketHandler.pre_get$   sI  è è € àÔ ˆõ (ØŒO×)Ò)¨$°°iÀÑKÔKñ
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ˆ
ð ð 	%Ý”- Ñ$Ô$Ð$àÔ$×/Ò/°´Ñ?Ô?ˆØ×@Ò@Ø¨T¸$¼+ð Añ 
ô 
ˆŒð ×Ò˜\¨4Ñ0Ô0ð 	8Ø.2×.?Ò.?ÀÑ.MÔ.MˆDŒOÔ#Ô+Ð+àŒH×ÒÐ6Ñ7Ô7Ð7õ 4”? IÑ.Ô.ð 	,Ø”/×)Ò)Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ð+ð	,ð 	,r   c              ƒ   óž   •K  — || _         |                      ¦   «         ƒ d{V —† t          ¦   «                              |¬¦  «        ƒ d{V —† dS )z"Handle a get request for a kernel.N)r(   )r(   r2   Úsuperr   ©r   r(   Ú	__class__s     €r   r   zKernelWebsocketHandler.get=   s`   øè è € ð #ˆŒØlŠl‰nŒnÐÐÐÐÐÐÐÝ‰gŒgkŠk IˆkÑ.Ô.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ð.r   c              ƒ   óÐ   •K  — t          ¦   «                              ¦   «          | j                             d| j        › d¦  «         | j                             ¦   «         ƒ d{V —† dS )zOpen a kernel websocket.zConnecting to kernel ú.N)r4   Úopenr,   Úinfor(   r)   Úconnectr5   s     €r   r9   zKernelWebsocketHandler.openD   sh   øè è € õ 	‰ŒŠ‰ŒˆàŒŠÐ?¨d¬nÐ?Ð?Ð?Ñ@Ô@Ð@ØŒo×%Ò%Ñ'Ô'Ð'Ð'Ð'Ð'Ð'Ð'Ð'Ð'Ð'r   c                 ó:   — | j                              |¦  «         dS )zGGet a kernel message from the websocket and turn it into a ZMQ message.N)r)   Úhandle_incoming_message)r   Ú
ws_messages     r   Ú
on_messagez!KernelWebsocketHandler.on_messageM   s   € àŒ×/Ò/°
Ñ;Ô;Ð;Ð;Ð;r   c                 óF   — | j                              ¦   «          d| _         dS )zHandle a socket closure.N)r)   Ú
disconnectr   s    r   Úon_closezKernelWebsocketHandler.on_closeQ   s!   € àŒ×"Ò"Ñ$Ô$Ð$ØˆŒˆˆr   c                 óH   — | j         j        }|€d}n|dk    rd}||v r|nd}|S )z'Select the sub protocol for the socket.Nzv1.kernel.websocket.jupyter.orgÚ )r)   Úkernel_ws_protocol)r   ÚsubprotocolsÚpreferred_protocolÚselected_subprotocols       r   Úselect_subprotocolz)KernelWebsocketHandler.select_subprotocolV   sJ   € à!œ_Ô?ÐØÐ%Ø!BÐÐØ 2Ò%Ð%Ø!%ÐØ5GÈ<Ð5WÐ5WÐ1Ð1Ð]aÐà#Ð#r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚAUTH_RESOURCEÚauth_resourceÚpropertyr   r   r   r2   r   r   r9   r?   rB   rI   Ú__classcell__)r6   s   @r   r   r      sâ   ø€ € € € € Ø.Ð.à!€MàðFð Fñ „XðFðð ð ðHð Hð Hð,ð ,ð ,ð2 ð/ð /ð /ð /ñ Ôð/ð(ð (ð (ð (ð (ð<ð <ð <ðð ð ð
	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$r   r   N)rM   Újupyter_core.utilsr   Útornador   Útornado.websocketr   Újupyter_server.auth.decoratorr   Újupyter_server.base.handlersr   Újupyter_server.base.websocketr   rN   r   r   r   r   ú<module>rX      sÁ   ðØ 5Ð 5ð ,Ð +Ð +Ð +Ð +Ð +Ø Ð Ð Ð Ð Ð Ø .Ð .Ð .Ð .Ð .Ð .à :Ð :Ð :Ð :Ð :Ð :Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8à€ðO$ð O$ð O$ð O$ð O$˜^Ð-=¸~ñ O$ô O$ð O$ð O$ð O$r   