From 9a8bdb911852f39b808bfd8cd8f1f52a6b5ae9c7 2017-11-13 14:05:43 From: Thomas Kluyver Date: 2017-11-13 14:05:43 Subject: [PATCH] Ensure that MimeBundleFormatter always returns a 2-tuple --- diff --git a/IPython/core/formatters.py b/IPython/core/formatters.py index e520b42..f51cce9 100644 --- a/IPython/core/formatters.py +++ b/IPython/core/formatters.py @@ -224,7 +224,7 @@ def catch_format_error(method, self, *args, **kwargs): r = method(self, *args, **kwargs) except NotImplementedError: # don't warn on NotImplementedErrors - return None + return self._check_return(None, args[0]) except Exception: exc_info = sys.exc_info() ip = get_ipython() @@ -232,7 +232,7 @@ def catch_format_error(method, self, *args, **kwargs): ip.showtraceback(exc_info) else: traceback.print_exception(*exc_info) - return None + return self._check_return(None, args[0]) return self._check_return(r, args[0]) diff --git a/IPython/core/tests/test_formatters.py b/IPython/core/tests/test_formatters.py index af51ffe..35edc75 100644 --- a/IPython/core/tests/test_formatters.py +++ b/IPython/core/tests/test_formatters.py @@ -521,3 +521,13 @@ def test_repr_mime_meta(): 'height': 10, } }) + +def test_repr_mime_failure(): + class BadReprMime(object): + def _repr_mimebundle_(self, include=None, exclude=None): + raise RuntimeError + + f = get_ipython().display_formatter + obj = BadReprMime() + d, md = f.format(obj) + nt.assert_in('text/plain', d)