
    Mh7                    f   d 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lmZ ddlmZ ddlZdd	lmZmZmZ dd
lmZmZ ddlmZ ddlmZmZmZm Z m!Z!  ej         ej"        e#          d          Z$d,dZ%d-dZ&	 	 	 	 d.d/dZ'd0d"Z(	 d1d2d#Z)d3d4d&Z* G d' d(e          Z+d5d)Z,d6d7d+Z-dS )8zJupyterLab Server config    )annotationsN)iglob)chain)Logger)join)Any)SYSTEM_CONFIG_PATHjupyter_config_dirjupyter_path)ConfigManagerrecursive_update)url_path_join)Bool	HasTraitsListUnicodedefault	templatesdatadict[str, Any]returnstrc                    d| v r	| d         }n>d| v r8t          | d         t                    r| d                             dd          }nd}|S )z#Get the url from the extension datahomepage
repositoryurl )
isinstancedictget)r   r   s     X/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/jupyterlab_server/config.pyget_package_urlr"      s`     T:			*T,-?"F"F	< $$UB//J    labextensions_path	list[str]c                (   i }| D ]}t          t          t          |dd                    t          t          |ddd                              D ]}t          |d          5 }t	          j        |          }ddd           n# 1 swxY w Y   |d         |vrrt          |d         |d	         |                    d
d          t          |          |t          j
        |          d|                    dt                                |                    dt                                	  	        }d|v rQd|                    di           v r9t          |                    d                              d                    |d<   t          j        t          j
        |          d          }t          j        |          r@t          |d          5 }t	          j        |          |d<   ddd           n# 1 swxY w Y   |||d         <   |S )z+Get the metadata about federated extensionsz[!@]*package.jsonz@**utf-8encodingNnameversiondescriptionr   Fdependencies
jupyterlab)	r,   r-   r.   r   ext_dirext_pathis_localr/   r0   r   r   )r   zinstall.jsoninstall)r   r   pjoinopenjsonloadr   r    r"   ospdirnamer   exists)r$   federated_extensionsr1   r2   fidpkgdatar   install_paths           r!   get_federated_extensionsr@   (   sv   % : :%.99::%sN;;<<
 
 	: 	:H h111 )S)C..) ) ) ) ) ) ) ) ) ) ) ) ) ) )v&::: #I. 'M2 > >'00# [22"!(^TVV!D!D&{{<@@
 
 
  7**uLRT8U8U/U/U)-'++l2K2K2O2OPU2V2V)W)W)WD&"xH(=(=~NN:l++ 9lW=== 9*.)C..Y9 9 9 9 9 9 9 9 9 9 9 9 9 9 959$T&\27	:8  s$   %BB
B
G88G<?G<allFapp_settings_dir
str | NoneloggerLogger | Nonelevelinclude_higher_levelsboolc                L    t          ||          }|                    d          S )a  Get the static page config for JupyterLab

    Parameters
    ----------
    logger: logger, optional
        An optional logging object
    level: string, optional ['all']
        The level at which to get config: can be 'all', 'user', 'sys_prefix', or 'system'
    page_config)_get_config_managerr    )rB   rD   rF   rG   cms        r!   get_static_page_configrM   L   s&     
U$9	:	:B66-   r#   pathr   c                    t          | d          5 }|                     d          r t          j        |          cddd           S t	          j        |          cddd           S # 1 swxY w Y   dS )zLoad either a json5 or a json config file.

    Parameters
    ----------
    path : str
        Path to the file to be loaded

    Returns
    -------
    Dict[Any, Any]
        Dictionary of json or json5 data
    r)   r*   z.json5N)r6   endswithjson5r8   r7   )rN   r=   s     r!   load_configrR   _   s     
dW	%	%	% =="" 	#:c??        y~~                 s   )A(A((A,/A,c                   i }d}|rt          |d          t          |d          g}|D ]k}t          j        |          rUt          j        |          rAt	          |          }|dfD ]}||v rd ||         D             ||<   t          ||            nlt          |d          }	t          ||	           i }
g x}|d<   t          |           }|                    |i            |	                                D ]\  }}d	|d
         vr|r|
                    d|d                    .|d
         d	         }|d         |d         d}d|v r|d         |d<   d|v r|d         |d<   d|v r|d         |d<   |                    d          |d<   |                    |           |d         }|d
                             |          r|d
         |         |
|d         <   |rt          j        |          }t          |dd          }t          j        |          rt          |d          5 }t          j        |          }ddd           n# 1 swxY w Y   |d
                             di           }|	                                D ]*\  }}||
v r
|                    |          r||         |
|<   +i }t#          |
          D ]2}||                             |          du r |
