
    Xh%                         d 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	 ddl
mZmZ ddlmZ dd	lmZmZmZmZmZ  G d
 d      Z G d de	e      ZdZy)z-Tornado handlers for frontend config storage.    N)ThreadPoolExecutor)Event)
APIHandler)ExtensionHandlerMixin)genweb)run_on_executor)
AppOptions_ensure_optionsbuildbuild_checkcleanc                       e Zd ZdZ ed      ZdZdZdZdZ	ddZ
ej                  d        Zej                  d        Zej                  d        Zed	        Zed
        Zy)BuilderF   )max_workersNc                     t        |      }|j                  | _        || _        |j                  | _        |j
                  | _        |j                  | _        y N)r   loggerlog	core_modeapp_dircore_configlabextensions_path)selfr   app_optionss      U/var/www/html/myenv/lib/python3.12/site-packages/jupyterlab/handlers/build_handler.py__init__zBuilder.__init__   sI    %k2%%""**&22"-"@"@    c              #     K   | j                   rt        j                  ddd      | j                  rt        j                  ddd      	 | j	                  | j
                  | j                  | j                  | j                        }|rdnd}|rE| j                  j                  d       |D cg c]  }| j                  j                  |       c} n| j                  j                  d       t        j                  |d	j                  |      d      c c}w # t        $ r" | j                  j                  d       d}g }Y Vw xY ww)
Nstable )statusmessagebuildingneededzBuild recommendedzBuild is up to datez:Could not determine jupyterlab build status without nodejs
)r   r   Returnr%   _run_build_checkr   r   r   r   warninginfo
ValueErrorjoin)r   messagesr#   ms       r   
get_statuszBuilder.get_status!   s    >>**R@AA==**
rBCC	!22dhh(8(8$:Q:Q H "*XxF  !45.67!!!$734 jjFtyy7JKLL 8  	HHYZFH	s=   A	EA%D 1"DD 2'ED (E	EE		Ec              #   d  K   | j                   rd}t        |      | j                  sd| _        t	        j
                         x| _        }d| _        t               x| _        }	 | j                  | j                  | j                  || j                  | j                         |j                  d       d| _        	 | j                   y # t        $ r;}t!        |      dk(  r|j                  d       n|j#                  |       Y d }~Vd }~ww xY w# d| _        w xY w# t        $ r}|d }~ww xY ww)NzCancel in progressFTAborted)
_cancelingr,   r%   canceledr   Future_futurer   _kill_event
_run_buildr   r   r   r   
set_result	Exceptionstrset_exception)r   msgfutureevtes        r   r   zBuilder.build9   s	    ??&CS/!}}!DM$'JJL0DL6 DM%*W,Ds&ooLL$((C1A1A4CZCZ  !!$' !&	,,  ,q6Y&%%e,((+	, !&  	G	sa   A D0#AC
 3D0;D 	D0
	D1D	D 	DD 	DD0	D-&D((D--D0c              #      K   | j                   sd}t        |      d| _        | j                   d| _        d| _        y w)NzNo current buildTF)r%   r,   r3   r6   r4   )r   r=   s     r   cancelzBuilder.cancelT   s;     }}$CS/!lls   >A c                 4    t        t        ||||            S )N)r   r   r   r   r   )r   r
   )r   r   r   r   r   s        r   r)   zBuilder._run_build_check^   s#    "'#5	
 	
r   c                     t        |||||      }	 t        |      S # t        $ rR | j                  j	                         rY y | j
                  j                  d       t        |       t        |      cY S w xY w)N)r   r   
kill_eventr   r   rD   z)Build failed, running a clean and rebuild)r
   r   r:   r7   is_setr   r*   r   )r   r   r   rF   r   r   r   s          r   r8   zBuilder._run_buildi   su     !#1
	2[11 	2&&(HHHIk*[11	2s    #A93A98A9r   )__name__
__module____qualname__r%   r   executorr4   r3   r7   r6   r   r   	coroutiner0   r   rB   r	   r)   r8    r   r   r   r      s    H!a0HHJKGA 	]]M M. 	]] 4 	]]  
 
 2 2r   r   c                        e Zd Zd fd	Zej
                  ej                  d               Zej
                  ej                  d               Z	ej
                  ej                  d               Z
 xZS )BuildHandlerc                 4    t         |   |       || _        y )N)name)super
initializebuilder)r   rT   rQ   	__class__s      r   rS   zBuildHandler.initialize}   s    %r   c              #      K   | j                   j                         }| j                  t        j                  |             y wr   )rT   r0   finishjsondumps)r   datas     r   getzBuildHandler.get   s2      \\,,..DJJt$%s   AAc              #      K   | j                   j                  d       	 | j                  j                          | j                  d       y # t        $ r%}t        j                  dt        |            d d }~ww xY ww)NzCanceling build     )	r   r*   rT   rB   r:   r   	HTTPErrorr;   
set_statusr   r@   s     r   deletezBuildHandler.delete   si      	*+	7,,%%'' 	  	7--SV,$6	7s'   A>A A>	A; A66A;;A>c              #     K   | j                   j                  d       	 | j                  j                          | j                  j                  rt        j                  dd      | j                   j                  d       | j                  d       y # t        $ r%}t        j                  dt        |            d d }~ww xY ww)NzStarting buildr]   i  zBuild canceledzBuild succeeded   )
r   debugrT   r   r:   r   r_   r;   r4   r`   ra   s     r   postzBuildHandler.post   s      	'(	7,,$$&& <<  --%566()  	7--SV,$6	7s(   CB AC	C B==CC)NN)rH   rI   rJ   rS   r   authenticatedr   rL   r[   rb   rf   __classcell__)rU   s   @r   rO   rO   |   sz     	]]&  & 	]]   	]]  r   rO   z/lab/api/build)__doc__rX   concurrent.futuresr   	threadingr   jupyter_server.base.handlersr    jupyter_server.extension.handlerr   tornador   r   tornado.concurrentr	   jupyterlab.commandsr
   r   r   r   r   r   rO   
build_pathrM   r   r   <module>rr      sI    3  1  3 B  . V Vh2 h2V"(* "L 
r   