Ë
    :vžjÛ7  ã                  ó†  — 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jD                  e#«      d«      Z$dd„Z%dd„Z&	 	 	 	 d	 	 	 	 	 	 	 	 	 dd„Z'dd„Z(	 d	 	 	 	 	 	 	 dd„Z)dd d„Z* G d„ de«      Z+d!d„Z,d"d#d„Z-y)$z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Ú	templatesc                ó|   — d| v r| d   }|S d| v r*t        | d   t        «      r| d   j                  dd«      }|S d}|S )z#Get the url from the extension dataÚhomepageÚ
repositoryÚurlÚ )Ú
isinstanceÚdictÚget)Údatar   s     úi/workspace/moltex-experiments/.pixi/envs/default/lib/python3.12/site-packages/jupyterlab_server/config.pyÚget_package_urlr      s_   € ð �TÑØ�:Ñˆð
 €Jð	 
˜Ñ	¤*¨T°,Ñ-?ÄÔ"FØ�<Ñ ×$Ñ$ U¨BÓ/ˆð €Jð ˆØ€Jó    c                óŠ  — i }| D �]¡  }t        t        t        |dd«      «      t        t        |ddd«      «      «      D �]e  }t        |d¬«      5 }t	        j
                  |«      }ddd«       d   |vsŒ7t        |d   |d	   |j                  d
d«      t        |«      |t        j                  |«      d|j                  dt        «       «      |j                  dt        «       «      ¬«	      }d|v rAd|j                  di «      v r-t        |j                  d«      j                  d«      ¬«      |d<   t        j                  t        j                  |«      d«      }t        j                  |«      r.t        |d¬«      5 }t	        j
                  |«      |d<   ddd«       |||d   <   �Œh �Œ¤ |S # 1 sw Y   �ŒIxY w# 1 sw Y   Œ&xY w)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*   r+   r   r   )r   zinstall.jsonÚinstall)r   r   ÚpjoinÚopenÚjsonÚloadr   r   r   ÚospÚdirnamer   Úexists)Úlabextensions_pathÚfederated_extensionsr,   r-   ÚfidÚpkgdatar   Úinstall_paths           r   Úget_federated_extensionsr<   (   s„  € àÐÜ%ˆäÜ”%˜ ¨.Ó9Ó:Ü”%˜  s¨NÓ;Ó<÷
ˆHô �h¨Õ1°SÜŸ)™) C›.�÷ 2à�v‰Ð&:Ò:ÜØ  ™Ø# IÑ.Ø '§¡¨M¸2Ó >Ü'¨Ó0Ø#Ü Ÿ[™[¨Ó2Ø"Ø!(§¡¨^¼T»VÓ!DØ&Ÿ{™{¨<¼»Ó@ô
�ð   7Ñ*¨u¸¿¹ÀLÐRTÓ8UÑ/UÜ)-°'·+±+¸lÓ2K×2OÑ2OÐPUÓ2VÔ)W�D˜Ñ&ä"Ÿx™x¬¯©°HÓ(=¸~ÓN�Ü—:‘:˜lÔ+Ü˜l°WÕ=ÀÜ*.¯)©)°C«.˜˜Y™÷ >à59Ð$ T¨&¡\Ó2ò7
ð &ð<  Ð÷1 2Ñ1ú÷* >Ð=ús   ÁF,Å;F9Æ,F6Æ9Gc                ó<   — t        ||«      }|j                  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   )Úapp_settings_dirÚloggerÚlevelÚinclude_higher_levelsÚcms        r   Úget_static_page_configrE   L   s    € ô 
˜UÐ$9Ó	:€BØ�6‰6�-Ó Ð r    c                óÐ   — t        | d¬«      5 }| j                  d«      rt        j                  |«      cddd«       S t	        j                  |«      cddd«       S # 1 sw Y   yxY w)zØLoad 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)r1   ÚendswithÚjson5r3   r2   )Úpathr9   s     r   Úload_configrJ   _   sH   € ô 
ˆd˜WÕ	%¨Ø�=‰=˜Ô"Ü—:‘:˜c“?÷ 
&Ñ	%ô �y‰y˜‹~÷ 
&×	%Ò	%ús   Ž&A¾AÁA%c                óì  — i }d}|rˆt        |d«      t        |d«      g}|D ]k  }t        j                  |«      sŒt        j                  |«      sŒ/t	        |«      }|dfD ]  }||v sŒ||   D �ci c]  }|d“Œ c}|<   Œ  t        ||«        n t        |d¬«      }	t        ||	«       i }
g x}|d<   t        | «      }|j                  |i «       |j                  «       D ]¨  \  }}d	|d
   vr|r|j                  d|d   «       Œ%|d
   d	   }|d   |d   dœ}d|v r|d   |d<   d|v r|d   |d<   d|v r|d   |d<   |j                  d«      |d<   |j                  |«       |d   }|d
   j                  |«      sŒ›|d
   |   |
