diff --git a/IPython/core/display.py b/IPython/core/display.py index e919ada..f1f9ed6 100644 --- a/IPython/core/display.py +++ b/IPython/core/display.py @@ -24,7 +24,6 @@ import struct from IPython.utils.py3compat import (string_types, cast_bytes_py2, cast_unicode, unicode_type) -from IPython.html.widgets import Widget from .displaypub import publish_display_data @@ -111,15 +110,16 @@ def display(*objs, **kwargs): from IPython.core.interactiveshell import InteractiveShell - if isinstance(obj, Widget): - obj._repr_widget_(**kwargs) - else: - if raw: - for obj in objs: - publish_display_data('display', obj, metadata) + if not raw: + format = InteractiveShell.instance().display_formatter.format + + for obj in objs: + if hasattr(obj, '_repr_widget_'): + obj._repr_widget_(**kwargs) else: - format = InteractiveShell.instance().display_formatter.format - for obj in objs: + if raw: + publish_display_data('display', obj, metadata) + else: format_dict, md_dict = format(obj, include=include, exclude=exclude) if metadata: # kwarg-specified metadata gets precedence diff --git a/IPython/core/displayhook.py b/IPython/core/displayhook.py index 0ecfb3b..f228ffe 100644 --- a/IPython/core/displayhook.py +++ b/IPython/core/displayhook.py @@ -241,13 +241,16 @@ class DisplayHook(Configurable): """ self.check_for_underscore() if result is not None and not self.quiet(): - self.start_displayhook() - self.write_output_prompt() - format_dict, md_dict = self.compute_format_data(result) - self.write_format_data(format_dict, md_dict) - self.update_user_ns(result) - self.log_output(format_dict) - self.finish_displayhook() + if hasattr(result, '_repr_widget_'): + result._repr_widget_() + else: + self.start_displayhook() + self.write_output_prompt() + format_dict, md_dict = self.compute_format_data(result) + self.write_format_data(format_dict, md_dict) + self.update_user_ns(result) + self.log_output(format_dict) + self.finish_displayhook() def flush(self): if not self.do_full_cache: