o
    ^i{                     @   sP   d Z ddlZddlZddlmZ ddlmZ ddlmZ G dd deZ	dZ
dS )	z'Tornado handlers for plugin management.    N)
APIHandler)web)PluginManagerc                       s>   e Zd Zdef fddZejdd Zejdd Z  Z	S )PluginHandlermanagerc                    s   t    || _d S )N)super
initializer   )selfr   	__class__ e/home/ubuntu/hpml_nyu/venv/lib/python3.10/site-packages/jupyterlab/handlers/plugin_manager_handler.pyr      s   

zPluginHandler.initializec                    s0   | j  I dH }| d | t| dS )z'GET query returns info on plugins locksN   )r   plugin_locks
set_statusfinishjsondumps)r	   locksr   r   r   get   s   
zPluginHandler.getc              
      s   |   }|d }|d }|dvs|stdd|d|d}z|dkr0| j|I dH }n|d	kr=| j|I dH }W n tyS } z	td
t||d}~ww |jdkr_| 	d
 n| 	d | 
tt| dS )zPOST query performs an action on a specific plugin

        Body arguments:
            {
                "cmd": Action to perform - ["enable", "disable"]
                "plugin_name": Plugin name
            }
        cmdplugin_name)enabledisablei  zCould not process instruction z with plugin name Nr   r   i  error   )get_json_bodyr   	HTTPErrorr   r   r   	Exceptionstrstatusr   r   r   r   dataclassesasdict)r	   datar   name	ret_valueer   r   r   post   s0   


zPluginHandler.post)
__name__
__module____qualname__r   r   r   authenticatedr   r'   __classcell__r   r   r
   r   r      s    
r   z/lab/api/plugins)__doc__r!   r   jupyter_server.base.handlersr   tornador   jupyterlab.extensions.managerr   r   plugins_handler_pathr   r   r   r   <module>   s    1