import pkg_resources from MoinMoin import wikiutil from MoinMoin.config import multiconfig class SetuptoolsPluginLoader(multiconfig.DefaultConfig): # TODO: Docs # TODO: Skip loading if true setuptools_load_plugins = False # TODO: Both are empty? Include all # TODO: Both are non-empty? Error # TODO: Only include? Load only those plugins # TODO: Only exclude? Load all plugins except those ones setuptools_plugins_include = [] setuptools_plugins_exclude = [] # list(p.working_set)[4].get_entry_map().values()[0].values()[1] # .dist.project_name # p.get_distribution("foo") _plugin_types = [ "action", "converter", "events", "filter", "formatter", "macro", "parser", "theme", "userprefs", "xmlrpc"] def __init__(self, siteid): super(SetuptoolsPluginLoader, self).__init__(siteid) for kind in self._plugin_types: wikiutil.wikiPlugins(kind, self) self._load_setuptools_plugins(kind) def _load_setuptools_plugins(self, kind): entry_key = "moin.plugins.{}".format(kind) for point in pkg_resources.iter_entry_points(entry_key): point.load() trimmed_name = ".".join(point.module_name.split(".")[:-1]) self._site_plugin_lists[kind][point.name] = trimmed_name