Ë
    Ávžj	h  ã                   óD  — d Z ddlZddlZddlmZmZmZmZ ddlm	Z	 ddl
mZmZ ddlZddlmZ ddlmZ ddlmZmZ dd	lmZmZmZmZmZ d
dddœZd„ Z ej:                  d«       ej:                  d«       ej:                  d«      dœZd„ Z ed¬«       G d„ d«      «       Z  ed¬«       G d„ d«      «       Z! ed¬«       G d„ d«      «       Z" ed¬«       G d„ de"«      «       Z# ed¬«       G d„ d«      «       Z$e G d „ d!«      «       Z% G d"„ d#e«      Z& G d$„ d%e&«      Z'y)&z'Base classes for the extension manager.é    N)Ú	dataclassÚfieldÚfieldsÚreplace)ÚPath)ÚOptionalÚUnion)Ú
translator)ÚEnum)ÚConfigurableÚLoggingConfigurable)Ú_AppHandlerÚ_ensure_optionsÚdisable_extensionÚenable_extensionÚget_app_infoz-alpha.z-beta.z-rc.)ÚaÚbÚrcc                 ó@   — t        |«      }|j                  «       | d<   y)z0Ensure that the app info has compat_errors fieldÚcompat_errorsN)r   Ú_get_extension_compat)ÚinfoÚapp_optionsÚhandlers      ún/workspace/moltex-experiments/.pixi/envs/default/lib/python3.12/site-packages/jupyterlab/extensions/manager.pyÚ_ensure_compat_errorsr      s   € ä˜+Ó&€GØ#×9Ñ9Ó;€DˆÒó    z*(?P<name>.*) needs to be included in buildz+(?P<name>.*) needs to be removed from buildz:(?P<name>.*) changed from (?P<oldver>.*) to (?P<newver>.*)©ÚinstallÚ	uninstallÚupdatec                 ó   — t        | «      }|j                  d¬«      }g g g dœ}|D ]U  }t        j                  «       D ]<  \  }}|j	                  |«      }|sŒ||   j                  |j                  d«      «       Œ> ŒW |S )z8Get info about packages scheduled for (un)install/updateT)Úfastr   Úname)r   Úbuild_checkÚ_message_mapÚitemsÚmatchÚappendÚgroup)r   r   ÚmessagesÚstatusÚmsgÚkeyÚpatternr)   s           r   Ú_build_check_infor1   )   s   € ä˜+Ó&€GØ×"Ñ"¨Ð"Ó-€Hà¨"¸Ñ;€FÛˆÜ(×.Ñ.Ö0‰LˆC�Ø—M‘M #Ó&ˆEÚØ�s‘×"Ñ" 5§;¡;¨vÓ#6Õ7ñ 1ð ð
 €Mr   T)Úfrozenc                   óP  — e Zd ZU dZeed<   eed<   eed<   eed<   dZeed<   dZeed	<   d
Z	e
e   ed<   dZeed<   dZeed<   d
Ze
e   ed<   d
Ze
e   ed<   dZeed<   dZeed<   dZeed<   d
Ze
e   ed<   d
Ze
e   ed<   d
Ze
e   ed<   d
Ze
e   ed<   d
Ze
e   ed<   d
Ze
e   ed<   y
)ÚExtensionPackageað  Extension package entry.

    Attributes:
        name: Package name
        description: Package description
        homepage_url: Package home page
        pkg_type: Type of package - ["prebuilt", "source"]
        allowed: [optional] Whether this extension is allowed or not - default True
        approved: [optional] Whether the package is approved by your administrators - default False
        companion: [optional] Type of companion for the frontend extension - [None, "kernel", "server"]; default None
        core: [optional] Whether the package is a core package or not - default False
        enabled: [optional] Whether the package is enabled or not - default False
        install: [optional] Extension package installation instructions - default None
        installed: [optional] Whether the extension is currently installed - default None
        installed_version: [optional] Installed version - default ""
        latest_version: [optional] Latest available version - default ""
        status: [optional] Package status - ["ok", "warning", "error"]; default "ok"
        author: [optional] Package author - default None
        license: [optional] Package license - default None
        bug_tracker_url: [optional] Package bug tracker URL - default None
        documentation_url: [optional] Package documentation URL - default None
        package_manager_url: Package home page in the package manager - default None
        repository_url: [optional] Package code repository URL - default None
    r%   ÚdescriptionÚhomepage_urlÚpkg_typeTÚallowedFÚapprovedNÚ	companionÚcoreÚenabledr    Ú	installedÚ Úinstalled_versionÚlatest_versionÚokr-   ÚauthorÚlicenseÚbug_tracker_urlÚdocumentation_urlÚpackage_manager_urlÚrepository_url)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚstrÚ__annotations__r8   Úboolr9   r:   r   r;   r<   r    Údictr=   r?   r@   r-   rB   rC   rD   rE   rF   rG   © r   r   r4   r4   7   sæ   … ñð2 ƒIØÓØÓØƒMØ€GˆTÓØ€HˆdÓØ#€Iˆx˜‰}Ó#Ø€Dˆ$ÓØ€GˆTÓØ"€GˆX�d‰^Ó"Ø $€Iˆx˜‰~Ó$ØÐ�sÓØ€N�CÓØ€FˆCÓØ €FˆH�S‰MÓ Ø!€GˆX�c‰]Ó!Ø%)€O�X˜c‘]Ó)Ø'+Ð�x ‘}Ó+Ø)-Ð˜ #™Ó-Ø$(€N�H˜S‘MÔ(r   r4   c                   óR   — e Zd ZU dZeed<   dZee   ed<    ee	¬«      Z
