Ë
    :vžj´5  ã                  ó|  — U d Z ddlmZ ddlZddlZddlZddlZddlm	Z	 ddl
mZmZmZ ddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZmZ d<d=d„Z	 d>	 	 	 	 	 	 	 d?d„Z G d„ de«      Zi Zded<   ej?                  e	j@                  «       ejC                  dd«       ejC                  dd«       ej?                  dddiidfddddœidfdddiidfdddiidfdœ«       ed   ed<   i Z"ded <   e"j?                  e	jF                  «        G d!„ de	«      Z$ejJ                  d"k7  rd#nd$Z&ejJ                  d"k7  rd%nd&Z'ejJ                  d"k7  rd'nd(Z(ejJ                  d"k7  rd)nd*Z)	 	 	 	 d@	 	 	 	 	 	 	 	 	 	 	 dAd+„Z*i Z e j?                  e$j@                  «       e jC                  dd«       e jC                  dd«       e j?                  d,ddiid-fd,dddœid.fd,ddiid/fd,ddiidfdœ«       e d   e d<   d0Z+ G d1„ d,e$«      Z, G d2„ d3e,«      Z- G d4„ d5e,«      Z. G d6„ d7e$«      Z/d8Z0 G d9„ d:e$«      Z1e1jd                  Z3e4d;k(  r e3«        yy)Bz#Utilities for installing extensionsé    )ÚannotationsN)Ú
JupyterApp)ÚENV_CONFIG_PATHÚSYSTEM_CONFIG_PATHÚjupyter_config_dir)ÚLogFormatter)ÚBool)Ú__version__)ÚExtensionConfigManager)ÚExtensionManagerÚExtensionPackageFÚuserÚ
sys_prefixc                óZ   — | r|rd}| rt        «       }|S |rt        d   }|S t        d   }|S )a8  Get the location of config files for the current context

    Returns the string to the environment

    Parameters
    ----------
    user : bool [default: False]
        Get the user's .jupyter config directory
    sys_prefix : bool [default: False]
        Get sys.prefix, i.e. ~/.envs/my-env/etc/jupyter
    Fr   )r   r   r   )r   r   Úextdirs      úy/workspace/moltex-experiments/.pixi/envs/default/lib/python3.12/site-packages/jupyter_server/extension/serverextension.pyÚ_get_config_dirr      sG   € ñ ‘
Øˆ
ÙÜ#Ó%ˆð
 €Mñ	 
Ü  Ñ#ˆð €Mô $ AÑ&ˆØ€Mó    c                ó”   — t        ||¬«      }t        |gt        j                  j	                  || «      ¬«      }t        |¬«      }||fS )aÏ  Get an extension manager pointing at the current context

    Returns the path to the current context and an ExtensionManager object.

    Parameters
    ----------
    write_dir : str [default: 'jupyter_server_config.d']
        Name of config directory to write extension config.
    user : bool [default: False]
        Get the user's .jupyter config directory
    sys_prefix : bool [default: False]
        Get sys.prefix, i.e. ~/.envs/my-env/etc/jupyter
    ©r   r   ©Úread_config_pathÚwrite_config_dir)Úconfig_manager)r   r   ÚosÚpathÚjoinr   )Ú	write_dirr   r   Ú