|d   <   Œª |r®t        j                  |«      }t        |dd«      }t        j                  |«      rwt        |d¬«      5 }t        j                   |«      }ddd«       d
   j                  di «      }|j                  «       D ]$  \  }}||
v rŒ|j                  |«      sŒ||   |
|<   Œ& i }t#        |
«      D ]*  }||   j                  |«      du rŒ|
|   }|D ]  }d||<   Œ	 Œ, |}|j%                  |j                  |g «      «       |||<   |j                  «       D ]/  \  }}t'        |t(        «      sŒ|D �cg c]
  }||   sŒ	|‘Œ c}||<   Œ1 |S c c}w # 1 sw Y   �ŒxY wc c}w )z/Get the page config for the application handlerÚdisabledExtensionszpage_config.json5zpage_config.jsonÚdeferredExtensionsTÚall)rA   rB   r8   Ú_buildr+   z%s is not a valid extensionr'   r3   )r'   r3   Ú	extensionÚmimeExtensionÚstyleÚentrypointsÚstaticr"   r$   r%   NÚextensionMetadata)r0   r4   r6   ÚgetsizerJ   r   rE   r<   Ú
setdefaultÚitemsÚwarningr   Úappendr5   r1   r2   r3   ÚsortedÚupdater   r   )r7   r@   rA   r>   Údisabled_keyÚconfig_pathsrI   r   ÚkeyÚstatic_page_configÚdisabled_by_extensions_allÚ
extensionsÚfederated_extsÚ_Úext_dataÚextbuildrP   r'   Úapp_dirÚpackage_data_filer9   Úapp_dataÚall_ext_dataÚextÚdisabled_by_extensionsÚdisabled_listÚitemÚrollup_disabledÚvalueÚsubkeys                                 r   Úget_page_configrr   r   sx  € ð
 €Kà'€Lñ äÐ"Ð$7Ó8ÜÐ"Ð$6Ó7ð