e	e   ed<   y)ÚActionResultzòAction result

    Attributes:
        status: Action status - ["ok", "warning", "error"]
        message: Action status explanation
        needs_restart: Required action follow-up - Valid follow-up are "frontend", "kernel" and "server"
    r-   NÚmessage©Údefault_factoryÚneeds_restart)rH   rI   rJ   rK   rL   rM   rS   r   r   ÚlistrV   rP   r   r   rR   rR   h   s/   … ñð ƒKØ!€GˆX�c‰]Ó!Ù$°TÔ:€M�4˜‘9Ô:r   rR   c                   óB   — e Zd ZU dZ ee¬«      Zee   ed<   dZ	e
ed<   y)ÚPluginManagerOptionsal  Plugin manager options.

    Attributes:
        lock_all: Whether to lock (prevent enabling/disabling) all plugins.
        lock_rules: A list of plugins or extensions that cannot be toggled.
            If extension name is provided, all its plugins will be disabled.
            The plugin names need to follow colon-separated format of `extension:plugin`.
    rT   Ú
lock_rulesFÚlock_allN)rH   rI   rJ   rK   r   Ú	frozensetrZ   rL   rM   r[   rN   rP   r   r   rY   rY   y   s&   … ññ "'°yÔ!A€J�	˜#‘ÓAØ€HˆdÔr   rY   c                   ó€   — e Zd ZU dZ ee¬«      Zee   ed<    ee¬«      Z	ee   ed<   dZ
eed<    ee¬«      Zeed<   y)	ÚExtensionManagerOptionsa  Extension manager options.

    Attributes:
        allowed_extensions_uris: A list of comma-separated URIs to get the allowed extensions list
        blocked_extensions_uris: A list of comma-separated URIs to get the blocked extensions list
        listings_refresh_seconds: The interval delay in seconds to refresh the lists
        listings_tornado_options: The optional kwargs to use for the listings HTTP requests as described on https://www.tornadoweb.org/en/stable/httpclient.html#tornado.httpclient.HTTPRequest
    rT   Úallowed_extensions_urisÚblocked_extensions_urisi  Úlistings_refresh_secondsÚlistings_tornado_optionsN)rH   rI   rJ   rK   r   Úsetr_   rL   rM   r`   ra   ÚintrO   rb   rP   r   r   r^   r^   ˆ   sL   … ññ ).¸cÔ(BÐ˜S ™XÓBÙ(-¸cÔ(BÐ˜S ™XÓBØ$+Ð˜cÓ+Ù%*¸4Ô%@Ð˜dÔ@r   r^   c                   ó>   — e Zd ZU dZeed<   dZeed<   dZe	e   ed<   y)ÚExtensionManagerMetadataa#  Extension manager metadata.

    Attributes:
        name: Extension manager name to be displayed
        can_install: Whether the extension manager can un-/install packages (default False)
        install_path: Installation path for the extensions (default None); e.g. environment path
    r%   FÚcan_installNÚinstall_path)
rH   rI   rJ   rK   rL   rM   rg   rN   rh   r   rP   r   r   rf   rf   ™   s&   … ñð ƒIØ€K�ÓØ"&€L�(˜3‘-Ô&r   rf   c                   óV   — e Zd ZU dZ ee¬«      Zeeeee	e
f      f   ed<   dZeed<   y)ÚExtensionsCachez{Extensions cache

    Attributes:
        cache: Extension list per page
        last_page: Last available page result
    rT   Úcacheé   Ú	last_pageN)rH   rI   rJ   rK   r   rO   rk   rd   r   rL   r4   rM   rm   rP   r   r   rj   rj   ¨   s>   … ññ ?DÐTXÔ>Y€Eˆ4��X˜d 3Ð(8Ð#8Ñ9Ñ:Ð:Ñ;ÓYØ€IˆsÔr   rj   c            	       óð   ‡ — e Zd ZdZ eg d¢dd¬«      j                  d¬«      Z	 	 	 dd	ee   d
ee   dee	   ddfˆ fd„Z
defd„Zdee   dee   fd„Zdeeee   f   defd„Zdeeee   f   defd„Zˆ xZS )ÚPluginManagera  Plugin manager enables or disables plugins unless locked.

    It can also disable/enable all plugins in an extension.

    Args:
        app_options: Application options
        ext_options: Plugin manager (subset of extension manager) options
        parent: Configurable parent

    Attributes:
        app_options: Application options
        options: Plugin manager options
    )Ú
sys_prefixÚuserÚsystemrp   z:Level at which to manage plugins: sys_prefix, user, system)ÚvaluesÚdefault_valueÚhelpT)ÚconfigNr   Úext_optionsÚparentÚreturnc                 óž  •— t         ‰	| �  |¬«       | j                  j                  d| j                  j
                  › d| j                  › d�«       t        |«      | _        t        t        «      D �ch c]  }|j                  ’Œ }}|xs i j                  «       D ��ci c]  \  }}||v r||“Œ }}}t        di |¤Ž| _        y c c}w c c}}w )N)rx   zPlugins in z will managed on the z levelrP   )ÚsuperÚ__init__ÚlogÚdebugÚ	__class__rH   Úlevelr   r   r   rY   r%   r(   Úoptions)
Úselfr   rw   rx   ÚfÚplugin_options_fieldÚoptionÚvalueÚplugin_optionsr   s
            €r   r|   zPluginManager.__init__Ê   sÕ   ø€ ô 	‰Ñ ÐÔ'Ø�‰�‰Ø˜$Ÿ.™.×1Ñ1Ð2Ð2GÈÏ
É
À|ÐSYÐZô	
ô +¨;Ó7ˆÔÜ06Ô7KÔ0LÓMÑ0L¨1 §£Ð0LÐÐMð #.Ò"3°×!:Ñ!:Ô!<ô
á!<‘�˜ØÐ-Ñ-ð �E‰MØ!<ð 	ñ 
ô
 ,Ñ=¨nÑ=ˆ�ùò  Nùó
s   Á3CÂC	c              ƒ   óv   K  — t        | j                  j                  «      | j                  j                  dœS ­w)z8Get information about locks on plugin enabling/disabling)Ú	lockRulesÚ	allLocked)rW   r�   rZ   r[   ©r‚   s    r   Úplugin_lockszPluginManager.plugin_locksÝ   s1   è ø€ ô ˜dŸl™l×5Ñ5Ó6ØŸ™×.Ñ.ñ
ð 	
ùs   ‚79Úplugins_or_extensionsc                 óh  — | j                   j                  rt        |«      S t        «       }| j                   j                  D �ch c]  }|j	                  d«      d   ’Œ }}|D ]G  }d|v r+|| j                   j                  v sŒ |j                  |«       Œ2||v sŒ7|j                  |«       ŒI |S c c}w )z9Find a subset of plugins (or extensions) which are lockedÚ:r   )r�   r[   rc   rZ   ÚsplitÚadd)r‚   r�   Úlocked_subsetÚpluginÚextensions_with_locked_pluginss        r   Ú_find_lockedzPluginManager._find_lockedä   s°   € à�<‰<× Ò ÜÐ,Ó-Ð-Ü›ˆà/3¯|©|×/FÒ/Fó*
Ù/F VˆF�L‰L˜Ó˜aÓ Ð/Fð 	'ð *
ó ,ˆFØ�f‰}à˜TŸ\™\×4Ñ4Ò4Ø!×%Ñ% fÕ-ØÐ9Ò9ð ×!Ñ! &Õ)ð ,ð Ðùò*
s   ÁB/Úpluginsc              ƒ   ó¨  K  — t        |t        «      r|n|g}| j                  |«      }t        j                  d«      }|r.t        d|j                  d«      dj                  |«      z   ¬«      S 	 |D ]$  }t        || j                  | j                  ¬«       Œ& t        ddg¬	«      S # t        $ r }t        dt        |«      ¬«      cY d
}~S d
}~ww xY w­w)z¦Disable a set of plugins (or an extension).

        Args:
            plugins: The list of plugins to disable
        Returns:
            The action result
        Ú
jupyterlabÚerrorz=The following plugins cannot be disabled as they are locked: ú, ©r-   rS   ©r   r€   rA   Úfrontend©r-   rV   N)Ú
isinstancerW   r•   r
   ÚloadrR   ÚgettextÚjoinr   r   r€   Ú	ExceptionÚrepr©r‚   r–   ÚlockedÚtransr“   Úerrs         r   ÚdisablezPluginManager.disable÷   sÄ   è ø€ ô (¨´Ô6‘'¸W¸IˆØ×"Ñ" 7Ó+ˆÜ—‘ Ó-ˆÙÜØØŸ™ØSóð —)‘)˜FÓ#ñ$ôð ð	CÛ!�Ü! &°d×6FÑ6FÈdÏjÉjÖYð "ä t¸J¸<ÔHÐHøÜò 	CÜ w¼¸S»	ÔBÕBûð	Cüó6   ‚A,CÁ/6B& Â%CÂ&	CÂ/C
ÃCÃCÃ
CÃCc              ƒ   ó¨  K  — t        |t        «      r|n|g}| j                  |«      }t        j                  d«      }|r.t        d|j                  d«      dj                  |«      z   ¬«      S 	 |D ]$  }t        || j                  | j                  ¬«       Œ& t        ddg¬	«      S # t        $ r }t        dt        |«      ¬«      cY d
}~S d
}~ww xY w­w)z¤Enable a set of plugins (or an extension).

        Args:
            plugins: The list of plugins to enable
        Returns:
            The action result
        r˜   r™   z<The following plugins cannot be enabled as they are locked: rš   r›   rœ   rA   r�   rž   N)rŸ   rW   r•   r
   r    rR   r¡   r¢   r   r   r€   r£   r¤   r¥   s         r   ÚenablezPluginManager.enable  sÄ   è ø€ ô (¨´Ô6‘'¸W¸IˆØ×"Ñ" 7Ó+ˆÜ—‘ Ó-ˆÙÜØØŸ™ØRóð —)‘)˜FÓ#ñ$ôð ð	CÛ!�Ü  °T×5EÑ5EÈTÏZÉZÖXð "ä t¸J¸<ÔHÐHøÜò 	CÜ w¼¸S»	ÔBÕBûð	Cürª   ©NNN)rH   rI   rJ   rK   r   Útagr€   r   rO   r   r|   rŒ   rW   rL   r\   r•   r	   rR   r©   r¬   Ú__classcell__©r   s   @r   ro   ro   µ   sÞ   ø„ ññ Ú/Ø"ØIô÷ 
�c�€cÓð	 
ð '+Ø&*Ø)-ñ	>à˜d‘^ð>ð ˜d‘^ð>ð ˜Ñ&ð	>ð
 
õ>ð&
 Dó 
ð°$°s±)ð À	È#Áó ð&C U¨3°°S±	¨>Ñ%:ð C¸|ó Cð4C E¨#¨t°C©y¨.Ñ$9ð C¸l÷ Cr   ro   c                   óÚ  ‡ — e Zd ZdZ	 	 	 ddee   dee   dee   ddfˆ fd„Zd„ Ze	de
fd	„«       Zd
edee   fd„Zdedededeeeef   ee   f   fd„Zd d
edee   defd„Zd
edefd„Zededefd„«       Zd
edefd„Z	 d!dee   dededeee   ee   f   fd„Zdee   dededdfd„Zd"d„Z	 d#deeef   fd„Zdedee   fd„Zdee   fd„Zdedefd„Z	 d!dee   dededdfd„Z ˆ xZ!S )$ÚExtensionManageraØ  Base abstract extension manager.

    Note:
        Any concrete implementation will need to implement the five
        following abstract methods:
        - :ref:`metadata`
        - :ref:`get_latest_version`
        - :ref:`list_packages`
        - :ref:`install`
        - :ref:`uninstall`

        It could be interesting to override the :ref:`get_normalized_name`
        method too.

    Args:
        app_options: Application options
        ext_options: Extension manager options
        parent: Configurable parent

    Attributes:
        log: Logger
        app_dir: Application directory
        core_config: Core configuration
        app_options: Application options
        options: Extension manager options
    Nr   rw   rx   ry   c                 ó`  •— t         ‰| �  |||¬«       | j                  j                  | _        t        | j                  j                  «      | _        | j                  j                  | _        t        di |xs i ¤Ž| _	        i | _
        d | _        d| _        d | _        t        | j                  j                  «      st        | j                  j                   «      rÓt        | j                  j                  «      dk(  | _        | j                  s=t        | j                  j                   «      dkD  r| j                  j#                  d«       t$        j&                  j)                  | j*                  | j                  j,                  dz  d¬«      | _        | j                  j/                  «        y y )	N)r   rw   rx   Tr   zqYou have define simultaneously blocked and allowed extensions listings. The allowed listing will take precedence.iè  gš™™™™™¹?)Úcallback_timeÚjitterrP   )r{   r|   r   Úloggerr}   r   Úapp_dirÚcore_configr^   r�   Ú_extensions_cacheÚ_listings_cacheÚ_listings_block_modeÚ_listing_fetchÚlenr_   r`   ÚwarningÚtornadoÚioloopÚPeriodicCallbackÚ_fetch_listingsra   Ústart)r‚   r   rw   rx   r   s       €r   r|   zExtensionManager.__init__H  s\  ø€ ô 	‰Ñ [¸kÐRXÐÔYØ×#Ñ#×*Ñ*ˆŒÜ˜D×,Ñ,×4Ñ4Ó5ˆŒØ×+Ñ+×7Ñ7ˆÔÜ.ÑE°+Ò2CÀÑEˆŒØGIˆÔØ/3ˆÔØ$(ˆÔ!ØIMˆÔäˆt�|‰|×3Ñ3Ô4¼¸D¿L¹L×<`Ñ<`Ô8aÜ(+¨D¯L©L×,PÑ,PÓ(QÐUVÑ(VˆDÔ%Ø×,Ò,´°T·\±\×5YÑ5YÓ1ZÐ]^Ò1^Ø—‘× Ñ ð Hôô #*§.¡.×"AÑ"AØ×$Ñ$Ø"Ÿl™l×CÑCÀdÑJØð #Bó #ˆDÔð
 ×Ñ×%Ñ%Õ'ð 9br   c                 óR   — | j                   �| j                   j                  «        y y ©N)r¼   Ústopr‹   s    r   Ú__del__zExtensionManager.__del__f  s%   € Ø×ÑÐ*Ø×Ñ×$Ñ$Õ&ð +r   c                 ó   — t        «       ‚)zExtension manager metadata.©ÚNotImplementedErrorr‹   s    r   ÚmetadatazExtensionManager.metadataj  s   € ô "Ó#Ð#r   Ú	extensionc              ƒ   ó   K  — t        «       ‚­w)z°Return the latest available version for a given extension.

        Args:
            pkg: The extension name
        Returns:
            The latest available version
        rÉ   ©r‚   rÌ   s     r   Úget_latest_versionz#ExtensionManager.get_latest_versiono  s   è ø€ ô "Ó#Ð#ùó   ‚ÚqueryÚpageÚper_pagec              ƒ   ó   K  — t        «       ‚­w)ab  List the available extensions.

        Args:
            query: The search extension query
            page: The result page
            per_page: The number of results per page
        Returns:
            The available extensions in a mapping {name: metadata}
            The results last page; None if the manager does not support pagination
        rÉ   ©r‚   rÑ   rÒ   rÓ   s       r   Úlist_packageszExtensionManager.list_packagesy  ó   è ø€ ô "Ó#Ð#ùrÐ   Úversionc              ƒ   ó   K  — t        «       ‚­w)a½  Install the required extension.

        Note:
            If the user must be notified with a message (like asking to restart the
            server), the result should be
            {"status": "warning", "message": "<explanation for the user>"}

        Args:
            extension: The extension name
            version: The version to install; default None (i.e. the latest possible)
        Returns:
            The action result
        rÉ   )r‚   rÌ   rØ   s      r   r    zExtensionManager.installˆ  s   è ø€ ô "Ó#Ð#ùrÐ   c              ƒ   ó   K  — t        «       ‚­w)aj  Uninstall the required extension.

        Note:
            If the user must be notified with a message (like asking to restart the
            server), the result should be
            {"status": "warning", "message": "<explanation for the user>"}

        Args:
            extension: The extension name
        Returns:
            The action result
        rÉ   rÎ   s     r   r!   zExtensionManager.uninstall˜  r×   rÐ   c           	      ób   — t        j                  dd„ t        j                  dd| «      d   «      S )a;  Convert a Python version to Semver version.

        It:

        - drops ``.devN`` and ``.postN``
        - converts ``aN``, ``bN`` and ``rcN`` to ``-alpha.N``, ``-beta.N``, ``-rc.N`` respectively

        Args:
            version: Version to convert
        Returns
            Semver compatible version
        z(a|b|rc)(\d+)$c                 óX   — t         | j                  d«         › | j                  d«      › �S )Nrl   é   )ÚPYTHON_TO_SEMVERr+   )Úms    r   Ú<lambda>z5ExtensionManager.get_semver_version.<locals>.<lambda>·  s$   € Ô)¨!¯'©'°!«*Ñ5Ð6°q·w±w¸q³z°lÑCr   z\.(dev|post)\d+r>   r   )ÚreÚsubÚsubn)rØ   s    r   Úget_semver_versionz#ExtensionManager.get_semver_version§  s1   € ô �v‰vØÙCÜ�G‰GÐ&¨¨GÓ4°QÑ7ó
