def patch_qt_console():
"""Overwrite the original IPython Qt widget with our own
so we can put a customized banner.
Return the customized application class.
"""
# Traitlets imports
try: # IPython 4.x
from traitlets import Unicode
except ImportError: # IPython < 4.x
from IPython.utils.traitlets import Unicode
# Qt concole imports
try:
from qtconsole import rich_ipython_widget
from qtconsole import qtconsoleapp
except ImportError:
from IPython.qt.console import rich_ipython_widget
from IPython.qt.console import qtconsoleapp
# Patch widget factory
try:
WidgetClass = rich_ipython_widget.RichJupyterWidget
except AttributeError:
WidgetClass = rich_ipython_widget.RichIPythonWidget
# Custom widget class
class ITangoConsole(WidgetClass):
banner = Unicode(config=True)
def _banner_default(self):
config = get_config()
banner = config.ITangoConsole.banner
return banner if isinstance(banner, str) else ''
# Patch widget factory
try:
AppClass = qtconsoleapp.JupyterQtConsoleApp
except AttributeError:
AppClass = qtconsoleapp.IPythonQtConsoleApp
AppClass.widget_factory = ITangoConsole
# Return patched application class
return AppClass
评论列表
文章目录