##// END OF EJS Templates
Merge pull request #1008 from minrk/excepthook...
Merge pull request #1008 from minrk/excepthook Use a much more restrained crash handler by default. Now the excepthook shows a regular traceback, with a brief message about reporting bugs and how to enable to the big crash handler. Our previous, extremely verbose crash handler can still be activated via `%config Application.verbose_crash=True`, so we can debug real crashes or ask users for extra detail easily. Small fixes along the way: * current Application added to configurables list, for use in %config. * email addresses in full crash reports changed to ipython-dev, so they don't go straight to individual users. Should close #695, and ameliorate #833 (doesn't fix the bug, but the message is more sensible).

File last commit:

r2738:95a4f176
r5348:493f6d4b merge
Show More
plugin.py
51 lines | 1.6 KiB | text/x-python | PythonLexer
# encoding: utf-8
"""IPython plugins.
Authors:
* Brian Granger
"""
#-----------------------------------------------------------------------------
# Copyright (C) 2010 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