Package: zenoh-flow-daemon Version: 0.4.0~alpha.2 Architecture: amd64 Maintainer: ADLINK Zenoh team Installed-Size: 113226 Depends: libc6 (>= 2.34) Filename: ./jammy/zenoh-flow-daemon_0.4.0~alpha.2_amd64.deb Size: 17005104 MD5sum: 1a99c60a03a03dfc455d59ac44d22761 SHA1: ab17d7a42c0458b3222e86f076c10ddf87d6c085 SHA256: 7b6eb972875672b72c20f54189f7d2b79dae9b012e8babfe05cb376001ae31f2 Section: utils Priority: optional Homepage: https://github.com/eclipse-zenoh/zenoh-flow Description: Zenoh-Flow: a Zenoh-based data flow programming framework for computations that span from the cloud to the device. Eclipse Zenoh Flow Daemon Vcs-Browser: https://github.com/eclipse-zenoh/zenoh-flow Vcs-Git: https://github.com/eclipse-zenoh/zenoh-flow Package: zenoh-flow-daemon Version: 0.4.0~alpha.2 Architecture: arm64 Maintainer: ADLINK Zenoh team Installed-Size: 116157 Depends: libc6:arm64 (>= 2.35) Filename: ./jammy/zenoh-flow-daemon_0.4.0~alpha.2_arm64.deb Size: 16465064 MD5sum: 7da1d7c9c6e8c5f73f699c5cca614e8f SHA1: 20dbf7b3fc727c99899e633556462960e9b3bb7c SHA256: 1413ffb95fe4faba70553f584e5920c03f2d61b6f5d26ab1dd0c363c7915f053 Section: utils Priority: optional Homepage: https://github.com/eclipse-zenoh/zenoh-flow Description: Zenoh-Flow: a Zenoh-based data flow programming framework for computations that span from the cloud to the device. Eclipse Zenoh Flow Daemon Vcs-Browser: https://github.com/eclipse-zenoh/zenoh-flow Vcs-Git: https://github.com/eclipse-zenoh/zenoh-flow Package: zenoh-flow-daemon Version: 0.4.0~alpha.2 Architecture: amd64 Maintainer: ADLINK Zenoh team Installed-Size: 113235 Depends: libc6 (>= 2.28) Filename: ./focal/zenoh-flow-daemon_0.4.0~alpha.2_amd64.deb Size: 17004812 MD5sum: 8df64856d2d8c03e7fccc93c32617b86 SHA1: 33fac2205f89791128f8877685ff8b8a8e9b796a SHA256: 8a2cc95516f16f74f757580caa058b3819fc57b524115c9eb2e4bcdd7548baa9 Section: utils Priority: optional Homepage: https://github.com/eclipse-zenoh/zenoh-flow Description: Zenoh-Flow: a Zenoh-based data flow programming framework for computations that span from the cloud to the device. Eclipse Zenoh Flow Daemon Vcs-Browser: https://github.com/eclipse-zenoh/zenoh-flow Vcs-Git: https://github.com/eclipse-zenoh/zenoh-flow Package: zenoh-flow-daemon Version: 0.4.0~alpha.2 Architecture: arm64 Maintainer: ADLINK Zenoh team Installed-Size: 116175 Depends: libc6:arm64 (>= 2.31) Filename: ./focal/zenoh-flow-daemon_0.4.0~alpha.2_arm64.deb Size: 16462436 MD5sum: d2b3ac5809ead6951be462dab0d03751 SHA1: 47fa3f67038366cb00185165cec73bc67697ca28 SHA256: e4ba24b2cbdf1108eb070f8614eed66ac407b58b0765cea5d9372cee0982c044 Section: utils Priority: optional Homepage: https://github.com/eclipse-zenoh/zenoh-flow Description: Zenoh-Flow: a Zenoh-based data flow programming framework for computations that span from the cloud to the device. Eclipse Zenoh Flow Daemon Vcs-Browser: https://github.com/eclipse-zenoh/zenoh-flow Vcs-Git: https://github.com/eclipse-zenoh/zenoh-flow Package: zenoh-flow-plugin-python Version: 0.4.0~alpha.2 Architecture: all Maintainer: ZettaScale Zenoh Team Installed-Size: 40 Depends: zenoh-plugin-zenoh-flow (= 0.4.0~alpha.2), zenoh-flow-python-operator-wrapper (= 0.4.0~alpha.2), zenoh-flow-python-sink-wrapper (= 0.4.0~alpha.2), zenoh-flow-python-source-wrapper (= 0.4.0~alpha.2) Filename: ./jammy/zenoh-flow-plugin-python_0.4.0~alpha.2_all.deb Size: 10262 MD5sum: 879bc873bba9d7de7e59e58a1d99b58f SHA1: e2c28009a63eac4704e4e6e4d5a44088b9301016 SHA256: 67ccc305c9556b5fe3ec1f1cfcf9b8cec87b9cbee4e8b8c0b37c0ead8de271b2 Section: libraries Priority: optional Multi-Arch: foreign Homepage: https://github.com/eclipse-zenoh/zenoh-flow Description: Zenoh Flow Python Extension Zenoh Flow provides a Zenoh-based dataflow programming framework for computations that span from the cloud to the device. This meta-package installs the Python extension. Package: zenoh-flow-plugin-python Version: 0.4.0~alpha.2 Architecture: all Maintainer: ZettaScale Zenoh Team Installed-Size: 40 Depends: zenoh-plugin-zenoh-flow (= 0.4.0~alpha.2), zenoh-flow-python-operator-wrapper (= 0.4.0~alpha.2), zenoh-flow-python-sink-wrapper (= 0.4.0~alpha.2), zenoh-flow-python-source-wrapper (= 0.4.0~alpha.2) Filename: ./focal/zenoh-flow-plugin-python_0.4.0~alpha.2_all.deb Size: 10212 MD5sum: 7e1e3ffbf6267378a4d18f6ef7a3def2 SHA1: cd02ffb6ff8b939fb30f632356dee61781fb972f SHA256: 46cb780de6be92257fcf84243b83f86d4e4b2a87cff390c8620ebbd7b7632b0d Section: libraries Priority: optional Multi-Arch: foreign Homepage: https://github.com/eclipse-zenoh/zenoh-flow Description: Zenoh Flow Python Extension Zenoh Flow provides a Zenoh-based dataflow programming framework for computations that span from the cloud to the device. This meta-package installs the Python extension. Package: zenoh-flow-python Version: 0.4.0~alpha.2 Architecture: all Maintainer: ZettaScale Zenoh Team Installed-Size: 40 Depends: zenoh-flow-daemon (= 0.4.0~alpha.2), zenoh-flow-python-operator-wrapper (= 0.4.0~alpha.2), zenoh-flow-python-sink-wrapper (= 0.4.0~alpha.2), zenoh-flow-python-source-wrapper (= 0.4.0~alpha.2) Filename: ./jammy/zenoh-flow-python_0.4.0~alpha.2_all.deb Size: 10236 MD5sum: 80fc40e784aee7e5c963943fa53fa549 SHA1: e6076d0f9f583be34a3cd236b060ed50c1e123e9 SHA256: c5c5ea2fec447794b94b9f4cacfcdbdde0b55fd05bcbc56e69b91990bd347e00 Section: libraries Priority: optional Multi-Arch: foreign Homepage: https://github.com/eclipse-zenoh/zenoh-flow Description: Zenoh Flow Python Extension Zenoh Flow provides a Zenoh-based dataflow programming framework for computations that span from the cloud to the device. This meta-package installs the Python extension. Package: zenoh-flow-python Version: 0.4.0~alpha.2 Architecture: all Maintainer: ZettaScale Zenoh Team Installed-Size: 40 Depends: zenoh-flow-daemon (= 0.4.0~alpha.2), zenoh-flow-python-operator-wrapper (= 0.4.0~alpha.2), zenoh-flow-python-sink-wrapper (= 0.4.0~alpha.2), zenoh-flow-python-source-wrapper (= 0.4.0~alpha.2) Filename: ./focal/zenoh-flow-python_0.4.0~alpha.2_all.deb Size: 10196 MD5sum: c35fa8fef87bcd72e762dae454b803a6 SHA1: 4f1b734d455f284109c6c3d259827117c7d90402 SHA256: 3840c422c8831a7b142d1d6b76c532c5906c75bae688a7811d3f884e7bbb3ca5 Section: libraries Priority: optional Multi-Arch: foreign Homepage: https://github.com/eclipse-zenoh/zenoh-flow Description: Zenoh Flow Python Extension Zenoh Flow provides a Zenoh-based dataflow programming framework for computations that span from the cloud to the device. This meta-package installs the Python extension. Package: zenoh-flow-python-operator-wrapper Version: 0.4.0~alpha.2 Architecture: amd64 Maintainer: zenoh-dev@eclipse.org Installed-Size: 1118 Depends: libpython3.10 (>= 3.10.0), libc6 (>= 2.34) Filename: ./jammy/zenoh-flow-python-operator-wrapper_0.4.0~alpha.2_amd64.deb Size: 387600 MD5sum: 056e2ec5d9a6c7cfdddf216359fb6605 SHA1: cdae8d0482ccc87060f4b0254b1c58dd5e064b3b SHA256: 5b9269b25e88eba3c7fe9cb606e17605ebcbcef096abb5d9e7fafdae8824ffba Section: libraries Priority: optional Homepage: https://github.com/ZettaScaleLabs/zenoh-flow-python Description: Zenoh-Flow Python Operator wrapper [![Discussion](https://img.shields.io/badge/discussion-on%20github-blue)](https://github.com/eclipse-zenoh/roadmap/discussions) [![Discord](https://img.shields.io/badge/chat-on%20discord-blue)](https://discord.gg/vSDSpqnbkm) [![Eclipse CI](https://ci.eclipse.org/zenoh/buildStatus/icon?job=zenoh-flow-python-nightly&subject=Eclipse%20CI)](https://ci.eclipse.org/zenoh/view/Zenoh%20Flow/job/zenoh-flow-python-nightly/) [![CI](https://github.com/eclipse-zenoh/zenoh-flow-python/actions/workflows/ci.yml/badge.svg)](https://github.com/eclipse-zenoh/zenoh-flow-python/actions/workflows/ci.yml) . . . # Python Zenoh Flow API [Zenoh Flow](https://github.com/eclipse-zenoh/zenoh-flow) provides a Zenoh-based dataflow programming framework for computations that span from the cloud to the device. . :warning: **This software is still in alpha status and should _not_ be used in production. Breaking changes are likely to happen and the API is not stable.** . ----------- . ### Requirements . - Rust: see the [installation page](https://www.rust-lang.org/tools/install) - a matching version of libpython. On linux systems, it's typically packaged separately as ``libpython3.x-dev` or `python3.x-dev`. - Python >= 3.7 - pip >= 22 - virtualenv . . . . ### How to build . Create and activate a python virtual environment: . ```bash $ python3 -m virtualenv venv $ source venv/bin/activate ``` . Build the Python Wheel **within** a Python virtual environment. . ```bash $ python3 -m venv venv $ source venv/bin/activate (venv) $ git clone https://github.com/eclipse-zenoh/zenoh-flow-python (venv) $ cd zenoh-flow-python/zenoh-flow-python (venv) $ pip3 install -r requirements-dev.txt (venv) $ maturin build --release ``` . **Deactivate** the venv and install the python bindings. . ```bash (venv) deactivate $ pip3 install ./target/wheels/ ``` . #### Build the wrappers . Build the Python wrappers. . :warning: **Python Wrappers SHOULD NOT be built within a Python virtual environment** . ```bash $ cargo build --release -p zenoh-flow-python-operator-wrapper -p zenoh-flow-python-sink-wrapper -p zenoh-flow-python-source-wrapper ``` . #### Build the docs . Once you have installed the Python binding you can also generate the documentation. ``` $ cd docs $ pip3 install sphinx_rtd_theme sphinx -y $ make html ``` . The docs will be available under `_build/html/index.html`. . . #### Install the Python extension for Zenoh-Flow . In order to install the Python extension, please execute the following steps: - Copy the result of the build into `/var/zenoh-flow/python/`: `sudo cp ./target/release/libzenoh_flow_python* /var/zenoh-flow/python/` - Update the paths in `01-python.zfext` according to your operating system (i.e., replace `.so` with `.dylib` for MacOS). - Copy `01-python.zfext` into `/etc/zenoh-flow/extensions.d`: `sudo cp 01-python.zfext /etc/zenoh-flow/extensions.d/` . . ### Run an example . Please refer to our getting started example: [Zenoh-Flow Getting started](https://github.com/ZettaScaleLabs/zenoh-flow-examples/tree/master/getting-started). Vcs-Browser: https://github.com/ZettaScaleLabs/zenoh-flow-python Vcs-Git: https://github.com/ZettaScaleLabs/zenoh-flow-python Package: zenoh-flow-python-operator-wrapper Version: 0.4.0~alpha.2 Architecture: amd64 Maintainer: zenoh-dev@eclipse.org Installed-Size: 1118 Depends: libc6 (>= 2.28), libpython3.8 (>= 3.8.2) Filename: ./focal/zenoh-flow-python-operator-wrapper_0.4.0~alpha.2_amd64.deb Size: 387492 MD5sum: 3d9cd8508ea5b978743489df9728d397 SHA1: 7ed73d017a4fb0813655ff9a7ac000702fc84a80 SHA256: 6ea565e0ff2163869c725cae159caf0bd5e49e73b5e296e5f8b4684d5ea2149e Section: libraries Priority: optional Homepage: https://github.com/ZettaScaleLabs/zenoh-flow-python Description: Zenoh-Flow Python Operator wrapper [![Discussion](https://img.shields.io/badge/discussion-on%20github-blue)](https://github.com/eclipse-zenoh/roadmap/discussions) [![Discord](https://img.shields.io/badge/chat-on%20discord-blue)](https://discord.gg/vSDSpqnbkm) [![Eclipse CI](https://ci.eclipse.org/zenoh/buildStatus/icon?job=zenoh-flow-python-nightly&subject=Eclipse%20CI)](https://ci.eclipse.org/zenoh/view/Zenoh%20Flow/job/zenoh-flow-python-nightly/) [![CI](https://github.com/eclipse-zenoh/zenoh-flow-python/actions/workflows/ci.yml/badge.svg)](https://github.com/eclipse-zenoh/zenoh-flow-python/actions/workflows/ci.yml) . . . # Python Zenoh Flow API [Zenoh Flow](https://github.com/eclipse-zenoh/zenoh-flow) provides a Zenoh-based dataflow programming framework for computations that span from the cloud to the device. . :warning: **This software is still in alpha status and should _not_ be used in production. Breaking changes are likely to happen and the API is not stable.** . ----------- . ### Requirements . - Rust: see the [installation page](https://www.rust-lang.org/tools/install) - a matching version of libpython. On linux systems, it's typically packaged separately as ``libpython3.x-dev` or `python3.x-dev`. - Python >= 3.7 - pip >= 22 - virtualenv . . . . ### How to build . Create and activate a python virtual environment: . ```bash $ python3 -m virtualenv venv $ source venv/bin/activate ``` . Build the Python Wheel **within** a Python virtual environment. . ```bash $ python3 -m venv venv $ source venv/bin/activate (venv) $ git clone https://github.com/eclipse-zenoh/zenoh-flow-python (venv) $ cd zenoh-flow-python/zenoh-flow-python (venv) $ pip3 install -r requirements-dev.txt (venv) $ maturin build --release ``` . **Deactivate** the venv and install the python bindings. . ```bash (venv) deactivate $ pip3 install ./target/wheels/ ``` . #### Build the wrappers . Build the Python wrappers. . :warning: **Python Wrappers SHOULD NOT be built within a Python virtual environment** . ```bash $ cargo build --release -p zenoh-flow-python-operator-wrapper -p zenoh-flow-python-sink-wrapper -p zenoh-flow-python-source-wrapper ``` . #### Build the docs . Once you have installed the Python binding you can also generate the documentation. ``` $ cd docs $ pip3 install sphinx_rtd_theme sphinx -y $ make html ``` . The docs will be available under `_build/html/index.html`. . . #### Install the Python extension for Zenoh-Flow . In order to install the Python extension, please execute the following steps: - Copy the result of the build into `/var/zenoh-flow/python/`: `sudo cp ./target/release/libzenoh_flow_python* /var/zenoh-flow/python/` - Update the paths in `01-python.zfext` according to your operating system (i.e., replace `.so` with `.dylib` for MacOS). - Copy `01-python.zfext` into `/etc/zenoh-flow/extensions.d`: `sudo cp 01-python.zfext /etc/zenoh-flow/extensions.d/` . . ### Run an example . Please refer to our getting started example: [Zenoh-Flow Getting started](https://github.com/ZettaScaleLabs/zenoh-flow-examples/tree/master/getting-started). Vcs-Browser: https://github.com/ZettaScaleLabs/zenoh-flow-python Vcs-Git: https://github.com/ZettaScaleLabs/zenoh-flow-python Package: zenoh-flow-python-sink-wrapper Version: 0.4.0~alpha.2 Architecture: amd64 Maintainer: zenoh-dev@eclipse.org Installed-Size: 1078 Depends: libc6 (>= 2.34), libpython3.10 (>= 3.10.0) Filename: ./jammy/zenoh-flow-python-sink-wrapper_0.4.0~alpha.2_amd64.deb Size: 373788 MD5sum: db9ed943aa9a44def2b71a9547321e94 SHA1: 0338ec9a436317f17943a846d00d36df58f68e6c SHA256: 3e7632cbb896d1830685f8d92689130b4abbc7db5363b89c91780aa634bf073e Section: libraries Priority: optional Homepage: https://github.com/ZettaScaleLabs/zenoh-flow-python Description: Zenoh-Flow Python Sink wrapper [![Discussion](https://img.shields.io/badge/discussion-on%20github-blue)](https://github.com/eclipse-zenoh/roadmap/discussions) [![Discord](https://img.shields.io/badge/chat-on%20discord-blue)](https://discord.gg/vSDSpqnbkm) [![Eclipse CI](https://ci.eclipse.org/zenoh/buildStatus/icon?job=zenoh-flow-python-nightly&subject=Eclipse%20CI)](https://ci.eclipse.org/zenoh/view/Zenoh%20Flow/job/zenoh-flow-python-nightly/) [![CI](https://github.com/eclipse-zenoh/zenoh-flow-python/actions/workflows/ci.yml/badge.svg)](https://github.com/eclipse-zenoh/zenoh-flow-python/actions/workflows/ci.yml) . . . # Python Zenoh Flow API [Zenoh Flow](https://github.com/eclipse-zenoh/zenoh-flow) provides a Zenoh-based dataflow programming framework for computations that span from the cloud to the device. . :warning: **This software is still in alpha status and should _not_ be used in production. Breaking changes are likely to happen and the API is not stable.** . ----------- . ### Requirements . - Rust: see the [installation page](https://www.rust-lang.org/tools/install) - a matching version of libpython. On linux systems, it's typically packaged separately as ``libpython3.x-dev` or `python3.x-dev`. - Python >= 3.7 - pip >= 22 - virtualenv . . . . ### How to build . Create and activate a python virtual environment: . ```bash $ python3 -m virtualenv venv $ source venv/bin/activate ``` . Build the Python Wheel **within** a Python virtual environment. . ```bash $ python3 -m venv venv $ source venv/bin/activate (venv) $ git clone https://github.com/eclipse-zenoh/zenoh-flow-python (venv) $ cd zenoh-flow-python/zenoh-flow-python (venv) $ pip3 install -r requirements-dev.txt (venv) $ maturin build --release ``` . **Deactivate** the venv and install the python bindings. . ```bash (venv) deactivate $ pip3 install ./target/wheels/ ``` . #### Build the wrappers . Build the Python wrappers. . :warning: **Python Wrappers SHOULD NOT be built within a Python virtual environment** . ```bash $ cargo build --release -p zenoh-flow-python-operator-wrapper -p zenoh-flow-python-sink-wrapper -p zenoh-flow-python-source-wrapper ``` . #### Build the docs . Once you have installed the Python binding you can also generate the documentation. ``` $ cd docs $ pip3 install sphinx_rtd_theme sphinx -y $ make html ``` . The docs will be available under `_build/html/index.html`. . . #### Install the Python extension for Zenoh-Flow . In order to install the Python extension, please execute the following steps: - Copy the result of the build into `/var/zenoh-flow/python/`: `sudo cp ./target/release/libzenoh_flow_python* /var/zenoh-flow/python/` - Update the paths in `01-python.zfext` according to your operating system (i.e., replace `.so` with `.dylib` for MacOS). - Copy `01-python.zfext` into `/etc/zenoh-flow/extensions.d`: `sudo cp 01-python.zfext /etc/zenoh-flow/extensions.d/` . . ### Run an example . Please refer to our getting started example: [Zenoh-Flow Getting started](https://github.com/ZettaScaleLabs/zenoh-flow-examples/tree/master/getting-started). Vcs-Browser: https://github.com/ZettaScaleLabs/zenoh-flow-python Vcs-Git: https://github.com/ZettaScaleLabs/zenoh-flow-python Package: zenoh-flow-python-sink-wrapper Version: 0.4.0~alpha.2 Architecture: amd64 Maintainer: zenoh-dev@eclipse.org Installed-Size: 1078 Depends: libc6 (>= 2.28), libpython3.8 (>= 3.8.2) Filename: ./focal/zenoh-flow-python-sink-wrapper_0.4.0~alpha.2_amd64.deb Size: 373624 MD5sum: 9d7ec7e46350c41053f84c501b12a9f6 SHA1: c9b5993e0ecfc3cbdb2a6dc760db20c40b3a0056 SHA256: 19017270d4b1c80e8674cf8d8813c1c541eb341dce3fe3f1fdbecb881a5b1f80 Section: libraries Priority: optional Homepage: https://github.com/ZettaScaleLabs/zenoh-flow-python Description: Zenoh-Flow Python Sink wrapper [![Discussion](https://img.shields.io/badge/discussion-on%20github-blue)](https://github.com/eclipse-zenoh/roadmap/discussions) [![Discord](https://img.shields.io/badge/chat-on%20discord-blue)](https://discord.gg/vSDSpqnbkm) [![Eclipse CI](https://ci.eclipse.org/zenoh/buildStatus/icon?job=zenoh-flow-python-nightly&subject=Eclipse%20CI)](https://ci.eclipse.org/zenoh/view/Zenoh%20Flow/job/zenoh-flow-python-nightly/) [![CI](https://github.com/eclipse-zenoh/zenoh-flow-python/actions/workflows/ci.yml/badge.svg)](https://github.com/eclipse-zenoh/zenoh-flow-python/actions/workflows/ci.yml) . . . # Python Zenoh Flow API [Zenoh Flow](https://github.com/eclipse-zenoh/zenoh-flow) provides a Zenoh-based dataflow programming framework for computations that span from the cloud to the device. . :warning: **This software is still in alpha status and should _not_ be used in production. Breaking changes are likely to happen and the API is not stable.** . ----------- . ### Requirements . - Rust: see the [installation page](https://www.rust-lang.org/tools/install) - a matching version of libpython. On linux systems, it's typically packaged separately as ``libpython3.x-dev` or `python3.x-dev`. - Python >= 3.7 - pip >= 22 - virtualenv . . . . ### How to build . Create and activate a python virtual environment: . ```bash $ python3 -m virtualenv venv $ source venv/bin/activate ``` . Build the Python Wheel **within** a Python virtual environment. . ```bash $ python3 -m venv venv $ source venv/bin/activate (venv) $ git clone https://github.com/eclipse-zenoh/zenoh-flow-python (venv) $ cd zenoh-flow-python/zenoh-flow-python (venv) $ pip3 install -r requirements-dev.txt (venv) $ maturin build --release ``` . **Deactivate** the venv and install the python bindings. . ```bash (venv) deactivate $ pip3 install ./target/wheels/ ``` . #### Build the wrappers . Build the Python wrappers. . :warning: **Python Wrappers SHOULD NOT be built within a Python virtual environment** . ```bash $ cargo build --release -p zenoh-flow-python-operator-wrapper -p zenoh-flow-python-sink-wrapper -p zenoh-flow-python-source-wrapper ``` . #### Build the docs . Once you have installed the Python binding you can also generate the documentation. ``` $ cd docs $ pip3 install sphinx_rtd_theme sphinx -y $ make html ``` . The docs will be available under `_build/html/index.html`. . . #### Install the Python extension for Zenoh-Flow . In order to install the Python extension, please execute the following steps: - Copy the result of the build into `/var/zenoh-flow/python/`: `sudo cp ./target/release/libzenoh_flow_python* /var/zenoh-flow/python/` - Update the paths in `01-python.zfext` according to your operating system (i.e., replace `.so` with `.dylib` for MacOS). - Copy `01-python.zfext` into `/etc/zenoh-flow/extensions.d`: `sudo cp 01-python.zfext /etc/zenoh-flow/extensions.d/` . . ### Run an example . Please refer to our getting started example: [Zenoh-Flow Getting started](https://github.com/ZettaScaleLabs/zenoh-flow-examples/tree/master/getting-started). Vcs-Browser: https://github.com/ZettaScaleLabs/zenoh-flow-python Vcs-Git: https://github.com/ZettaScaleLabs/zenoh-flow-python Package: zenoh-flow-python-source-wrapper Version: 0.4.0~alpha.2 Architecture: amd64 Maintainer: zenoh-dev@eclipse.org Installed-Size: 1078 Depends: libpython3.10 (>= 3.10.0), libc6 (>= 2.34) Filename: ./jammy/zenoh-flow-python-source-wrapper_0.4.0~alpha.2_amd64.deb Size: 375444 MD5sum: c357a2e29be68be39903cc252082f4dc SHA1: 1c666fd2c2ebc4721ad803c2c7c01f6b6cf0c179 SHA256: d7ac00bc84117b9c430dd6bd271e68a0eb660250e5580c18ffe408d0f5d802ab Section: libraries Priority: optional Homepage: https://github.com/ZettaScaleLabs/zenoh-flow-python Description: Zenoh-Flow Python Source wrapper [![Discussion](https://img.shields.io/badge/discussion-on%20github-blue)](https://github.com/eclipse-zenoh/roadmap/discussions) [![Discord](https://img.shields.io/badge/chat-on%20discord-blue)](https://discord.gg/vSDSpqnbkm) [![Eclipse CI](https://ci.eclipse.org/zenoh/buildStatus/icon?job=zenoh-flow-python-nightly&subject=Eclipse%20CI)](https://ci.eclipse.org/zenoh/view/Zenoh%20Flow/job/zenoh-flow-python-nightly/) [![CI](https://github.com/eclipse-zenoh/zenoh-flow-python/actions/workflows/ci.yml/badge.svg)](https://github.com/eclipse-zenoh/zenoh-flow-python/actions/workflows/ci.yml) . . . # Python Zenoh Flow API [Zenoh Flow](https://github.com/eclipse-zenoh/zenoh-flow) provides a Zenoh-based dataflow programming framework for computations that span from the cloud to the device. . :warning: **This software is still in alpha status and should _not_ be used in production. Breaking changes are likely to happen and the API is not stable.** . ----------- . ### Requirements . - Rust: see the [installation page](https://www.rust-lang.org/tools/install) - a matching version of libpython. On linux systems, it's typically packaged separately as ``libpython3.x-dev` or `python3.x-dev`. - Python >= 3.7 - pip >= 22 - virtualenv . . . . ### How to build . Create and activate a python virtual environment: . ```bash $ python3 -m virtualenv venv $ source venv/bin/activate ``` . Build the Python Wheel **within** a Python virtual environment. . ```bash $ python3 -m venv venv $ source venv/bin/activate (venv) $ git clone https://github.com/eclipse-zenoh/zenoh-flow-python (venv) $ cd zenoh-flow-python/zenoh-flow-python (venv) $ pip3 install -r requirements-dev.txt (venv) $ maturin build --release ``` . **Deactivate** the venv and install the python bindings. . ```bash (venv) deactivate $ pip3 install ./target/wheels/ ``` . #### Build the wrappers . Build the Python wrappers. . :warning: **Python Wrappers SHOULD NOT be built within a Python virtual environment** . ```bash $ cargo build --release -p zenoh-flow-python-operator-wrapper -p zenoh-flow-python-sink-wrapper -p zenoh-flow-python-source-wrapper ``` . #### Build the docs . Once you have installed the Python binding you can also generate the documentation. ``` $ cd docs $ pip3 install sphinx_rtd_theme sphinx -y $ make html ``` . The docs will be available under `_build/html/index.html`. . . #### Install the Python extension for Zenoh-Flow . In order to install the Python extension, please execute the following steps: - Copy the result of the build into `/var/zenoh-flow/python/`: `sudo cp ./target/release/libzenoh_flow_python* /var/zenoh-flow/python/` - Update the paths in `01-python.zfext` according to your operating system (i.e., replace `.so` with `.dylib` for MacOS). - Copy `01-python.zfext` into `/etc/zenoh-flow/extensions.d`: `sudo cp 01-python.zfext /etc/zenoh-flow/extensions.d/` . . ### Run an example . Please refer to our getting started example: [Zenoh-Flow Getting started](https://github.com/ZettaScaleLabs/zenoh-flow-examples/tree/master/getting-started). Vcs-Browser: https://github.com/ZettaScaleLabs/zenoh-flow-python Vcs-Git: https://github.com/ZettaScaleLabs/zenoh-flow-python Package: zenoh-flow-python-source-wrapper Version: 0.4.0~alpha.2 Architecture: amd64 Maintainer: zenoh-dev@eclipse.org Installed-Size: 1078 Depends: libc6 (>= 2.28), libpython3.8 (>= 3.8.2) Filename: ./focal/zenoh-flow-python-source-wrapper_0.4.0~alpha.2_amd64.deb Size: 375532 MD5sum: 5b9f1348533e9c8c48648850cde17288 SHA1: a21116298e0fc5659fc0f232cc37d31dce0b94f8 SHA256: 268de9e879cc180238382b3f1541a4329e816a46f112a7efc46adf78257ab207 Section: libraries Priority: optional Homepage: https://github.com/ZettaScaleLabs/zenoh-flow-python Description: Zenoh-Flow Python Source wrapper [![Discussion](https://img.shields.io/badge/discussion-on%20github-blue)](https://github.com/eclipse-zenoh/roadmap/discussions) [![Discord](https://img.shields.io/badge/chat-on%20discord-blue)](https://discord.gg/vSDSpqnbkm) [![Eclipse CI](https://ci.eclipse.org/zenoh/buildStatus/icon?job=zenoh-flow-python-nightly&subject=Eclipse%20CI)](https://ci.eclipse.org/zenoh/view/Zenoh%20Flow/job/zenoh-flow-python-nightly/) [![CI](https://github.com/eclipse-zenoh/zenoh-flow-python/actions/workflows/ci.yml/badge.svg)](https://github.com/eclipse-zenoh/zenoh-flow-python/actions/workflows/ci.yml) . . . # Python Zenoh Flow API [Zenoh Flow](https://github.com/eclipse-zenoh/zenoh-flow) provides a Zenoh-based dataflow programming framework for computations that span from the cloud to the device. . :warning: **This software is still in alpha status and should _not_ be used in production. Breaking changes are likely to happen and the API is not stable.** . ----------- . ### Requirements . - Rust: see the [installation page](https://www.rust-lang.org/tools/install) - a matching version of libpython. On linux systems, it's typically packaged separately as ``libpython3.x-dev` or `python3.x-dev`. - Python >= 3.7 - pip >= 22 - virtualenv . . . . ### How to build . Create and activate a python virtual environment: . ```bash $ python3 -m virtualenv venv $ source venv/bin/activate ``` . Build the Python Wheel **within** a Python virtual environment. . ```bash $ python3 -m venv venv $ source venv/bin/activate (venv) $ git clone https://github.com/eclipse-zenoh/zenoh-flow-python (venv) $ cd zenoh-flow-python/zenoh-flow-python (venv) $ pip3 install -r requirements-dev.txt (venv) $ maturin build --release ``` . **Deactivate** the venv and install the python bindings. . ```bash (venv) deactivate $ pip3 install ./target/wheels/ ``` . #### Build the wrappers . Build the Python wrappers. . :warning: **Python Wrappers SHOULD NOT be built within a Python virtual environment** . ```bash $ cargo build --release -p zenoh-flow-python-operator-wrapper -p zenoh-flow-python-sink-wrapper -p zenoh-flow-python-source-wrapper ``` . #### Build the docs . Once you have installed the Python binding you can also generate the documentation. ``` $ cd docs $ pip3 install sphinx_rtd_theme sphinx -y $ make html ``` . The docs will be available under `_build/html/index.html`. . . #### Install the Python extension for Zenoh-Flow . In order to install the Python extension, please execute the following steps: - Copy the result of the build into `/var/zenoh-flow/python/`: `sudo cp ./target/release/libzenoh_flow_python* /var/zenoh-flow/python/` - Update the paths in `01-python.zfext` according to your operating system (i.e., replace `.so` with `.dylib` for MacOS). - Copy `01-python.zfext` into `/etc/zenoh-flow/extensions.d`: `sudo cp 01-python.zfext /etc/zenoh-flow/extensions.d/` . . ### Run an example . Please refer to our getting started example: [Zenoh-Flow Getting started](https://github.com/ZettaScaleLabs/zenoh-flow-examples/tree/master/getting-started). Vcs-Browser: https://github.com/ZettaScaleLabs/zenoh-flow-python Vcs-Git: https://github.com/ZettaScaleLabs/zenoh-flow-python Package: zenoh-plugin-zenoh-flow Version: 0.4.0~alpha.2 Architecture: amd64 Maintainer: zenoh-dev@eclipse.org Installed-Size: 56621 Depends: libc6 (>= 2.34), zenohd (=0.7.0-rc) Filename: ./jammy/zenoh-plugin-zenoh-flow_0.4.0~alpha.2_amd64.deb Size: 8286112 MD5sum: df6475139fed3314e9aac8a9ba9e96e9 SHA1: eba6d219b02b8589172f7049940aba8e451d9ace SHA256: 4c3fbd6b6aec8228373388f5f51d470784bb1bc603fb9f8bf8fb6d97417e2eed Section: net Priority: optional Homepage: https://github.com/eclipse-zenoh/zenoh-flow Description: Zenoh-Flow: a Zenoh-based data flow programming framework for computations that span from the cloud to the device. . . [![Eclipse CI](https://ci.eclipse.org/zenoh/buildStatus/icon?job=zenoh-flow-nightly&subject=Eclipse%20CI)](https://ci.eclipse.org/zenoh/view/Zenoh%20Flow/job/zenoh-flow-nightly/) [![CI](https://github.com/eclipse-zenoh/zenoh-flow/actions/workflows/ci.yml/badge.svg)](https://github.com/eclipse-zenoh/zenoh-flow/actions/workflows/ci.yml) [![Discussion](https://img.shields.io/badge/discussion-on%20github-blue)](https://github.com/eclipse-zenoh/roadmap/discussions) [![Discord](https://img.shields.io/badge/chat-on%20discord-blue)](https://discord.gg/vSDSpqnbkm) . . # Eclipse Zenoh-Flow . Zenoh-Flow is the union of Zenoh and data flow programming: a declarative framework for computations that span from the _Cloud_ to the _Thing_. . :warning: **This software is still in alpha status and should _not_ be used in production. Breaking changes are likely to happen and the API is not yet stable.** :warning: **The documentation is still scarce. Do not hesitate to contact us on Discord.** . ## Description . Zenoh-Flow aims at simplifying and structuring (i) the _declaration_, (ii) the _deployment_ and (iii) the _writing_ of "complex" applications that can span from the Cloud to the Thing (or close to it). . To these ends, Zenoh-Flow leverages the _data flow programming model_ --- where applications are viewed as a directed graph of computing units, and _Zenoh_ --- an Edge-native, data-centric, location transparent, communication middleware. . This makes for a powerful combination as Zenoh offers flexibility and extensibility while data flow programming structures computations. The main benefit of this approach is that this allows us to decorrelate applications from the underlying infrastructure: data are published and subscribed to (_automatically_ with Zenoh-Flow) without the need to know where they are actually located. . . ## Core principles . Zenoh-Flow centers the definition of an application around a **description file**. This file acts as a contract that Zenoh-Flow will enforce. . In it, developers specify the different computation units --- the _nodes_, how they are connected --- the _links_, and how they should be deployed --- the _mapping_. . After validating these specifications, Zenoh-Flow will first create the necessary connections and then load each node. The types of connections created as well as the way nodes are loaded are discussed in more details [here](). The most notable aspect is that Zenoh-Flow optimizes the connections: data will go through the network only if nodes are located on different machines. . . ## Documentation . To build the documentation: . ```bash $ cargo doc ``` . The HTML documentation can then be found under `./target/doc/zenoh_flow/index.html`. . . ## How to use . A working [Cargo and Rust](https://doc.rust-lang.org/cargo/getting-started/installation.html) installation is a pre-requisite. . Then download the repository: . ```bash git clone https://github.com/eclipse-zenoh/zenoh-flow && cd zenoh-flow ``` . We assume in the following that `./` points to the root of this repository. . . ### Start Zenoh . As its name indicates, Zenoh-Flow relies on Zenoh. So you first need to install and start a Zenoh router on your device. . The instructions to install Zenoh are located [here](https://zenoh.io/docs/getting-started/installation/). . Once installed, you need to start a `zenohd` with the configuration we provide: . ```bash zenohd -c ./zenoh-flow-daemon/etc/zenoh-zf-router.json ``` . With this configuration, Zenoh will start storages for specific keys that are used internally by Zenoh-Flow. These keys are notably what allow Zenoh-Flow daemons to discover each other (as long as the routers, to which the daemons are attached, can communicate). . . ### Start Zenoh-Flow . Build Zenoh-Flow in release: . ```bash cd zenoh-flow && cargo build --release ``` . This will produce the following executables under the `target/release` directory: `zenoh-flow-daemon`, `zfctl` and `cargo-zenoh-flow`. . - `zenoh-flow-daemon` is what will take care of starting and stopping nodes, as well as deploying a Zenoh-Flow application. - `zfctl` is what we use to interact (using Zenoh) with all the `zenoh-flow-daemon` discovered. - `cargo-zenoh-flow` is a help tool that produces boilerplate code for Zenoh-Flow nodes. . To launch an application we need to: 1) start a daemon and 2) interact with it through `zfctl`. . A Zenoh-Flow daemon relies on some configurations and variables. For this to work, we need to move few files: . ```bash sudo mkdir -p /etc/zenoh-flow/extensions.d sudo cp ./zenoh-flow-daemon/etc/runtime.yaml /etc/zenoh-flow sudo cp ./zenoh-flow-daemon/etc/zenoh-daemon.json /etc/zenoh-flow ``` . We can then start the daemon: . ```bash ./target/release/zenoh-flow-daemon ``` . Next, `zfctl`. We also need to copy a configuration file: . ```bash mkdir -p ~/.config/zenoh-flow cp ./zfctl/.config/zfctl-zenoh.json /etc/zenoh-flow ``` . To check that the Zenoh-Flow daemon is correctly running and `zfctl` is set up, you can do: . ```bash ./target/release/zfctl list runtimes ``` . This should return a list just like this one: . ``` +--------------------------------------+---------------------------+--------+ | UUID | Name | Status | +--------------------------------------+---------------------------+--------+ | 49936f69-2c87-55f0-9df4-d1fba2fadd38 | Juliens-MacBook-Pro.local | Ready | +--------------------------------------+---------------------------+--------+ ``` . If you see this, you can now launch applications! Assuming your application is described in `app.yaml`, you would launch it via: . ```bash ./target/release/zfctl launch app.yaml > app.uuid ``` . :book: The redirection of the standard output is to "capture" the unique identifier associated to this instance of your application. . And you can stop everything via: . ```bash ./target/release/zfctl destroy "$(cat app.uuid)" ``` . We encourage you to look at the examples available in our [examples repository](https://github.com/ZettaScaleLabs/zenoh-flow-examples) for more! . . ### Get nightly releases . If you are not interested in building Zenoh Flow, and you are running an apt-based system (i.e., Debian or Ubuntu), you can add the nightly APT repository and install Zenoh Flow with your package manager. . ``` echo "deb [trusted=yes] https://download.eclipse.org/zenoh/zenoh-flow/debian-repo/nightly/ /" | sudo tee -a /etc/apt/sources.list.d/zenoh-flow.list > /dev/null sudo apt update sudo apt install zenoh-flow-daemon zfctl ``` . Then you can start the daemon with `zenoh-flow-daemon`. Vcs-Browser: https://github.com/eclipse-zenoh/zenoh-flow Vcs-Git: https://github.com/eclipse-zenoh/zenoh-flow Package: zenoh-plugin-zenoh-flow Version: 0.4.0~alpha.2 Architecture: arm64 Maintainer: zenoh-dev@eclipse.org Installed-Size: 57433 Depends: libc6:arm64 (>= 2.35), zenohd (=0.7.0-rc) Filename: ./jammy/zenoh-plugin-zenoh-flow_0.4.0~alpha.2_arm64.deb Size: 7981504 MD5sum: bd1888d2d4164f146b4c23f7e6419bf9 SHA1: 20d04b13a04283441f61e57b6d2d679aee7dd92b SHA256: 310d5ea54affa9c2fd984469c4b388baf85b169d6e296a37f484e83c0c77a2a8 Section: net Priority: optional Homepage: https://github.com/eclipse-zenoh/zenoh-flow Description: Zenoh-Flow: a Zenoh-based data flow programming framework for computations that span from the cloud to the device. . . [![Eclipse CI](https://ci.eclipse.org/zenoh/buildStatus/icon?job=zenoh-flow-nightly&subject=Eclipse%20CI)](https://ci.eclipse.org/zenoh/view/Zenoh%20Flow/job/zenoh-flow-nightly/) [![CI](https://github.com/eclipse-zenoh/zenoh-flow/actions/workflows/ci.yml/badge.svg)](https://github.com/eclipse-zenoh/zenoh-flow/actions/workflows/ci.yml) [![Discussion](https://img.shields.io/badge/discussion-on%20github-blue)](https://github.com/eclipse-zenoh/roadmap/discussions) [![Discord](https://img.shields.io/badge/chat-on%20discord-blue)](https://discord.gg/vSDSpqnbkm) . . # Eclipse Zenoh-Flow . Zenoh-Flow is the union of Zenoh and data flow programming: a declarative framework for computations that span from the _Cloud_ to the _Thing_. . :warning: **This software is still in alpha status and should _not_ be used in production. Breaking changes are likely to happen and the API is not yet stable.** :warning: **The documentation is still scarce. Do not hesitate to contact us on Discord.** . ## Description . Zenoh-Flow aims at simplifying and structuring (i) the _declaration_, (ii) the _deployment_ and (iii) the _writing_ of "complex" applications that can span from the Cloud to the Thing (or close to it). . To these ends, Zenoh-Flow leverages the _data flow programming model_ --- where applications are viewed as a directed graph of computing units, and _Zenoh_ --- an Edge-native, data-centric, location transparent, communication middleware. . This makes for a powerful combination as Zenoh offers flexibility and extensibility while data flow programming structures computations. The main benefit of this approach is that this allows us to decorrelate applications from the underlying infrastructure: data are published and subscribed to (_automatically_ with Zenoh-Flow) without the need to know where they are actually located. . . ## Core principles . Zenoh-Flow centers the definition of an application around a **description file**. This file acts as a contract that Zenoh-Flow will enforce. . In it, developers specify the different computation units --- the _nodes_, how they are connected --- the _links_, and how they should be deployed --- the _mapping_. . After validating these specifications, Zenoh-Flow will first create the necessary connections and then load each node. The types of connections created as well as the way nodes are loaded are discussed in more details [here](). The most notable aspect is that Zenoh-Flow optimizes the connections: data will go through the network only if nodes are located on different machines. . . ## Documentation . To build the documentation: . ```bash $ cargo doc ``` . The HTML documentation can then be found under `./target/doc/zenoh_flow/index.html`. . . ## How to use . A working [Cargo and Rust](https://doc.rust-lang.org/cargo/getting-started/installation.html) installation is a pre-requisite. . Then download the repository: . ```bash git clone https://github.com/eclipse-zenoh/zenoh-flow && cd zenoh-flow ``` . We assume in the following that `./` points to the root of this repository. . . ### Start Zenoh . As its name indicates, Zenoh-Flow relies on Zenoh. So you first need to install and start a Zenoh router on your device. . The instructions to install Zenoh are located [here](https://zenoh.io/docs/getting-started/installation/). . Once installed, you need to start a `zenohd` with the configuration we provide: . ```bash zenohd -c ./zenoh-flow-daemon/etc/zenoh-zf-router.json ``` . With this configuration, Zenoh will start storages for specific keys that are used internally by Zenoh-Flow. These keys are notably what allow Zenoh-Flow daemons to discover each other (as long as the routers, to which the daemons are attached, can communicate). . . ### Start Zenoh-Flow . Build Zenoh-Flow in release: . ```bash cd zenoh-flow && cargo build --release ``` . This will produce the following executables under the `target/release` directory: `zenoh-flow-daemon`, `zfctl` and `cargo-zenoh-flow`. . - `zenoh-flow-daemon` is what will take care of starting and stopping nodes, as well as deploying a Zenoh-Flow application. - `zfctl` is what we use to interact (using Zenoh) with all the `zenoh-flow-daemon` discovered. - `cargo-zenoh-flow` is a help tool that produces boilerplate code for Zenoh-Flow nodes. . To launch an application we need to: 1) start a daemon and 2) interact with it through `zfctl`. . A Zenoh-Flow daemon relies on some configurations and variables. For this to work, we need to move few files: . ```bash sudo mkdir -p /etc/zenoh-flow/extensions.d sudo cp ./zenoh-flow-daemon/etc/runtime.yaml /etc/zenoh-flow sudo cp ./zenoh-flow-daemon/etc/zenoh-daemon.json /etc/zenoh-flow ``` . We can then start the daemon: . ```bash ./target/release/zenoh-flow-daemon ``` . Next, `zfctl`. We also need to copy a configuration file: . ```bash mkdir -p ~/.config/zenoh-flow cp ./zfctl/.config/zfctl-zenoh.json /etc/zenoh-flow ``` . To check that the Zenoh-Flow daemon is correctly running and `zfctl` is set up, you can do: . ```bash ./target/release/zfctl list runtimes ``` . This should return a list just like this one: . ``` +--------------------------------------+---------------------------+--------+ | UUID | Name | Status | +--------------------------------------+---------------------------+--------+ | 49936f69-2c87-55f0-9df4-d1fba2fadd38 | Juliens-MacBook-Pro.local | Ready | +--------------------------------------+---------------------------+--------+ ``` . If you see this, you can now launch applications! Assuming your application is described in `app.yaml`, you would launch it via: . ```bash ./target/release/zfctl launch app.yaml > app.uuid ``` . :book: The redirection of the standard output is to "capture" the unique identifier associated to this instance of your application. . And you can stop everything via: . ```bash ./target/release/zfctl destroy "$(cat app.uuid)" ``` . We encourage you to look at the examples available in our [examples repository](https://github.com/ZettaScaleLabs/zenoh-flow-examples) for more! . . ### Get nightly releases . If you are not interested in building Zenoh Flow, and you are running an apt-based system (i.e., Debian or Ubuntu), you can add the nightly APT repository and install Zenoh Flow with your package manager. . ``` echo "deb [trusted=yes] https://download.eclipse.org/zenoh/zenoh-flow/debian-repo/nightly/ /" | sudo tee -a /etc/apt/sources.list.d/zenoh-flow.list > /dev/null sudo apt update sudo apt install zenoh-flow-daemon zfctl ``` . Then you can start the daemon with `zenoh-flow-daemon`. Vcs-Browser: https://github.com/eclipse-zenoh/zenoh-flow Vcs-Git: https://github.com/eclipse-zenoh/zenoh-flow Package: zenoh-plugin-zenoh-flow Version: 0.4.0~alpha.2 Architecture: amd64 Maintainer: zenoh-dev@eclipse.org Installed-Size: 56622 Depends: libc6 (>= 2.28), zenohd (=0.7.0-rc) Filename: ./focal/zenoh-plugin-zenoh-flow_0.4.0~alpha.2_amd64.deb Size: 8286604 MD5sum: 79ac674a4122ffe47f4e528a6c4668fb SHA1: 6b9a6e3026f68f522c2a3bbf096d543bddd925da SHA256: ad2924d7ba4d8dfc6bad8b00cefb90a5509b1e4e26f51646f6608548ce6084c2 Section: net Priority: optional Homepage: https://github.com/eclipse-zenoh/zenoh-flow Description: Zenoh-Flow: a Zenoh-based data flow programming framework for computations that span from the cloud to the device. . . [![Eclipse CI](https://ci.eclipse.org/zenoh/buildStatus/icon?job=zenoh-flow-nightly&subject=Eclipse%20CI)](https://ci.eclipse.org/zenoh/view/Zenoh%20Flow/job/zenoh-flow-nightly/) [![CI](https://github.com/eclipse-zenoh/zenoh-flow/actions/workflows/ci.yml/badge.svg)](https://github.com/eclipse-zenoh/zenoh-flow/actions/workflows/ci.yml) [![Discussion](https://img.shields.io/badge/discussion-on%20github-blue)](https://github.com/eclipse-zenoh/roadmap/discussions) [![Discord](https://img.shields.io/badge/chat-on%20discord-blue)](https://discord.gg/vSDSpqnbkm) . . # Eclipse Zenoh-Flow . Zenoh-Flow is the union of Zenoh and data flow programming: a declarative framework for computations that span from the _Cloud_ to the _Thing_. . :warning: **This software is still in alpha status and should _not_ be used in production. Breaking changes are likely to happen and the API is not yet stable.** :warning: **The documentation is still scarce. Do not hesitate to contact us on Discord.** . ## Description . Zenoh-Flow aims at simplifying and structuring (i) the _declaration_, (ii) the _deployment_ and (iii) the _writing_ of "complex" applications that can span from the Cloud to the Thing (or close to it). . To these ends, Zenoh-Flow leverages the _data flow programming model_ --- where applications are viewed as a directed graph of computing units, and _Zenoh_ --- an Edge-native, data-centric, location transparent, communication middleware. . This makes for a powerful combination as Zenoh offers flexibility and extensibility while data flow programming structures computations. The main benefit of this approach is that this allows us to decorrelate applications from the underlying infrastructure: data are published and subscribed to (_automatically_ with Zenoh-Flow) without the need to know where they are actually located. . . ## Core principles . Zenoh-Flow centers the definition of an application around a **description file**. This file acts as a contract that Zenoh-Flow will enforce. . In it, developers specify the different computation units --- the _nodes_, how they are connected --- the _links_, and how they should be deployed --- the _mapping_. . After validating these specifications, Zenoh-Flow will first create the necessary connections and then load each node. The types of connections created as well as the way nodes are loaded are discussed in more details [here](). The most notable aspect is that Zenoh-Flow optimizes the connections: data will go through the network only if nodes are located on different machines. . . ## Documentation . To build the documentation: . ```bash $ cargo doc ``` . The HTML documentation can then be found under `./target/doc/zenoh_flow/index.html`. . . ## How to use . A working [Cargo and Rust](https://doc.rust-lang.org/cargo/getting-started/installation.html) installation is a pre-requisite. . Then download the repository: . ```bash git clone https://github.com/eclipse-zenoh/zenoh-flow && cd zenoh-flow ``` . We assume in the following that `./` points to the root of this repository. . . ### Start Zenoh . As its name indicates, Zenoh-Flow relies on Zenoh. So you first need to install and start a Zenoh router on your device. . The instructions to install Zenoh are located [here](https://zenoh.io/docs/getting-started/installation/). . Once installed, you need to start a `zenohd` with the configuration we provide: . ```bash zenohd -c ./zenoh-flow-daemon/etc/zenoh-zf-router.json ``` . With this configuration, Zenoh will start storages for specific keys that are used internally by Zenoh-Flow. These keys are notably what allow Zenoh-Flow daemons to discover each other (as long as the routers, to which the daemons are attached, can communicate). . . ### Start Zenoh-Flow . Build Zenoh-Flow in release: . ```bash cd zenoh-flow && cargo build --release ``` . This will produce the following executables under the `target/release` directory: `zenoh-flow-daemon`, `zfctl` and `cargo-zenoh-flow`. . - `zenoh-flow-daemon` is what will take care of starting and stopping nodes, as well as deploying a Zenoh-Flow application. - `zfctl` is what we use to interact (using Zenoh) with all the `zenoh-flow-daemon` discovered. - `cargo-zenoh-flow` is a help tool that produces boilerplate code for Zenoh-Flow nodes. . To launch an application we need to: 1) start a daemon and 2) interact with it through `zfctl`. . A Zenoh-Flow daemon relies on some configurations and variables. For this to work, we need to move few files: . ```bash sudo mkdir -p /etc/zenoh-flow/extensions.d sudo cp ./zenoh-flow-daemon/etc/runtime.yaml /etc/zenoh-flow sudo cp ./zenoh-flow-daemon/etc/zenoh-daemon.json /etc/zenoh-flow ``` . We can then start the daemon: . ```bash ./target/release/zenoh-flow-daemon ``` . Next, `zfctl`. We also need to copy a configuration file: . ```bash mkdir -p ~/.config/zenoh-flow cp ./zfctl/.config/zfctl-zenoh.json /etc/zenoh-flow ``` . To check that the Zenoh-Flow daemon is correctly running and `zfctl` is set up, you can do: . ```bash ./target/release/zfctl list runtimes ``` . This should return a list just like this one: . ``` +--------------------------------------+---------------------------+--------+ | UUID | Name | Status | +--------------------------------------+---------------------------+--------+ | 49936f69-2c87-55f0-9df4-d1fba2fadd38 | Juliens-MacBook-Pro.local | Ready | +--------------------------------------+---------------------------+--------+ ``` . If you see this, you can now launch applications! Assuming your application is described in `app.yaml`, you would launch it via: . ```bash ./target/release/zfctl launch app.yaml > app.uuid ``` . :book: The redirection of the standard output is to "capture" the unique identifier associated to this instance of your application. . And you can stop everything via: . ```bash ./target/release/zfctl destroy "$(cat app.uuid)" ``` . We encourage you to look at the examples available in our [examples repository](https://github.com/ZettaScaleLabs/zenoh-flow-examples) for more! . . ### Get nightly releases . If you are not interested in building Zenoh Flow, and you are running an apt-based system (i.e., Debian or Ubuntu), you can add the nightly APT repository and install Zenoh Flow with your package manager. . ``` echo "deb [trusted=yes] https://download.eclipse.org/zenoh/zenoh-flow/debian-repo/nightly/ /" | sudo tee -a /etc/apt/sources.list.d/zenoh-flow.list > /dev/null sudo apt update sudo apt install zenoh-flow-daemon zfctl ``` . Then you can start the daemon with `zenoh-flow-daemon`. Vcs-Browser: https://github.com/eclipse-zenoh/zenoh-flow Vcs-Git: https://github.com/eclipse-zenoh/zenoh-flow Package: zenoh-plugin-zenoh-flow Version: 0.4.0~alpha.2 Architecture: arm64 Maintainer: zenoh-dev@eclipse.org Installed-Size: 57434 Depends: libc6:arm64 (>= 2.31), zenohd (=0.7.0-rc) Filename: ./focal/zenoh-plugin-zenoh-flow_0.4.0~alpha.2_arm64.deb Size: 7980752 MD5sum: 88a7da53ebf180139d9854d3f0378402 SHA1: 6652d443de447759a4392d088abe5ed33c3eb0c3 SHA256: f96e3744ef5b59766f8770d1f59f7b3df08f40893b701b7f5caf0efe21199b4a Section: net Priority: optional Homepage: https://github.com/eclipse-zenoh/zenoh-flow Description: Zenoh-Flow: a Zenoh-based data flow programming framework for computations that span from the cloud to the device. . . [![Eclipse CI](https://ci.eclipse.org/zenoh/buildStatus/icon?job=zenoh-flow-nightly&subject=Eclipse%20CI)](https://ci.eclipse.org/zenoh/view/Zenoh%20Flow/job/zenoh-flow-nightly/) [![CI](https://github.com/eclipse-zenoh/zenoh-flow/actions/workflows/ci.yml/badge.svg)](https://github.com/eclipse-zenoh/zenoh-flow/actions/workflows/ci.yml) [![Discussion](https://img.shields.io/badge/discussion-on%20github-blue)](https://github.com/eclipse-zenoh/roadmap/discussions) [![Discord](https://img.shields.io/badge/chat-on%20discord-blue)](https://discord.gg/vSDSpqnbkm) . . # Eclipse Zenoh-Flow . Zenoh-Flow is the union of Zenoh and data flow programming: a declarative framework for computations that span from the _Cloud_ to the _Thing_. . :warning: **This software is still in alpha status and should _not_ be used in production. Breaking changes are likely to happen and the API is not yet stable.** :warning: **The documentation is still scarce. Do not hesitate to contact us on Discord.** . ## Description . Zenoh-Flow aims at simplifying and structuring (i) the _declaration_, (ii) the _deployment_ and (iii) the _writing_ of "complex" applications that can span from the Cloud to the Thing (or close to it). . To these ends, Zenoh-Flow leverages the _data flow programming model_ --- where applications are viewed as a directed graph of computing units, and _Zenoh_ --- an Edge-native, data-centric, location transparent, communication middleware. . This makes for a powerful combination as Zenoh offers flexibility and extensibility while data flow programming structures computations. The main benefit of this approach is that this allows us to decorrelate applications from the underlying infrastructure: data are published and subscribed to (_automatically_ with Zenoh-Flow) without the need to know where they are actually located. . . ## Core principles . Zenoh-Flow centers the definition of an application around a **description file**. This file acts as a contract that Zenoh-Flow will enforce. . In it, developers specify the different computation units --- the _nodes_, how they are connected --- the _links_, and how they should be deployed --- the _mapping_. . After validating these specifications, Zenoh-Flow will first create the necessary connections and then load each node. The types of connections created as well as the way nodes are loaded are discussed in more details [here](). The most notable aspect is that Zenoh-Flow optimizes the connections: data will go through the network only if nodes are located on different machines. . . ## Documentation . To build the documentation: . ```bash $ cargo doc ``` . The HTML documentation can then be found under `./target/doc/zenoh_flow/index.html`. . . ## How to use . A working [Cargo and Rust](https://doc.rust-lang.org/cargo/getting-started/installation.html) installation is a pre-requisite. . Then download the repository: . ```bash git clone https://github.com/eclipse-zenoh/zenoh-flow && cd zenoh-flow ``` . We assume in the following that `./` points to the root of this repository. . . ### Start Zenoh . As its name indicates, Zenoh-Flow relies on Zenoh. So you first need to install and start a Zenoh router on your device. . The instructions to install Zenoh are located [here](https://zenoh.io/docs/getting-started/installation/). . Once installed, you need to start a `zenohd` with the configuration we provide: . ```bash zenohd -c ./zenoh-flow-daemon/etc/zenoh-zf-router.json ``` . With this configuration, Zenoh will start storages for specific keys that are used internally by Zenoh-Flow. These keys are notably what allow Zenoh-Flow daemons to discover each other (as long as the routers, to which the daemons are attached, can communicate). . . ### Start Zenoh-Flow . Build Zenoh-Flow in release: . ```bash cd zenoh-flow && cargo build --release ``` . This will produce the following executables under the `target/release` directory: `zenoh-flow-daemon`, `zfctl` and `cargo-zenoh-flow`. . - `zenoh-flow-daemon` is what will take care of starting and stopping nodes, as well as deploying a Zenoh-Flow application. - `zfctl` is what we use to interact (using Zenoh) with all the `zenoh-flow-daemon` discovered. - `cargo-zenoh-flow` is a help tool that produces boilerplate code for Zenoh-Flow nodes. . To launch an application we need to: 1) start a daemon and 2) interact with it through `zfctl`. . A Zenoh-Flow daemon relies on some configurations and variables. For this to work, we need to move few files: . ```bash sudo mkdir -p /etc/zenoh-flow/extensions.d sudo cp ./zenoh-flow-daemon/etc/runtime.yaml /etc/zenoh-flow sudo cp ./zenoh-flow-daemon/etc/zenoh-daemon.json /etc/zenoh-flow ``` . We can then start the daemon: . ```bash ./target/release/zenoh-flow-daemon ``` . Next, `zfctl`. We also need to copy a configuration file: . ```bash mkdir -p ~/.config/zenoh-flow cp ./zfctl/.config/zfctl-zenoh.json /etc/zenoh-flow ``` . To check that the Zenoh-Flow daemon is correctly running and `zfctl` is set up, you can do: . ```bash ./target/release/zfctl list runtimes ``` . This should return a list just like this one: . ``` +--------------------------------------+---------------------------+--------+ | UUID | Name | Status | +--------------------------------------+---------------------------+--------+ | 49936f69-2c87-55f0-9df4-d1fba2fadd38 | Juliens-MacBook-Pro.local | Ready | +--------------------------------------+---------------------------+--------+ ``` . If you see this, you can now launch applications! Assuming your application is described in `app.yaml`, you would launch it via: . ```bash ./target/release/zfctl launch app.yaml > app.uuid ``` . :book: The redirection of the standard output is to "capture" the unique identifier associated to this instance of your application. . And you can stop everything via: . ```bash ./target/release/zfctl destroy "$(cat app.uuid)" ``` . We encourage you to look at the examples available in our [examples repository](https://github.com/ZettaScaleLabs/zenoh-flow-examples) for more! . . ### Get nightly releases . If you are not interested in building Zenoh Flow, and you are running an apt-based system (i.e., Debian or Ubuntu), you can add the nightly APT repository and install Zenoh Flow with your package manager. . ``` echo "deb [trusted=yes] https://download.eclipse.org/zenoh/zenoh-flow/debian-repo/nightly/ /" | sudo tee -a /etc/apt/sources.list.d/zenoh-flow.list > /dev/null sudo apt update sudo apt install zenoh-flow-daemon zfctl ``` . Then you can start the daemon with `zenoh-flow-daemon`. Vcs-Browser: https://github.com/eclipse-zenoh/zenoh-flow Vcs-Git: https://github.com/eclipse-zenoh/zenoh-flow Package: zfctl Version: 0.4.0~alpha.2 Architecture: amd64 Maintainer: ADLINK Zenoh team Installed-Size: 100599 Depends: libc6 (>= 2.34) Filename: ./jammy/zfctl_0.4.0~alpha.2_amd64.deb Size: 15625952 MD5sum: 0318c5fcfceb4acee14b35eed08e1660 SHA1: 8c28d16e042536095934314659dc89eacf9b3b99 SHA256: 576ed6305507dd20436e10df6f27ad86f7e4c619ca5c5b295460212b756fb98d Section: utils Priority: optional Homepage: https://github.com/eclipse-zenoh/zenoh-flow Description: Zenoh-Flow: a Zenoh-based data flow programming framework for computations that span from the cloud to the device. Eclipse Zenoh Flow CLI tool Vcs-Browser: https://github.com/eclipse-zenoh/zenoh-flow Vcs-Git: https://github.com/eclipse-zenoh/zenoh-flow Package: zfctl Version: 0.4.0~alpha.2 Architecture: arm64 Maintainer: ADLINK Zenoh team Installed-Size: 103397 Depends: libc6:arm64 (>= 2.35) Filename: ./jammy/zfctl_0.4.0~alpha.2_arm64.deb Size: 15119688 MD5sum: 96533bd961882e036991458b2ac9d814 SHA1: ff154ca2d8dcc25abb2c856ead0d786611eb4382 SHA256: 8c4cf1fb3dd700b3c2598d823f364ac0e5cd7aaed9770630ad9196bf5755a67b Section: utils Priority: optional Homepage: https://github.com/eclipse-zenoh/zenoh-flow Description: Zenoh-Flow: a Zenoh-based data flow programming framework for computations that span from the cloud to the device. Eclipse Zenoh Flow CLI tool Vcs-Browser: https://github.com/eclipse-zenoh/zenoh-flow Vcs-Git: https://github.com/eclipse-zenoh/zenoh-flow Package: zfctl Version: 0.4.0~alpha.2 Architecture: amd64 Maintainer: ADLINK Zenoh team Installed-Size: 100609 Depends: libc6 (>= 2.28) Filename: ./focal/zfctl_0.4.0~alpha.2_amd64.deb Size: 15627164 MD5sum: 09a21d30d7e86491e294f5d30e1d1534 SHA1: fbec1fadb7a9c5b58b9f2e3edc98c042595e6bf4 SHA256: e019e4929fc961fdfaed66bcea3812c704d5be377a24bfc634e0e49becf9c6f3 Section: utils Priority: optional Homepage: https://github.com/eclipse-zenoh/zenoh-flow Description: Zenoh-Flow: a Zenoh-based data flow programming framework for computations that span from the cloud to the device. Eclipse Zenoh Flow CLI tool Vcs-Browser: https://github.com/eclipse-zenoh/zenoh-flow Vcs-Git: https://github.com/eclipse-zenoh/zenoh-flow Package: zfctl Version: 0.4.0~alpha.2 Architecture: arm64 Maintainer: ADLINK Zenoh team Installed-Size: 103411 Depends: libc6:arm64 (>= 2.31) Filename: ./focal/zfctl_0.4.0~alpha.2_arm64.deb Size: 15117524 MD5sum: 5c6a6db8d9c165484902d37f511de11c SHA1: 3ce915a25846c1bfb6340c38b8b92974be5a0d47 SHA256: 8348f74a0697473ff7e0121cba73011d1bfca6ea4a44adc9d16eab183d4ea01b Section: utils Priority: optional Homepage: https://github.com/eclipse-zenoh/zenoh-flow Description: Zenoh-Flow: a Zenoh-based data flow programming framework for computations that span from the cloud to the device. Eclipse Zenoh Flow CLI tool Vcs-Browser: https://github.com/eclipse-zenoh/zenoh-flow Vcs-Git: https://github.com/eclipse-zenoh/zenoh-flow