
    Fh7                       S r SSKJr  SSKrSSKJr  SSKJr  SSK	J
r
  SSKJr  SSKJr  SSKJr  SSKrSS	KJrJrJr  SS
KJrJr  SSKJr  SSKJrJrJrJ r J!r!  \R                  " \RD                  " \#5      S5      r$SS jr%SS jr&    S         SS jjr'SS jr( S       SS jjr)SS S jjr* " S S\5      r+S!S jr,S"S#S jjr-g)$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                    SU ;   a  U S   nU$ SU ;   a/  [        U S   [        5      (       a  U S   R                  SS5      nU$ SnU$ )z#Get the url from the extension datahomepage
repositoryurl )
isinstancedictget)datar   s     kC:\Users\julio\OneDrive\Documentos\Trabajo\Ideas Frescas\venv\Lib\site-packages\jupyterlab_server/config.pyget_package_urlr      sb     T:
 J	 
	*T,-?"F"F< $$UB/ J J    c                   0 nU  GH  n[        [        [        USS5      5      [        [        USSS5      5      5       GHk  n[        USS9 n[        R
                  " U5      nSSS5        WS   U;  d  M8  [        US   US	   UR                  S
S5      [        U5      U[        R                  " U5      SUR                  S[        5       5      UR                  S[        5       5      S9	nSU;   a@  SUR                  S0 5      ;   a*  [        UR                  S5      R                  S5      S9US'   [        R                  " [        R                  " U5      S5      n[        R                  " U5      (       a,  [        USS9 n[        R
                  " U5      US'   SSS5        XaUS   '   GMn     GM     U$ ! , (       d  f       GNY= f! , (       d  f       N3= f)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:%sN;<
H h1S))C. 2v&:: #I. 'M2 >'0# [[2"!(^TV!D&{{<@
  7*uLRT8U/U)-'++l2K2O2OPU2V)WD&"xxH(=~N::l++lW=*.))C.Y >59T&\27
 &<  1 21* >=s   F5 G5
G
Gc                :    [        X#5      nUR                  S5      $ )zGet 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	:B66-  r    c                    [        U SS9 nU R                  S5      (       a  [        R                  " U5      sSSS5        $ [        R                  " U5      sSSS5        $ ! , (       d  f       g= f)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)r1   endswithjson5r3   r2   )pathr9   s     r   load_configrJ   _   sK     
dW	%==""::c? 
&	% yy~ 
&	%	%s   ,A A  
A.c                   0 nSnU(       a  [        US5      [        US5      /nU H}  n[        R                  " U5      (       d  M   [        R                  " U5      (       d  M=  [	        U5      nUS4 H"  nX;   d  M
  Xx    Vs0 s H  oS_M     snUW'   M$     [        X75          O   [        USS9n	[        X95        0 n
/ =oS'   [        U 5      nUR                  U0 5        UR                  5        H  u  pS	US
   ;  a  U(       a  UR                  SUS   5        M,  US
   S	   nUS   US   S.nSU;   a  US   US'   SU;   a  US   US'   SU;   a  US   US'   UR                  S5      US'   UR                  U5        US   nUS
   R                  U5      (       d  M  US
   U   XS   '   M     U(       a  [        R                  " U5      n[        USS5      n[        R                  " U5      (       a  [        USS9 n[        R                   " U5      nSSS5        WS
   R                  S0 5      nUR                  5        H-  u  nnUU
;   a  M  UR                  U5      (       d  M&  X   U
U'   M/     0 n[#        U
5       H.  nX4   R                  U5      SL a  M  U
U   nU H  nSUU'   M
     M0     UnUR%                  UR                  U/ 5      5        UX4'   UR                  5        H>  u  nn['        U[(        5      (       d  M  U Vs/ s H  nUU   (       d  M  UPM     snX8'   M@     U$ s  snf ! , (       d  f       GN$= fs  snf )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   sq   
 K'L "$78"$67
 !Dzz$CKK$5$5"4((*>?C{:>)$D)3$Y)$DS	 @ !3 ! 0vUK[5 "$799J34-.@AN <,%++-8L11<hv>NOL)(3%f-x7GH	("%-k%:Ik"h&)1/)BIo&h!)'!2Ig#+<<#>	- )$ L!%%l33;CL;QR^;_&'78- .4 ++./!'8^D::'(('':c99S> ;#L1556I2NL!-!3!3!5X44<<--6>6L.s3	 "6  12$((.$6248!D+/"4( " 3 -O;??<<= /K "'')
UeT""5:LU6eFmULK * Y %E` ;:4  Ms   L.?L3MM3
Mc                >    [        U5      nUR                  SU 5        g)zWrite page config to diskr>   N)r?   set)r>   rB   rD   s      r   write_page_configru      s    	U	#BFF=+&r    c                  $   \ rS rSrSr\" SSS9R                  SS9r\" SSS9R                  SS9r\" SS	S9R                  SS9r	\" S
SS9R                  SS9r
\" SSS9R                  SS9r\" \" 5       SS9R                  SS9r\" \" 5       SS9R                  SS9r\" SSS9R                  SS9r\" SSS9R                  SS9r\" SSS9R                  SS9r\" SS9R                  SS9r\" SSS9R                  SS9r\" SSS9R                  SS9r\" SS9R                  SS9r\" SSS9R                  SS9r\" SS9R                  SS9r\" SS9R                  SS9r\" SS9r\" SSS9R                  SS9r\" SS9R                  SS9r\" SS9R                  SS9r\" SSS9R                  SS9r\" SSS9R                  SS9r\" SS S9R                  SS9r \!" S!5      S9S" j5       r"\!" S#5      S9S$ j5       r#\!" S%5      S:S& j5       r$\!" S'5      S9S( j5       r%\!" S)5      S9S* j5       r&\!" S+5      S9S, j5       r'\!" S-5      S9S. j5       r(\!" S/5      S9S0 j5       r)\!" S15      S9S2 j5       r*\!" S35      S9S4 j5       r+\!" S55      S9S6 j5       r,S7r-g8);	LabConfig   z)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_dirc                    [         $ )N)DEFAULT_TEMPLATE_PATHselfs    r   _default_template_dirLabConfig._default_template_dir=  s    $$r    labextensions_urlc                .    [        U R                  S5      $ )Nzextensions/ujoinapp_urlr~   s    r   _default_labextensions_url$LabConfig._default_labextensions_urlA      T\\=11r    r7   c                    [        S5      $ )Nlabextensions)r   r~   s    r   _default_labextensions_path%LabConfig._default_labextensions_pathE  s    O,,r    workspaces_urlc                .    [        U R                  S5      $ )Nworkspaces/r   r~   s    r   _default_workspaces_url!LabConfig._default_workspaces_urlI  r   r    workspaces_api_urlc                0    [        U R                  SS5      $ )Napir   r   r~   s    r   _default_workspaces_api_url%LabConfig._default_workspaces_api_urlM  s    T\\5-88r    settings_urlc                0    [        U R                  SS5      $ )Nr   z	settings/r   r~   s    r   _default_settings_urlLabConfig._default_settings_urlQ      T\\5+66r    listings_urlc                0    [        U R                  SS5      $ )Nr   z	listings/r   r~   s    r   _default_listings_urlLabConfig._default_listings_urlU  r   r    
themes_urlc                0    [        U R                  SS5      $ )Nr   zthemes/r   r~   s    r   _default_themes_urlLabConfig._default_themes_urlY  s    T\\5)44r    licenses_urlc                0    [        U R                  SS5      $ )Nr   z	licenses/r   r~   s    r   _default_licenses_urlLabConfig._default_licenses_url]  r   r    tree_urlc                .    [        U R                  S5      $ )Nztree/r   r~   s    r   _default_tree_urlLabConfig._default_tree_urla  s    T\\7++r    translations_api_urlc                0    [        U R                  SS5      $ )Nr   ztranslations/r   r~   s    r   _default_translations_api_url'LabConfig._default_translations_api_urle  s    T\\5/::r     N)returnstrr   	list[str]).__name__
__module____qualname____firstlineno____doc__r   tagapp_nameapp_versionapp_namespacer   r@   r   extra_labextensions_pathr7   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   __static_attributes__r   r    r   rw   rw      s   3r >?CC4CPH"#DEIIQUIVKB%HIMMUYMZMf#FGKKSWKXGr(MNRRZ^R_#	U 	cc  	[	cc  B%KLPPX\P]M
 
cc   )VW[[ \   GHLLTXLYL
I	cc  
% 
cc  !&KLPPX\P]
, 
cc   34888EL./3343@J ?@L
 
cc  #(STXX Y  ?@DDDDQH_ 
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                 
    / SQ$ )z1
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                   SSK Jn  [        5       nX;  a  SU 3n[        U5      eSnU S:X  a	  [	        US9$ / [
        US   /[        5       // S.nU(       a  X3R                  U 5      S OU /n/ SpU H_  n
Xj    H(  nUR                  [        R                  " X5      5        M*     U	b  M8  Xj   (       d  MC  [        R                  " Xj   S   U5      n	Ma     [	        XS	9$ )
z_Get 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27)<oK~[99 $&q)*#%&E 1FW]]5)+,E7F*,d'A$$SXXa%=> #"xxa(8+F	  *;__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    