3 À<×eã@s4ddlZddlZdgZejjƒZGdd„deƒZdS)éNÚ PluginLoadercsFeZdZdddgZdd„Z‡fdd„Zdd „Zd d „Zd d „Z‡Z S)rÚ _namespaceÚ_prefixÚ _interfacecCs 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 sz#PluginLoader._set_loader_parameterscs,tt|ƒjƒd|_d|_d|_|jƒdS)N)ÚsuperrÚ__init__rrrr )r)Ú __class__rr r s zPluginLoader.__init__cCsd|j|j|f}|j|ƒS)Nz%s.%s%s)rrÚ _get_class)rZ plugin_nameÚ module_namerrr Ú load_pluginszPluginLoader.load_plugincCsŽtjd|ƒt|ƒ}|jdƒ}|jdƒx t|ƒdkrJt||jdƒƒ}q,Wx4|jD]*}t||ƒ}t|ƒtkrTt ||j ƒrT|SqTWt dƒ‚dS)Nzloading module %sÚ.rzCannot find the plugin class.) ÚlogÚdebugÚ __import__ÚsplitÚpopÚlenÚgetattrÚ__dict__ÚtypeÚ issubclassrÚ ImportError)rrÚmoduleÚpathÚnameÚclsrrr r"s    zPluginLoader._get_classc CsŠt|jƒ}g}xvtj|jjdƒD]`}yFtjj|ƒd}|jdƒsDw"|j d|j|fƒ}||krj|j |ƒWq"t k r€Yq"Xq"W|S)NrZplugin_z%s.%s) rrÚosÚlistdirZpluginsÚ__path__rÚsplitextÚ startswithrÚappendr)rZplugins_packageZ plugin_clssrZ plugin_classrrr Úload_all_plugins2s   zPluginLoader.load_all_plugins) Ú__name__Ú __module__Ú __qualname__Ú __slots__r r rrr'Ú __classcell__rr)r r rs   ) Z tuned.logsZtunedr!Ú__all__ZlogsÚgetrÚobjectrrrrr Ús