[Elisa-commits] [MERGE] Move egg-info directories in elisa-plugins/ so that uninstalled plugins are now

Philippe Normand philippe at fluendo.com
Mon Apr 14 15:49:37 CEST 2008


bb:tweak

plugin_registry.py:

+    def get_component_paths(self, plugin_path_or_module=None):
+        working_set = pkg_resources.working_set
+
+        plugins = []
+        components = []
+        if plugin_path_or_module is None:
+            plugins = [entry_point.module_name for entry_point in
+                        working_set.iter_entry_points('elisa.plugins')]
+        elif inspect.ismodule(plugin_path_or_module):
+            plugins = [plugin_path_or_module.__name__]
+        else:
+            plugins = [plugin_path_or_module]
+    
+        for plugin in plugins:
+            it = pkg_resources.iter_entry_points(plugin)
+            
+            for entry_point in working_set.iter_entry_points(plugin):
+                parts = [entry_point.module_name, entry_point.name]
+                components.append(':'.join(parts))
+
+        return components

no need for "it" variable.


utils/dist.py:

+def find_entry_points(path='.'):
+    entry_points = {}
+    
+    packages = find_packages_internal(path)
+    for package_name in packages:
+        if '.tests' in package_name:
+            continue
+
+        l = entry_points.setdefault('elisa.plugins', [])
+        rel_name = package_name[len('elisa.plugins') + 1:]
+        l.append('%s = %s' % (rel_name, package_name))
+
+        package = __import__(package_name)
+        parts = package_name.split('.')[1:]
+
+        for part in parts:
+            package = getattr(package, part)
+        
+        directory = os.path.split(package.__file__)[0]
+

I think you can use os.path.dirname(package.__file__) no?



Some questions:

- how do we now support system platform chek for the plugins?
- plugins dependencies are declared nowhere
- if dependencies are managed using setuptools, how do we handle the
ones not providing .egg-info metadata?
- have you tested these changes with Python2.4?
- some metadata previously stored in the plugin.conf file has
disappeared. I'm concerned about component descriptions, especially.

I find a bit painful to declare in the setup.py all the modules
available in each plugin as entry points.. Is that really necessary?

example:

+    [elisa.plugins]
+    base = elisa.plugins.base
+    base.playbin_engine = elisa.plugins.base.playbin_engine
+    base.local_media = elisa.plugins.base.local_media
+    base.views = elisa.plugins.base.views
+    base.views.player_view = elisa.plugins.base.views.player_view
+    base.controllers = elisa.plugins.base.controllers
+    base.controllers.player_controller =
elisa.plugins.base.controllers.player_controller
+    base.actions = elisa.plugins.base.actions
+    base.actions.eject_action = elisa.plugins.base.actions.eject_action
+    base.actions.play_action = elisa.plugins.base.actions.play_action
+    base.actions.enqueue_action =
elisa.plugins.base.actions.enqueue_action
+    base.actions.preview_play_action =
elisa.plugins.base.actions.preview_play_action
+    base.messages = elisa.plugins.base.messages
+    base.messages.foreign_application_message =
elisa.plugins.base.messages.foreign_application_message
+    base.messages.device_action_message =
elisa.plugins.base.messages.device_action_message
+    base.messages.player_model_message =
elisa.plugins.base.messages.player_model_message
+    base.messages.internet_location_message =
elisa.plugins.base.messages.internet_location_message
+    base.messages.media_location_message =
elisa.plugins.base.messages.media_location_message
+    base.messages.local_network_location_message =
elisa.plugins.base.messages.local_network_location_message
+    base.themes = elisa.plugins.base.themes
+    base.themes.empty_theme = elisa.plugins.base.themes.empty_theme
+    base.playlists = elisa.plugins.base.playlists
+    base.playlists.default_playlist =
elisa.plugins.base.playlists.default_playlist
+    base.models = elisa.plugins.base.models
+    base.models.elisa_model = elisa.plugins.base.models.elisa_model
+    base.models.menu_node_model =
elisa.plugins.base.models.menu_node_model
+    base.models.list_model = elisa.plugins.base.models.list_model
+    base.models.menu_model = elisa.plugins.base.models.menu_model
+    base.models.player_model = elisa.plugins.base.models.player_model
+    base.input_providers = elisa.plugins.base.input_providers
+    base.input_providers.raw_input =
elisa.plugins.base.input_providers.raw_input
+    base.activities = elisa.plugins.base.activities
+    base.activities.player_activity =
elisa.plugins.base.activities.player_activity
+    base.activities.service_activity =
elisa.plugins.base.activities.service_activity
+    base.activities.menu_activity =
elisa.plugins.base.activities.menu_activity

Each component has already its own entry point group, which is fine. But
the above is overkill, imo.

Philippe

Le vendredi 11 avril 2008 à 18:25 +0200, Alessandro a écrit :
> Hi,
> 
> this branch contains enhancements to the plugin registry.
> As the plugin registry was used pretty much everywhere before I've had
> to touch at lot of files. The changes outside elisa-core/ are mostly
> trivial though.
> Apart from the changes to the plugin registry there are ~6000 lines of
> generated code (mostly egg-info directories) that don't really need to
> be reviewed.
> Please try to review this as it is. If it's too hard to do a review I
> can try to split it in separate merge requests.
> 
> Alessandro



More information about the Elisa-commits mailing list