1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
|
import sys
from IPython.core.displaypub import DisplayPublisher
from IPython.core.displayhook import DisplayHook
class XDisplayPublisher(DisplayPublisher):
def __init__(self, shell=None, *args, **kwargs):
super(XDisplayPublisher, self).__init__(shell, *args, **kwargs)
self.publish_display_data = None
self.clear_output = None
def publish(
self,
data,
metadata=None,
source=None,
*,
transient=None,
update=False,
**kwargs
) -> None:
if self.publish_display_data is not None:
self.publish_display_data(data, metadata, transient, update)
class XDisplayHook(DisplayHook):
def __init__(self, *args, **kwargs):
super(XDisplayHook, self).__init__(*args, **kwargs)
self.publish_execution_result = None
def start_displayhook(self):
self.data = {}
self.metadata = {}
def write_output_prompt(self):
pass
def write_format_data(self, format_dict, md_dict=None):
self.data = format_dict
self.metadata = md_dict
def finish_displayhook(self):
sys.stdout.flush()
sys.stderr.flush()
if self.publish_execution_result is not None:
self.publish_execution_result(self.prompt_count, self.data, self.metadata)
self.data = {}
self.metadata = {}
|