Metadata-Version: 2.4
Name: cyclonedds_idl
Version: 0.2.0
Summary: Pure-Python IDL/CDR layer extracted from CycloneDDS Python
Author: Elian NEPPEL
License-Expression: EPL-2.0 OR BSD-3-Clause
Project-URL: Homepage, https://github.com/2lian/cyclonedds-idl
Project-URL: Source, https://github.com/2lian/cyclonedds-idl
Project-URL: Issues, https://github.com/2lian/cyclonedds-idl/issues
Project-URL: Upstream, https://github.com/eclipse-cyclonedds/cyclonedds-python
Keywords: dds,cdr,idl,cyclonedds,serialization
Classifier: Development Status :: 4 - Beta
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Operating System :: OS Independent
Classifier: Typing :: Typed
Requires-Python: <3.15,>=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Dynamic: license-file

# cyclonedds-idl

| Requirements | Compatibility | Tests Matrix |
|---|:---|:---:|
| [![python](https://img.shields.io/badge/Python-3.10--3.14-%20blue?logo=python&logoColor=white)](./pyproject.toml) <br> [![license](https://img.shields.io/badge/License-EPL--2.0%20%7C%20BSD--3--Clause-gold)](./LICENSE) | [![linux](https://img.shields.io/badge/OS-Linux-black?logo=linux&logoColor=white)](./pixi.toml) <br> [![windows](https://img.shields.io/badge/OS-Windows-black?logo=windows)](./pixi.toml) <br> [![macos](https://img.shields.io/badge/OS-macOS-black?logo=apple)](./pixi.toml) <br> [![xcdr](https://img.shields.io/badge/Codec-XCDR1%20%7C%20XCDR2-blue)](./README.md#notes-on-compatibility) | Python: `3.10`, `3.11`, `3.12`, `3.13`, `3.14` <br> OS: Linux, Windows, macOS <br> [![Tests](https://github.com/2lian/cyclonedds_idl/actions/workflows/tests.yml/badge.svg)](https://github.com/2lian/cyclonedds_idl/actions/workflows/tests.yml) |

`cyclonedds-idl` is a pure-Python extraction of the `cyclonedds.idl` runtime from
[Eclipse Cyclone DDS Python](https://github.com/eclipse-cyclonedds/cyclonedds-python).

This package is for code that needs the Python IDL/CDR layer only, [see the IDL documentation](https://cyclonedds.io/docs/cyclonedds-python/latest/idl.html).
It does **not** ship:
- the DDS runtime bindings
- native extensions
- bundled Cyclone DDS shared libraries
- CLI tools
- DDS-XTypes metadata support

## Install

```bash
pip install cyclonedds_idl
```

## Example

```python
from dataclasses import dataclass
import cyclonedds_idl as idl

@dataclass
class KeyValue(idl.IdlStruct, typename="diagnostic_msgs/msg/KeyValue"):
    key: str
    value: str

msg = KeyValue(key="mode", value="walk")
blob = msg.serialize()
msg2 = KeyValue.deserialize(blob)
assert msg2 == msg
```

## Notes on compatibility

Python `3.10` through `3.14` are supported and tested on Linux, Windows, and
macOS. Python 3.14 uses the same class declarations, constructors, and
serialization API as earlier supported Python versions.

This is **not** a drop-in replacement for the full `cyclonedds` package. The import
path is `cyclonedds_idl`, not `cyclonedds.idl`.

The code is copied from the upstream `cyclonedds.idl` package from
`eclipse-cyclonedds/cyclonedds-python` and preserves the upstream license notices.
