def omenus_from_package(package): try: package = discovery.asmodule(package) except ImportError: return for path in package.__path__: for _, mod_name, ispkg in pkgutil.iter_modules([path]): if ispkg: continue name = package.__name__ + "." + mod_name try: menu_module = discovery.asmodule(name) except ImportError: log.error("Error importing '%s'", name, exc_info=True) return for name, menu_class in inspect.getmembers(menu_module): if inspect.isclass(menu_class) and \ issubclass(menu_class, OMenu) and not name == "OMenu": try: yield menu_class() except Exception: log.error("Error creating menu instance from '%s'", menu_class, exc_info=True)
def widget_description(self, module, widget_name=None, category_name=None, distribution=None): """ Return widget description from a module. """ module = discovery.asmodule(module) desc = widget_desc_from_module(module) if widget_name is not None: desc.name = widget_name if category_name is not None: desc.category = category_name if distribution is not None: desc.project_name = distribution.project_name return desc