config_dirr   Úextension_managers         r   Ú_get_extmanager_for_contextr!   -   sO   € ô  ! d°zÔB€JÜ+Ø$˜ÜŸ™Ÿ™ j°)Ó<ô€Nô )Ø%ôÐð Ð(Ð(Ð(r   c                  ó   — e Zd Zy)ÚArgumentConflictN)Ú__name__Ú
__module__Ú__qualname__© r   r   r#   r#   H   s   „ Ør   r#   údict[str, t.Any]Ú_base_flagsÚyzgenerate-configÚBaseExtensionAppTz+Apply the operation only for the given userr   zApply the operation system-widezTUse sys.prefix as the prefix for installing extensions (for environments, packaging)ÚpythonúInstall from a Python package)r   Úsystemz
sys-prefixÚpyr/   Ú_base_aliasesc                  ó|   — e Zd ZdZeZeZeZ	e
Z eddd¬«      Z eddd¬«      Z eddd¬«      Zdd„Zedd	„«       Zy
)r+   zBase extension installer appFTzWhether to do a user install)ÚconfigÚhelpz Use the sys.prefix as the prefixr-   c                 ó   — y)zA default format for messagesz%(message)sr'   ©Úselfs    r   Ú_log_format_defaultz$BaseExtensionApp._log_format_default‡   s   € àr   c                óD   — t        | j                  | j                  ¬«      S )Nr   )r   r   r   r5   s    r   r   zBaseExtensionApp.config_dir‹   s   € ä D§I¡I¸$¿/¹/ÔJÐJr   N)ÚreturnÚstr)r$   r%   r&   Ú__doc__r   Ú_log_formatter_clsr)   Úflagsr0   Úaliasesr
   Úversionr	   r   r   r,   r7   Úpropertyr   r'   r   r   r+   r+   {   sb   „ Ù&à%ÐØ€EØ€GØ€Gá�˜dÐ)GÔH€DÙ�d 4Ð.PÔQ€JÙ�% Ð+JÔK€Fóð òKó ñKr   Úntz[32menabled[0mÚenabledz[31mdisabled[0mÚdisabledz[32mOK[0mÚokz[31m X[0mz Xc                óÌ   — |rdn|}t        ||¬«      }t        |gt        j                  j	                  |d«      ¬«      }|r|j                  | «       y|j                  | «       y)zZToggle the boolean setting for a given server extension
    in a Jupyter config file.
    Fr   újupyter_server_config.dr   N)r   r   r   r   r   ÚenableÚdisable)Úimport_namerB   Úparentr   r   r   Úmanagers          r   Útoggle_server_extension_pythonrL   œ   sX   € ñ ‘ J€JÜ  d°zÔB€JÜ$Ø$˜ÜŸ™Ÿ™ jÐ2KÓLô€Gñ Ø�‰�{Õ#à�‰˜Õ$r   ÚToggleServerExtensionAppz*Perform the operation for the current userz!Perform the operation system-widez=Use sys.prefix as the prefix for installing server extensionszEEnable/disable a server extension using frontend configuration files.c                  óB   — e Zd ZdZdZeZeZ e«       Z	dZ
dZdd„Zdd„Zy)	rM   z.A base class for enabling/disabling extensionsz'jupyter server extension enable/disableÚ c                ó®  — t        | j                  | j                  ¬«      \  }}	 | j                  j	                  | j
                  j                  «       › d|› �«       | j                  j	                  d|› �«       | j                  j	                  d|› d�«       |j                  }d}|r*|j                  «       }||vrd|› d�}t        |«      ‚||   }t        ||¬	«      }|j                  «       sd
}t        |«      ‚|j                  }	| j                  j	                  d|› d|	› dt        › �«       |j                  }|r1| j                  du r|j                  |«       n|j!                  |«       | j                  j	                  d| j"                  › d�«       y# t$        $ r/}
| j                  j'                  dt(        › d|
› �«       Y d}
~
yd}
~
ww xY w)a.  Change the status of a named server extension.

        Uses the value of `self._toggle_value`.

        Parameters
        ---------

        import_name : str
            Importable Python module (dotted-notation) exposing the magic-named
            `load_jupyter_server_extension` function
        r   z: z- Writing config: ú    - Validating ú...FzThe module 'z>' could not be found. Are you sure the extension is installed?©ÚnamerB   úvalidation failedú      Ú Tz    - Extension successfully Ú.z     z Validation failed: N)r!   r   r   ÚlogÚinfoÚ_toggle_pre_messageÚ
