zerodds (Python)
Python-Bindings für ZeroDDS, die native Rust-DDS-Implementation.
Installation (Dev-Setup)
# Maturin in einem virtualenv
# Build + install in develop mode (rebuild on code change)
Schnellstart
=
=
=
=
=
=
=
Tests
Scope (aktuelle Version)
DomainParticipantFactory,DomainParticipantmitassert_liveliness,ignore_*,contains_entity,get_discovered_*BytesTopic/BytesWriter/BytesReaderfür opaken PayloadShapeTopic/ShapeWriter/ShapeReader+Shape-Dataclass für Cross-Vendor-Interop gegen Cyclone-/Fast-DDS-ShapesDemo- Status-Getter:
publication_matched_status,liveliness_lost_status,subscription_matched_status,sample_lost_status, … GuardCondition+WaitSet- Sync-Primitives:
wait_for_matched_*,wait_for_data - GIL-Release während allen blocking Calls
Roadmap
- IDL→Python-Dataclass-Generator (
@dataclassaus IDL); dann funktionieren beliebigeDdsTypenative aus Python. - ROS2-pytest-Integration + Multi-Process-Live-Tests + sphinx-Docs.
- QoS-Profile aus XML/YAML laden (analog Fast-DDS QoS Profiles Manager).
Architektur
Das Rust-Crate zerodds-py baut als cdylib (zerodds._core). Der
Python-Wrapper python/zerodds/__init__.py re-exportiert und fügt
bei Bedarf pythonischen Zucker hinzu.
Der Rust-Kern ist identisch zum Rust-API — keine Python- spezifische Business-Logik, nur Type-Conversions + GIL-Release. Das hält das Binding dünn und hält die DDS-Semantik auf einer Stelle.