
    Mh                     v   d Z ddlZddlZddlZddlZddl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mZmZ ddlmZ ddlmZ ddl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  e
j         e
j         e!                    Z"d Z#d Z$d Z%d Z&d Z' G d d          Z( G d de          Z) G d de          Z*dS )z7A lab app that runs a sub process for a demo or a test.    N)files)path)join)S_IRGRPS_IROTHS_IRUSR)TemporaryDirectory)patch)write_kernel_spec)	ServerApp)
ProcessApp)defaultc                      t          j        d          } t          j        | d          }t	          |d          5 }|                    d           d d d            n# 1 swxY w Y   | S )Nmock_staticprefixz
index.htmlwa  
<!DOCTYPE HTML>
<html>
<head>
    <meta charset="utf-8">
    <title>{% block title %}Jupyter Lab Test{% endblock %}</title>
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    {% block meta %}
    {% endblock %}
</head>
<body>
  <h1>JupyterLab Test Application</h1>
  <div id="site">
    {% block site %}
    {% endblock site %}
  </div>
  {% block after_site %}
  {% endblock after_site %}
</body>
</html>)tempfilemkdtempospr   openwrite)template_dirindex_filepathfids      Y/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/jupyterlab/tests/test_app.py_create_template_dirr      s    #=999LXlL99N	nc	"	" 
c			
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
0 s   AA!$A!c                  0    t          j        d          } | S )Nr   r   )r   r   )
static_dirs    r   _create_static_dirr    ;   s    !777J    c                     t          j        d          t          j        dd          } t	          j        |            t          j        }d}t          |          	                    |          
                                }t          t          j        | d          d          5 }|                    |                    d                     d	d	d	           n# 1 swxY w Y   t          j        fd
           S )z)Create a temporary directory for schemas.mock_schemasr   z@jupyterlabzapputils-extensionz8tests/schemas/@jupyterlab/apputils-extension/themes.jsonzthemes.jsonr   zutf-8Nc                  .    t          j         d          S NTshutilrmtreeroot_dirs   r   <lambda>z%_create_schemas_dir.<locals>.<lambda>L       FM(D99 r!   )r   r   r   r   osmakedirsjupyterlab_server__name__r   joinpath
