https://github.com/ipython/comm
Python Comm implementation for the Jupyter kernel protocol
https://github.com/ipython/comm
Last synced: 9 months ago
JSON representation
Python Comm implementation for the Jupyter kernel protocol
- Host: GitHub
- URL: https://github.com/ipython/comm
- Owner: ipython
- License: bsd-3-clause
- Created: 2022-08-01T13:31:48.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2025-03-18T17:11:20.000Z (10 months ago)
- Last Synced: 2025-03-31T17:07:36.242Z (9 months ago)
- Language: Python
- Size: 43.9 KB
- Stars: 10
- Watchers: 8
- Forks: 17
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# 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:
```python
import comm
class MyCustomComm(comm.base_comm.BaseComm):
def publish_msg(self, msg_type, data=None, metadata=None, buffers=None, **keys):
# TODO implement the logic for sending comm messages through the iopub channel
pass
comm.create_comm = MyCustomComm
```
This is typically what ipykernel and JupyterLite's pyolite kernel will do.
### Case 2: Providing your own comm manager creation implementation
```python
import comm
comm.create_comm = custom_create_comm
comm.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:
```python
from comm import create_comm, get_comm_manager
# Create a comm
comm_manager = get_comm_manager()
comm = create_comm()
comm_manager.register_comm(comm)
```