
    Mh%                         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dS )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dS )BuilderF   )max_workersNc                     t          |          }|j        | _        || _        |j        | _        |j        | _        |j        | _        d S N)r   loggerlog	core_modeapp_dircore_configlabextensions_path)selfr   app_optionss      a/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/jupyterlab/handlers/build_handler.py__init__zBuilder.__init__   sF    %k22%""*&2"-"@    c              #   &   K    j         rt          j        ddd           j        rt          j        ddd          	                       j         j         j         j                  V }|rdnd}|r) j        	                    d            fd|D              n j        
                    d           n.# t          $ r!  j        	                    d	           d}g }Y nw xY wt          j        |d
                    |          d          )Nstable )statusmessagebuildingneededzBuild recommendedc                 D    g | ]}j                             |          S  )r   warning).0mr   s     r   
<listcomp>z&Builder.get_status.<locals>.<listcomp>/   s)    777!!!$$777r   zBuild is up to datez:Could not determine jupyterlab build status without nodejs
)r   r   Returnr%   _run_build_checkr   r   r   r   r)   info
ValueErrorjoin)r   messagesr#   s   `  r   
get_statuszBuilder.get_status!   sL     > 	B*R@@AAA= 	D*
rBBCCC	!22dh(8$:Q   H "*7XXxF 5  !45557777h777773444 	 	 	HYZZZFHHH	
 jFtyy7J7JKKLLLs   A9B; ;(C&%C&c              #   \  K   | j         rd}t          |          | j        sd| _        t	          j                    x| _        }d| _        t                      x| _        }	 | 	                    | j
        | j        || j        | j                  V  |                    d           nU# t          $ rH}t!          |          dk    r|                    d           n|                    |           Y d }~nd }~ww xY wd| _        n# d| _        w xY w	 | j        V  d S # t          $ r}|d }~ww xY w)NzCancel in progressFTAborted)
_cancelingr1   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   sj     ? 	"&CS//!} 	&!DM$'JLL0DL6 DM%*WW,Ds&ooL$(C1A4CZ     !!$'''' , , ,q66Y&&%%e,,,,((+++	, !&%%%%	, 	 	 	G	sI    AB% $D %
C7/>C2-D 2C77D 	D	D 
D+$D&&D+c              #   v   K   | j         sd}t          |          d| _        | j        V  d| _        d| _        d S )NzNo current buildTF)r%   r1   r7   r:   r8   )r   rA   s     r   cancelzBuilder.cancelT   sH      } 	"$CS//!lr   c                 D    t          t          ||||                    S )N)r   r   r   r   r   )r   r
   )r   r   r   r   r   s        r   r/   zBuilder._run_build_check^   s7    "'#5	  
 
 
 	
r   c                    t          |||||          }	 t          |          S # t          $ rY | j                                        rY d S | j                            d           t          |           t          |          cY S w xY w)N)r   r   
kill_eventr   r   rH   z)Build failed, running a clean and rebuild)r
   r   r>   r;   is_setr   r)   r   )r   r   r   rJ   r   r   r   s          r   r<   zBuilder._run_buildi   s     !#1
 
 
	2[1111 	2 	2 	2&&(( HHIIIk****[111111	2s   & #B	:B	B	r   )__name__
__module____qualname__r%   r   executorr8   r7   r;   r:   r   r   	coroutiner4   r   rF   r	   r/   r<   r(   r   r   r   r      s        H!!a000HHJKGA A A A 	]M M ]M. 	]  ]4 	]  ] 
 
 _
 2 2 _2 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 )BuildHandlerNc                 Z    t                                          |           || _        d S )N)name)super
initializebuilder)r   rW   rT   	__class__s      r   rV   zBuildHandler.initialize}   s)    %%%r   c              #      K   | j                                         V }|                     t          j        |                     d S r   )rW   r4   finishjsondumps)r   datas     r   getzBuildHandler.get   sC       \,,....DJt$$%%%%%r   c              #     K   | j                             d           	 | j                                        V  n5# t          $ r(}t          j        dt          |                    d d }~ww xY w|                     d           d S )NzCanceling build     )	r   r)   rW   rF   r>   r   	HTTPErrorr?   
set_statusr   rD   s     r   deletezBuildHandler.delete   s       	*+++	7,%%'''''' 	7 	7 	7-SVV,,$6	7   : 
A,#A''A,c              #     K   | j                             d           	 | j                                        V  n5# t          $ r(}t          j        dt          |                    d d }~ww xY w| j        j        rt          j        dd          | j                             d           | 	                    d           d S )NzStarting buildr`   i  zBuild canceledzBuild succeeded   )
r   debugrW   r   r>   r   rb   r?   r8   rc   rd   s     r   postzBuildHandler.post   s       	'(((	7,$$&&&&&& 	7 	7 	7-SVV,,$6	7 <  	7-%5666()))rf   )NN)rL   rM   rN   rV   r   authenticatedr   rP   r^   re   rj   __classcell__)rX   s   @r   rR   rR   |   s              	]& & ] & 	]  ]  	]  ]     r   rR   z/lab/api/build)__doc__r[   concurrent.futuresr   	threadingr   jupyter_server.base.handlersr    jupyter_server.extension.handlerr   tornador   r   tornado.concurrentr	   jupyterlab.commandsr
   r   r   r   r   r   rR   
build_pathr(   r   r   <module>rv      s   3 3  1 1 1 1 1 1       3 3 3 3 3 3 B B B B B B         . . . . . . V V V V V V V V V V V V V Vh2 h2 h2 h2 h2 h2 h2 h2V" " " " "(* " " "L 


r   