Metadata-Version: 2.4
Name: cyclonedds_idl
Version: 0.1.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: Operating System :: OS Independent
Classifier: Typing :: Typed
Requires-Python: <3.14,>=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Dynamic: license-file

# cyclonedds-idl

`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

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.
