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 astutedds package.