
    oiz                     @   d dl Z d dlZd dlmZ d dlmZmZ d dlmZ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mZ d	dlmZ d dlmZmZmZmZ d	dlmZ d	dlmZ d	dl m!Z!m"Z"m#Z# d	dl$m%Z% d	dl&m'Z'm(Z(m)Z) d	dl*m+Z+ d	dl,m-Z-m.Z.m/Z/m0Z0 dZ1d Z2dee   fdZ3defdZ4e4Z5y)    N)Optional)EnvironmentFileSystemLoader)FileFindHandler
path_regex)url_path_join)ThemesHandler)jupyter_config_path)	ServerApp   )ExecutionRequestHandlerJUPYTER_SERVER_2)VoilaContentsHandler)JSONFileConfigLoaderPyFileConfigLoaderConfigConfigFileNotFound)VoilaConfiguration)TornadoVoilaHandler)ROOTcollect_static_pathscollect_template_paths)VoilaShutdownKernelHandler)MultiStaticFileHandlerTemplateStaticFileHandlerAllowListFileHandler)TornadoVoilaTreeHandler)get_data_dirget_server_root_dirpjoinget_voila_labextensions_pathz"(?P<kernel_id>\w+-\w+-\w+-\w+-\w+)c                      ddigS )z
    Returns a list of dictionaries with metadata describing
    where to find the `_load_jupyter_server_extension` function.
    modulezvoila.server_extension r$       ^/home/ubuntu/docker-apps/notebooks/venv/lib/python3.12/site-packages/voila/server_extension.py _jupyter_server_extension_pointsr'   1   s    
 /011r%   returnc                     d} d}g t               t        j                         }|D ]~  }t        | d|      }	 |j	                         }| 
t               } | j                  |       t        | d|      }	 |j	                         }| 
t               } | j                  |        | S # t        $ r Y Mw xY w# t        $ r Y w xY w)zn
    Loads voila.json and voila.py config file from current working
    directory and other Jupyter paths
    Nvoilaz.py)filenamepathz.json)	r
   osgetcwdr   load_configr   merger   r   )
new_configbase_file_nameconfig_file_pathscurrent	py_loader	py_configjson_loaderjson_configs           r&   load_config_filer9   9   s     JN=-/==$ &>2B#0FWU		!--/I!#X
Y' +&'u-G
	%113K!#X
[)+2 ! " 		 " 		s#   -B*9-B9*	B65B69	CC
server_appc                 @   | j                   }t        |       }t               }||j                  |       |j                  }t        ddg|      }t        ddg|      }ddi}t        d$t        |      dgd|}||j                  d<   t        j                  d	t        j                  j                  t        d
      d      }	|j!                  |	d       d}
t#        |j                  d         }d|i}t%        t'               d      }t)        |j*                        }t#        |d      t,        | j.                  ||dft#        |d      t0        |ft#        |dt2        z         t0        |ft#        |d      t4        ft#        |d      t6        d||dgdft#        |d      t8        d|ift#        |d      t:        ft#        |d      t<        |j>                  |j@                  t        j                  jC                  tE        |j                              dft#        |d t2        z        tF        |fg	}tH        r4|jJ                  r(|jM                  t#        |d!tN        z        tP        f       |jS                  |
|       |jS                  |
t#        |d"      tT        |dgd#fg       y )%N)parentr*   	nbconvert
autoescapeTzjinja2.ext.i18n)loader
extensionsvoila_jinja2_envnbuii18n)	localedirfallbackF)newstylez.*$base_urlvoila_configurationthemesz/voila/render/(.*))configtemplate_pathsrH   z/voilaz/voila/treez/voila/templates/(.*)z/voila/api/themes/(.*)z/voila/api/themes/)
themes_urlr,   labextensions_pathno_cache_pathsz/voila/static/(.*)pathsz/voila/api/shutdown/(.*)z/voila/files/(.*))	allowlistdenylistr,   z/voila/api/contents%sz/voila/execution/%sz/voila/labextensions/(.*))r,   rO   r$   )+web_appr   r9   update_configtemplater   r   r   r   settingsgettexttranslationr-   r,   joinr   install_gettext_translationsr   r    r   r!   extra_labextensions_pathr   rJ   r   r   r   r	   r   r   r   file_allowlistfile_denylist
expanduserr   r   r   progressive_renderingappend_kernel_id_regexr   add_handlersr   )r:   rS   rH   local_configtemplate_namerK   static_pathsjenv_optenvrB   host_patternrG   tree_handler_conf
themes_dirrN   handlerss                   r&   _load_jupyter_server_extensionrl   _   s     G -J?#%L)),7'00M+Wk,BMRN'+(>NLd#H
 /%& C
 ,/G'("'',,tV4tD $$TE$:LW--j9:H.0CD|~x0J544 ($89$++"0':	
 (H-#	
 (MJ$>?#	
 ($;<%	

 ($=>1"&8#&%			
 ($89"l#	
 ($?@&	

 ($89 0??/==**+>w?O?O+PQ	
 ($<z$IJ 	
i9Ht /EEh(>AQ(QR'	
 x0 h(DE.'*e	
	
r%   )6rW   r-   typingr   jinja2r   r   jupyter_server.base.handlersr   r   jupyter_server.utilsr    jupyterlab_server.themes_handlerr	   jupyter_core.pathsr
   jupyter_server.serverappr   !tornado.execution_request_handlerr   r   tornado.contentshandlerr   traitlets.configr   r   r   r   configurationr   tornado.handlerr   rP   r   r   r   shutdown_kernel_handlerr   static_file_handlerr   r   r   tornado.treehandlerr   utilsr   r   r    r!   ra   r'   r9   rl   load_jupyter_server_extensionr$   r%   r&   <module>r~      s     	  0 D . : 2 . X 9  . 0 E E ? 
 9  9 2#(6* #Luy ur !? r%   