
    ^h%                         S r SSK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  SSKJr  SS	KJrJrJrJrJr   " S
 S5      r " S S\	\5      rSrg)z-Tornado handlers for frontend config storage.    N)ThreadPoolExecutor)Event)
APIHandler)ExtensionHandlerMixin)genweb)run_on_executor)
AppOptions_ensure_optionsbuildbuild_checkcleanc                       \ rS rSrSr\" SS9rSrSrSr	Sr
SS jr\R                  S 5       r\R                  S 5       r\R                  S	 5       r\S
 5       r\S 5       rSrg)Builder   F   )max_workersNc                     [        U5      nUR                  U l        Xl        UR                  U l        UR
                  U l        UR                  U l        g N)r   loggerlog	core_modeapp_dircore_configlabextensions_path)selfr   app_optionss      [/home/james-whalen/.local/lib/python3.13/site-packages/jupyterlab/handlers/build_handler.py__init__Builder.__init__   sG    %k2%%""**&22"-"@"@    c              #     #    U R                   (       a  [        R                  " SSS.5      eU R                  (       a  [        R                  " SSS.5      e U R	                  U R
                  U R                  U R                  U R                  5      v nU(       a  SOSnU(       aF  U R                  R                  S5        U Vs/ s H  o0R                  R                  U5      PM       nOU R                  R                  S5         [        R                  " US	R                  U5      S.5      es  snf ! [         a"    U R                  R                  S5        Sn/ n NXf = f7f)
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_statusBuilder.get_status!   s    >>**R@AA==**
rBCC	!22dhh(8(8$:Q:Q H "*XxF  !45.67h!!!$h734 jjFtyy7JKLL 8  	HHYZFH	sI   AE&A/D7 $D2+D7 -E&.D7 	)E&2D7 7)E# E&"E##E&c              #     #    U R                   (       a  Sn[        U5      eU R                  (       d  SU l        [        R
                  " 5       =U l        nSU l        [        5       =U l        n U R                  U R                  U R                  X0R                  U R                  5      v   UR                  S5        SU l         U R                  v   g ! [         a@  n[!        U5      S:X  a  UR                  S5         S nANFUR#                  U5         S nAN\S nAff = f! SU l        f = f! [         a  nUeS nAff = f7f)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   Builder.build9   s    ??&CS/!}}!DM$'JJL0DL6 DM%*W,Ds&ooLL$((C1A1A4CZCZ  !!$' !&	,,  ,q6Y&%%e,,((++	, !&  	G	sm   A+E.AC =ED- E
D D>D! DD! DD! !	D**E-
D>7D99D>>Ec              #      #    U R                   (       d  Sn[        U5      eSU l        U R                  v   SU l        SU l        g 7f)NzNo current buildTF)r'   r.   r6   r9   r7   )r   r@   s     r   cancelBuilder.cancelT   s:     }}$CS/!ll   AAc           	      (    [        [        UUUUS9S9$ )N)r   r   r   r   r   )r   r
   )r   r   r   r   r   s        r   r+   Builder._run_build_check^   s#    "'#5	
 	
r!   c                     [        UUUUUS9n [        US9$ ! [         aQ    U R                  R	                  5       (       a   g U R
                  R                  S5        [        US9  [        US9s $ f = f)N)r   r   
kill_eventr   r   rJ   z)Build failed, running a clean and rebuild)r
   r   r=   r:   is_setr   r,   r   )r   r   r   rM   r   r   r   s          r   r;   Builder._run_buildi   sx     !#1
	2[11 	2&&((HHHIk*[11	2s    )A3-A32A3)
r6   r9   r:   r   r'   r7   r   r   r   r   r   )__name__
__module____qualname____firstlineno__r'   r   executorr7   r6   r:   r9   r   r   	coroutiner2   r   rF   r	   r+   r;   __static_attributes__ r!   r   r   r      s    H!a0HHJKGA 	]]M M. 	]] 4 	]]  
 
 2 2r!   r   c                      ^  \ rS rSrSU 4S jjr\R                  \R                  S 5       5       r	\R                  \R                  S 5       5       r
\R                  \R                  S 5       5       rSrU =r$ )BuildHandler|   c                 ,   > [         TU ]  US9  Xl        g )N)name)super
initializebuilder)r   r_   r\   	__class__s      r   r^   BuildHandler.initialize}   s    %r!   c              #      #    U R                   R                  5       v nU R                  [        R                  " U5      5        g 7fr   )r_   r2   finishjsondumps)r   datas     r   getBuildHandler.get   s1      \\,,..DJJt$%rH   c              #     #    U R                   R                  S5         U R                  R                  5       v   U R                  S5        g ! [         a&  n[
        R                  " S[        U5      5      S eS nAff = f7f)NzCanceling build     )	r   r,   r_   rF   r=   r   	HTTPErrorr>   
set_statusr   rC   s     r   deleteBuildHandler.delete   sh      	*+	7,,%%'' 	  	7--SV,$6	7s'   B A B 
A=!A88A==B c              #     #    U R                   R                  S5         U R                  R                  5       v   U R                  R                  (       a  [
        R                  " SS5      eU R                   R                  S5        U R                  S5        g ! [         a&  n[
        R                  " S[        U5      5      S eS nAff = f7f)NzStarting buildrj   i  zBuild canceledzBuild succeeded   )
r   debugr_   r   r=   r   rl   r>   r7   rm   rn   s     r   postBuildHandler.post   s      	'(	7,,$$&& <<  --%566()  	7--SV,$6	7s(   CB AC
C
$!CC

C)r_   )NN)rP   rQ   rR   rS   r^   r   authenticatedr   rU   rg   ro   rt   rV   __classcell__)r`   s   @r   rY   rY   |   sz     	]]&  & 	]]   	]]  r!   rY   z/lab/api/build)__doc__rd   concurrent.futuresr   	threadingr   jupyter_server.base.handlersr    jupyter_server.extension.handlerr   tornador   r   tornado.concurrentr	   jupyterlab.commandsr
   r   r   r   r   r   rY   
build_pathrW   r!   r   <module>r      sI    3  1  3 B  . V Vh2 h2V"(* "L 
r!   