
    Xhy                        d Z ddlmZ ddl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 dd
lmZ  G d de
e	e      Zy)z-Tornado handlers for frontend config storage.    )annotationsN)Any)ValidationError)ExtensionHandlerJinjaMixinExtensionHandlerMixin)web   )SchemaHandlerget_settingssave_settings)
translatorc                      e Zd ZdZ	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddZej                  dd	d       Zej                  d
d       Zy)SettingsHandlerzA settings API handler.Nc                d    t        j                  | |||||       t        j                  | |       y)zInitialize the handler.N)r
   
initializer   )selfnameapp_settings_dirschemas_dirsettings_dirlabextensions_path	overrideskwargss           V/var/www/html/myenv/lib/python3.12/site-packages/jupyterlab_server/settings_handler.pyr   zSettingsHandler.initialize   s4     	  "K?QS\	
 	((t4    c           
        | j                         }t        j                  |       | j                  dd      dk(  }t	        | j
                  | j                  | j                  | j                  || j                  t        j                  |      \  }}|D ]   }|s| j                  j                  |       " | j                  t        j                  |            S )aF  
        Get setting(s)

        Parameters
        ----------
        schema_name: str
            The id of a unique schema to send, added to the URL

        ## NOTES:
            An optional argument `ids_only=true` can be provided in the URL to get only the
            ids of the schemas instead of the content.
        ids_only true)r   schema_namer   r   r   )get_current_localer   
set_localeget_argumentr   r   r   r   r   r   translate_schemalogwarningfinishjsondumps)r   r    localer   resultwarningsws          r   getzSettingsHandler.get%   s      ((*f%$$Z4>'!!#66#nn!22	
  	$A  #	$ {{4::f-..r   c                   | j                   }| j                  }| j                  }d}d}d}d}|st        j                  d|      | j
                  j                  j                         j                  d      }		 t        j                  |	      d   }
t        ||||
|| j                         | j'                  d
       y	# t        j                  j                  $ r(}t        j                  d|t        |      z        d	d	}~wt         t"        f$ r t        j                  d|      d	t$        $ r(}t        j                  d|t        |      z        d	d	}~ww xY w)zUpdate a settingzNo current settings directoryzFailed parsing JSON payload: %szAInvalid format for JSON payload. Must be in the form {'raw': ...}zFailed validating input: %si  zutf-8rawi  N   )r   r   r   r   	HTTPErrorrequestbodystripdecoder(   loadsr   r   decoderJSONDecodeErrorstrKeyError	TypeErrorr   
set_status)r   r    r   r   r   settings_errorinvalid_json_errorinvalid_payload_format_errorvalidation_errorraw_payloadraw_settingses               r   putzSettingsHandler.putL   s@    NN	&&((8>O 	% 9--^44ll''--/66w?	J::k259L'' 	 ||++ 	L--%7#a&%@AtK)$ 	M--%ABL 	J--%5A%>?TI	Js$   92B= =E#C==1E.#EE)N)r   r:   r   r:   r   r:   r   r:   r   z	list[str]r   zdict[str, Any] | Noner   r   returnNone)r   )r    r:   rF   r   )r    r:   rF   rG   )	__name__
__module____qualname____doc__r   r   authenticatedr.   rE    r   r   r   r      s    ! ,055 5 	5
 5 &5 )5 5 
5  	$/ $/L 	! !r   r   )rK   
__future__r   r(   typingr   
jsonschemar    jupyter_server.extension.handlerr   r   tornador   settings_utilsr
   r   r   translation_utilsr   r   rM   r   r   <module>rU      s9    3 #   & ^  F F )\+-G \r   