
    ^hG                        S r SSKJr  SSKrSSKJr  SSKJr  SSK	J
r
  SSKJr  SSKJr  SS	KJr  SS
KJr  SSKJr  SSKJr  Sr " S S\\\\5      rg)z+Tornado handlers for the terminal emulator.    )annotationsN)ensure_async)utcnow)warn_disabled_authorization)JupyterHandler)WebSocketMixin)NamedTermManager)
TermSocket)web   )TerminalsMixin	terminalsc                     ^  \ rS rSrSr\r        S
S jrSSS jjrSU 4S jjr	SU 4S jjr
SSU 4S jjjrSS jrS	rU =r$ )r
      zA terminal websocket.c                ^    [         R                  " X40 UD6  [        R                  " X5        g)zInitialize the socket.N)BaseTermSocket
initializer   )selfnameterm_managerkwargss       [/home/james-whalen/.local/lib/python3.13/site-packages/jupyter_server_terminals/handlers.pyr   TermSocket.initialize   s%     	!!$??!!$-    c                    g)zeTerminado adds redundant origin_check
Tornado already calls check_origin, so don't do anything here.
T )r   origins     r   origin_checkTermSocket.origin_check"   s     r   c                  >#    U R                   nU(       d  [        R                  " S5      eU R                  c  [	        5         OBU R                  R                  XSU R                  5      (       d  [        R                  " S5      eUS   U R                  R                  ;  a  [        R                  " S5      e[        TU ](  " U0 UD6nUb  [        U5      I Sh  vN   gg N7f)zGet the terminal socket.i  Nexecuter   i  )current_userr   	HTTPError
authorizerr   is_authorizedauth_resourcer   r   supergetr   )r   argsr   userresp	__class__s        r   r(   TermSocket.get(   s       --$$ ??"')..t9dFXFXYY--$$7$++555--$$w{D+F+t$$$ $s   CC$C"C$c                r   >#    [        [        TU ]	  U5      5      I Sh  vN   U R                  5         g N7f)zHandle a socket message.N)r   r'   
on_message_update_activity)r   messager,   s     r   r/   TermSocket.on_message<   s/     57-g6777 	8s   757c                @   > [         TU ]  XS9  U R                  5         g)zWrite a message to the socket.)binaryN)r'   write_messager0   )r   r1   r4   r,   s      r   r5   TermSocket.write_messageA   s    g5r   c                    [        5       U R                  R                  S'   U R                  U R                  R
                  ;   a1  [        5       U R                  R
                  U R                     l        g g )Nterminal_last_activity)r   applicationsettings	term_nameterminal_managerr   last_activity)r   s    r   r0   TermSocket._update_activityF   sW    >Dh!!":;>>T22<<<LRHD!!++DNN;I =r   r   )r   strr   r	   r   t.AnyreturnNone)N)r   r@   rA   bool)r)   r@   r   r@   rA   rB   )r1   r@   rA   rB   )F)r1   r@   r4   rC   rA   rB   )rA   rB   )__name__
__module____qualname____firstlineno____doc__AUTH_RESOURCEr&   r   r   r(   r/   r5   r0   __static_attributes____classcell__)r,   s   @r   r
   r
      sU    !M..'7.CH.	.%( 
   
U Ur   r
   )rH   
__future__r   typingtjupyter_core.utilsr   jupyter_server._tzr   jupyter_server.auth.utilsr   jupyter_server.base.handlersr   jupyter_server.base.websocketr   terminado.managementr	   terminado.websocketr
   r   tornador   baser   rI   r   r   r   <module>rX      sD    1 #  + % A 7 8 1 <   4U 4Ur   