ˆó !ˆDÜ�z‰z˜$Õ¤C§K¡K°Õ$5Ü" 4Ó(�à(Ð*>Ó?�CØ˜d’{Ø:>¸sº)Ó$D¹)°3 S¨$¡Y¸)Ñ$D˜˜Sš	ð @ô ! ¨dÔ3Ùð !ô 0°vÀUÔKÐÜ�[Ð"4Ô5ð "$ÐØ79Ð9€J�Ð3Ñ4ä-Ð.@ÓA€Nð ×Ñ˜<¨Ô,à%×+Ñ+Ö-‰ˆˆ8Ø˜8 LÑ1Ñ1ÙØ—‘Ð<¸hÀvÑ>NÔOØØ˜LÑ)¨(Ñ3ˆØ% fÑ-°xÀÑ7GÑHˆ	à˜(Ñ"Ø%-¨kÑ%:ˆI�kÑ"Ø˜hÑ&Ø)1°/Ñ)BˆI�oÑ&Ø�hÑØ!)¨'Ñ!2ˆI�gÑà#+§<¡<°Ó#>ˆ	�-Ñ Ø×Ñ˜)Ô$ð ˜Ñˆà�LÑ!×%Ñ% lÕ3Ø;CÀLÑ;QÐR^Ñ;_Ð& x°Ñ'7Ò8ð- .ñ4 Ü—+‘+Ð.Ó/ˆÜ! '¨8°^ÓDÐÜ�:‰:Ð'Ô(ÜÐ'°'Õ:¸cÜŸ9™9 S›>�÷ ;à# LÑ1×5Ñ5Ð6IÈ2ÓNˆLØ!-×!3Ñ!3Ö!5‘��XØÐ4Ñ4ØØ—<‘< Õ-Ø6>¸|Ñ6LÐ.¨sÒ3ð	 "6ð  ÐÜÐ1Ö2ˆà�|Ñ$×(Ñ(¨Ó.°$Ñ6Øà2°4Ñ8ˆÛ!ˆDØ+/Ð" 4Ò(ñ "ð 3ð -€OØ×Ñ˜;Ÿ?™?¨<¸Ó<Ô=Ø /€K�Ñð "×'Ñ'Ö)‰
ˆˆUÜ�eœTÕ"Ù5:ÓL±U¨6¸eÀF»m¢°UÑLˆK˜Òð *ð ÐùòY %E÷` ;Ñ:üò4  Ms   Á.
KÇK$Ë
K1ËK1Ë$K.c                ó>   — t        |«      }|j                  d| «       y)zWrite page config to diskr>   N)r?   Úset)r>   rB   rD   s      r   Úwrite_page_configru   Ö   s   € ä	˜UÓ	#€BØ‡F�Fˆ=˜+Õ&r    c                  ó   — e Zd ZdZ edd¬«      j                  d¬«      Z edd¬«      j                  d¬«      Z edd¬«      j                  d¬«      Z ed	d
¬«      j                  d¬«      Z	 edd¬«      j                  d¬«      Z
 e e«       d¬«      j                  d¬«      Z e e«       d¬«      j                  d¬«      Z edd¬«      j                  d¬«      Z edd¬«      j                  d¬«      Z edd¬«      j                  d¬«      Z ed¬«      j                  d¬«      Z edd¬«      j                  d¬«      Z edd¬«      j                  d¬«      Z ed¬«      j                  d¬«      Z edd¬«      j                  d¬«      Z ed¬«      j                  d¬«      Z ed¬«      j                  d¬«      Z ed¬«      Z edd¬«      j                  d¬«      Z ed¬«      j                  d¬«      Z ed¬«      j                  d¬«      Z edd¬«      j                  d¬«      Z edd¬«      j                  d¬«      Z edd¬«      j                  d¬«      Z e d «      d7d!„«       Z! e d"«      d7d#„«       Z" e d$«      d8d%„«       Z# e d&«      d7d'„«       Z$ e d(«      d7d)„«       Z% e d*«      d7d+„«       Z& e d,«      d7d-„«       Z' e d.«      d7d/„«       Z( e d0«      d7d1„«       Z) e d2«      d7d3„«       Z* e d4«      d7d5„«       Z+y6)9Ú	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.Útemplates_dirc                ó   — t         S )N)ÚDEFAULT_TEMPLATE_PATH©Úselfs    r   Ú_default_templates_dirz LabConfig._default_templates_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Ð1r    r7   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                ó0   — t        | j                  dd«      S )NÚapirŒ   r‚   r}   s    r   Ú_default_workspaces_api_urlz%LabConfig._default_workspaces_api_urlM  s   € ä�T—\‘\ 5¨-Ó8Ð8r    Úsettings_urlc                ó0   — t        | j                  dd«      S )Nr�   z	settings/r‚   r}   s    r   Ú_default_settings_urlzLabConfig._default_settings_urlQ  ó   € ä�T—\‘\ 5¨+Ó6Ð6r    Úlistings_urlc                ó0   — t        | j                  dd«      S )Nr�   z	listings/r‚   r}   s    r   Ú_default_listings_urlzLabConfig._default_listings_urlU  r•   r    Ú
