Pre-release
This release is a pre-release and may not be stable for production use.
HEXFELLOW ZENOH UTILITIES
📖 Overview
What is hex_util_zenoh
hex_util_zenoh is a lightweight Python wrapper around Eclipse Zenoh, providing a simple pub/sub communication node API. It is part of the HEXFELLOW ecosystem and offers an intuitive interface for Zenoh-based inter-process and inter-machine communication.
| Module | Primary Purpose | Key Components |
|---|---|---|
| hex_zenoh_node | Simple pub/sub node wrapping Zenoh sessions | HexZenohNode |
What problem it solves
- Simplified Zenoh API: Wraps the Eclipse Zenoh Python bindings behind a minimal, ROS-like node interface (
create_pub,create_sub,pub). - Easy publisher/subscriber management: Automatically tracks and reuses publishers per topic. Subscribers automatically unwrap
ZBytespayloads into plainbytesfor user callbacks. - Thread-aware: Designed to be used safely across threads with clear start/close lifecycle.
Target users
- Robotics engineers who need lightweight, decentralised pub/sub communication.
- Developers using Eclipse Zenoh who want a simpler, more Pythonic API.
- Anyone building distributed systems in the HEXFELLOW ecosystem.
Project structure
hex_util_zenoh/
├── hex_util_zenoh/
│ ├── __init__.py # Public exports (HexZenohNode)
│ └── hex_zenoh_node.py # HexZenohNode class
├── examples/
│ ├── talker.py # TalkerNode example (ROS 2 talker style)
│ └── listener.py # ListenerNode example (ROS 2 listener style)
├── docs/
│ └── api.md # API reference
├── pyproject.toml # Project metadata & build configuration
└── venv.sh # Virtual environment setup script
📦 Installation
Requirements
- Python ≥ 3.8
- OS: Linux (Zenoh runs on all major platforms; tested on Linux)
- Dependencies:
eclipse-zenoh ≥ 1.0.0
Install from PyPI
pip install hex_util_zenoh
Install from Source
We use uv to manage the Python environment. Please install it first.
- Clone and install in editable mode:
git clone https://github.com/hexfellow/hex_util_zenoh.git
cd hex_util_zenoh
./venv.sh
- Activate before using:
source .venv/bin/activate
⚡ Quick Start
from hex_util_zenoh import HexZenohNode
node = HexZenohNode()
node.start()
# Create a publisher and subscriber
node.create_pub("chatter")
def on_message(data: bytes):
print(f"Received: {data.decode()}")
node.create_sub("chatter", on_message)
# Publish a message
node.pub("chatter", b"Hello, Zenoh!")
# Clean up
node.close()
Running the examples
Open two terminals. In the first:
python examples/talker.py
In the second:
python examples/listener.py
📑 Documentation
- API Reference — Detailed documentation of the
HexZenohNodeclass.
📄 License
Apache License 2.0. See LICENSE.
👥 Authors & Maintainers
| Role | Name | |
|---|---|---|
| Author | Dong Zhaorui | joray.dong@hexfellow.com |
| Maintainer | jecjune (Chen Zejun) | zejun.chen@hexfellow.com |
| Maintainer | Dong Zhaorui | joray.dong@hexfellow.com |
🌟 Star History
👥 Contributors
Metadata
Release files for hex-util-zenoh 0.0.1a1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| hex_util_zenoh-0.0.1a1.tar.gz | 9.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| hex_util_zenoh-0.0.1a1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 17.9 kB
Release files / hex_util_zenoh-0.0.1a1.tar.gz
| Download URL | hex_util_zenoh-0.0.1a1.tar.gz |
|---|---|
| Size | 9.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4b41910b26719268c7a86cf3f172987ba0a98f5f7f22c4712fc515c30e736283
|
|
BLAKE2b-256 checksum How to use checksums |
0bc5ac5db648be53f43e27d7d7186f2d95d40144cccd4629e74161d51aba0a5b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.10.12
|
Release files / hex_util_zenoh-0.0.1a1-py3-none-any.whl
| Download URL | hex_util_zenoh-0.0.1a1-py3-none-any.whl |
|---|---|
| Size | 8.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9bfa7d6110d9251cc856544f25ccfb5c946444288408e42786a3a144d67d335c
|
|
BLAKE2b-256 checksum How to use checksums |
2b99c29ab0cd0d3559a78500b04ba3274eabd1b4d4a93d4b811befec9f2a5465
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.10.12
|