
    Xh                     f    d Z ddlZddlZddlmZmZ ddlmZ ddlm	Z	 ddl
mZ  G d de      Zd	Zy)
z*Tornado handlers for extension management.    N)	urlencode
urlunparse)
APIHandler)web)ExtensionManagerc                   l     e Zd Zdef fdZej                  d        Zej                  d        Z xZ	S )ExtensionHandlermanagerc                 0    t         |           || _        y )N)super
initializer
   )selfr
   	__class__s     a/var/www/html/myenv/lib/python3.12/site-packages/jupyterlab/handlers/extension_manager_handler.pyr   zExtensionHandler.initialize   s        c           
      r  K   | j                  dd      }t        dt        | j                  dd                  }t        dt        | j                  dd                  }| j                  d	d
      dk(  r%| j                  j                  |||       d{    | j                  j                  |||       d{   \  }}| j                  d       |g }||d}|||d<   t        | j                  j                  | j                  j                  | j                  j                  dt        |d      df      }|j                  d| d       |dkD  rt        d|dz
        |d<   t        | j                  j                  | j                  j                  | j                  j                  dt        |d      df      }	|j                  d|	 d       ||k  rt        |dz   |      |d<   t        | j                  j                  | j                  j                  | j                  j                  dt        |d      df      }
|j                  d|
 d       d|d<   t        | j                  j                  | j                  j                  | j                  j                  dt        |d      df      }|j                  d| d       | j                  ddj!                  |             | j#                  t%        j&                  t)        t+        t,        j.                  |                         y7 7 {w)a  GET query returns info on extensions

        Query arguments:
            refresh: [optional] Force refreshing the list of extensions - ["0", "1"]; default 0
            query: [optional] Query to search for extensions - default None (i.e. returns installed extensions)
            page: [optional] Result page - default 1 (min. 1)
            per_page: [optional] Number of results per page - default 30 (max. 100)
        queryN   page1d   per_page30refresh0   )r   r    T)doseq<z>; rel="last"z>; rel="prev"z>; rel="next"z>; rel="first"Linkz, )get_argumentmaxintminr
   r   list_extensions
set_statusr   requestprotocolhostpathr   append
set_headerjoinfinishjsondumpslistmapdataclassesasdict)r   r   r   r   
extensions	last_pagelinks
query_argslastprevnext_firsts               r   getzExtensionHandler.get   s     !!'401c$++FC89:sC 1 1*d CDEY,3,,&&udH===&*ll&B&B5$PX&Y Y
I E"+BJ &+
7#LL))LL%%LL%%j5	D LL1TF-01ax%(D1H%5
6"!--))))!*D9	 qm45i%(9%=
6""--))))!*D9	 q}56!"JvLL))LL%%LL%%j5	E LL1UG>23OOFDIIe$45DJJtC(:(:J$GHIJ{ > Ys%   BL7L1$L79L4:I8L74L7c                 8  K   | j                         }|d   }|d   }|j                  d      }|dvs|st        j                  dd|d|      d}	 |d	k(  r%| j                  j                  ||       d{   }nz|d
k(  r$| j                  j                  |       d{   }nQ|dk(  r$| j                  j                  |       d{   }n(|dk(  r#| j                  j                  |       d{   }|j                  dk(  r| j                  d       n| j                  d       | j                  t        j                  t!        j"                  |                   y7 7 7 7 t# t        $ r%}t        j                  dt        |            |d}~ww xY ww)a^  POST query performs an action on a specific extension

        Body arguments:
            {
                "cmd": Action to perform - ["install", "uninstall", "enable", "disable"]
                "extension_name": Extension name
                "extension_version": [optional] Extension version (used only for install action)
            }
        cmdextension_nameextension_version)install	uninstallenabledisablei  zCould not process instruction z with extension name NrB   rC   rD   rE   i  error   )get_json_bodyr=   r   	HTTPErrorr
   rB   rC   rD   rE   	Exceptionstrstatusr&   r.   r/   r0   r3   r4   )r   datar?   nameversion	ret_valuees          r   postzExtensionHandler.postb   sr     !!#5k$%((./CC4--07LTHU 
 	
	4i"&,,"6"6tW"EE	#"&,,"8"8">>	"&,,"5"5d";;		!"&,,"6"6t"<<	 w&OOC OOC DJJ{11)<=> F>;< 	4--SV,!3	4ss   AF$E) 7E!8(E)  E#!(E) 	E%
(E) 2E'3E) 7A*F!E) #E) %E) 'E) )	F2 FFF)
__name__
__module____qualname__r   r   r   authenticatedr=   rR   __classcell__)r   s   @r   r	   r	      sI    "2  	JK JKX 	%? %?r   r	   z/lab/api/extensions)__doc__r3   r/   urllib.parser   r   jupyter_server.base.handlersr   tornador   jupyterlab.extensions.managerr   r	   extensions_handler_path r   r   <module>r_      s3    0
   . 3  :x?z x?x 1 r   