##// END OF EJS Templates
Several fixes to autoreload extension for new API....
Several fixes to autoreload extension for new API. I'm still seeing one failure, but this code is quite tricky to test, so this is still in-progress.

File last commit:

r5390:c82649ea
r6947:6c9a5759
Show More
plugin.py
51 lines | 1.6 KiB | text/x-python | PythonLexer
Brian Granger
Finishing work on configurables, plugins and extensions.
r2738 # encoding: utf-8
"""IPython plugins.
Authors:
* Brian Granger
"""
#-----------------------------------------------------------------------------
Matthias BUSSONNIER
update copyright to 2011/20xx-2011...
r5390 # Copyright (C) 2010-2011 The IPython Development Team
Brian Granger
Finishing work on configurables, plugins and extensions.
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)
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