Skip to content

Repository files navigation

Comm

It provides a way to register a Kernel Comm implementation, as per the Jupyter kernel protocol. It also provides a base Comm implementation and a default CommManager that can be used.

Register a comm implementation in the kernel:

Case 1: Using the default CommManager and the BaseComm implementations

We provide default implementations for usage in IPython:

importcommclassMyCustomComm(comm.base_comm.BaseComm):
defpublish_msg(self, msg_type, data=None, metadata=None, buffers=None, **keys):
# TODO implement the logic for sending comm messages through the iopub channelpasscomm.create_comm=MyCustomComm

This is typically what ipykernel and JupyterLite's pyolite kernel will do.

Case 2: Providing your own comm manager creation implementation

importcommcomm.create_comm=custom_create_commcomm.get_comm_manager=custom_comm_manager_getter

This is typically what xeus-python does (it has its own manager implementation using xeus's C++ messaging logic).

Comm users

Libraries like ipywidgets can then use the comms implementation that has been registered by the kernel:

fromcommimportcreate_comm, get_comm_manager# Create a commcomm_manager=get_comm_manager()
comm=create_comm()
comm_manager.register_comm(comm)

About

Python Comm implementation for the Jupyter kernel protocol

Resources

Security policy

Stars

12 stars

Watchers

6 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages