##// END OF EJS Templates
Make copy of notebook node object to make sure the source doesn't get modified
Make copy of notebook node object to make sure the source doesn't get modified

File last commit:

r9375:4d245182
r11375:410cedc0
Show More
datapub.py
70 lines | 2.3 KiB | text/x-python | PythonLexer
MinRK
add IPython.zmq.datapub
r8107 """Publishing
"""
#-----------------------------------------------------------------------------
# Copyright (C) 2012 The IPython Development Team
#
# Distributed under the terms of the BSD License. The full license is in
# the file COPYING, distributed as part of this software.
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
# Imports
#-----------------------------------------------------------------------------
from IPython.config import Configurable
MinRK
move IPython.inprocess to IPython.kernel.inprocess
r9375 from IPython.kernel.inprocess.socket import SocketABC
MinRK
add IPython.zmq.datapub
r8107 from IPython.utils.jsonutil import json_clean
epatters
Add abstract base class (ABC) for sockets used in kernel.
r8418 from IPython.utils.traitlets import Instance, Dict, CBytes
MinRK
mv IPython.zmq to IPython.kernel.zmq
r9372 from IPython.kernel.zmq.serialize import serialize_object
from IPython.kernel.zmq.session import Session, extract_header
MinRK
add IPython.zmq.datapub
r8107
#-----------------------------------------------------------------------------
# Code
#-----------------------------------------------------------------------------
class ZMQDataPublisher(Configurable):
topic = topic = CBytes(b'datapub')
session = Instance(Session)
epatters
Add abstract base class (ABC) for sockets used in kernel.
r8418 pub_socket = Instance(SocketABC)
MinRK
add IPython.zmq.datapub
r8107 parent_header = Dict({})
def set_parent(self, parent):
"""Set the parent for outbound messages."""
self.parent_header = extract_header(parent)
def publish_data(self, data):
"""publish a data_message on the IOPub channel
Parameters
----------
data : dict
The data to be published. Think of it as a namespace.
"""
session = self.session
buffers = serialize_object(data,
buffer_threshold=session.buffer_threshold,
item_threshold=session.item_threshold,
)
content = json_clean(dict(keys=data.keys()))
session.send(self.pub_socket, 'data_message', content=content,
parent=self.parent_header,
buffers=buffers,
ident=self.topic,
)
def publish_data(data):
"""publish a data_message on the IOPub channel
Parameters
----------
data : dict
The data to be published. Think of it as a namespace.
"""
MinRK
mv IPython.zmq to IPython.kernel.zmq
r9372 from IPython.kernel.zmq.zmqshell import ZMQInteractiveShell
MinRK
add IPython.zmq.datapub
r8107 ZMQInteractiveShell.instance().data_pub.publish_data(data)