##// END OF EJS Templates
cleanup connection files on notebook shutdown...
cleanup connection files on notebook shutdown Kernels would not linger, but the KernelManagers are not garbage-collected on shutdown. This means that connection files for kernels still running at notebook shutdown would not be removed. Also disable the unnecessary (and actively unhelpful) SIGINT handler inherited from the original copy/paste from the qt app.

File last commit:

r4792:a677855e
r5799:1e917565
Show More
displayhook.py
73 lines | 2.3 KiB | text/x-python | PythonLexer
import __builtin__
import sys
from base64 import encodestring
from IPython.core.displayhook import DisplayHook
from IPython.utils.traitlets import Instance, Dict
from session import extract_header, Session
class ZMQDisplayHook(object):
"""A simple displayhook that publishes the object's repr over a ZeroMQ
socket."""
topic=None
def __init__(self, session, pub_socket):
self.session = session
self.pub_socket = pub_socket
self.parent_header = {}
def __call__(self, obj):
if obj is None:
return
__builtin__._ = obj
sys.stdout.flush()
sys.stderr.flush()
msg = self.session.send(self.pub_socket, u'pyout', {u'data':repr(obj)},
parent=self.parent_header, ident=self.topic)
def set_parent(self, parent):
self.parent_header = extract_header(parent)
def _encode_binary(format_dict):
pngdata = format_dict.get('image/png')
if pngdata is not None:
format_dict['image/png'] = encodestring(pngdata).decode('ascii')
jpegdata = format_dict.get('image/jpeg')
if jpegdata is not None:
format_dict['image/jpeg'] = encodestring(jpegdata).decode('ascii')
class ZMQShellDisplayHook(DisplayHook):
"""A displayhook subclass that publishes data using ZeroMQ. This is intended
to work with an InteractiveShell instance. It sends a dict of different
representations of the object."""
session = Instance(Session)
pub_socket = Instance('zmq.Socket')
parent_header = Dict({})
def set_parent(self, parent):
"""Set the parent for outbound messages."""
self.parent_header = extract_header(parent)
def start_displayhook(self):
self.msg = self.session.msg(u'pyout', {}, parent=self.parent_header)
def write_output_prompt(self):
"""Write the output prompt."""
if self.do_full_cache:
self.msg['content']['execution_count'] = self.prompt_count
def write_format_data(self, format_dict):
_encode_binary(format_dict)
self.msg['content']['data'] = format_dict
def finish_displayhook(self):
"""Finish up all displayhook activities."""
sys.stdout.flush()
sys.stderr.flush()
self.session.send(self.pub_socket, self.msg)
self.msg = None