
    ^h                     f    S r SSKrSSKrSSKJrJr  SSKJr  SSKJ	r	  SSK
Jr   " S S\5      rS	rg)
z*Tornado handlers for extension management.    N)	urlencode
urlunparse)
APIHandler)web)ExtensionManagerc                   x   ^  \ rS rSrS\4U 4S jjr\R                  S 5       r\R                  S 5       r	Sr
U =r$ )ExtensionHandler   managerc                 .   > [         TU ]  5         Xl        g )N)super
initializer   )selfr   	__class__s     g/home/james-whalen/.local/lib/python3.13/site-packages/jupyterlab/handlers/extension_manager_handler.pyr   ExtensionHandler.initialize   s        c                 Z  #    U R                  SS5      n[        S[        U R                  SS5      5      5      n[        S[        U R                  SS5      5      5      nU R                  S	S
5      S:X  a$  U R                  R                  XU5      I Sh  vN   U R                  R                  XU5      I Sh  vN u  pEU R                  S5        UGb
  / nXSS.nUb  XS'   [        U R                  R                  U R                  R                  U R                  R                  S[        USS9S45      nUR                  SU S35        US:  a|  [        SUS-
  5      US'   [        U R                  R                  U R                  R                  U R                  R                  S[        USS9S45      n	UR                  SU	 S35        X%:  a|  [        US-   U5      US'   [        U R                  R                  U R                  R                  U R                  R                  S[        USS9S45      n
UR                  SU
 S35        SUS'   [        U R                  R                  U R                  R                  U R                  R                  S[        USS9S45      nUR                  SU S35        U R                  SSR!                  U5      5        U R#                  [$        R&                  " [)        [+        [,        R.                  U5      5      5      5        g GN GNp7f)ay  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   getExtensionHandler.get   s     !!'401c$++FC89:sC 1 1*d CDEY,3,,&&uH===&*ll&B&B5PX&Y Y
 E"+BJ &+7#LL))LL%%LL%%j5	D LL1TF-01ax%(D1H%5
6"!--))))!*D9	 qm45%(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L+L%#L+8L(9I-L+(L+c                 \  #    U R                  5       nUS   nUS   nUR                  S5      nUS;  d  U(       d  [        R                  " SSU< SU< 35      eSn US	:X  a$  U R                  R                  X45      I Sh  vN nO}US
:X  a$  U R                  R                  U5      I Sh  vN nOSUS:X  a$  U R                  R                  U5      I Sh  vN nO)US:X  a#  U R                  R                  U5      I Sh  vN nUR                  S:X  a  U R                  S5        OU R                  S5        U R                  [        R                  " [         R"                  " U5      5      5        g N N N Nw! [         a&  n[        R                  " S[        U5      5      UeSnAff = f7f)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 NrE   rF   rG   rH   i  error   )get_json_bodyr?   r   	HTTPErrorr   rE   rF   rG   rH   	Exceptionstrstatusr(   r0   r1   r2   r5   r6   )r   datarB   nameversion	ret_valuees          r   postExtensionHandler.postb   sl     !!#5k$%((./CC4--07LTHU 
 	
	4i"&,,"6"6t"EE	#"&,,"8"8">>	"&,,"5"5d";;		!"&,,"6"6t"<<	 w&OOC OOC DJJ{11)<=> F>;< 	4--SV,!3	4s   AF,$E9 E1E9 F,$E9 +E3,E9 0F,1$E9 E5E9 F,$E9 ?E7 E9 A-F,1E9 3E9 5E9 7E9 9
F)!F$$F))F,)r   )__name__
__module____qualname____firstlineno__r   r   r   authenticatedr?   rU   __static_attributes____classcell__)r   s   @r   r	   r	      sI    "2  	JK JKX 	%? %?r   r	   z/lab/api/extensions)__doc__r5   r1   urllib.parser   r   jupyter_server.base.handlersr   tornador   jupyterlab.extensions.managerr   r	   extensions_handler_path r   r   <module>re      s3    0
   . 3  :x?z x?x 1 r   