o
    tf                     @   s   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m	Z	m
Z
 ddlmZ ddlmZmZmZmZmZ eejd Ze jd	duZG d
d deZG dd deZG dd deZdgdgi dZdedefddZdS )    N)Path)check_output)ListTextUnion   )SPEC_VERSION)KeyedLanguageServerSpecsLanguageServerManagerAPILanguageServerSpecSpecBaseTokenhelpersZJUPYTER_LSP_BUILDING_DOCSc                   @   s`   e Zd ZU dZdZg Zee ed< de	de
fddZdeedf fd	d
Zde	defddZdS )	ShellSpeczgHelper for a language server spec for executables on $PATH in the
    notebook server environment.
     is_installed_argsmgrreturnc                 C   s>   |   }|sdS | jst|S t|g| jjdd}|dkS )NFzutf-8)encodingr   )solver   boolr   decode)selfr   cmdZcheck_result r   `/var/www/html/software/conda/envs/catlas/lib/python3.10/site-packages/jupyter_lsp/specs/utils.pyis_installed$   s   zShellSpec.is_installedNc                 C   s(   dD ]}t | j| }|r |S q|S )N)r   z.cmdz.batz.exe)shutilwhichr   )r   extr   r   r   r   r   2   s   zShellSpec.solvec                 C   s   |   }t| j}|s$| j dg}d|v r||d  d||d< |s+tr+| j}| j|r5|g| jn| jg| j| j	t
d|iS )Nz not found.troubleshoot

argv	languagesversion)r   dictspecr   appendjoinBUILDING_DOCSkeyargsr$   r   )r   r   r   r'   troubleshootingr   r   r   __call__9   s"   
zShellSpec.__call__)__name__
__module____qualname____doc__r   r   r   r   __annotations__r
   r   r   r   strr   r	   r.   r   r   r   r   r      s   
 r   c                   @   s@   e Zd ZdZdZdedefddZdd Zdede	fd	d
Z
dS )PythonModuleSpeczZHelper for a python-based language server spec in the notebook server
    environment
    r   r   r   c                 C   s   |   }|sdS |jsdS dS )NFT)r   origin)r   r   r'   r   r   r   r   X   s   zPythonModuleSpec.is_installedc                 C   s   t dj| jS )N	importlib)
__import__util	find_specpython_module)r   r   r   r   r   c      zPythonModuleSpec.solvec                 C   s<   |  |}| j|rtjd| jg| jng | jtd| jiS )Nz-mr"   )	r   r+   sys
executabler;   r,   r$   r   r'   )r   r   r   r   r   r   r.   f   s   
zPythonModuleSpec.__call__N)r/   r0   r1   r2   r;   r
   r   r   r   r	   r.   r   r   r   r   r5   Q   s    r5   c                   @   sX   e Zd ZU dZdZg Zee ed< de	de
fddZde	fdd	Zde	defd
dZdS )NodeModuleSpeczVHelper for a nodejs-based language server spec in one of several
    node_modules
    r   scriptr   r   c                 C   s   |  |}t|S N)r   r   )r   r   node_moduler   r   r   r      s   
zNodeModuleSpec.is_installedc                 C   s   |j | jg| jR  S rA   )Zfind_node_modulerB   r@   )r   r   r   r   r   r      s   zNodeModuleSpec.solvec                 C   st   |  |}t| j}dg}d|v r||d  d||d< | |}| j|r0|j|g| jng | j	t
d|iS )Nz+Node.js is required to install this server.r    r!   r"   )r   r&   r'   r(   r)   r   r+   Znodejsr,   r$   r   )r   r   rB   r'   r-   r   r   r   r   r.      s   


zNodeModuleSpec.__call__N)r/   r0   r1   r2   rB   r@   r   r   r3   r
   r   r   r   r	   r.   r   r   r   r   r?   w   s   
 r?   r   )r#   Z
debug_argvenvr'   r   c                 C   s   dd |   D S )Nc                 S   s   i | ]\}}|t ||qS r   )SKIP_JSON_SPECget).0kvr   r   r   
<dictcomp>   s    z!censored_spec.<locals>.<dictcomp>)items)r'   r   r   r   censored_spec   r<   rK   )osr   r=   pathlibr   
subprocessr   typingr   r   r   Zschemar   typesr	   r
   r   r   r   __file__parentZHELPERSenvironrE   r*   r   r5   r?   rD   rK   r   r   r   r   <module>   s    	9&'