ð 	
r   c                 ó   — |j                   S )a  Normalize extension name.

        Extension have multiple parts, npm package, Python package,...
        Sub-classes may override this method to ensure the name of
        an extension from the service provider and the local installed
        listing is matching.

        Args:
            extension: The extension metadata
        Returns:
            The normalized name
        )r%   rÎ   s     r   Úget_normalized_namez$ExtensionManager.get_normalized_name»  s   € ð �~‰~Ðr   c              ƒ   ó&  K  — || j                   vs|| j                   |   j                  vr| j                  |||«      ƒ d{  –—†  | j                  €.| j                  �"| j                  j                  «       ƒ d{  –—†  | j                   |   j                  |   }|€i }t        |j                  «       «      }|��3| j                  ��&t        | j                  «      }g }| j                  r‚|j                  «       D ]n  \  }}||vr|j                  t        |d¬«      «       Œ'|j                  sŒ4| j                  j                  d|› d�«       |j                  t        |d¬«      «       Œp n�|j                  «       D ]n  \  }}||v r|j                  t        |d¬«      «       Œ'|j                  sŒ4| j                  j                  d|› d�«       |j                  t        |d¬«      «       Œp || j                   |   j                  fS 7 �ŒÉ7 �Œ’­w)aL  List extensions for a given ``query`` search term.

        This will return the extensions installed (if ``query`` is None) or
        available if allowed by the listing settings.

        Args:
            query: [optional] Query search term.

        Returns:
            The extensions
            Last page of results
        NT)r8   zBlocked extension 'z' is installed.FzNot allowed extension ')r¹   rk   Úrefreshrº   r¼   ÚcallbackrW   rs   r»   r(   r*   r   r?   r}   r¾   rm   )	r‚   rÑ   rÒ   rÓ   rk   Ú
