o
    i                     @   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helpers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   cmdcheck_result r   R/var/www/edux/Edux_v2/venv/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	   r0   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   r0   f   s   
zPythonModuleSpec.__call__N)r1   r2   r3   r4   r=   r
   r   r   r   r	   r0   r   r   r   r   r7   Q   s    r7   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 rC   )find_node_modulerD   rB   )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-   nodejsr.   r&   r   )r   r   rD   r)   r/   r   r   r   r   r0      s   


zNodeModuleSpec.__call__N)r1   r2   r3   r4   rD   rB   r   r   r5   r
   r   r   r   r	   r0   r   r   r   r   rA   w   s   
 rA   r   )r%   
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>   rP   )osr   r?   pathlibr   
subprocessr   typingr   r   r   schemar   typesr	   r
   r   r   r   __file__parentHELPERSenvironrJ   r,   r   r7   rA   rI   rP   r   r   r   r   <module>   s    	9&'