##// END OF EJS Templates
Merge pull request #937 from minrk/readline...
Merge pull request #937 from minrk/readline Add dirty trick for readline import on OSX to more aggressively detect the presence of libedit masquerading as true GNU readline. Also made the libedit warning extremely loud, so people don't miss it. See the original PR page for the gory details; short version: 1. remove lib-dynload from sys.path before trying to import readline the first time 2. after import, restore lib-dynload to its place in sys.path 3. if import failed without lib-dynload, try it one more time, to get the default module

File last commit:

r4792:a677855e
r5211:90b01394 merge
Show More
displayhook.py
73 lines | 2.3 KiB | text/x-python | PythonLexer
Brian Granger
Separating kernel into smaller pieces.
r2754 import __builtin__
MinRK
flush stdout/stderr on displayhook...
r4792 import sys
Thomas Kluyver
Move displayhook for ZMQ shell to zmq.displayhook, and rename to make the difference clearer.
r4067 from base64 import encodestring
Brian Granger
Separating kernel into smaller pieces.
r2754
Thomas Kluyver
Move displayhook for ZMQ shell to zmq.displayhook, and rename to make the difference clearer.
r4067 from IPython.core.displayhook import DisplayHook
from IPython.utils.traitlets import Instance, Dict
from session import extract_header, Session
Brian Granger
Separating kernel into smaller pieces.
r2754
Thomas Kluyver
Move displayhook for ZMQ shell to zmq.displayhook, and rename to make the difference clearer.
r4067 class ZMQDisplayHook(object):
"""A simple displayhook that publishes the object's repr over a ZeroMQ
socket."""
MinRK
propagate iopub to clients
r3602 topic=None
Brian Granger
Separating kernel into smaller pieces.
r2754 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
MinRK
flush stdout/stderr on displayhook...
r4792 sys.stdout.flush()
sys.stderr.flush()
MinRK
all sends/recvs now via Session.send/recv....
r3269 msg = self.session.send(self.pub_socket, u'pyout', {u'data':repr(obj)},
MinRK
propagate iopub to clients
r3602 parent=self.parent_header, ident=self.topic)
Brian Granger
Separating kernel into smaller pieces.
r2754
def set_parent(self, parent):
Thomas Kluyver
Move displayhook for ZMQ shell to zmq.displayhook, and rename to make the difference clearer.
r4067 self.parent_header = extract_header(parent)
Brian E. Granger
Finishing display system work....
r4528 def _encode_binary(format_dict):
pngdata = format_dict.get('image/png')
Thomas Kluyver
Move displayhook for ZMQ shell to zmq.displayhook, and rename to make the difference clearer.
r4067 if pngdata is not None:
Grahame Bowland
Make PNG images in the Qt console work in Python 3.
r4773 format_dict['image/png'] = encodestring(pngdata).decode('ascii')
Brian E. Granger
Finishing display system work....
r4528 jpegdata = format_dict.get('image/jpeg')
if jpegdata is not None:
Grahame Bowland
Make PNG images in the Qt console work in Python 3.
r4773 format_dict['image/jpeg'] = encodestring(jpegdata).decode('ascii')
Brian E. Granger
Finishing display system work....
r4528
Thomas Kluyver
Move displayhook for ZMQ shell to zmq.displayhook, and rename to make the difference clearer.
r4067
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):
Brian E. Granger
Finishing display system work....
r4528 _encode_binary(format_dict)
Thomas Kluyver
Move displayhook for ZMQ shell to zmq.displayhook, and rename to make the difference clearer.
r4067 self.msg['content']['data'] = format_dict
def finish_displayhook(self):
"""Finish up all displayhook activities."""
MinRK
flush stdout/stderr on displayhook...
r4792 sys.stdout.flush()
sys.stderr.flush()
Thomas Kluyver
Move displayhook for ZMQ shell to zmq.displayhook, and rename to make the difference clearer.
r4067 self.session.send(self.pub_socket, self.msg)
self.msg = None
Brian E. Granger
Finishing display system work....
r4528