Metadata-Version: 2.4
Name: eclipse-ecal
Version: 6.1.0
Summary: High performance publish/subscribe middleware
Project-URL: Documentation, https://eclipse-ecal.github.io/ecal
Project-URL: Source, https://github.com/eclipse-ecal/ecal
Author-email: Eclipse eCAL Team <ecal-dev@eclipse.org>
License-Expression: Apache-2.0
License-File: LICENSE.txt
License-File: LICENSES/LICENSES_python_bindings/HDF5/COPYING
License-File: LICENSES/LICENSES_python_bindings/HDF5/COPYING_LBNL_HDF5
License-File: LICENSES/LICENSES_python_bindings/PcapPlusPlus/LICENSE
License-File: LICENSES/LICENSES_python_bindings/PcapPlusPlus/thirdparty/EndianPortable_license.txt
License-File: LICENSES/LICENSES_python_bindings/PcapPlusPlus/thirdparty/Getopt-for-Visual-Studio_license.txt
License-File: LICENSES/LICENSES_python_bindings/PcapPlusPlus/thirdparty/LightPcapNg_LICENSE.txt
License-File: LICENSES/LICENSES_python_bindings/PcapPlusPlus/thirdparty/MemPlumber_LICENSE.txt
License-File: LICENSES/LICENSES_python_bindings/PcapPlusPlus/thirdparty/hash-library_LICENSE
License-File: LICENSES/LICENSES_python_bindings/PcapPlusPlus/thirdparty/json_license.txt
License-File: LICENSES/LICENSES_python_bindings/Udpcap/LICENSE
License-File: LICENSES/LICENSES_python_bindings/asio/COPYING
License-File: LICENSES/LICENSES_python_bindings/asio/LICENSE_1_0.txt
License-File: LICENSES/LICENSES_python_bindings/eCAL/LICENSE.txt
License-File: LICENSES/LICENSES_python_bindings/ecaludp/LICENSE
License-File: LICENSES/LICENSES_python_bindings/nanobind/LICENSE
License-File: LICENSES/LICENSES_python_bindings/protobuf/LICENSE
License-File: LICENSES/LICENSES_python_bindings/protozero/LICENSE.md
License-File: LICENSES/LICENSES_python_bindings/protozero/thirdparty/LICENSE.from_folly
License-File: LICENSES/LICENSES_python_bindings/recycle/LICENSE.rst
License-File: LICENSES/LICENSES_python_bindings/robin_map/LICENSE
License-File: LICENSES/LICENSES_python_bindings/spdlog/LICENSE
License-File: LICENSES/LICENSES_python_bindings/tcp_pubsub/LICENSE
License-File: LICENSES/LICENSES_python_bindings/yaml_cpp/LICENSE
License-File: NOTICE.md
Keywords: IPC,Middleware
Classifier: Topic :: Scientific/Engineering
Requires-Python: >=3.8
Requires-Dist: packaging
Requires-Dist: protobuf<7,>3.8
Description-Content-Type: text/markdown

# eCAL Python Binding

The Python binding for [eCAL (enhanced Communication Abstraction Layer)](https://github.com/eclipse-ecal/ecal) enables easy use of eCAL features in Python projects. It allows you to build distributed applications and cross-platform inter-process communication.

Find a full getting-started guide at http://ecal.io

## Installation

```bash
pip install eclipse-ecal
```

## Quick Example

Send and receive messages with eCAL in Python:

### Publisher

```python
import ecal.nanobind_core as ecal_core
from ecal.msg.string.core import Publisher as StringPublisher

import time

ecal_core.initialize("HelloWorldPublisher")
publisher = StringPublisher("hello_topic")

for i in range(20):
    message = f"Hello World {i}"
    print(f"Sending: {message}")
    publisher.send(message)
    time.sleep(1)

print("Finished. Shutting down eCAL...")
ecal_core.finalize()
```

### Subscriber

```python
import ecal.nanobind_core as ecal_core
from ecal.msg.string.core import Subscriber as StringSubscriber

def callback(publisher_id, data):
    print(f"Received: {data.message}")

ecal_core.initialize("HelloWorldSubscriber")

print("Waiting for data. Press Enter to exit!")
subscriber = StringSubscriber("hello_topic")
subscriber.set_receive_callback(callback)

input()

subscriber.remove_receive_callback()
ecal_core.finalize()
```

## Further Information

- [eCAL Documentation](http://ecal.io)
- [GitHub Repository](https://github.com/eclipse-ecal/ecal)
