
    qSe                         d Z ddlmZmZ ddlmZ ddlmZmZ ddl	m
Z ddlmZ ddlmZ dd	lmZ  G d
 de          Z G d deee          Z G d de          Zd ZdS )zF tornado handler for managing and communicating with language servers
    )OptionalText)JupyterHandler)WebSocketHandlerWebSocketMixin)url_path_join   )LanguageServerManager)SERVERS_RESPONSEcensored_specc                       e Zd ZdZdefdZdS )BaseHandlerNmanagerc                     || _         d S N)r   )selfr   s     4lib/python3.11/site-packages/jupyter_lsp/handlers.py
initializezBaseHandler.initialize   s        )__name__
__module____qualname__r   r
   r    r   r   r   r      s5        G"7      r   r   c                   2     e Zd ZdZdZ fdZd Zd Z xZS )LanguageServerWebSocketHandlerz<Setup tornado websocket to route to language server sessionsNc                 0  K   | j                                          d {V  || _        | j                             |            | j                            d                    | j                             t                                                       d S )Nz[{}] Opened a handler)	r   readylanguage_server	subscribelogdebugformatsuperopen)r   r   	__class__s     r   r%   z#LanguageServerWebSocketHandler.open   s      l  """"""""".t$$$.55d6JKKLLLr   c                    K   | j                             d                    | j                             | j                            ||            d {V  d S )Nz[{}] Handling a message)r!   r"   r#   r   r   on_client_message)r   messages     r   
on_messagez)LanguageServerWebSocketHandler.on_message#   s\      0778LMMNNNl,,Wd;;;;;;;;;;;r   c                     | j                             |            | j                            d                    | j                             d S )Nz[{}] Closed a handler)r   unsubscriber!   r"   r#   r   )r   s    r   on_closez'LanguageServerWebSocketHandler.on_close'   sD      &&&.55d6JKKLLLLLr   )	r   r   r   __doc__r   r%   r*   r-   __classcell__r&   s   @r   r   r      sk         GFO    < < <M M M M M M Mr   r   c                   ,     e Zd ZdZeZ fdZd Z xZS )LanguageServersHandlerzsReports the status of all current servers

    Response should conform to schema in schema/servers.schema.json
    c                 :     t                      j        |i | d S r   )r$   r   )r   argskwargsr&   s      r   r   z!LanguageServersHandler.initialize4   s%    D+F+++++r   c                   K   | j                                          d{V  dd | j         j                                        D             d | j         j                                        D             d}t          | j                            |                    }|r;| j        	                    d
                    t          |          |                     |                     |           dS )z4finish with the JSON representations of the sessionsN   c                 >    i | ]\  }}||                                 S r   )to_json).0r   sessions      r   
<dictcomp>z.LanguageServersHandler.get.<locals>.<dictcomp>=   s8       ,OW  !2!2  r   c                 4    i | ]\  }}|t          |          S r   r   )r:   keyspecs      r   r<   z.LanguageServersHandler.get.<locals>.<dictcomp>A   s6       C ]4((  r   )versionsessionsspecsz{} validation errors: {})r   r   rA   itemsall_language_serverslist	validatoriter_errorsr!   warningr#   lenfinish)r   responseerrorss      r   getzLanguageServersHandler.get7   s     l  """""""""  040E0K0K0M0M   !%!B!H!H!J!J  

 

 dn00::;; 	UH7>>s6{{FSSTTTHr   )	r   r   r   r.   r   rF   r   rM   r/   r0   s   @r   r2   r2   ,   sX         
 !I, , , , ,      r   r2   c           	          t          | j        d          }d}d| j        i}| j                            dt          |d          t
          |ft          |d|          t          |fg           dS )zAAdd Language Server routes to the notebook server web applicationlspz(?P<language_server>.*)r   z.*statuswsN)ujoinbase_urllanguage_server_managerweb_appadd_handlersr2   r   )nbapplsp_urlre_langserversoptss       r   rV   rV   O   s    ENE**G.Nu45D	M7H%%'=tDgt^44.	

 
 
 
 
r   N)r.   typingr   r   jupyter_server.base.handlersr   jupyter_server.base.zmqhandlersr   r   jupyter_server.utilsr   rR   r   r
   schemar   specs.utilsr   r   r   r2   rV   r   r   r   <module>ra      s?    ! ! ! ! ! ! ! ! 7 7 7 7 7 7 L L L L L L L L 7 7 7 7 7 7 * * * * * * $ $ $ $ $ $ & & & & & &    .   M M M M M$kM M M.         [      F    r   