# encoding: utf-8 """IPython plugins. Authors: * Brian Granger """ #----------------------------------------------------------------------------- # Copyright (C) 2010-2011 The IPython Development Team # # Distributed under the terms of the BSD License. The full license is in # the file COPYING, distributed as part of this software. #----------------------------------------------------------------------------- #----------------------------------------------------------------------------- # Imports #----------------------------------------------------------------------------- from IPython.config.configurable import Configurable from IPython.utils.traitlets import Dict #----------------------------------------------------------------------------- # Main class #----------------------------------------------------------------------------- class PluginManager(Configurable): """A manager for IPython plugins.""" plugins = Dict({}) def __init__(self, config=None): super(PluginManager, self).__init__(config=config) def register_plugin(self, name, plugin): if not isinstance(plugin, Plugin): raise TypeError('Expected Plugin, got: %r' % plugin) if self.plugins.has_key(name): raise KeyError('Plugin with name already exists: %r' % name) self.plugins[name] = plugin def unregister_plugin(self, name): del self.plugins[name] def get_plugin(self, name, default=None): return self.plugins.get(name, default) class Plugin(Configurable): """Base class for IPython plugins.""" pass