Ë
    Ávžj%  ã                   ó¨   — 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      úr/workspace/moltex-experiments/.pixi/envs/default/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Ø—‘˜dŸh™h¨×(8Ñ(8¸$×:QÑ:Qóñ ˆHñ "*‘X¨xˆFÙØ—‘× Ñ Ð!4Ô5Ù.6Ó7©h¨�—‘×!Ñ! !Õ$¨hÓ7à—‘—‘Ð3Ô4ô �j‰j F°t·y±yÀÓ7JÑKÓLÐLùò 8øô ò 	Ø�H‰H×ÑÐ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                  s’d| _        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“/Ð!Ø�}Š}Ø!ˆDŒMÜ$'§J¡J£LÐ0ˆDŒL˜6Ø ˆDŒMÜ%*£WÐ,ˆDÔ˜sð&Ø—o‘oØ—L‘L $§(¡(¨C°×1AÑ1AÀ4×CZÑCZóò ð ×!Ñ! $Ô'ð !&�”ð	Ø—,‘,Óøô ò ,Ü�q“6˜YÒ&Ø×%Ñ% 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“/Ð!ØˆŒØ�l‰lÒØˆŒØˆ�ù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Ø×Ñ×&Ñ&Ô(ÙØ�H‰H×ÑÐHÔIÜ˜kÕ*Ü [Ô1Ò1ð	2ús   ’ ž#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Ô0€HØ€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   è ø€ ð —\‘\×,Ñ,Ó.Ñ.ˆØ�‰”D—J‘J˜tÓ$Õ%ù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ûð	7üs'   ‚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ûð	7üs(   ‚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2ôV"Ð(¨*ô "ðL �
r   