o
    ^iq                     @  s   d Z ddlm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dlmZ dZG dd deeeeZdS )z+Tornado handlers for the terminal emulator.    )annotationsN)ensure_async)utcnow)warn_disabled_authorization)JupyterHandler)WebSocketMixin)NamedTermManager)
TermSocket)web   )TerminalsMixin	terminalsc                      sd   e Zd ZdZeZdd
dZddddZd  fddZd! fddZ	d"d# fddZ
d$ddZ  ZS )%r	   zA terminal websocket.namestrterm_managerr   kwargst.AnyreturnNonec                 K  s$   t j| |fi | t| | dS )zInitialize the socket.N)BaseTermSocket
initializer   )selfr   r   r    r   \/home/ubuntu/hpml_nyu/venv/lib/python3.10/site-packages/jupyter_server_terminals/handlers.pyr      s   zTermSocket.initializeNoriginboolc                 C  s   dS )zuTerminado adds redundant origin_check
        Tornado already calls check_origin, so don't do anything here.
        Tr   )r   r   r   r   r   origin_check"   s   zTermSocket.origin_checkargsc                   s   | j }|std| jdu rt  nt| j| |d| jI dH s(td|d | jj	vr5tdt
 j|i |}|durKt|I dH  dS dS )zGet the terminal socket.i  Nexecuter   i  )current_userr
   	HTTPError
authorizerr   r   is_authorizedauth_resourcer   r   superget)r   r   r   userresp	__class__r   r   r%   (   s    




zTermSocket.getmessagec                   s$   t t |I dH  |   dS )zHandle a socket message.N)r   r$   
on_message_update_activity)r   r*   r(   r   r   r+   >   s   zTermSocket.on_messageFbinaryc                   s   t  j||d |   dS )zWrite a message to the socket.)r-   N)r$   write_messager,   )r   r*   r-   r(   r   r   r.   C   s   zTermSocket.write_messagec                 C  s6   t  | jjd< | j| jjv rt  | jj| j _d S d S )Nterminal_last_activity)r   applicationsettings	term_nameterminal_managerr   last_activity)r   r   r   r   r,   H   s   zTermSocket._update_activity)r   r   r   r   r   r   r   r   )N)r   r   r   r   )r   r   r   r   r   r   )r*   r   r   r   )F)r*   r   r-   r   r   r   )r   r   )__name__
__module____qualname____doc__AUTH_RESOURCEr#   r   r   r%   r+   r.   r,   __classcell__r   r   r(   r   r	      s    
r	   )r8   
__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   r9   r   r   r   r   <module>   s    