[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