plugin.py
51 lines
| 1.6 KiB
| text/x-python
|
PythonLexer
Brian Granger
|
r2738 | # encoding: utf-8 | ||
"""IPython plugins. | ||||
Authors: | ||||
* Brian Granger | ||||
""" | ||||
#----------------------------------------------------------------------------- | ||||
Matthias BUSSONNIER
|
r5390 | # Copyright (C) 2010-2011 The IPython Development Team | ||
Brian Granger
|
r2738 | # | ||
# 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) | ||||
Bradley M. Froehle
|
r7859 | if name in self.plugins: | ||
Brian Granger
|
r2738 | 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 | ||||