|         }|D ]}d||<   3|}|                    |                    |g                      |||<   |	                                D ]+\  }t'          t(                    rfdD             ||<   ,|S )z/Get the page config for the application handlerdisabledExtensionszpage_config.json5zpage_config.jsondeferredExtensionsc                    i | ]}|d S )T ).0keys     r!   
<dictcomp>z#get_page_config.<locals>.<dictcomp>   s    $D$D$D3S$$D$D$Dr#   rA   )rD   rF   r<   _buildr0   z%s is not a valid extensionr,   r8   )r,   r8   	extensionmimeExtensionstyleentrypointsstaticr'   r)   r*   NextensionMetadataTc                $    g | ]}|         
|S rW   rW   )rX   subkeyvalues     r!   
<listcomp>z#get_page_config.<locals>.<listcomp>   s"    LLL6eFmLLLLr#   )r5   r9   r;   getsizerR   r   rM   r@   
setdefaultitemswarningr    appendr:   r6   r7   r8   sortedupdater   r   )r$   rB   rD   rJ   disabled_keyconfig_pathsrN   r   rY   static_page_configdisabled_by_extensions_all
extensionsfederated_exts_ext_dataextbuildr\   r,   app_dirpackage_data_filer=   app_dataall_ext_dataextdisabled_by_extensionsdisabled_listitemrollup_disabledrd   s                               @r!   get_page_configr   r   s   
 K'L  "$788"$677
 ! 		 		Dz$ CK$5$5 "4(((*>? E ECd{{$D$D$s)$D$D$DS	 d333 0vUKKK["4555 "$799J34-.@AAN <,,,%++-- ` `88L111 P<hv>NOOOL)(3%f-x7GHH	(""%-k%:Ik"h&&)1/)BIo&h!)'!2Ig#+<<#>#>	- )$$$ L!%%l33 	`;CL;QR^;_&x'78  M+.//!'8^DD:'(( 	M''::: *c9S>>* * * * * * * * * * * * * * *#L1556I2NNL!-!3!3!5!5 M MX444<<-- M6>|6L.s3122 0 0|$((..$66248! 	0 	0D+/"4((	0 -O;??<<<=== /K "'')) M M
UeT"" 	MLLLLULLLKs   'IIIrJ   Nonec                P    t          |          }|                    d|            dS )zWrite page config to diskrJ   N)rK   set)rJ   rF   rL   s      r!   write_page_configr      s)    	U	#	#BFF=+&&&&&r#   c                     e Zd ZdZ edd                              d          Z edd                              d          Z edd                              d          Z ed	d
                              d          Z	 edd                              d          Z
 e e            d                              d          Z e e            d                              d          Z edd                              d          Z edd                              d          Z edd                              d          Z ed                              d          Z edd                              d          Z edd                              d          Z ed                              d          Z edd                              d          Z ed                              d          Z ed                              d          Z ed          Z edd                              d          Z ed                              d          Z ed                              d          Z edd                              d          Z edd                              d          Z edd                              d          Z e d           d:d#            Z! e d$          d:d%            Z" e d&          d;d(            Z# e d)          d:d*            Z$ e d+          d:d,            Z% e d-          d:d.            Z& e d/          d:d0            Z' e d1          d:d2            Z( e d3          d:d4            Z) e d5          d:d6            Z* e d7          d:d8            Z+d9S )<	LabConfigz)The lab application configuration object.r   zThe name of the application.)helpT)configzThe version of the application.z!The namespace of the application.z/labz!The url path for the application.z#The application settings directory.z7Extra paths to look for federated JupyterLab extensionszAThe standard paths to look in for federated JupyterLab extensionsz$The application templates directory.z[The optional location of local static files. If given, a static file handler will be added.z+The url for federated JupyterLab extensionsz%The url path of the settings handler.z5The optional location of the user settings directory.zhThe optional location of the settings schemas directory. If given, a handler will be added for settings.z#The url path of the workspaces API.zjThe optional location of the saved workspaces directory. If given, a handler will be added for workspaces.zThe listings url.zThe theme url.zThe third-party licenses url.z\The optional location of the themes directory. If given, a handler will be added for themes.z)The url path of the translations handler.z!The url path of the tree handler.zOWhether to cache files on the server. This should be `True` except in dev mode.z7Whether a notebook should start a kernel automatically.FzOWhether getting a relative (False) or absolute (True) path when copying a path.template_dirr   r   c                    t           S )N)DEFAULT_TEMPLATE_PATHselfs    r!   _default_template_dirzLabConfig._default_template_dir=  s    $$r#   labextensions_urlc                ,    t          | j        d          S )Nzextensions/ujoinapp_urlr   s    r!   _default_labextensions_urlz$LabConfig._default_labextensions_urlA      T\=111r#   r$   r%   c                     t          d          S )Nlabextensions)r   r   s    r!   _default_labextensions_pathz%LabConfig._default_labextensions_pathE  s    O,,,r#   workspaces_urlc                ,    t          | j        d          S )Nworkspaces/r   r   s    r!   _default_workspaces_urlz!LabConfig._default_workspaces_urlI  r   r#   workspaces_api_urlc                .    t          | j        dd          S )Napir   r   r   s    r!   _default_workspaces_api_urlz%LabConfig._default_workspaces_api_urlM  s    T\5-888r#   settings_urlc                .    t          | j        dd          S )Nr   z	settings/r   r   s    r!   _default_settings_urlzLabConfig._default_settings_urlQ      T\5+666r#   listings_urlc                .    t          | j        dd          S )Nr   z	listings/r   r   s    r!   _default_listings_urlzLabConfig._default_listings_urlU  r   r#   
