Python Bindings Overview
AstuteDDS ships first-class Python 3 bindings (built with
pybind11) packaged as the astutedds
module. The bindings expose the full DDS DCPS surface — participants, topics,
publishers/subscribers, data readers/writers, QoS aggregates, listeners,
WaitSets, and conditions — using idiomatic Python.
What you get
astutedds.DomainParticipantFactory— singleton entry point.DomainParticipant,Publisher,Subscriber,Topic,ContentFilteredTopic.DataWriter.write(bytes)/DataReader.take()/DataReader.read()for CDR-encoded payloads.- All QoS aggregates:
DomainParticipantQos,TopicQos,PublisherQos,SubscriberQos,DataWriterQos,DataReaderQos. - All QoS policies (Reliability, Durability, History, Liveliness, Deadline, Ownership, Partition, Presentation, ResourceLimits, Lifespan, DestinationOrder, LatencyBudget, UserData, TopicData, GroupData, EntityFactory, DataRepresentation, TransportPriority, …).
- Status types, sample/instance state constants, status mask constants.
- Listeners (
DataReaderListener,DataWriterListener, …) and WaitSet /ReadCondition/StatusCondition/GuardCondition.
Supported Python versions
CPython 3.10, 3.11, 3.12, 3.13.
Supported platforms
| OS | Architectures |
|---|---|
Linux (manylinux_2_28 — glibc ≥ 2.28, RHEL/Alma 9+, Ubuntu 22.04+) |
x86_64, aarch64 |
| Windows 10/11 | AMD64 |
Wire format note
The current bindings transport CDR-encoded bytes on the DDS wire. Typed
high-level marshalling (driven by the IDL compiler's Python back-end) is on
the roadmap; for now, see the Quick Start and
examples for hand-encoded XCDR1/XCDR2 payloads.
Next steps
- Installation — install via
pip, from source, into a venv, or as a system.deb/.rpm. - Quick Start — your first publisher and subscriber in under 30 lines.
- Examples — Hello World and a multi-channel Sensor demo.
- API Surface — what's exported from the
astuteddspackage.