
    FhI6                       S r SSKJr  SSKrSSKrSSKrSSKJr  SSKJ	r	J
r
  SSKJr  SSKJrJr  SSKJrJr  SS	KJr  SS
KJrJr  SSKJrJrJr  SSKJrJr  SSK J!r!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,J-r-  \	(       a  SSK.J/r/  Sr0\Rb                  " S5      r2SS jr3 " S S\\\5      r4 " S S\45      r5SS jr6S S jr7g)!zJupyterLab Server handlers    )annotationsN)	lru_cache)TYPE_CHECKINGAny)urlparse)FileFindHandlerJupyterHandler)ExtensionHandlerJinjaMixinExtensionHandlerMixin)url_path_join)templateweb   )	LabConfigget_page_configrecursive_update)LicensesHandlerLicensesManager)ListingsHandlerfetch_listings)SettingsHandler)_get_overrides)ThemesHandler)TranslationsHandler)WorkspacesHandlerWorkspacesManager)LabServerAppzP/(?P<mode>{}|doc)(?P<workspace>/workspaces/[a-zA-Z0-9\-\_]+)?(?P<tree>/tree/.*)?z
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>Error</title>
</head>
<body>
<h2>Cannot find template: "{{name}}"</h2>
<p>In "{{path}}"</p>
</body>
</html>
c                |     [        U 5      n[        UR                  UR                  /5      $ ! [         a     gf = f)zbTest whether a string is a full url (e.g. https://nasa.gov)

https://stackoverflow.com/a/52455972
F)r   allschemenetloc
ValueError)urlresults     mC:\Users\julio\OneDrive\Documentos\Trabajo\Ideas Frescas\venv\Lib\site-packages\jupyterlab_server/handlers.pyis_urlr&   7   s:    
#FMM6==122 s   +. 
;;c                      \ rS rSrSr\SS j5       r\R                  \R                   S       S	S jj5       5       r
Srg)

LabHandlerC   zRender the JupyterLab View.c           	        [        U R                  SS5      U R                  l        [        5       nU R                  nUR
                  nU R                  R                  S0 5      nU R                  R                  SS5      nU R                  R                  SS5      nUR                  [        R                  S5      nU R                  R                  S	5      nU R                  R                  S5      nUR                  S
U5        UR                  SU5        UR                  S/ 5        UR                  SU5        U R                  R                  US'   [        R                  R                  [        R                  R!                  U5      5      nSn	 U R"                  R$                  R&                  n	U	=(       d    SUS'   U R                  =R                  S-  sl        U R                  R                  SS5      n
U R2                  nU(       d  SnUR                  SU
5        UR                  SU5        UR5                  5        H  n[        X,5      U[7        U5      '   M     UR5                  5        HV  nUR9                  S5      (       d  M  [7        SU-   5      n[        X,5      nUb  [;        U5      (       d  [=        X~5      nXU'   MX     UR>                  UR@                  -   n[C        U[E        XU RF                  S95        U R                  R                  SS5      nU(       a  U" X5      nU$ ! [(         a     U R"                  R&                  (       aa  U R"                  R&                  U:w  aG  [*        R,                  " U R"                  R&                  5      R/                  U5      R1                  5       n	 GN! [(         a      GNf = ff = f)z Construct the page config objectstore_idr   page_config_dataterminals_availableFserver_root_dir /base_urlfullStaticUrlterminalsAvailableignorePlugins
serverRootpreferredPathr   mathjax_configzTeX-AMS_HTML-full,Safez?https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/MathJax.jsmathjaxConfigfullMathjaxUrl_urlfull_N)loggerpage_config_hook)$getattrapplicationr+   r   extensionappapp_settings_dirsettings
setdefaultgetreplaceossepstatic_url_prefixrstrippathnormpath
expanduser	serverappcontents_managerpreferred_dir	ExceptionpathlibPathrelative_toas_posixmathjax_urltrait_names
_camelCaseendswithr&   ujoinextra_labextensions_pathlabextensions_pathr   r   log)selfconfigappsettings_dirpage_config	terminalsserver_rootr1   full_static_urlpreferred_pathr7   rU   name	full_namefull_urlr[   r=   s                    r%   r   LabHandler.get_page_configF   s9    %,j!%
!  --++mm../A2FMM%%&;UC	mm''(92>!))"&&#6==$$Z0 0077<@3Y?3|[9"&"2"2";";Jgg&&rww'9'9+'FG	!^^<<JJN (6'<O$!!Q&!**+;=UV&&[K?/= &&(D,3C,>K
4() ) &&(D==(("7T>2Is)H#F8,<,< 4%-	" ) !99C<R<RR);RVRZRZ[	

  ==,,-?F*4=Ki  		>>//DNN4P4PT_4_T^^%A%AB$[1! #
  	s+    L1 1
O<A<N;;
O
O	O

ONc                    Uc  SOUR                  SS5      nUc  SOUR                  SS5      nU R                  5       nUS:X  a  SUS'   OS	US'   X%S
'   XES'   U R                  SUS9nU R                  U5        g)zGet the JupyterLab html page.Ndefaultz/workspaces/r/   z/tree/doczsingle-documentmodezmultiple-document	workspacetreePathz
index.html)ra   )rE   r   render_templatewrite)r]   rm   rn   tree	tree_pathra   tpls          r%   rD   LabHandler.get   s     "+!2I	8I8I.Z\8]	,BDLL2,F	**, 5="3K"5K#,K "+J ""<["I

3     returnzdict[str, Any])NNN)rm   
str | Nonern   rz   rr   rz   ry   None)__name__
__module____qualname____firstlineno____doc__r   r   r   authenticatedremoveslashrD   __static_attributes__rw   rv   r%   r(   r(   C   sc    %P Pd 	__X\2<KU	  rv   r(   c                  :   ^  \ rS rSrSr\SU 4S jj5       rSrU =r$ )NotFoundHandler   zA handler for page not found.c                r   > [         TU ]  5       R                  5       nU R                  R                  US'   U$ )zGet the page config.notFoundUrl)superr   copyrequestrJ   )r]   ra   	__class__s     r%   r   NotFoundHandler.get_page_config   s5     g-/446%)\\%6%6M"rv   rw   rx   )	r|   r}   r~   r   r   r   r   r   __classcell__)r   s   @r%   r   r      s    ' rv   r   c           	        [         R                  " 5        HP  nUR                  S5      (       d  M  [        X5      n[	        XUR                  [        R                  S5      5        MR     [         R                  " 5        Hz  nUR                  S5      (       d  M  [        X5      n[        U5      (       a  M8  UR                  S5      (       d  SU-   nUR                  S5      (       a  USS n[	        XU5        M|     [        R                  UR                  R                  SS5      5      nU R                  U[        45        UR                  (       a  / OS/nUR                   UR"                  -   n[%        UR&                  S5      nU R                  U[(        XeS.45        UR*                  (       Ga*  [-        UR.                  5      u  pU	(       a  S	n
UR0                  R3                  X5        UR.                  UR*                  UR4                  UUS
.n[%        UR6                  S5      nU R                  U[8        U45        [%        UR6                  S5      nU R                  U[8        U45        UR:                  (       a\  [%        UR:                  S5      nU R                  U[<        U45        [%        UR:                  S5      nU R                  U[<        U45        UR>                  (       as  S[A        UR>                  5      0n[%        URB                  S5      nU R                  U[D        U45        [%        URB                  S5      nU R                  U[D        U45        URF                  RI                  S0 5      RI                  S0 5      nURI                  SS5      nURI                  SS5      nU(       a1  U(       a*  [J        RL                  " SSS9  SSK'nURQ                  S5        URI                  SS5      [R        l*        URI                  S0 5      [R        l+        [%        URX                  5      n[%        US5      nU(       a#  [[        UR]                  S5      5      [R        l/        U(       a#  [[        UR]                  S5      5      [R        l0        [c        S5        [e        [R        R^                  5      S:  d  [e        [R        R`                  5      S:  aR  SSK3J4n  [R        RT                  S-  nURk                  S USS 9[R        l6        [R        Rl                  Ro                  5         U R                  U[R        0 45        URp                  (       a?  URr                  n[%        US5      nU R                  U[t        UURp                  UUS!.45        URv                  (       a9  URv                  n[%        US5      nU R                  U[x        S[{        US"9045        [%        UR                  S#5      nU R                  U[|        45        g)$z,Add the appropriate handlers to the web app._dirr0   r:   Nr/   z(.*))rJ   no_cache_pathszFailed loading overrides: %s)rA   schemas_dirr`   r[   	overrides?z(?P<schema_name>.+)z(?P<locale>.*)managerz(?P<space_name>.+)r^   r   blocked_extensions_urisallowed_extensions_uriszsSimultaneous blocked_extensions_uris and allowed_extensions_uris is not supported. Please define only one of those.   )
stacklevelr   listings_refresh_secondsi  listings_request_options,)ioloopi  c                     [        S 5      $ N)r   rw   rv   r%   <lambda>add_handlers.<locals>.<lambda>;  s	    N4(rv   g?)callback_timejitter)
themes_urlrJ   r[   r   )parentz.*)?r   class_trait_namesrX   r>   setattrrE   rF   rG   r&   
startswithMASTER_URL_PATTERNformatapp_urlappendr(   cache_filesrZ   r[   rY   labextensions_urlr   r   r   rA   r\   warninguser_settings_dirsettings_urlr   translations_api_urlr   workspaces_dirr   workspaces_api_urlr   rB   rD   warningswarnsysexitr   r   listings_request_optslistings_urlsetsplitr   r   r   lentornador   PeriodicCallbackpcstart
themes_dirr   r   licenses_urlr   r   r   )handlersextension_apprf   valueurl_patternr   r[   r   r   erroroverrides_warningsettings_configsettings_pathsetting_pathtranslations_pathtranslations_lang_pathworkspaces_configworkspaces_api_pathworkspace_api_pathr   r   r   r   listings_pathr   r   r   themes_pathr   licenses_pathfallthrough_urls                                  r%   add_handlersr      s1    ++-}}V$$,U]]2663%?@	 . ++-}}V$$,%==$$%KE>>##2JEU+ . %++M,A,A,I,I#r,RSKOO[*-. )44R3%N '??-BbBbbm==vFOO'J	
    )-*H*HI	 >%%&7? !. > >(44);;"4"+
 m88#>IJ ]779NOHI -- !&m&H&H# NOO.0C_UV &+=+M+MO_%`"OO35H/Z[ ##&(9-:V:V(WX $M$D$DcJ,.?ARST #=#C#CEYZ+->@QRS $,,002>BB>SUVO#2#6#67PRT#U#2#6#67PRT#U&= B	
 	/>/B/B"G0O, -<,?,?@Z\^,_O)334L,/M256M6S6STW6X2Y/256M6S6STW6X2Y/4 	O334q8667!;"'@@4G#44(' 5 

 	  "OO]OR89 "--
J/",)44*<&4			
 !!$11lF3OiP]9^-_`	

 M1159OOO_o67rv   c                    SR                  S U R                  5        5       5      nUS   R                  5       USS -   $ )zDConvert a string to camelCase.
https://stackoverflow.com/a/20744956
r/   c              3  R   #    U  H  oR                  5       (       d  M  Uv   M     g 7fr   )isalpha).0xs     r%   	<genexpr>_camelCase.<locals>.<genexpr>e  s     <1		QQs   '	'r   r   N)jointitlelower)baseoutputs     r%   rW   rW   a  s:     WW<

<<F!9??vabz))rv   )r#   strry   bool)r   z	list[Any]r   r   ry   r{   )r   r   ry   r   )8r   
__future__r   rF   rQ   r   	functoolsr   typingr   r   urllib.parser   jupyter_server.base.handlersr   r	    jupyter_server.extension.handlerr
   r   jupyter_server.utilsr   rY   r   r   r   r^   r   r   r   licenses_handlerr   r   listings_handlerr   r   settings_handlerr   settings_utilsr   themes_handlerr   translations_handlerr   workspaces_handlerr   r   r_   r   r   TemplateDEFAULT_TEMPLATEr&   r(   r   r   rW   rw   rv   r%   <module>r      s      # 	    % ! H ^ 7 ! @ @ > = - * ) 5 D! X  $$ "	k+-BN k\	j 	a8H*rv   