themes_urlc                ó0   — t        | j                  dd«      S )Nr�   zthemes/r‚   r}   s    r   Ú_default_themes_urlzLabConfig._default_themes_urlY  s   € ä�T—\‘\ 5¨)Ó4Ð4r    Úlicenses_urlc                ó0   — 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                ó0   — 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)ÚreturnÚstr©r¥   ú	list[str]),Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   ÚtagÚapp_nameÚapp_versionÚapp_namespacer„   r@   r   Úextra_labextensions_pathr7   rz   Ú
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¤   © r    r   rw   rw   Ü   sö  „ Ù3á�rÐ >Ô?×CÑCÈ4ÐCÓP€Há˜"Ð#DÔE×IÑIÐQUÐIÓV€Ká˜BÐ%HÔI×MÑMÐUYÐMÓZ€Má�fÐ#FÔG×KÑKÐSWÐKÓX€Gá˜rÐ(MÔN×RÑRÐZ^ÐRÓ_Ðá#Ù‹	ÐUô ç	�c�€cÓð ñ Ù‹	Ð[ôç	�c�€cÓð ñ ˜BÐ%KÔL×PÑPÐX\ÐPÓ]€MáØ
ðô÷ 
�c�€cÓð ñ   Ð)VÔW×[Ñ[Øð \ó Ðñ Ð GÔH×LÑLÐTXÐLÓY€LáØ
ÐIôç	�c�€cÓð ñ Ø
ð%ô÷ 
�c�€cÓð ñ !Ð&KÔL×PÑPÐX\ÐPÓ]ÐáØ
ð,ô÷ 
�c�€cÓð ñ Ð 3Ô4×8Ñ8ÀÐ8ÓE€LáÐ.Ô/×3Ñ3¸4Ð3Ó@€JáÐ ?Ô@€LáØ
ðô÷ 
�c�€cÓð ñ #Ð(SÔT×XÑXØð Yó Ðñ Ð?Ô@×DÑDÈDÐDÓQ€HáØØ_ô÷ 
�c�€cÓð ñ
 "ØÐLôç	�c�€cÓð ñ ØØ^ô÷ 
�c�€cÓð ñ
 ˆ_Óò%ó ð%ñ Ð Ó!ò2ó "ð2ñ Ð!Ó"ò-ó #ð-ñ ÐÓò2ó ð2ñ Ð!Ó"ò9ó #ð9ñ ˆ^Óò7ó ð7ñ ˆ^Óò7ó ð7ñ ˆ\Óò5ó ð5ñ ˆ^Óò7ó ð7ñ ˆZÓò,ó ð,ñ Ð#Ó$ò;ó %ñ;r    rw   c                 ó
   — g d¢S )z9
    Returns the levels where configs can be stored.
    )rN   ÚuserÚ
sys_prefixÚsystemÚapprP   rº   rº   r    r   Úget_allowed_levelsrÀ   j  s   € ò GÐFr    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||j                  | «      d n| g}g d}	}|D ]V  }
||
   D ]'  }|j                  t        j                  ||«      «       Œ) |	�Œ5||
   sŒ;t        j                  ||
   d   |«      }	ŒX t	        ||	¬	«      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: Ú	labconfigrN   )Úconfig_dir_name)r¿   r¾   r½   r¼   rP   N)Úread_config_pathÚwrite_config_dir)Újupyter_core.pathsrÂ   rÀ   Ú
ValueErrorr   r	   r
   ÚindexrZ   r4   r   )rB   rC   rÂ   ÚallowedÚmsgÚconfig_nameÚpathsÚlevelsÚread_config_pathsrÆ   Ú_levelÚps               r   r?   r?   q  sü   € õ
 3ä Ó"€GØ�GÑØ2°7°)Ð<ˆÜ˜‹oÐà€Kà�‚~Ü¨[Ô9Ð9ð Ü$Ø& qÑ)Ð*Ü#Ó%Ð&Øñ€Eñ 1FˆW�W—]‘] 5Ó)Ð+Ñ,ÈEÈ7€Fà*,¨dÐ'ÐãˆØ�v”ˆAØ×$Ñ$¤S§X¡X¨a°Ó%=Õ>ð àÑ#¨¨f«Ü"Ÿx™x¨¨f©°aÑ(8¸+ÓFÑð	 ô Ð*;ÐN^Ô_Ð_r    )r   údict[str, Any]r¥   r¦   )r7   r¨   r¥   rÒ   )NNrN   F)
r@   ú
str | NonerA   úLogger | NonerB   r¦   rC   Úboolr¥   rÒ   )rI   r¦   r¥   r   )NN)r7   r¨   r@   rÓ   rA   rÔ   r¥   rÒ   )rN   )r>   rÒ   rB   r¦   r¥   ÚNoner§   )F)rB   r¦   rC   rÕ   r¥   r   ).r¬   Ú
__future__r   r2   Úos.pathrI   r4   Úglobr   Ú	itertoolsr   Úloggingr   r   r0   Útypingr   rH   rÇ   r	   r
   r   Ú&jupyter_server.services.config.managerr   r   Újupyter_server.utilsr   rƒ   Ú	traitletsr   r   r   r   r   r5   Ú__file__r|   r   r<   rE   rJ   rr   ru   rw   rÀ   r?   rº   r    r   Ú<module>rá      sú   ðÙ õ #ã Ý Ý Ý Ý Ý !Ý ã ß SÑ Sß RÝ 7ß =Õ =ð !˜Ÿ™  §¡¨XÓ!6¸ÓDÐ ó	ó! ðJ $(Ø ØØ"'ð	!Ø ð!àð!ð ð!ð  ð	!ð
 ó!ó&ð( aeðaØ!ðaØ5?ðaØP]ðaàóaôH'ôK;�	ô K;ó\Gõ#`r    