
    lKjL                         d dl Z d dlZd dlmZ d dlmZ ej                  j                  ej                  j                  e	            Z
d Zd Zd Zd Z G d d      Zy)	    N)filterfalsec                  L    t        j                  t        j                  |        S )z!Join paths to create a real path.)ospabspathjoin)argss    f/Users/ahmed/devFolder/Ultron/claude-voice/.venv/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
   HEREjsonload)fids    r	   _get_default_core_datar      s,    	eD)^4	5yy~ 
6	5	5s	   :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#      sr     *d##-#3#3#5P#5!Q_Q=O1#5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__2   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.add5   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 ]  }|j                  |d        |d   d   j                  |       y)z[Remove a package/extension.

        name: string
            The npm package name
        r0   r,   r.   r1   r/   Nr2   )r'   popremove)r)   r   r8   mapsms        r	   r<   zCoreConfig.remove[   st     zz |,/0	
 AEE$  	\./66t<r   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.r0   r,   r.   r1   r/   r2   N)r'   r#   )r)   lab_onlyr8   s      r	   clear_packageszCoreConfig.clear_packagesm   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.   r1   r,   r'   r)   r8   r    s      r	   r1   zCoreConfig.extensions   s@     zz373El3ST3Sa4&q))3S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.   r/   r,   rC   rD   s      r	   mime_extensionszCoreConfig.mime_extensions   sA     zz373EFV3WX3Wa4&q))3WXXXrE   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.   r2   r,   N)r'   getrD   s      r	   
singletonszCoreConfig.singletons   sQ     zz9=l9KL_9`
9`AAtM"&&q$//9`
 	
 
s   7c                 &    | j                   d   d   S Nr.   	staticDirrC   r(   s    r	   
static_dirzCoreConfig.static_dir   s    zz,'44r   c                 (    || j                   d   d<   y rL   rC   )r)   rN   s     r	   rN   zCoreConfig.static_dir   s    0:

< -r   N)FF)T)__name__
__module____qualname____doc__r*   r9   r<   rA   propertyr1   rG   rJ   rN   setter r   r	   r%   r%   +   s    .$AL=$9, U U
 Y Y
 
 
 5 5 ; ;r   r%   )r   osos.pathpathr   	itertoolsr   dirnamer   __file__r   r
   r   r   r#   r%   rV   r   r	   <module>r]      sR     	  !	wwrwwx01(
+
r; r;r   