
    Mh5                       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 dGdHdZ	 dIdJdZ G d de          Zi Zded<   e                    e	j                    e!                    dd           e!                    dd           e                    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"                    e	j#                    G d' de	          Z$ej%        d(k    rd)nd*Z&ej%        d(k    rd+nd,Z'ej%        d(k    rd-nd.Z(ej%        d(k    rd/nd0Z)	 	 	 	 dKdLd6Z*i Z e                     e$j                    e !                    dd           e !                    dd           e                     d7ddiid8fd7dddid9fd7ddiid:fd7d"diid#fd$           e d%         e d"<   d;Z+ G d< d7e$          Z, G d= d>e,          Z- G d? d@e,          Z. G dA dBe$          Z/dCZ0 G dD dEe$          Z1e1j2        Z3e4dFk    r e3             dS dS )Mz#Utilities for installing extensions    )annotationsN)
JupyterApp)ENV_CONFIG_PATHSYSTEM_CONFIG_PATHjupyter_config_dir)LogFormatter)Bool)__version__)ExtensionConfigManager)ExtensionManagerExtensionPackageFuserbool
sys_prefixreturnstrc                n    | r|rd}| rt                      }n|rt          d         }n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      h/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/jupyter_server/extension/serverextension.py_get_config_dirr      sP      
 
 '#%%	 ' ##A&M    jupyter_server_config.d	write_dirtuple[str, ExtensionManager]c                    t          ||          }t          |gt          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   )r   r   r   
config_dirr    extension_managers         r   _get_extmanager_for_contextr&   -   sj      !dzBBBJ+$j)<<  N )%   (((r   c                      e Zd ZdS )ArgumentConflictN)__name__
__module____qualname__ r   r   r(   r(   H   s        Dr   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pyr4   _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dS )r0   zBase extension installer appFTzWhether to do a user install)confighelpz Use the sys.prefix as the prefixr2   r   r   c                    dS )zA default format for messagesz%(message)sr,   selfs    r   _log_format_defaultz$BaseExtensionApp._log_format_default   s    }r   c                8    t          | j        | j                  S )Nr   )r   r   r   r:   s    r   r$   zBaseExtensionApp.config_dir   s    DI$/JJJJr   N)r   r   )r)   r*   r+   __doc__r   _log_formatter_clsr.   flagsr5   aliasesr
   versionr	   r   r   r1   r<   propertyr$   r,   r   r   r0   r0   {   s        &&%EGG4d)GHHHDd4.PQQQJT%+JKKKF    K K K XK K Kr   ntz[32menabled[0menabledz[31mdisabled[0mdisabledz[32mOK[0mokz[31m X[0mz Ximport_namebool | Noneparentt.AnyNonec                    |rdn|}t          ||          }t          |gt          j                            |d                    }|r|                    |            dS |                    |            dS )zZToggle the boolean setting for a given server extension
    in a Jupyter config file.
    Fr   r   r   N)r   r   r!   r"   r#   enabledisable)rH   rE   rJ   r   r   r$   managers          r   toggle_server_extension_pythonrQ      s     .JJ dzBBBJ$$j2KL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                  J    e Zd ZdZdZeZeZ e            Z	dZ
dZddZdd	Zd
S )rR   z.A base class for enabling/disabling extensionsz'jupyter server extension enable/disable rH   r   r   rL   c                   t          | j        | j                  \  }}	 | j                            | j                                         d|            | j                            d|            | j                            d| d           |j        }d}|r5|                                }||vrd| d}t          |          ||         }t          ||	          }|                                sd
}t          |          |j        }	| j                            d| d|	 dt                      |j        }|r4| j        du r|                    |           n|                    |           | j                            d| j         d           dS # t$          $ r0}
| j                            dt(           d|
            Y d}
~
dS 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?namerE   validation failed       Tz    - Extension successfully .z     z Validation failed: N)r&   r   r   loginfo_toggle_pre_message
capitalizer    get_jpserver_extensions
ValueErrorr   validaterB   GREEN_OK_toggle_valuerN   rO   _toggle_post_message	ExceptionerrorRED_X)r;   rH   r$   r%   r7   rE   jpserver_extensionsmsgextpkgrB   errs              r   toggle_server_extensionz0ToggleServerExtensionApp.toggle_server_extension   s9    )Dt)
 )
 )
