
    Xh                     6   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  Ze j,                  j/                  d	      duZ G d
 de      Z G d de      Z G d de      Zdgdgi dZdedefdZy)    N)Path)check_output)ListTextUnion   )SPEC_VERSION)KeyedLanguageServerSpecsLanguageServerManagerAPILanguageServerSpecSpecBaseTokenhelpersJUPYTER_LSP_BUILDING_DOCSc                   `    e Zd ZU dZdZg Zee   ed<   de	de
fdZdeedf   fdZde	defd	Zy)
	ShellSpeczgHelper for a language server spec for executables on $PATH in the
    notebook server environment.
     is_installed_argsmgrreturnc                     | j                         }|sy| j                  st        |      S t        |g| j                        j	                  d      }|dk7  S )NFzutf-8)encodingr   )solver   boolr   decode)selfr   cmdcheck_results       K/var/www/html/myenv/lib/python3.12/site-packages/jupyter_lsp/specs/utils.pyis_installedzShellSpec.is_installed$   s_    jjl%%9'(Ft/E/E(FGNN  O L  2%%    Nc                 b    dD ])  }t        j                  | j                  |z         }|s( |S  S )N)r   z.cmdz.batz.exe)shutilwhichr   )r   extr   s      r   r   zShellSpec.solve2   s9    / 	C,,txx#~.C
		 
r!   c                    | j                         }t        | j                        }|s<| j                   dg}d|v r|j	                  |d          dj                  |      |d<   |st        r| j                  }| j                  |r|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.   troubleshootings        r   __call__zShellSpec.__call__9   s    jjlDII"&((;78O%&&tN';<#);;#?D }((C HH-0)tyy)txx6L$))6L!^^' 	
 	
r!   )__name__
__module____qualname____doc__r   r   r   r   __annotations__r   r   r    r   strr   r
   r5    r!   r   r   r      s]     C
 &(tE{'& 8 &T &uS$Y' 
4 
9Q 
r!   r   c                   :    e Zd ZdZdZdedefdZd Zdede	fdZ
y)	PythonModuleSpeczZHelper for a python-based language server spec in the notebook server
    environment
    r   r   r   c                 D    | j                         }|sy|j                  syy)NFT)r   origin)r   r   r.   s      r   r    zPythonModuleSpec.is_installedX   s     zz|{{r!   c                 ^    t        d      j                  j                  | j                        S )N	importlib)
__import__util	find_specpython_module)r   s    r   r   zPythonModuleSpec.solvec   s$    +&++55d6H6HIIr!   c                     | j                  |      }| j                  |r)t        j                  d| j                  g| j
                  ng | j                  t        d| j                  iS )Nz-mr)   )	r    r2   sys
executablerF   r3   r+   r	   r.   )r   r   r    s      r   r5   zPythonModuleSpec.__call__f   si    ((- HH $ ^^T4+=+=J		J!^^'	 ))	
 	
r!   N)r6   r7   r8   r9   rF   r   r   r    r   r
   r5   r<   r!   r   r>   r>   Q   s=     M	 8 	T 	J
4 
9Q 
r!   r>   c                   V    e Zd ZU dZdZg Zee   ed<   de	de
fdZde	fdZde	defdZy	)
NodeModuleSpeczVHelper for a nodejs-based language server spec in one of several
    node_modules
    r   scriptr   r   c                 :    | j                  |      }t        |      S N)r   r   )r   r   node_modules      r   r    zNodeModuleSpec.is_installed   s    jjoK  r!   c                 P     |j                   | j                  g| j                   S rN   )find_node_modulerO   rL   )r   r   s     r   r   zNodeModuleSpec.solve   s$    #s##D$4$4Ct{{CCr!   c                 J   | j                  |      }t        | j                        }dg}d|v r|j                  |d          dj	                  |      |d<   | j                  |      }| j                  |r|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/   r0   r    r2   nodejsr3   r+   r	   )r   r   rO   r.   r4   r    s         r   r5   zNodeModuleSpec.__call__   s    jjoDIIHIT!""4#78%{{?;^((- HHBN#**k>DII>TV!^^' 	
 	
r!   N)r6   r7   r8   r9   rO   rL   r   r   r:   r   r   r    r   r
   r5   r<   r!   r   rK   rK   w   sT     KFDJ! 8 !T !D1 D
4 
9Q 
r!   rK   r   )r*   
debug_argvenvr.   r   c           	      ~    | j                         D ci c]  \  }}|t        j                  ||       c}}S c c}}w rN   )itemsSKIP_JSON_SPECget)r.   kvs      r   censored_specr\      s2    48JJLADAqA~!!!Q''AAAs   !9)osr#   rH   pathlibr   
subprocessr   typingr   r   r   schemar	   typesr
   r   r   r   r   __file__parentHELPERSenvironrY   r1   r   r>   rK   rX   r\   r<   r!   r   <module>rg      s    	  
  # $ $ !  x.

)
+ 

:;4G6
 6
r#
x #
L"
X "
N $rd2>B* B/A Br!   