o
    ^i                     @   sd   d Z ddlZddlm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
 Zdd ZdS )zI add language server support to the running jupyter notebook application
    N)Path)ioloop   )add_handlers)LanguageServerManager)normalized_uric              	      s   ddl }ddlm} | j}|j }| j||jI dH  W d   n1 s)w   Y  dd |j	
 D }t|rI| jd| ||d n| jd	 | jd
tj|j	ddd dS )zPerform lazy initialization.r   Nr   )setup_shadow_filesystemc                 S   s    g | ]\}}| d dr|qS )requires_documents_on_diskT)get).0	server_idserver r   V/home/ubuntu/hpml_nyu/venv/lib/python3.10/site-packages/jupyter_lsp/serverextension.py
<listcomp>   s    
zinitialize.<locals>.<listcomp>z:[lsp] Servers that requested virtual documents on disk: %s)virtual_documents_urizZ[lsp] None of the installed servers require virtual documents disabling shadow filesystem.z:[lsp] The following Language Servers will be available: {}   T)indent	sort_keys)concurrent.futuresvirtual_documents_shadowr   language_server_managerfuturesThreadPoolExecutorio_looprun_in_executor
initializelanguage_serversitemsanylogdebugformatjsondumps)nbappr   
concurrentr   managerpoolservers_requiring_disk_accessr   r   r   r      s0   r   c           	      C   s  | j ttd t| d }| _| j}| jjdi }d}d}t	|drYt
|j}| jd| t|j}||j }||krM| jd d|_||j }t
|}| jd	| n| jd
| t
d}|j||d t|  t	| drx| j}ntj }|dt| | dS )z/create a LanguageServerManager and add handlers)r   )parentpage_config_data root_dirz[lsp] rootUri will be %sz5virtual documents path must differ from the root pathz.virtual_documentsz$[lsp] virtualDocumentsUri will be %szA[lsp] %s did not appear to have a root_dir, could not set rootUri)rootUrivirtualDocumentsUrir   r   N)
add_traits	traitletsInstancer   r   contents_managerweb_appsettings
setdefaulthasattrr   r-   r    r!   r   virtual_documents_dirwarnupdater   r   r   IOLoopcurrent
call_laterr   )	r%   r'   contentspage_configroot_urir   	root_pathvirtual_documents_pathr   r   r   r   load_jupyter_server_extension3   s8   






rC   )__doc__r#   pathlibr   r1   tornador   handlersr   r'   r   pathsr   r   rC   r   r   r   r   <module>   s    $