themes_urlc                .    t          | j        dd          S )Nr   zthemes/r   r   s    r!   _default_themes_urlzLabConfig._default_themes_urlY  s    T\5)444r#   licenses_urlc                .    t          | j        dd          S )Nr   z	licenses/r   r   s    r!   _default_licenses_urlzLabConfig._default_licenses_url]  r   r#   tree_urlc                ,    t          | j        d          S )Nztree/r   r   s    r!   _default_tree_urlzLabConfig._default_tree_urla  s    T\7+++r#   translations_api_urlc                .    t          | j        dd          S )Nr   ztranslations/r   r   s    r!   _default_translations_api_urlz'LabConfig._default_translations_api_urle  s    T\5/:::r#   N)r   r   r   r%   ),__name__
__module____qualname____doc__r   tagapp_nameapp_versionapp_namespacer   rB   r   extra_labextensions_pathr$   templates_dir
static_dirr   r   user_settings_dirschemas_dirr   workspaces_dirr   r   r   
themes_dirr   r   r   cache_filesnotebook_starts_kernelcopy_absolute_pathr   r   r   r   r   r   r   r   r   r   r   r   rW   r#   r!   r   r      s
       33wr >???CC4CPPH'"#DEEEIIQUIVVKGB%HIIIMMUYMZZMgf#FGGGKKSWKXXGwr(MNNNRRZ^R__#t		U     	cc  		[  	cc  GB%KLLLPPX\P]]M
   
cc   )VWWW[[ \   7 GHHHLLTXLYYL
I  	cc  '
%   
cc  !&KLLLPPX\P]]W
,   
cc  7 3444888EEL.///3343@@J7 ?@@@L
   
cc  #7(STTTXX Y   w?@@@DDDDQQH$_   
cc 
 "TL  	cc  ^   
cc 
 W^% % % % W !!2 2 2 "!2 W!""- - - #"- W2 2 2 2 W!""9 9 9 #"9 W^7 7 7 7 W^7 7 7 7 W\5 5 5 5 W^7 7 7 7 WZ, , , , W#$$; ; ; %$; ; ;r#   r   c                 
    g dS )z9
    Returns the levels where configs can be stored.
    )rA   user
sys_prefixsystemappr\   rW   rW   r#   r!   get_allowed_levelsr   j  s     GFFFr#   r   c                    ddl m} t                      }| |vrd| }t          |          d}| dk    rt	          |          S g t
          |d         gt                      gg d}|r||                    |           d         n| g}g d}	}|D ]`}
||
         D ]*}|                    t          j
        ||                     +|	)||
         r!t          j
        ||
         d         |          }	at	          ||		          S )
zgGet the location of config files for the current context
    Returns the string to the environment
    r   )ENV_CONFIG_PATHz"Page config level must be one of: 	labconfigrA   )config_dir_name)r   r   r   r   r\   N)read_config_pathwrite_config_dir)jupyter_core.pathsr   r   
ValueErrorr   r	   r
   indexrj   r9   r   )rF   rG   r   allowedmsgconfig_namepathslevelsread_config_pathsr   _levelps               r!   rK   rK   q  sO   
 322222 ""GG<7<<ooK~~[9999 $&q)*#%%& E 1FRWW]]5))++,,E7F*,d' G Gv 	? 	?A$$SXa%=%=>>>>#f#"xfa(8+FF*;N^____r#   )r   r   r   r   )r$   r%   r   r   )NNrA   F)
rB   rC   rD   rE   rF   r   rG   rH   r   r   )rN   r   r   r   )NN)r$   r%   rB   rC   rD   rE   r   r   )rA   )rJ   r   rF   r   r   r   r   )F)rF   r   rG   rH   r   r   ).r   
__future__r   r7   os.pathrN   r9   globr   	itertoolsr   loggingr   r   r5   typingr   rQ   r   r	   r
   r   &jupyter_server.services.config.managerr   r   jupyter_server.utilsr   r   	traitletsr   r   r   r   r   r:   __file__r   r"   r@   rM   rR   r   r   r   r   rK   rW   r#   r!   <module>r      sI     # " " " " "                          ! ! ! ! ! !        S S S S S S S S S S R R R R R R R R 7 7 7 7 7 7 = = = = = = = = = = = = = = !X!6!6DD 	 	 	 	!  !  !  ! J $( "'	! ! ! ! !&   ( aea a a a aH' ' ' ' 'K; K; K; K; K;	 K; K; K;\G G G G#` #` #` #` #` #` #`r#   