123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- """Cement core plugins module."""
- from ..core import backend, exc, interface, handler
- from ..utils.misc import minimal_logger
- LOG = minimal_logger(__name__)
- def plugin_validator(klass, obj):
- """Validates an handler implementation against the IPlugin interface."""
- members = [
- '_setup',
- 'load_plugin',
- 'load_plugins',
- 'get_loaded_plugins',
- 'get_enabled_plugins',
- 'get_disabled_plugins',
- ]
- interface.validate(IPlugin, obj, members)
- class IPlugin(interface.Interface):
- """
- This class defines the Plugin Handler Interface. Classes that
- implement this handler must provide the methods and attributes defined
- below.
- Implementations do *not* subclass from interfaces.
- Usage:
- .. code-block:: python
- from cement.core import plugin
- class MyPluginHandler(object):
- class Meta:
- interface = plugin.IPlugin
- label = 'my_plugin_handler'
- ...
- """
- # pylint: disable=W0232, C0111, R0903
- class IMeta:
- label = 'plugin'
- validator = plugin_validator
- # Must be provided by the implementation
- Meta = interface.Attribute('Handler meta-data')
- def _setup(app_obj):
- """
- The _setup function is called during application initialization and
- must 'setup' the handler object making it ready for the framework
- or the application to make further calls to it.
- :param app_obj: The application object.
- """
- def load_plugin(plugin_name):
- """
- Load a plugin whose name is 'plugin_name'.
- :param plugin_name: The name of the plugin to load.
- """
- def load_plugins(plugin_list):
- """
- Load all plugins from plugin_list.
- :param plugin_list: A list of plugin names to load.
- """
- def get_loaded_plugins():
- """Returns a list of plugins that have been loaded."""
- def get_enabled_plugins():
- """Returns a list of plugins that are enabled in the config."""
- def get_disabled_plugins():
- """Returns a list of plugins that are disabled in the config."""
- class CementPluginHandler(handler.CementBaseHandler):
- """
- Base class that all Plugin Handlers should sub-class from.
- """
- class Meta:
- """
- Handler meta-data (can be passed as keyword arguments to the parent
- class).
- """
- label = None
- """The string identifier of this handler."""
- interface = IPlugin
- """The interface that this class implements."""
- def __init__(self, *args, **kw):
- super(CementPluginHandler, self).__init__(*args, **kw)
|