
    ^h*                     (   S r SSKrSSKrSSKJr  SSKJr  SSKJr  SSK	J
r
JrJrJrJrJr  SSKJr  SS	KJr    S'S jrS(S jr0 r\R/                  \
R,                  5        \R1                  SS5        \R1                  SS5        \R/                  SSS
00S4SSSS.0S4SSS
00S4SSS
00S4S.5        \S   \S'    " S S\
5      r " S S\5      r " S S\5      r " S  S!\
5      rS"r " S# S$\
5      r\R>                  r S% r!\"S&:X  a  \ " 5         gg))z;Utilities for installing server extensions for the notebook    N)jupyter_config_path   )__version__)BaseJSONConfigManager)BaseExtensionApp_get_config_dirGREEN_ENABLEDRED_DISABLEDGREEN_OKRED_X)Bool)import_itemTFc                    U(       a  SOUn[        X4S9n[        X&S9nUR                  S5      nUR                  S0 5      R                  S0 5      n	U	R                  U S5      n
Ub  UOU
(       + nU(       a0  U(       a  UR	                  SU  35        OUR	                  S	U  35        XU '   U(       a  UR	                  S
U 35        UR                  SU5        U(       a  [        X5        gg)a*  Toggle a server extension.

By default, toggles the extension in the system-wide Jupyter configuration
location (e.g. /usr/local/etc/jupyter).

Parameters
----------

import_name : str
    Importable Python module (dotted-notation) exposing the magic-named
    `load_jupyter_server_extension` function
enabled : bool [default: None]
    Toggle state for the extension.  Set to None to toggle, True to enable,
    and False to disable the extension.
parent : Configurable [default: None]
user : bool [default: True]
    Toggle in the user's configuration location (e.g. ~/.jupyter).
sys_prefix : bool [default: False]
    Toggle in the current Python environment's configuration location
    (e.g. ~/.envs/my-env/etc/jupyter). Will override `user`.
logger : Jupyter logger [optional]
    Logger instance to use
Fuser
sys_prefixparent
config_dirjupyter_notebook_configNotebookAppnbserver_extensionsNz
Enabling: zDisabling: z- Writing config: )r   r   get
setdefaultinfoupdatevalidate_serverextension)import_nameenabledr   r   r   loggerr   cmcfgserver_extensionsold_enablednew_enableds               T/home/james-whalen/.local/lib/python3.13/site-packages/nbclassic/serverextensions.pytoggle_serverextension_pythonr'      s    2 5DD dBJ	f	DB
&&*
+C}b)	)2	. 
 $''T:K$0'+oKKK*[M23KK+k]34%0k"(56II'- 5     c                    / n/ nSnU(       a  UR                  S5         [        R                  " U 5      n[        USS5      n[        USS5      nSnUb&  UR                  UR                  [        U 5      5        O%UR                  UR                  [        U 5      5        SnU(       ao  U(       aB  U V	s/ s H  oR                  U	5      PM       n	U V
s/ s H  oR                  U
5      PM       n
U$ UR                  UR                  U W[        5      5        U$ ! [         a    UR                  SU 5         Nf = fs  sn	f s  sn
f )	a8  Assess the health of an installed server extension

Returns a list of validation warnings.

Parameters
----------

import_name : str
    Importable Python module (dotted-notation) exposing the magic-named
    `load_jupyter_server_extension` function
logger : Jupyter logger [optional]
    Logger instance to use
Nz    - Validating...load_jupyter_server_extensionr    z!Error loading server extension %sz     {} is {} importable?z      {} {} {})r   	importlibimport_modulegetattr	Exceptionwarningappendformatr   r   warn)r   r    warningsinfosfuncmodversion
import_msgpost_mortemr   r0   s              r&   r   r   M   s$    HED)*I%%k2s;TB#}b1 -JZ&&x=>
))%=>"K+0154[[5119:g[[!: O KK**;JKO#  I:KHI 2:s   0D 4D<ED98D9yzgenerate-configToggleServerExtensionAppr   z*Perform the operation for the current userr   z!Perform the operation system-wider   z=Use sys.prefix as the prefix for installing server extensionspythonInstall from a Python package)r   systemz
sys-prefixpyr@   c                   f    \ rS rSrSrSrSr\r\" SSSS9r	\" SSS	S9r
\" SSS
S9rS rS rS rSrg)r<      z.A base class for enabling/disabling extensionsz0jupyter nbclassic-serverextension enable/disablezEEnable/disable a server extension using frontend configuration files.TzWhether to do a user install)confighelpFz Use the sys.prefix as the prefixr>   c           	      l    [        XR                  X R                  U R                  U R                  S9  g)zChange 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   r   r   r    N)r'   _toggle_valuer   r   log)selfr   s     r&   toggle_server_extension0ToggleServerExtensionApp.toggle_server_extension   s(     	&++Dyytxx	9r(   c                 \    [        U5      u  p#U H  nUS   nU R                  U5        M     g)zChange the status of some server extensions in a Python package.

Uses the value of `self._toggle_value`.

Parameters
---------

package : str
    Importable Python module exposing the
    magic-named `_jupyter_server_extension_paths` function