capitalizer   Úget_jpserver_extensionsÚ
ValueErrorr   Úvalidater?   ÚGREEN_OKÚ_toggle_valuerG   rH   Ú_toggle_post_messageÚ	ExceptionÚerrorÚRED_X)r6   rI   r   r    r2   rB   Újpserver_extensionsÚmsgÚextpkgr?   Úerrs              r   Útoggle_server_extensionz0ToggleServerExtensionApp.toggle_server_extensionñ   s¼  € ô )DØ—‘ t§¡ô)
Ñ%ˆ
Ð%ð$	EØ�H‰H�M‰M˜T×5Ñ5×@Ñ@ÓBÐCÀ2ÀkÀ]ÐSÔTØ�H‰H�M‰MÐ.¨z¨lÐ;Ô<à�H‰H�M‰MÐ-¨k¨]¸#Ð>Ô?Ø&×5Ñ5ˆFØˆGÙØ&,×&DÑ&DÓ&FÐ#ØÐ&9Ñ9à& { mð 4;ð ;ð ô % S›/Ð)Ø-¨kÑ:�ô &¨;ÀÔHˆFØ—?‘?Ô$Ø)�Ü  “oÐ%Ø—n‘nˆGØ�H‰H�M‰M˜F ; -¨q°°	¸¼8¸*ÐEÔFð '×5Ñ5ˆFÙØ×%Ñ%¨Ñ-Ø—M‘M +Õ.à—N‘N ;Ô/ð �H‰H�M‰MÐ9¸$×:SÑ:SÐ9TÐTUÐVÕWøÜò 	EØ�H‰H�N‰N˜U¤5 'Ð)=¸c¸UÐC×DÑDûð	Eús   ¦E5F Æ	GÆ%%GÇGc                óŠ   — | j                   st        j                  d«       | j                   D ]  }| j                  |«       Œ y)ú'Perform the App's actions as configuredz>Please specify a server extension/package to enable or disableN)Ú
extra_argsÚsysÚexitrj   )r6   Úargs     r   ÚstartzToggleServerExtensionApp.start'  s2   € à�ŠÜ�H‰HÐUÔVØ—?”?ˆCØ×(Ñ(¨Õ-ñ #r   N)rI   r:   r9   ÚNone©r9   rr   )r$   r%   r&   r;   rT   Ú_descÚdescriptionr=   r	   ra   r[   rb   rj   rq   r'   r   r   rM   rM   å   s3   „ Ù8à4€DØ€Kà€Eá“F€MØÐØÐó4Eôl.r   c                  ó$   — e Zd ZdZdZdZdZdZdZy)ÚEnableServerExtensionAppz5An App that enables (and validates) Server Extensionszjupyter server extension enablez€
    Enable a server extension in configuration.

    Usage
        jupyter server extension enable [--system|--sys-prefix]
    TÚenablingrB   N©	r$   r%   r&   r;   rT   ru   ra   r[   rb   r'   r   r   rw   rw   /  s$   „ Ù?à,€Dð€Kð €MØ$ÐØ$Ñr   rw   c                  ó$   — e Zd ZdZdZdZdZdZdZy)ÚDisableServerExtensionAppz&An App that disables Server Extensionsz jupyter server extension disablez‚
    Disable a server extension in configuration.

    Usage
        jupyter server extension disable [--system|--sys-prefix]
    FÚ	disablingrC   Nry   r'   r   r   r{   r{   >  s$   „ Ù0à-€Dð€Kð €MØ%ÐØ%Ñr   r{   c                  ó,   — e Zd ZdZdZeZdZdd„Zdd„Z	y)ÚListServerExtensionsAppz3An App that lists (and validates) Server Extensionszjupyter server extension listz<List all server extensions known by the configuration systemc           
     óÌ  — dddœdddœdddœf}|D �]  }t        di |¤Ž}t        d|› �«       d}t        |gt        j                  j                  ||«      ¬«      }|j                  «       }|j                  «       D ]€  \  }}t        d|› d|rt        nt        › �«       	 t        d	|› d
�«       t        ||¬«      }	|	j                  «       sd}
t        |
«      ‚|	j                  }t        d|› d|› dt        › �«       Œ‚ | j                   j'                  d«       �Œ y# t        $ r<}| j                   j#                  dd¬«       t        dt$        › d|› �«       Y d}~Œâd}~ww xY w)z”List all enabled and disabled server extensions, by config path

        Enabled extensions are validated, potentially generating warnings.
        TFr   zConfig dir: rF   r   z    rW   rQ   rR   rS   rU   rV   rO   )Úexc_infoNr'   )r   Úprintr   r   r   r   r]   ÚitemsÚGREEN_ENABLEDÚRED_DISABLEDr   r_   r^   r?   r`   rc   rY   Údebugre   rZ   )r6   ÚconfigurationsÚoptionr   r   r   rf   rT   rB   Ú	extensionrg   r?   ri   s                r   Úlist_server_extensionsz.ListServerExtensionsApp.list_server_extensionsT  sg  € ð ¨Ñ/Ø¨$Ñ/Ø¨%Ñ0ð