extensionsÚlistingr%   Úexts	            r   Úlist_extensionsz ExtensionManager.list_extensionsÊ  sÚ  è ø€ ð ˜×.Ñ.Ñ.°$¸d×>TÑ>TÐUZÑ>[×>aÑ>aÑ2aØ—,‘,˜u d¨HÓ5×5Ð5ð ×ÑÐ'¨D×,?Ñ,?Ð,KØ×%Ñ%×.Ñ.Ó0×0Ð0à×&Ñ& uÑ-×3Ñ3°DÑ9ˆØˆ=ØˆEÜ˜%Ÿ,™,›.Ó)ˆ
ØÑ ×!5Ñ!5Ñ!AÜ˜4×/Ñ/Ó0ˆGØˆJØ×(Ò(Ø!&§¡¦‘I�D˜#Ø 7Ñ*Ø"×)Ñ)¬'°#¸tÔ*DÕEØ×.Ó.ØŸ™×(Ñ(Ð+>¸t¸fÀOÐ)TÔUØ"×)Ñ)¬'°#¸uÔ*EÕFñ "/ð "'§¡¦‘I�D˜#Ø˜w‘Ø"×)Ñ)¬'°#¸tÔ*DÕEØ×.Ó.ØŸ™×(Ñ(Ð+BÀ4À&ÈÐ)XÔYØ"×)Ñ)¬'°#¸uÔ*EÕFð "/ð ˜4×1Ñ1°%Ñ8×BÑBÐBÐBð9 6ùð 1ûs3   ‚A HÁHÁ9HÁ<HÁ=B3HÄ1BHÆ3AHÈHc              ƒ   óš   K  — || j                   v rd| j                   |   j                  |<   | j                  |||«      ƒ d{  –—†  y7 Œ­w)zRefresh the list of extensions.N)r¹   rk   Ú_update_extensions_listrÕ   s       r   rè   zExtensionManager.refreshø  sG   è ø€ à�D×*Ñ*Ñ*Ø8<ˆD×"Ñ" 5Ñ)×/Ñ/°Ñ5Ø×*Ñ*¨5°$¸ÓA×AÒAús   ‚AAÁA	ÁAc              ƒ   ó  K  — g }t         j                  j                  «       }| j                  rÝt	        | j
                  j                  «      �r˜| j                  j                  d| j
                  j                  › �«       | j
                  j                  D ]q  } |j                  |fi | j
                  j                  ¤Žƒ d{  –—† }t        j                  |j                  «      }|j                  |j                  dg «      «       Œs nÛt	        | j
                  j                   «      r¼| j                  j                  d| j
                  j                   › �«       | j
                  j                   D ]q  } |j                  |fi | j
                  j                  ¤Žƒ d{  –—† }t        j                  |j                  «      }|j                  |j                  dg «      «       Œs |D �ci c]  }|d   |“Œ
 c}| _        y7 �Œ=7 Œcc c}w ­w)z-Fetch the listings for the extension manager.z!Fetching blocked extensions from NÚblocked_extensionsz!Fetching allowed extensions from Úallowed_extensionsr%   )r¿   Ú
