3
À<×e ã @ s4 d dl Zd dlZdgZejjƒ ZG dd„ deƒZdS )é NÚPluginLoaderc sF e Zd ZdddgZdd„ Z‡ fdd„Zdd „ Zd
d„ Zdd
„ Z‡ Z S )r Ú
_namespaceÚ_prefixÚ
_interfacec C s
t ƒ ‚dS )z~
This method has to be implemented in child class and should
set _namespace, _prefix, and _interface member attributes.
N)ÚNotImplementedError)Úself© r ú#/usr/lib/python3.6/plugin_loader.pyÚ_set_loader_parameters s z#PluginLoader._set_loader_parametersc s, t t| ƒjƒ d | _d | _d | _| jƒ d S )N)Úsuperr Ú__init__r r r r
)r )Ú __class__r r r s zPluginLoader.__init__c C s d| j | j|f }| j|ƒS )Nz%s.%s%s)r r Ú
_get_class)r Zplugin_nameÚmodule_namer r r Úload_plugin s zPluginLoader.load_pluginc C sŽ t jd| ƒ t|ƒ}|jdƒ}|jdƒ x t|ƒdkrJt||jdƒƒ}q,W x4|jD ]*}t||ƒ}t|ƒtkrTt || j
ƒrT|S qTW tdƒ‚d S )Nzloading module %sÚ.r zCannot find the plugin class.)ÚlogÚdebugÚ
__import__ÚsplitÚpopÚlenÚgetattrÚ__dict__ÚtypeÚ
issubclassr ÚImportError)r r ÚmoduleÚpathÚnameÚclsr r r r " s
zPluginLoader._get_classc C sŠ t | jƒ}g }xvtj|jjd ƒD ]`}yFtjj|ƒd }|jdƒsDw"| j d| j|f ƒ}||krj|j
|ƒ W q" tk
r€ Y q"X q"W |S )Nr Zplugin_z%s.%s)r r ÚosÚlistdirZpluginsÚ__path__r ÚsplitextÚ
startswithr Úappendr )r Zplugins_packageZplugin_clssr Zplugin_classr r r Úload_all_plugins2 s
zPluginLoader.load_all_plugins)
Ú__name__Ú
__module__Ú__qualname__Ú __slots__r
r r r r' Ú
__classcell__r r )r
r r s
) Z
tuned.logsZtunedr! Ú__all__ZlogsÚgetr Úobjectr r r r r Ú