
    ^hy                        S r SSKJr  SSKrSSKJr  SSKJr  SSKJ	r	J
r
  SSKJr  SS	KJrJrJr  SS
KJr   " S S\
\	\5      rg)z-Tornado handlers for frontend config storage.    )annotationsN)Any)ValidationError)ExtensionHandlerJinjaMixinExtensionHandlerMixin)web   )SchemaHandlerget_settingssave_settings)
translatorc                      \ rS rSrSr S               S	S jjr\R                  S
SS jj5       r\R                  SS j5       r	Sr
g)SettingsHandler   zA settings API handler.Nc                `    [         R                  " XX4XV5        [        R                  " X5        g)zInitialize the handler.N)r
   
initializer   )selfnameapp_settings_dirschemas_dirsettings_dirlabextensions_path	overrideskwargss           \/home/james-whalen/.local/lib/python3.13/site-packages/jupyterlab_server/settings_handler.pyr   SettingsHandler.initialize   s*     	  K?Q	
 	((4    c                   U R                  5       n[        R                  " U5        U R                  SS5      S:H  n[	        U R
                  U R                  U R                  U R                  UU R                  [        R                  US9u  pEU H'  nU(       d  M  U R                  R                  U5        M)     U R                  [        R                  " U5      5      $ )z
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   getSettingsHandler.get%   s      ((*f%$$Z4>'!!#66#nn!22	
 Aq  #  {{4::f-..r   c                   U R                   nU R                  nU R                  nSnSnSnSnU(       d  [        R                  " SU5      eU R
                  R                  R                  5       R                  S5      n	 [        R                  " U	5      S   n
[        UUUU
UU R                  5        U R'                  S
5        g	! [        R                  R                   a)  n[        R                  " SU[        U5      -  5      S	eS	nAf[         ["        4 a    [        R                  " SU5      S	e[$         a)  n[        R                  " SU[        U5      -  5      S	eS	nAff = f)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   put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$   ?3C E#"$D4E#:$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=   rK   r   )r"   r=   rK   rL   )__name__
__module____qualname____firstlineno____doc__r   r   authenticatedr0   rH   __static_attributes__rJ   r   r   r   r      s    ! ,055 5 	5
 5 &5 )5 5 
5  	$/ $/L 	! !r   r   )rQ   
__future__r   r*   typingr   
jsonschemar    jupyter_server.extension.handlerr   r   tornador   settings_utilsr
   r   r   translation_utilsr   r   rJ   r   r   <module>r[      s9    3 #   & ^  F F )\+-G \r   