o
    tfG                     @  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   j/var/www/html/software/conda/envs/catlas/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| j| |d| js#td|d | jjvr0tdt	 j
|i |}|durFt|I dH  dS dS )zGet the terminal socket.i  Nexecuter   i  )current_userr
   	HTTPErrorZ
authorizerr   Zis_authorizedauth_resourcer   r   supergetr   )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,   A   s   zTermSocket.write_messagec                 C  s6   t  | jjd< | j| jjv rt  | jj| j _d S d S )NZterminal_last_activity)r   Zapplicationsettings	term_nameZterminal_managerr   Zlast_activity)r   r   r   r   r*   F   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	   )r2   
__future__r   typingtZjupyter_core.utilsr   Zjupyter_server._tzr   Zjupyter_server.auth.utilsr   Zjupyter_server.base.handlersr   Zjupyter_server.base.websocketr   Zterminado.managementr   Zterminado.websocketr	   r   tornador
   baser   r3   r   r   r   r   <module>   s    