def get_all_plugins(self): """Returns a dict with all available plugins The return dictionary contains all available plugins (installed & not installed) with their descriptions & categorized by plugin type. """ type_based_plugins_dict = self.get_installed_plugins() installed_plugins_set = \ set([plugin_name for plugins_of_type in type_based_plugins_dict.values() for plugin_name in plugins_of_type]) for plugin_name in PLUGINS_REGISTRY.keys(): if plugin_name not in installed_plugins_set: plugin_type = PLUGINS_REGISTRY[plugin_name]['type'] plugin_desc = PLUGINS_REGISTRY[plugin_name]['desc'] if plugin_type not in type_based_plugins_dict: type_based_plugins_dict[plugin_type] = {} type_based_plugins_dict[plugin_type][plugin_name] = plugin_desc return type_based_plugins_dict