read_bytesr   r   decodeatexitregister)extension_dirschema_packageschema_paththemesr   r*   s        @r   _create_schemas_dirr:   @   s   ~666HHX}6JKKMK '/NLK>""++K88CCEEF	ch}m44c	:	: *c		&--(()))* * * * * * * * * * * * * * *
O9999:::Os   &)CC"Cc                  `     t          j        d           t          j         fd            S ),Create a temporary directory for workspaces.mock_user_settingsr   c                  .    t          j         d          S r%   r&   r)   s   r   r+   z+_create_user_settings_dir.<locals>.<lambda>S   r,   r!   r   r   r4   r5   r)   s   @r   _create_user_settings_dirr@   P   s6    ';<<<H
O9999:::Or!   c                  `     t          j        d           t          j         fd            S )r<   mock_workspacesr   c                  .    t          j         d          S r%   r&   r)   s   r   r+   z(_create_workspaces_dir.<locals>.<lambda>Z   r,   r!   r?   r)   s   @r   _create_workspaces_dirrD   W   s6    '8999H
O9999:::Or!   c                   *    e Zd ZdZd Zd Zd Zd ZdS )TestEnvzuSet Jupyter path variables to a temporary directory

    Useful as a context manager or with explicit start/stop
    c                 z   t                      x| _        }t          j        t          j        t          |j        d          t          |j        d          t          |j        d          t          |j        d          d          | _        | j        	                                 t          j
        t          j        t          |j        dd          gt          |j        ddd          gt          |j        dd          gt          |j        ddd          g	          | _        | j        	                                 d S )
Njupyterjupyter_datajupyter_runtimeipython)JUPYTER_CONFIG_DIRJUPYTER_DATA_DIRJUPYTER_RUNTIME_DIR
IPYTHONDIRshareenvetc)SYSTEM_JUPYTER_PATHENV_JUPYTER_PATHSYSTEM_CONFIG_PATHENV_CONFIG_PATH)r	   test_dirr
   dictr-   environpjoinname	env_patchstartmultiplejupyter_corepaths
path_patch)selftds     r   r]   zTestEnv.startd   s   /111J&+BGY&?&?$)"'>$B$B',RW6G'H'H#BGY77	 
 
 	.!&rw!C!C D#BGUGYGGH %bgui @ @A"27E5)DDE
 
 
 	r!   c                     | j                                          | j                                         	 | j                                         d S # t
          $ r Y d S w xY wN)r\   stopra   rW   cleanupOSErrorrb   s    r   rf   zTestEnv.stopy   sk    	M!!##### 	 	 	DD	s   A 
AAc                 B    |                                   | j        j        S re   )r]   rW   r[   ri   s    r   	__enter__zTestEnv.__enter__   s    

}!!r!   c                 .    |                                   d S re   )rf   )rb   exc_infos     r   __exit__zTestEnv.__exit__   s    		r!   N)r0   
__module____qualname____doc__r]   rf   rk   rn    r!   r   rF   rF   ^   sZ         
     *  " " "    r!   rF   c                   >     e Zd ZdZdZd Z fdZd Zd Zd Z	 xZ
S )ProcessTestAppzDA process app for running tests, includes a mock contents directory.*c                 V    t                      g| _        t                      g| _        d S re   )r    static_pathsr   template_pathsri   s    r   initialize_templatesz#ProcessTestApp.initialize_templates   s*    /1123556r!   c                    t                      | _        | j                                         t          j        |            t
          j        | j        d<   | j        d         | _	        | j
        d         | _        t                      | _        t                      | _        t!                      | _        |                                  d| j        d         _        t)                                                       d S )Nallow_originr   echokernel_manager)rF   r\   r]   r   __init__rt   r{   settingsrw   r   rx   r   r:   schemas_dirr@   user_settings_dirrD   workspaces_dir_install_default_kernelsdefault_kernel_namesuperinitialize_settings)rb   	__class__s    r   r   z"ProcessTestApp.initialize_settings   s     D!!!(6(Cn%+A. /2.00!:!<!<466%%'''>D&';##%%%%%r!   c                 H   t           j        }t          |                                d|          }t	          j        |           t          t          |d          d          5 }|                    t          j	        |                     ddd           dS # 1 swxY w Y   dS )zInstall a kernel spec to the data directory.

        Parameters
        ----------
        kernel_name: str
            Name of the kernel.
        kernel_spec: dict
            The kernel spec for the kernel
        kernelszkernel.jsonr   N)
r_   r`   rZ   jupyter_data_dirr-   r.   r   r   jsondumps)rb   kernel_namekernel_specr`   
kernel_dirfs         r   _install_kernelzProcessTestApp._install_kernel   s     "51133YLL

J%
M22C88 	-AGGDJ{++,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-s   "(BBBc                     |                      dt          j        ddddgddd           t          j        }t          |                                d	d
          }t          |           d S )Nr|   z-mzjupyterlab.tests.echo_kernelz-fz{connection_file}zEcho Kernel)argvdisplay_namelanguage)r   r   r   rK   )r   sys
executabler_   r`   rZ   r   r   )rb   r`   ipykernel_dirs      r   r   z'ProcessTestApp._install_default_kernels   s     N2' !."
 
 	 	
 	
 	
 "e4466	9MM-(((((r!   c                    | j         j                                         | j         j                                         | j                                         	 t          j        |                                           d S # t          $ rF}| j	        
                    t          |                     t          j        d           Y d }~d S d }~ww xY w)N   )	serverapphttp_serverrf   io_loopr\   r-   _exitresult	Exceptionlogerrorstr)rb   futurees      r   _process_finishedz ProcessTestApp._process_finished   s    "'')))##%%%	HV]]__%%%%% 	 	 	HNN3q66"""HQKKKKKKKKK	s   &A? ?
C	;C

C)r0   ro   rp   rq   r{   ry   r   r   r   r   __classcell__)r   s   @r   rt   rt      s        NNL7 7 7& & & & &$- - - ) ) )*      r!   rt   c                   6    e Zd Z ed          d             ZdS )RootedServerAppr*   c                 J   t          j        d          t          j        t	          j        d                     t          t	          j        dd          d          5 }|                    d           ddd           n# 1 swxY w Y   t	          j        dd          }t          |d          5 }|                    d	           ddd           n# 1 swxY w Y   t          j        |t          t          z  t          z             t          j        fd
           S )z6Create a temporary directory with some file structure.	mock_rootr   srcztemp.txtr   helloNzreadonly-temp.txtzhello from a readonly filec                  .    t          j         d          S r%   r&   r)   s   r   r+   z3RootedServerApp._default_root_dir.<locals>.<lambda>   s    h = = r!   )r   r   r-   mkdirr   r   r   r   chmodr   r   r   r4   r5   )rb   r   readonly_filepathr*   s      @r   _default_root_dirz!RootedServerApp._default_root_dir   s    #;777
(E**+++#(8UJ77== 	IIg	 	 	 	 	 	 	 	 	 	 	 	 	 	 	  HXu6IJJ#S)) 	4SII2333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	"Gg$5$?@@@====>>>s$   "BBB5CCCN)r0   ro   rp   r   r   rr   r!   r   r   r      s8        WZ    r!   r   )+rq   r4   r   r-   r'   r   r   importlib.resourcesr   r   r   os.pathr   rZ   statr   r   r   r	   unittest.mockr
   r_   r/   ipykernel.kernelspecr   jupyter_server.serverappr   jupyterlab_server.process_appr   	traitletsr   realpathdirname__file__HEREr   r    r:   r@   rD   rF   rt   r   rr   r!   r   <module>r      s   > =   				  



  % % % % % %       ! ! ! ! ! ! * * * * * * * * * * ' ' ' ' ' '               2 2 2 2 2 2 . . . . . . 4 4 4 4 4 4      s|KCK))**  <  
       ( ( ( ( ( ( ( (VH H H H HZ H H HV    i     r!   