moduleN)_get_server_extension_metadatarI   )rH   packagemserver_exts
server_extrL   s         r&   toggle_server_extension_python7ToggleServerExtensionApp.toggle_server_extension_python   s2     8@%J)F((0 &r(   c                     U R                   (       d  [        R                  " S5        U R                    H8  nU R                  (       a  U R	                  U5        M'  U R                  U5        M:     g)'Perform the App's actions as configuredz>Please specify a server extension/package to enable or disableN)
extra_argssysexitr=   rR   rI   )rH   args     r&   startToggleServerExtensionApp.start   sG    HHUV??C{{33C8,,S1	 #r(    N)__name__
__module____qualname____firstlineno____doc__namedescriptionflagsr   r   r   r=   rI   rR   rZ   __static_attributes__r\   r(   r&   r<   r<      sP    8=DYKET(FGDeD/QRJ%+JKF9 1"2r(   c                   $    \ rS rSrSrSrSrSrSrg)EnableServerExtensionApp   z5An App that enables (and validates) Server Extensionsz(jupyter nbclassic-serverextension enablez
    Enable a serverextension in configuration.

    Usage
        jupyter nbclassic-serverextension enable [--system|--sys-prefix]
    Tr\   N	r]   r^   r_   r`   ra   rb   rc   rF   re   r\   r(   r&   rg   rg      s    ?5DK Mr(   rg   c                   $    \ rS rSrSrSrSrSrSrg)DisableServerExtensionApp   z&An App that disables Server Extensionsz)jupyter nbclassic-serverextension disablez
    Disable a serverextension in configuration.

    Usage
        jupyter nbclassic-serverextension disable [--system|--sys-prefix]
    Fr\   Nri   r\   r(   r&   rk   rk      s    06DK Mr(   rk   c                   0    \ rS rSrSrSr\rSrS r	S r
Srg)	ListServerExtensionsApp   z3An App that lists (and validates) Server Extensionsz&jupyter nbclassic-serverextension listz<List all server extensions known by the configuration systemc                 l   [        5       nU H  n[        XS9nUR                  S5      nUR                  S0 5      R                  S0 5      nU(       a  [	        SU 35        UR                  5        H<  u  pg[	        SU SU(       a  [        O[         35        [        X`R                  5        M>     M     g)	zList all enabled and disabled server extensions, by config path

Enabled extensions are validated, potentially generating warnings.
r   r   r   r   zconfig dir: z     N)
r   r   r   r   printitemsr	   r
   r   rG   )rH   config_dirsr   r!   datar#   r   r   s           r&   list_server_extensions.ListServerExtensionsApp.list_server_extensions   s    
 *+%J&dJB6634Dr2126  !ZL12(9(?(?(A$[MG=*VWX(hh? )B &r(   c                 $    U R                  5         g)rU   N)rv   )rH   s    r&   rZ   ListServerExtensionsApp.start  s    ##%r(   r\   N)r]   r^   r_   r`   ra   rb   r   r8   rc   rv   rZ   re   r\   r(   r&   rn   rn      s    =3DGPK@&&r(   rn   aJ  
jupyter nbclassic-serverextension list                        # list all configured server extensions
jupyter nbclassic-serverextension enable --py <packagename>   # enable all server extensions in a Python package
jupyter nbclassic-serverextension disable --py <packagename>  # disable all server extensions in a Python package
c                   X   ^  \ rS rSrSrSr\rSr\	r
\" \S4\S4\S4S9rU 4S	 jrS
rU =r$ )ServerExtensionAppi  zRoot level server extension appz!jupyter nbclassic-serverextensionz#Work with Jupyter server extensionszEnable a server extensionzDisable a server extensionzList server extensions)enabledisablelistc                    > [         TU ]  5         SR                  [        U R                  5      5      n[
        R                  " SU 35        g)rU   z, z'Please supply at least one subcommand: N)superrZ   joinsortedsubcommandsrW   rX   )rH   subcmds	__class__s     r&   rZ   ServerExtensionApp.start  s;     ))F4#3#345:7)DEr(   r\   )r]   r^   r_   r`   ra   rb   r   r8   rc   	_examplesexamplesdictrg   rk   rn   r   rZ   re   __classcell__)r   s   @r&   r{   r{     sK    ).DG7KH(*EF*,HI%'?@KF Fr(   r{   c                 z    [        U 5      n[        US5      (       d  [        SU  S35      eXR                  5       4$ )aR  Load server extension metadata from a module.

Returns a tuple of (
    the package as loaded
    a list of server extension specs: [
        {
            "module": "mockextension"
        }
    ]
)

Parameters
----------

module : str
    Importable Python module exposing the
    magic-named `_jupyter_server_extension_paths` function
_jupyter_server_extension_pathszThe Python module z- does not include any valid server extensions)r   hasattrKeyErrorr   )rL   rO   s     r&   rM   rM   0  sD    & 	FA1788+F83`abb//111r(   __main__)NNTFN)N)#ra   r,   rW   jupyter_core.pathsr   _versionr   config_managerr   
extensionsr   r   r	   r
   r   r   	traitletsr   traitlets.utils.importstringr   r'   r   rd   r   popr<   rg   rk   rn   r   r{   launch_instancemainrM   r]   r\   r(   r&   <module>r      s   A
  
 2 ! 1   4 EIFJ36l,f 	 ## $ 		#t  		
T " "T&
 9 	#&
 0	 	#4&
 L 	#t&
 ,# . +h42/ 42n	7 		 8 	&. &<	F) F. ))20 zF r(   