
    Mhk                     d    d dl Z d dlmZ d dlmZ ddlmZ d Zd Z	d Z
d Z G d	 d
          ZdS )    N)filterfalse   )HEREc                  B    t          j        t          j        |            S )z!Join paths to create a real path.)ospabspathjoin)argss    U/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/jupyterlab/coreconfig.pypjoinr      s    ;sx'''    c                      t          t          t          dd                    5 } t          j        |           cddd           S # 1 swxY w Y   dS )z"Get the data for the app template.stagingzpackage.jsonN)openr   r   jsonload)fids    r   _get_default_core_datar      s    	eD)^44	5	5 y~~                 s   AA	A	c                 ,    |                      d          S )z.Whether a package name is in the lab namespacez@jupyterlab/)
startswith)names    r   _is_lab_packager      s    ??>***r   c                    t          | t                    rd |                                 D             S t          | t          t          f          r"t          t          t          |                     S d}t          |          )zFilter a dict/sequence to remove all lab packages

    This is useful to take the default values of e.g. singletons and filter
    away the '@jupyterlab/' namespace packages, but leave any others (e.g.
    lumino and react).
    c                 8    i | ]\  }}t          |          ||S  )r   ).0kvs      r   
<dictcomp>z _only_nonlab.<locals>.<dictcomp>#   s+    PPP!Q_Q=O=OP1PPPr   z2collection arg should be either dict or list/tuple)
isinstancedictitemslisttupler   r   	TypeError)
collectionmsgs     r   _only_nonlabr(      su     *d## >PP:#3#3#5#5PPPP	Ju	.	. >K<<===
>C
C..r   c                       e Zd ZdZd ZddZd ZddZed             Z	ed	             Z
ed
             Zed             Zej        d             ZdS )
CoreConfigzAn object representing a core config.

    This enables custom lab application to override some parts of the core
    configuration of the build system.
    c                 ,    t                      | _        d S )N)r   _dataselfs    r   __init__zCoreConfig.__init__1   s    +--


r   Fc                 t   | j         }|sd}t          |          |sd}t          |          ||d         v rd|}t          |          ||d         |<   |rd|d         d         |<   ||d         |<   dS |rd|d         d	         |<   ||d         |<   dS |d         d
                             |           dS )a  Remove an extension/singleton.

        If neither extension or mimeExtension is True (the default)
        the package is added as a singleton dependency.

        name: string
            The npm package name
        semver: string
            The semver range for the package
        extension: bool
            Whether the package is an extension
        mime_extension: bool
            Whether the package is a MIME extension
        zMissing package namezMissing package semverresolutionszPackage already present:  
jupyterlabmimeExtensionsdependencies
extensionssingletonPackagesN)r,   
ValueErrorappend)r.   r   semver	extensionmime_extensiondatar'   s          r   addzCoreConfig.add4   s    z 	"(CS//! 	"*CS//!4&&&6d66CS//!$*]D!  	A9;D/06)/D &&& 	A57D|,T2)/D &&&23::4@@@@@r   c                     | j         }|d         |d         |d         d         |d         d         f}|D ]}	 ||= # t          $ r Y w xY w|d         d                             |           dS )z[Remove a package/extension.

        name: string
            The npm package name
        r5   r1   r3   r6   r4   r7   N)r,   KeyErrorremove)r.   r   r=   mapsms        r   rA   zCoreConfig.removeZ   s     z |,/0	
  	 	AdGG    	\./66t<<<<<s   ;
AATc                    | j         }|rt          |d                   |d<   t          |d                   |d<   t          |d         d                   |d         d<   t          |d         d                   |d         d<   t          |d         d                   |d         d<   dS i |d<   i |d<   i |d         d<   i |d         d<   g |d         d<   dS )zClear the packages/extensions.r5   r1   r3   r6   r4   r7   N)r,   r(   )r.   lab_onlyr=   s      r   clear_packageszCoreConfig.clear_packageso   s   z 	9#/^0D#E#ED ".tM/B"C"CD/;D<N|<\/]/]D|,3?\"#344 4D/0 7C\"#677 7D2333 $&D "$D/1D|,35D/068D2333r   c                 F    | j         fdd         d         D             S )z2A dict mapping all extension names to their semverc                 .    i | ]}|d          |         S r1   r   r   r   r=   s     r   r   z)CoreConfig.extensions.<locals>.<dictcomp>   s%    TTTa4&q)TTTr   r3   r6   r,   r.   r=   s    @r   r6   zCoreConfig.extensions   s0     zTTTT43El3STTTTr   c                 F    | j         fdd         d         D             S )z7A dict mapping all MIME extension names to their semverc                 .    i | ]}|d          |         S rI   r   rJ   s     r   r   z.CoreConfig.mime_extensions.<locals>.<dictcomp>   s%    XXXa4&q)XXXr   r3   r4   rK   rL   s    @r   mime_extensionszCoreConfig.mime_extensions   s1     zXXXX43EFV3WXXXXr   c                 F    | j         fdd         d         D             S )z2A dict mapping all singleton names to their semverc                 J    i | ]}|d                               |d           S )r1   N)getrJ   s     r   r   z)CoreConfig.singletons.<locals>.<dictcomp>   s=     
 
 
45AtM"&&q$//
 
 
r   r3   r7   rK   rL   s    @r   
singletonszCoreConfig.singletons   sB     z
 
 
 
9=l9KL_9`
 
 
 	
r   c                 (    | j         d         d         S Nr3   	staticDirrK   r-   s    r   
static_dirzCoreConfig.static_dir   s    z,'44r   c                 &    || j         d         d<   d S rU   rK   )r.   rW   s     r   rW   zCoreConfig.static_dir   s    0:
< ---r   N)FF)T)__name__
__module____qualname____doc__r/   r>   rA   rF   propertyr6   rO   rS   rW   setterr   r   r   r*   r*   *   s         . . .$A $A $A $AL= = =*9 9 9 9, U U XU
 Y Y XY
 
 
 X
 5 5 X5 ; ; ; ; ;r   r*   )r   os.pathpathr   	itertoolsr   jlpmappr   r   r   r   r(   r*   r   r   r   <module>rc      s           ! ! ! ! ! !      ( ( (
  + + +
  u; u; u; u; u; u; u; u; u; u;r   