From 28075e5c0f717ab4e8e840ef6ce3c1867364ad03 2015-03-04 23:32:03 From: Thomas Kluyver Date: 2015-03-04 23:32:03 Subject: [PATCH] Merge pull request #7743 from quantopian/gotta-not-catch-em-all DEV: Add toggles for reraising failures during extension loading --- diff --git a/IPython/core/shellapp.py b/IPython/core/shellapp.py index 7b07666..adb9b40 100644 --- a/IPython/core/shellapp.py +++ b/IPython/core/shellapp.py @@ -139,7 +139,13 @@ class InteractiveShellApp(Configurable): extra_extension = Unicode('', config=True, help="dotted module name of an IPython extension to load." ) - + + reraise_ipython_extension_failures = Bool( + False, + config=True, + help="Reraise exceptions encountered loading IPython extensions?", + ) + # Extensions that are always loaded (not configurable) default_extensions = List(Unicode, [u'storemagic'], config=False) @@ -259,6 +265,8 @@ class InteractiveShellApp(Configurable): self.log.info("Loading IPython extension: %s" % ext) self.shell.extension_manager.load_extension(ext) except: + if self.reraise_ipython_extension_failures: + raise msg = ("Error in loading extension: {ext}\n" "Check your config files in {location}".format( ext=ext, @@ -266,6 +274,8 @@ class InteractiveShellApp(Configurable): )) self.log.warn(msg, exc_info=True) except: + if self.reraise_ipython_extension_failures: + raise self.log.warn("Unknown error in loading extensions:", exc_info=True) def init_code(self): diff --git a/IPython/html/notebookapp.py b/IPython/html/notebookapp.py index eca47c4..16708c0 100644 --- a/IPython/html/notebookapp.py +++ b/IPython/html/notebookapp.py @@ -751,6 +751,12 @@ class NotebookApp(BaseIPythonApplication): "This is an experimental API, and may change in future releases.") ) + reraise_server_extension_failures = Bool( + False, + config=True, + help="Reraise exceptions encountered loading server extensions?", + ) + def parse_command_line(self, argv=None): super(NotebookApp, self).parse_command_line(argv) @@ -984,6 +990,8 @@ class NotebookApp(BaseIPythonApplication): if func is not None: func(self) except Exception: + if self.reraise_server_extension_failures: + raise self.log.warn("Error loading server extension %s", modulename, exc_info=True)