
    Xhk                     \    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y)    N)filterfalse   )HEREc                  L    t        j                  t        j                  |        S )z!Join paths to create a real path.)ospabspathjoin)argss    I/var/www/html/myenv/lib/python3.12/site-packages/jupyterlab/coreconfig.pypjoinr      s    ;;sxx''    c                      t        t        t        dd            5 } t        j                  |       cddd       S # 1 sw Y   yxY w)z"Get the data for the app template.stagingzpackage.jsonN)openr   r   jsonload)fids    r   _get_default_core_datar      s5    	eD)^4	5 yy~  s	   :Ac                 $    | j                  d      S )z.Whether a package name is in the lab namespacez@jupyterlab/)
startswith)names    r   _is_lab_packager      s    ??>**r   c                    t        | t              r0| j                         D ci c]  \  }}t        |      r|| c}}S t        | t        t
        f      rt	        t        t        |             S d}t        |      c c}}w )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).
    z2collection arg should be either dict or list/tuple)
isinstancedictitemsr   listtupler   	TypeError)
collectionkvmsgs       r   _only_nonlabr$      sl     *d##-#3#3#5P!Q_Q=O1PP	Ju	.K<==
>C
C.	 Qs
   A=A=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y)
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               | _        y )N)r   _dataselfs    r   __init__zCoreConfig.__init__1   s    +-
r   c                    | j                   }|sd}t        |      |sd}t        |      ||d   v rd|}t        |      ||d   |<   |rd|d   d   |<   ||d   |<   y|rd|d   d	   |<   ||d   |<   y|d   d
   j                  |       y)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     zz(CS/!*CS/!4&&-dX6CS/!$*]D! 9;D/06)/D &57D|,T2)/D &23::4@r   c                     | j                   }|d   |d   |d   d   |d   d   f}|D ]  }	 ||=  |d   d   j                  |       y# t        $ r Y ,w xY w)z[Remove a package/extension.

        name: string
            The npm package name
        r1   r-   r/   r2   r0   r3   N)r(   KeyErrorremove)r*   r   r9   mapsms        r   r=   zCoreConfig.removeZ   s     zz |,/0	
  	AdG	 	\./66t<  s   A	AAc                 4   | j                   }|rht        |d         |d<   t        |d         |d<   t        |d   d         |d   d<   t        |d   d         |d   d<   t        |d   d         |d   d<   yi |d<   i |d<   i |d   d<   i |d   d<   g |d   d<   y)zClear the packages/extensions.r1   r-   r/   r2   r0   r3   N)r(   r$   )r*   lab_onlyr9   s      r   clear_packageszCoreConfig.clear_packageso   s    zz#/^0D#ED ".tM/B"CD/;D<N|<\/]D|,3?\"#344D/0 7C\"#677D23 $&D "$D/1D|,35D/068D23r   c                 ^    | j                   }|d   d   D ci c]  }||d   |    c}S c c}w )z2A dict mapping all extension names to their semverr/   r2   r-   r(   r*   r9   r!   s      r   r2   zCoreConfig.extensions   s:     zz373El3STa4&q))TTT   *c                 ^    | j                   }|d   d   D ci c]  }||d   |    c}S c c}w )z7A dict mapping all MIME extension names to their semverr/   r0   r-   rD   rE   s      r   mime_extensionszCoreConfig.mime_extensions   s;     zz373EFV3WXa4&q))XXXrF   c                 x    | j                   }|d   d   D ci c]  }||d   j                  |d       c}S c c}w )z2A dict mapping all singleton names to their semverr/   r3   r-   N)r(   getrE   s      r   
singletonszCoreConfig.singletons   sL     zz9=l9KL_9`
45AtM"&&q$//
 	
 
s   7c                 &    | j                   d   d   S Nr/   	staticDirrD   r)   s    r   
static_dirzCoreConfig.static_dir   s    zz,'44r   c                 (    || j                   d   d<   y rM   rD   )r*   rO   s     r   rO   zCoreConfig.static_dir   s    0:

< -r   N)FF)T)__name__
__module____qualname____doc__r+   r:   r=   rB   propertyr2   rH   rK   rO   setter r   r   r&   r&   *   s    .$AL=*9, U U
 Y Y
 
 
 5 5 ; ;r   r&   )r   os.pathpathr   	itertoolsr   jlpmappr   r   r   r   r$   r&   rW   r   r   <module>r\      s3      ! (
+
u; u;r   