ˆô %ˆFÜ(Ñ2¨6Ñ2ˆJÜ�L  Ð-Ô.Ø1ˆIÜ3Ø", Ü!#§¡§¡¨j¸)Ó!DôˆNð #1×"HÑ"HÓ"JÐØ!4×!:Ñ!:Ö!<‘��gä˜˜T˜F !±W¥MÄ,Ð#OÐPÔQð
2ÜÐ-¨d¨V°3Ð7Ô8Ü 0°dÀGÔ L�IØ$×-Ñ-Ô/Ø1˜Ü(¨›oÐ-Ø'×/Ñ/�GÜ˜F 4 &¨¨'¨°!´H°:Ð>Õ?ð "=ð �H‰H�M‰M˜"Öñ1 %øô( !ò 2Ø—H‘H—N‘N 2°�NÔ5Ü˜F¤5 '¨¨3¨%Ð0×1Ñ1ûð2ús   Â ADÄ	E#Ä'2EÅE#c                ó$   — | j                  «        y)rl   N)r‰   r5   s    r   rq   zListServerExtensionsApp.starty  s   € à×#Ñ#Õ%r   Nrs   )
r$   r%   r&   r;   rT   r
   r?   ru   r‰   rq   r'   r   r   r~   r~   M  s   „ Ù=à*€DØ€GØP€Kó#ôJ&r   r~   a/  
jupyter server extension list                        # list all configured server extensions
jupyter server extension enable --py <packagename>   # enable all server extensions in a Python package
jupyter server extension disable --py <packagename>  # disable all server extensions in a Python package
c                  ób   ‡ — e Zd ZU dZdZeZdZded<   e	Z
edfedfedfd	œZd
ed<   dˆ fd„Zˆ xZS )ÚServerExtensionAppzRoot level server extension appzjupyter server extensionz#Work with Jupyter server extensionsr:   ru   zEnable a server extensionzDisable a server extensionzList server extensions)rG   rH   Úlistr(   Úsubcommandsc                óš   •— t         ‰| �  «        dj                  t        | j                  «      «      }t        j                  d|z  «       y)rl   z, z)Please supply at least one subcommand: %sN)Úsuperrq   r   ÚsortedrŽ   rn   ro   )r6   ÚsubcmdsÚ	__class__s     €r   rq   zServerExtensionApp.start“  s9   ø€ ä‰‰Œð —)‘)œF 4×#3Ñ#3Ó4Ó5ˆÜ�‰Ð<¸wÑFÕGr   rs   )r$   r%   r&   r;   rT   r
   r?   ru   Ú__annotations__Ú	_examplesÚexamplesrw   r{   r~   rŽ   rq   Ú__classcell__)r“   s   @r   rŒ   rŒ   …  sW   ø… Ù)à%€DØ€GØ<€K�Ó<Ø€Hð ,Ð-HÐIØ-Ð/KÐLØ(Ð*BÐCñ%€KÐ!ó ÷Hñ Hr   rŒ   Ú__main__)FF)r   Úboolr   r™   r9   r:   )rF   FF)r   r:   r   r™   r   r™   r9   ztuple[str, ExtensionManager])NNFT)rI   r:   rB   zbool | NonerJ   zt.Anyr   r™   r   r™   r9   rr   )5r;   Ú
__future__r   Úloggingr   rn   ÚtypingÚtÚjupyter_core.applicationr   Újupyter_core.pathsr   r   r   Útornado.logr   Ú	traitletsr	   Újupyter_server._versionr
   Újupyter_server.extension.configr   Ú jupyter_server.extension.managerr   r   r   r!   r^   r#   r)   r”   Úupdater=   Úpopr0   r>   r+   rT   rƒ   r„   r`   re   rL   rt   rM   rw   r{   r~   r•   rŒ   Úlaunch_instanceÚmainr$   r'   r   r   Ú<module>r©      sV  ðÚ )õ #ã Û 	Û 
Û å /ß VÑ VÝ $Ý å /Ý Bß Oôð0 X]ð)Øð)Ø6:ð)ØPTð)à!ó)ô6	�zô 	ð !#€ÐÓ "Ø × Ñ �:×#Ñ#Ô $Ø ‡���TÔ Ø ‡�Ð! 4Ô (Ø × Ñ ð #Ø˜Dð%ðð
 :ð
ð #Ø!Ø"'ñ%ðð .ð
ð #Ø  $ð%ðð
 cð
ð #Ø˜dð%ðð
 ,ð
ñ5"ô$ðJ $ DÑ)€ˆHÑ à"$€ÐÓ $Ø × Ñ �Z×'Ñ'Ô (ôK�zô Kð. -/¯G©G°tªOÑ(À€Ø,.¯G©G°tªOÑ(À€Ø"$§'¡'¨T¢/Ñ°t€Ø!Ÿw™w¨$šÑ°D€ð  ØØØð%Øð%àð%ð ð%ð ð	%ð
 ð%ð 
ó%ð4 	€Ø ‡�Ð×#Ñ#Ô $Ø ‡	�	ˆ#ˆtÔ Ø ‡	�	Ð
˜TÔ "Ø ‡�ð +Ø˜Dð-ðð
 9ð
ð +Ø!Ø"'ñ-ðð 0ð
ð +Ø  $ð-ðð
 Lð
ð +Ø˜dð-ðð
 ,ð
ñ5"ô$ðJ ˜‘+€€h�ð 	P€ôG.Ð/ô G.ôT%Ð7ô %ô&Ð 8ô &ô.&Ð.ô .&ðb€	ôHÐ)ô Hð0 ×)Ñ)€ð ˆzÒÙ…Fð r   