o
    tf                     @   s  d dl Z d dlZd dl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 dlmZ d dlmZmZ g dZdgdgdgdgdZeedd e D g 7 ZdgZdd Ze
defddZ e
dd Z!e
de"fddZ#e
e$eddejfd d!Z%e
e$edd"d# Z&e
e$edd$d% Z'e
d&d' Z(e
d(d) Z)e
d*d+ Z*G d,d- d-eZ+G d.d/ d/eZ,G d0d1 d1eZ-dS )2    N)Path)Text)	ServerApp)fixture)HTTPRequest)HTTPServerRequest)Queue)Application)LanguageServerManager)APP_CONFIG_D_SECTIONS)LanguageServersHandlerLanguageServerWebSocketHandler)
zbash-language-serverz!dockerfile-language-server-nodejsztypescript-language-serverZpylspzunified-language-serverzsql-language-serverzvscode-css-languageserver-binzvscode-html-languageserver-binzvscode-json-languageserver-binzyaml-language-serverzr-languageservertexlabjedi-language-serverzjulia-language-server)ZRscriptr   r   juliac                 C   s   g | ]\}}t |r|qS  )shutilwhich).0cmdZlangsr   r   c/var/www/html/software/conda/envs/catlas/lib/python3.10/site-packages/jupyter_lsp/tests/conftest.py
<listcomp>*   s    r   zfoo-language-serverc                  C   s4   t tjdp
t  } t| rt| gdS g dS )NZJLSP_TEST_ROOT)extra_node_roots)r   osenvirongetcwddictstr)rootr   r   r   r   0   s   r   returnc                   C   s   t di t S )Nr   )r
   r   r   r   r   r   manager5   s   r!   c                   C   s   ddgdgddS )NZechozno server hereZklingon   )argv	languagesversionr   r   r   r   r   	echo_spec:   s   r&   c                 C   s   t jddd| iiidddS )Nr
   Zlanguage_serversZ_echo_r"   T)indent	sort_keys)jsondumps)r&   r   r   r   echo_conf_json?   s
   r+   )paramsc                 C   s,   |d| j  d }|  |d|  |S )Njupyterzconfig.dZJUPYTER_CONFIG_PATH)parammkdirZsetenv)requestZtmp_pathZmonkeypatchZconf_dr   r   r   app_config_dH   s   r1   c                 C      | j S Nr.   r0   r   r   r   known_serverP      r6   c                 C   r2   r3   r4   r5   r   r   r   known_unknown_serverU   r7   r8   c                 C   s(   t  }||  t }||  ||fS r3   )MockWebsocketHandler
initializeMockHandler)r!   Z
ws_handlerhandlerr   r   r   handlersZ   s
   

r=   c                   C   s6   t ddddi ii dd d ttj d ddS )Nr   z2.0r:   ZdidChangeConfiguration)Z	workspaceZtextDocument)ZcapabilitiesZinitializationOptionsZ	processIdZrootUriZworkspaceFolders)idZjsonrpcmethodr,   )r)   r*   pathlibr   __file__parentas_urir   r   r   r   jsonrpc_init_msgc   s   rD   c                   C   s   t  S r3   )MockServerAppr   r   r   r   app{   r7   rF   c                       sF   e Zd ZdZdZdd Z fddZdeddfdd	Zd
d Z	  Z
S )r9   Nc                 C   s   t  | _t | _d S r3   )r   r0   r	   applicationselfr   r   r   __init__   s   zMockWebsocketHandler.__init__c                    s   t  | t | _d| _d S )NF)superr:   r   _messages_wrote
_ping_sent)rI   r!   	__class__r   r   r:      s   
zMockWebsocketHandler.initializemessager    c                 C   s   | j d| | j| d S )Nzwrite_message %s)logwarningrL   
put_nowait)rI   rP   r   r   r   write_message   s   z"MockWebsocketHandler.write_messagec                 C   s
   d| _ d S )NT)rM   rH   r   r   r   	send_ping      
zMockWebsocketHandler.send_ping)__name__
__module____qualname__rL   rM   rJ   r:   r   rT   rU   __classcell__r   r   rN   r   r9      s    r9   c                   @   s$   e Zd ZdZdZdd Zdd ZdS )r;   NZfooc                 C   s   t d| _t | _d S )NGET)r   r0   r	   rG   rH   r   r   r   rJ      s   
zMockHandler.__init__c                 C   s
   || _ d S r3   )_payload)rI   payloadr   r   r   finish   rV   zMockHandler.finish)rW   rX   rY   r\   Z_jupyter_current_userrJ   r^   r   r   r   r   r;      s
    r;   c                   @   s   e Zd ZdS )rE   N)rW   rX   rY   r   r   r   r   rE      s    rE   ).r)   r   r@   r   r   typingr   Zjupyter_server.serverappr   Zpytestr   Ztornado.httpserverr   Ztornado.httputilr   Ztornado.queuesr   Ztornado.webr	   Zjupyter_lspr
   Zjupyter_lsp.constantsr   Zjupyter_lsp.handlersr   r   ZKNOWN_SERVERSZCMD_BASED_SERVERSsumitemsZKNOWN_UNKNOWN_SERVERSr   r!   r&   r   r+   sortedr1   r6   r8   r=   rD   rF   r9   r;   rE   r   r   r   r   <module>   s^    