%
%$	EHMMT5@@BBSSkSSTTTHMM;z;;<<<HMM>k>>>???&5FG ;&,&D&D&F&F#&999;{ ; ; ;  %S//)-k: &;HHHF??$$ &) oo%nGHMME;EEEE8EEFFF '5F 0%--MM+....NN;/// HMMV$:SVVVWWWWW 	E 	E 	EHNNC5CCcCCDDDDDDDDD	Es   E6F 
G"%GGc                z    | j         st          j        d           | j         D ]}|                     |           dS )'Perform the App's actions as configuredz>Please specify a server extension/package to enable or disableN)
extra_argssysexitro   )r;   args     r   startzToggleServerExtensionApp.start'  sP     	WHUVVV? 	. 	.C((----	. 	.r   N)rH   r   r   rL   r   rL   )r)   r*   r+   r>   rY   _descdescriptionr@   r	   rf   r`   rg   ro   rv   r,   r   r   rR   rR      sm        884DKEDFFM4E 4E 4E 4El. . . . . .r   c                  &    e Zd ZdZdZdZdZdZdZdS )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enablingrE   N	r)   r*   r+   r>   rY   ry   rf   r`   rg   r,   r   r   r{   r{   /  s5        ??,DK M$$r   r{   c                  &    e Zd ZdZdZdZdZdZdZdS )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	disablingrF   Nr}   r,   r   r   r   r   >  s5        0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	dS )
ListServerExtensionsAppz3An App that lists (and validates) Server Extensionszjupyter server extension listz<List all server extensions known by the configuration systemr   rL   c           
        dddddddddf}|D ]y}t          di |}t          d|            d}t          |gt          j                            ||                    }|                                }|                                D ]\  }}t          d| d|rt          nt                      	 t          d	| d
           t          ||          }	|	                                sd}
t          |
          |	j        }t          d| d| dt                      # t          $ r@}| j                            dd           t          dt$           d|            Y d}~d}~ww xY w| j                            d           {dS )zList all enabled and disabled server extensions, by config path

        Enabled extensions are validated, potentially generating warnings.
        TFr   zConfig dir: r   r   z    r\   rV   rW   rX   rZ   r[   rT   )exc_infoNr,   )r   printr   r!   r"   r#   rb   itemsGREEN_ENABLEDRED_DISABLEDr   rd   rc   rB   re   rh   r^   debugrj   r_   )r;   configurationsoptionr$   r   r    rk   rY   rE   	extensionrl   rB   rn   s                r   list_server_extensionsz.ListServerExtensionsApp.list_server_extensionsT  s    //$//%00
 % 	 	F(22622J---...1I3",!#j)!D!D  N #1"H"H"J"J!4!:!:!<!< 2 2gPTPPW$NMM,PPQQQ
27d777888 0dG L L LI$--// .1(oo-'/G>4>>'>>H>>????  2 2 2HNN2N5550500300111111112 HMM"1	 	s   5A-D##
E--6E((E-c                .    |                                   dS )rq   N)r   r:   s    r   rv   zListServerExtensionsApp.starty  s    ##%%%%%r   Nrw   )
r)   r*   r+   r>   rY   r
   rB   ry   r   rv   r,   r   r   r   r   M  sR        ==*DGPK# # # #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   ry   zEnable a server extensionzDisable a server extensionzList server extensions)rN   rO   listr-   subcommandsr   rL   c                    t                                                       d                    t          | j                            }t          j        d|z             dS )rq   z, z)Please supply at least one subcommand: %sN)superrv   r#   sortedr   rs   rt   )r;   subcmds	__class__s     r   rv   zServerExtensionApp.start  sN     ))F4#34455<wFGGGGGr   rw   )r)   r*   r+   r>   rY   r
   rB   ry   __annotations__	_examplesexamplesr{   r   r   r   rv   __classcell__)r   s   @r   r   r     s         ))%DG<K<<<<H ,-HI-/KL(*BC% %K    H H H H H H H H H Hr   r   __main__)FF)r   r   r   r   r   r   )r   FF)r   r   r   r   r   r   r   r   )NNFT)rH   r   rE   rI   rJ   rK   r   r   r   r   r   rL   )5r>   
__future__r   loggingr!   rs   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&   rc   r(   r.   r   updater@   popr5   rA   r0   rY   r   r   re   rj   rQ   rx   rR   r{   r   r   r   r   launch_instancemainr)   r,   r   r   <module>r      s4   ) ) ) # " " " " "  				 



     / / / / / / V V V V V V V V V V $ $ $ $ $ $       / / / / / / B B B B B B O O O O O O O O    0 X]) ) ) ) )6	 	 	 	 	z 	 	 	 !# " " " "   :# $ $ $ T    !4 ( ( (    #D%
 :
 #!"'% % .
 # $%
 c
 #d%
 ,
5" "$ $ $J $D)H "$ $ $ $ $   Z' ( ( (K K K K Kz K K K. -/GtOO((,.GtOO(("$'T//t!w$D  % % % % %4 	 # $ $ $ 		#t    		
T " " "  +D-
 9
 +!"'- - 0
 + $-
 L
 +d-
 ,
5" "$ $ $J +h 	PG. G. G. G. G./ G. G. G.T% % % % %7 % % %& & & & & 8 & & &.& .& .& .& .&. .& .& .&b	H H H H H) H H H0 ) zDFFFFF r   