a
    Š©lc¥  ã                   @   s$   d dl mZ G dd„ dƒZeƒ ZdS )é    )Úwrapsc                   @   s.   e Zd Zdd„ Zdd„ Zd
dd„Zdd	„ ZdS )Ú_PluginManagerc                 C   s   g | _ i | _i | _d S ©N)Ú_registered_pluginsÚ_cached_base_callbacksÚ_built_functions)Úself© r	   úQ/var/www/html/django/DPS/env/lib/python3.9/site-packages/jedi/plugins/__init__.pyÚ__init__   s    z_PluginManager.__init__c                 G   s   | j  |¡ |  ¡  dS )z<
        Makes it possible to register your plugin.
        N)r   ÚextendÚ_build_functions)r   Úpluginsr	   r	   r
   Úregister
   s    z_PluginManager.registerNc                    s   ‡ ‡fdd„}|S )Nc                    sJ   t | ƒ‡ ‡fdd„ƒ}ˆp| j‰ˆˆjvs.J ‚ˆj‰ | ˆ ˆ< | ˆjˆ< |S )Nc                     s   ˆ ˆ | i |¤ŽS r   r	   )ÚargsÚkwargs©Zbuilt_functionsZpublic_namer	   r
   Úwrapper   s    z;_PluginManager.decorate.<locals>.decorator.<locals>.wrapper)r   Ú__name__r   r   )Úcallbackr   ©Únamer   r   r
   Ú	decorator   s    

z*_PluginManager.decorate.<locals>.decoratorr	   )r   r   r   r	   r   r
   Údecorate   s    z_PluginManager.decoratec              
   C   s\   | j  ¡ D ]L\}}t| jƒD ].}zt||ƒ}W n ty@   Y q0 ||ƒ}q|| j|< q
d S r   )r   ÚitemsÚreversedr   ÚgetattrÚAttributeErrorr   )r   r   r   ÚpluginÚfuncr	   r	   r
   r   "   s    
z_PluginManager._build_functions)N)r   Ú
__module__Ú__qualname__r   r   r   r   r	   r	   r	   r
   r      s   
r   N)Ú	functoolsr   r   Zplugin_managerr	   r	   r	   r
   Ú<module>   s   +