httpclientÚAsyncHTTPClientr»   r½   r�   r`   r}   r   Úfetchrb   ÚjsonÚloadsÚbodyÚextendÚgetr_   rº   )r‚   ÚrulesÚclientÚblocked_extensions_uriÚrÚjÚallowed_extensions_uris          r   rÂ   z ExtensionManager._fetch_listingsþ  s¥  è ø€ àˆÜ×#Ñ#×3Ñ3Ó5ˆØ×$Ò$Ü�4—<‘<×7Ñ7Õ8Ø—‘—‘Ø7¸¿¹×8\Ñ8\Ð7]Ð^ôð /3¯l©l×.RÔ.RÐ*Ø*˜fŸl™lØ.ñàŸ,™,×?Ñ?ñ÷ �Aô Ÿ
™
 1§6¡6Ó*�AØ—L‘L §¡Ð';¸RÓ!@ÕAñ /Sô �—‘×5Ñ5Ô6Ø�H‰H�M‰MØ3°D·L±L×4XÑ4XÐ3YÐZôð +/¯,©,×*NÔ*NÐ&Ø&˜&Ÿ,™,Ø*ñà—l‘l×;Ñ;ñ÷ �ô —J‘J˜qŸv™vÓ&�Ø—‘˜QŸU™UÐ#7¸Ó<Õ=ð +Oñ 7<Ó<±e°  &¡	¨1¡°eÑ<ˆÕð%ùðúò  =ùs8   ‚CHÃHÃCHÆ HÆ!A
HÇ+HÇ8
HÈHÈHc              ƒ   ód	  K  — | j                   }t        |¬«      }t        |«      }t        ||«       i }|d   j	                  «       D �]œ  \  }}d}|}	|d   j                  |d«      rd}| j                  |«      }
t        d)i d|
“d|	j                  dd	«      “d
|j                  dd	«      “d||d   v“dd“dt        j                  |d   «      “dd“dt        j                  |d   «      “d|“d|j                  di «      “dd“d| j                  |«      “d|j                  di «      j                  d|j                  d«      «      “d|j                  d«      “d|j                  di «      j                  d«      “d|j                  di «      j                  d|j                  d«      «      “Ž}|r.t        || j                  |j                  «      ƒ d{  –—† ¬ «      }|||
<   �ŒŸ |d!   j	                  «       D �]ƒ  \  }}||d"   v rŒd}|d   j                  |d«      rd}n|j                  «       D ]	  }||v sŒd#}Œ | j                  |«      }
t        |
|j                  dd	«      |d   ||d   vdt        j                  |d   «      dt        j                  |d   «      |d$| j                  |«      |j                  di «      j                  d|j                  d«      «      |j                  d«      |j                  di «      j                  d«      |j                  di «      j                  d|j                  d«      «      ¬%«      }|r.t        || j                  |j                  «      ƒ d{  –—† ¬ «      }|||
<   �Œ† |d&   D �]  }| j                  |«      }|€Œ| j                  |«      }
t        |
|j                  dd	«      |j                  d'd	«      dddt        j                  |d   «      t        j                  |d   «      d#d|j                  di «      j                  d|j                  d«      «      |j                  d«      |j                  di «      j                  d«      |j                  di «      j                  d|j                  d«      «      ¬(«      }|||
<   �Œ! |S 7 �ŒÕ7 �Œ>­w)*zßGet the installed extensions.

        Args:
            get_latest_version: Whether to fetch the latest extension version or not.
        Returns:
            The installed extensions as a mapping {name: metadata}
        )r   Úfederated_extensionsrA   r   Nr™   r%   r5   r>   r6   Úurlr<   Údisabledr;   Fr@   rØ   r=   Tr?   r-   r    r7   Úprebuiltr:   rB   rC   rD   ÚbugsrG   Ú
repository)r@   rê   Úshadowed_extsr¾   Úsource)r%   r5   r6   r<   r;   r@   r=   r?   r-   r7   r:   rB   rC   rD   rG   r!   Úhomepage)r%   r5   r6   r=   r<   r;   r@   r?   r-   r7   rB   rC   rD   rG   rP   )r   r   r1   r   r(   rú   Ú_normalize_namer4   r²   rä   Ú_get_companionr   rÏ   r%   rs   Ú_get_scheduled_uninstall_info)r‚   rÏ   r   r   Úbuild_check_inforê   r%   Údatar-   Úpkg_infoÚnormalized_nameÚpkgÚpackagess                r   Ú_get_installed_extensionsz*ExtensionManager._get_installed_extensions  sÄ  è ø€ ð ×&Ñ&ˆÜ¨Ô4ˆÜ,¨[Ó9ÐÜ˜d KÔ0Øˆ
ð Ð5Ñ6×<Ñ<×>‰JˆD�$ØˆFØˆHØ�OÑ$×(Ñ(¨¨tÔ4Ø �à"×2Ñ2°4Ó8ˆOÜ"ò Ù$ðà$ŸL™L¨¸Ô;ðð "ŸX™X e¨RÔ0ðð  T¨*Ñ%5Ñ5ð	ñ
 ðô  0×BÑBÀ4È	Á?ÔSðñ ðô #3×"EÑ"EÀdÈ9ÁoÔ"Vðñ ðð Ÿ™ ¨BÔ/ðñ $ðð ×-Ñ-¨dÔ3ðð —x‘x ¨"Ó-×1Ñ1°&¸$¿(¹(À8Ó:LÔMðð Ÿ™ Ô+ðð !%§¡¨°Ó 4× 8Ñ 8¸Ô ?ðð   $Ÿx™x¨°bÓ9×=Ñ=¸eÀTÇXÁXÈlÓE[Ô\ð!ˆCñ& "Ü˜c¸×8OÑ8OÐPS×PXÑPXÓ8Y×2YÔZ�à*-ˆJ�Ó'ð; ?ð> ˜|Ñ,×2Ñ2×4‰JˆD�$Ø�t˜OÑ,Ñ,ØØˆFà�OÑ$×(Ñ(¨¨tÔ4Ø ‘à 0× 7Ñ 7Ö 9�HØ˜xÒ'Ø!*™ð !:ð #×2Ñ2°4Ó8ˆOÜ"Ø$Ø ŸH™H ]°BÓ7Ø! %™[Ø T¨*Ñ%5Ð5ØÜ/×BÑBÀ4È	Á?ÓSØÜ"2×"EÑ"EÀdÈ9ÁoÓ"VØØ!Ø×-Ñ-¨dÓ3Ø—x‘x ¨"Ó-×1Ñ1°&¸$¿(¹(À8Ó:LÓMØŸ™ Ó+Ø $§¡¨°Ó 4× 8Ñ 8¸Ó ?Ø#Ÿx™x¨°bÓ9×=Ñ=¸eÀTÇXÁXÈlÓE[Ó\ôˆCñ" "Ü˜c¸×8OÑ8OÐPS×PXÑPXÓ8Y×2YÔZ�Ø*-ˆJ�Ó'ðA 5ðD % [Õ1ˆDØ×5Ñ5°dÓ;ˆDØÑØ"&×"6Ñ"6°tÓ"<�Ü&Ø(Ø $§¡¨¸Ó ;Ø!%§¡¨*°bÓ!9Ø#Ø!ØÜ#3×#FÑ#FÀtÈIÁÓ#WÜ&6×&IÑ&IÈ$ÈyÉ/Ó&ZØ$Ø'ØŸ8™8 H¨bÓ1×5Ñ5°f¸d¿h¹hÀxÓ>PÓQØ ŸH™H YÓ/Ø$(§H¡H¨V°RÓ$8×$<Ñ$<¸UÓ$CØ#'§8¡8¨L¸"Ó#=×#AÑ#AÀ%ÈÏÉÐR^ÓI_Ó#`ô�ð  /2�
