
    ^h                    z    S r SSKJ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   " S
 S\\\5      rg)z7A lab app that runs a sub process for a demo or a test.    )annotationsN)Any)ExtensionAppExtensionAppJinjaMixin)IOLoop   )	LabConfigadd_handlers)Processc                  R    \ rS rSrSrSrSrSS jrSS jrSS jr	SS jr
SS	 jrS
rg)
ProcessApp   zFA jupyterlab app that runs a separate process and exits on completion.TFc                *    [         R                  S/0 4$ )zUGet the command and kwargs to run with `Process`.
This is intended to be overridden.
z	--version)sys
executableselfs    W/home/james-whalen/.local/lib/python3.13/site-packages/jupyterlab_server/process_app.pyget_commandProcessApp.get_command   s     ,b00    c                `    [         R                  " 5       R                  U R                  5        g)zStart the application.N)r   currentadd_callback_run_commandr   s    r   initialize_settingsProcessApp.initialize_settings   s    %%d&7&78r   c                0    [        U R                  U 5        g)zInitialize the handlers.N)r
   handlersr   s    r   initialize_handlersProcessApp.initialize_handlers#   s    T]]D)r   c                    U R                  5       u  pUR                  SU R                  5        [        U40 UD6R	                  5       n[
        R                  " 5       R                  X0R                  5        g )Nlogger)	r   
setdefaultlogr   
wait_asyncr   r   
add_future_process_finished)r   commandkwargsfutures       r   r   ProcessApp._run_command'   sY    **,(DHH-+F+668##F,B,BCr   c                6    [         R                  " 5       R                  5         [        R                  " UR                  5       5        g ! [         aD  nU R                  R                  [        U5      5        [        R                  " S5         S nAg S nAff = f)Nr   )
r   r   stopr   exitresult	Exceptionr%   errorstr)r   r+   es      r   r(   ProcessApp._process_finished-   s]    	NN!!#HHV]]_% 	HHNN3q6"HHQKK	s   AA
 

B:BB N)returnz tuple[list[str], dict[str, Any]])r7   None)r+   r   r7   r8   )__name__
__module____qualname____firstlineno____doc__load_other_extensionsopen_browserr   r   r    r   r(   __static_attributes__r6   r   r   r   r      s,    P  L19*Dr   r   )r=   
__future__r   r   typingr   $jupyter_server.extension.applicationr   r   tornado.ioloopr   r   r	   r
   processr   r   r6   r   r   <module>rF      s0    > " 
  U ! - "'L "r   