def _discover_renderers(self):
infos = OrderedDict()
for ep_mod in iter_entry_points(group='uchroma.plugins', name='renderers'):
obj = ep_mod.load()
if not inspect.ismodule(obj):
self._logger.error("Plugin %s is not a module, skipping", ep_mod)
continue
for ep_cls in iter_entry_points(group='uchroma.plugins', name='renderer'):
obj = ep_cls.load()
if not issubclass(obj, Renderer):
self._logger.error("Plugin %s is not a renderer, skipping", ep_cls)
continue
for obj in Renderer.__subclasses__():
if inspect.isabstract(obj):
continue
if obj.meta.display_name == '_unknown_':
self._logger.error("Renderer %s did not set metadata, skipping",
obj.__name__)
continue
key = '%s.%s' % (obj.__module__, obj.__name__)
infos[key] = RendererInfo(obj.__module__, obj, key,
obj.meta, obj.class_traits())
self._logger.debug("Loaded renderers: %s", ', '.join(infos.keys()))
return infos
评论列表
文章目录