˜?Ó+ð) 2ð, Ððy 3ZùðF 3Zûs3   ‚GR0ÇR*ÇA$R0È;D4R0Í/R-Í0-R0ÎDR0Ò-R0r  c                 óL   — d }d|d   v rd|d   d   v rd}|S d|d   d   v rd}|S )NÚ	discoveryr˜   ÚserverÚkernelrP   )r‚   r  r:   s      r   r  zExtensionManager._get_companion†  sR   € Øˆ	Ø˜$˜|Ñ,Ñ,Ø˜4 Ñ-¨kÑ:Ñ:Ø$�	ð Ðð ˜T ,Ñ/°Ñ<Ñ<Ø$�	ØÐr   c                 óÊ   — | j                   dz  dz  |z  dz  }|j                  «       r/|j                  «       5 }t        j                  |«      cddd«       S y# 1 sw Y   yxY w)zDGet information about a package that is scheduled for uninstallationÚstagingÚnode_moduleszpackage.jsonN)r·   ÚexistsÚopenrö   r    )r‚   r%   ÚtargetÚfids       r   r  z.ExtensionManager._get_scheduled_uninstall_info�  sR   € à—‘ 	Ñ)¨NÑ:¸TÑAÀNÑRˆØ�=‰=Œ?Ø—‘” #Ü—y‘y “~÷ ‘ð ÷ �ús   ¹AÁA"r%   c                 ó   — |S )z˜Normalize extension name; by default does nothing.

        Args:
            name: Extension name
        Returns:
            Normalized name
        rP   )r‚   r%   s     r   r  z ExtensionManager._normalize_name˜  s	   € ð ˆr   c              ƒ   óN  K  — d}|�| j                  |||«      ƒ d{  –—† \  }}n| j                  «       ƒ d{  –—† }|| j                  v r5|| j                  |   j                  |<   |xs d| j                  |   _        yt        ||i|xs d«      | j                  |<   y7 Œƒ7 Œi­w)zUpdate the list of extensionsNrl   )rÖ   r  r¹   rk   rm   rj   )r‚   rÑ   rÒ   rÓ   rm   rê   s         r   rï   z(ExtensionManager._update_extensions_list¢  s²   è ø€ ð ˆ	ØÐà*.×*<Ñ*<¸UÀDÈ(Ó*S×$SÑ!ˆJ™	ð  $×=Ñ=Ó?×?ˆJà�D×*Ñ*Ñ*Ø8BˆD×"Ñ" 5Ñ)×/Ñ/°Ñ5Ø6?²nÀ1ˆD×"Ñ" 5Ñ)Õ3ä,;¸TÀ:Ð<NÐPYÒP^Ð]^Ó,_ˆD×"Ñ" 5Ò)ð %Tøð @ús    ‚B%�B!žB%¹B#ºA(B%Â#B%r­   rÅ   )Nrl   é   )ry   N)T)"rH   rI   rJ   rK   r   rO   r   r|   rÇ   Úpropertyrf   rË   rL   rÏ   rd   Útupler4   rÖ   rR   r    r!   Ústaticmethodrä   ræ   rW   rí   rè   rÂ   r  r  r  r  rï   r¯   r°   s   @r   r²   r²   ,  s0  ø„ ñð: '+Ø&*Ø)-ñ	(à˜d‘^ð(ð ˜d‘^ð(ð ˜Ñ&ð	(ð
 
õ(ò<'ð ð$Ð2ò $ó ð$ð$°#ð $¸(À3¹-ó $ð$Øð$Ø #ð$Ø/2ð$à	ˆt�CÐ)Ð)Ñ*¨H°S©MÐ9Ñ	:ó$ñ$ sð $°X¸c±]ð $Èló $ð $¨ð $°ó $ð ð
 Cð 
¨Cò 
ó ð
ð&Ð-=ð À#ó ð  KMñ,CØ˜c‘]ð,CØ14ð,CØDGð,Cà	ˆtÐ$Ñ% x°¡}Ð4Ñ	5ó,Cð\B 8¨C¡=ð B¸ð BÀsð BÈtó Bó=ð> "&ñhà	ˆcÐ#Ð#Ñ	$óhðT 4ð ¨H°S©Mó ð°X¸d±^ó ð Cð ¨Có ð KMñ`Ø˜c‘]ð`Ø14ð`ØDGð`à	÷`r   r²   )(rK   rö   rá   Údataclassesr   r   r   r   Úpathlibr   Útypingr   r	   r¿   Ú#jupyterlab_server.translation_utilsr
   Ú	traitletsr   Útraitlets.configr   r   Újupyterlab.commandsr   r   r   r   r   rÞ   r   Úcompiler'   r1   r4   rR   rY   r^   rf   rj   ro   r²   rP   r   r   Ú<module>r.     sY  ðÙ -ó
 Û 	ß 9Ó 9Ý ß "ã Ý :Ý ß >÷õ ð #¨¸Ñ@Ð ò<ð ˆr�z‰zÐGÓHØ�—‘ÐJÓKØˆb�j‰jÐVÓWñ€òñ �$Ô÷-)ð -)ó ð-)ñ` �$Ô÷;ð ;ó ð;ñ  �$Ô÷ð ó ðñ �$ÔôAÐ2ó Aó ðAñ  �$Ô÷'ð 'ó ð'ð ÷	ð 	ó ð	ôtCÐ'ô tCônF`�}õ F`r   