[workspace]
members = [
    "apis/c/node",
    "apis/c/operator",
    "apis/c++/node",
    "apis/c++/operator",
    "apis/python/node",
    "apis/python/operator",
    "apis/rust/*",
    "apis/rust/operator/macros",
    "apis/rust/operator/types",
    "binaries/cli",
    "binaries/coordinator",
    "binaries/daemon",
    "binaries/runtime",
    "examples/rust-dataflow/node",
    "examples/rust-dataflow/status-node",
    "examples/rust-dataflow/sink",
    "examples/rust-dataflow/sink-dynamic",
    "examples/rust-ros2-dataflow/node",
    "examples/benchmark/node",
    "examples/benchmark/sink",
    "examples/multiple-daemons/node",
    "examples/multiple-daemons/operator",
    "examples/multiple-daemons/sink",
    "libraries/arrow-convert",
    "libraries/communication-layer/*",
    "libraries/core",
    "libraries/message",
    "libraries/shared-memory-server",
    "libraries/extensions/download",
    "libraries/extensions/telemetry/*",
    "node-hub/dora-record",
    "node-hub/dora-rerun",
    "node-hub/terminal-print",
    "node-hub/openai-proxy-server",
    "node-hub/dora-openai-websocket",
    "node-hub/dora-kit-car",
    "node-hub/dora-object-to-pose",
    "node-hub/dora-mistral-rs",
    "node-hub/dora-rav1e",
    "node-hub/dora-dav1d",
    "node-hub/dora-rustypot",
    "libraries/extensions/ros2-bridge",
    "libraries/extensions/ros2-bridge/msg-gen",
    "libraries/extensions/ros2-bridge/python",
    "tests/queue_size_latest_data_rust/receive_data",

]

[workspace.package]
edition = "2021"
rust-version = "1.85.0"
# Make sure to also bump `apis/node/python/__init__.py` version.
version = "0.3.12"
description = "`dora` goal is to be a low latency, composable, and distributed data flow."
documentation = "https://dora-rs.ai"
license = "Apache-2.0"
repository = "https://github.com/dora-rs/dora/"

[workspace.dependencies]
dora-node-api = { version = "0.3.12", path = "apis/rust/node", default-features = false }
dora-node-api-python = { version = "0.3.12", path = "apis/python/node", default-features = false }
dora-operator-api = { version = "0.3.12", path = "apis/rust/operator", default-features = false }
dora-operator-api-macros = { version = "0.3.12", path = "apis/rust/operator/macros" }
dora-operator-api-types = { version = "0.3.12", path = "apis/rust/operator/types" }
dora-operator-api-python = { version = "0.3.12", path = "apis/python/operator" }
dora-operator-api-c = { version = "0.3.12", path = "apis/c/operator" }
dora-node-api-c = { version = "0.3.12", path = "apis/c/node" }
dora-core = { version = "0.3.12", path = "libraries/core" }
dora-arrow-convert = { version = "0.3.12", path = "libraries/arrow-convert" }
dora-tracing = { version = "0.3.12", path = "libraries/extensions/telemetry/tracing" }
dora-metrics = { version = "0.3.12", path = "libraries/extensions/telemetry/metrics" }
dora-download = { version = "0.3.12", path = "libraries/extensions/download" }
shared-memory-server = { version = "0.3.12", path = "libraries/shared-memory-server" }
communication-layer-request-reply = { version = "0.3.12", path = "libraries/communication-layer/request-reply" }
dora-cli = { version = "0.3.12", path = "binaries/cli" }
dora-runtime = { version = "0.3.12", path = "binaries/runtime" }
dora-daemon = { version = "0.3.12", path = "binaries/daemon" }
dora-coordinator = { version = "0.3.12", path = "binaries/coordinator" }
dora-ros2-bridge = { version = "0.3.12", path = "libraries/extensions/ros2-bridge" }
dora-ros2-bridge-msg-gen = { version = "0.3.12", path = "libraries/extensions/ros2-bridge/msg-gen" }
dora-ros2-bridge-python = { path = "libraries/extensions/ros2-bridge/python" }
# versioned independently from the other dora crates
dora-message = { version = "0.5.0", path = "libraries/message" }
arrow = { version = "54.2.1" }
arrow-schema = { version = "54.2.1" }
arrow-data = { version = "54.2.1" }
arrow-array = { version = "54.2.1" }
parquet = { version = "54.2.1" }
pyo3 = { version = "0.23", features = [
    "eyre",
    "abi3-py37",
    "multiple-pymethods",
] }
pythonize = "0.23"
git2 = { version = "0.18.0", features = ["vendored-openssl"] }
serde_yaml = "0.9.33"

[package]
name = "dora-examples"
rust-version = "1.85.0"
version = "0.0.0"
edition.workspace = true
license = "Apache-2.0"
publish = false


[features]
# enables examples that depend on a sourced ROS2 installation
ros2-examples = []

[dev-dependencies]
eyre = "0.6.8"
tokio = "1.24.2"
dora-cli = { workspace = true }
dora-coordinator = { workspace = true }
dora-core = { workspace = true }
dora-message = { workspace = true }
dora-tracing = { workspace = true }
dora-download = { workspace = true }
dunce = "1.0.2"
serde_yaml = "0.8.23"
uuid = { version = "1.7", features = ["v7", "serde"] }
tracing = "0.1.36"
futures = "0.3.25"
tokio-stream = "0.1.11"

[[example]]
name = "c-dataflow"
path = "examples/c-dataflow/run.rs"

[[example]]
name = "camera"
path = "examples/camera/run.rs"

[[example]]
name = "vlm"
path = "examples/vlm/run.rs"

[[example]]
name = "rust-dataflow"
path = "examples/rust-dataflow/run.rs"

[[example]]
name = "rust-dataflow-git"
path = "examples/rust-dataflow-git/run.rs"

[[example]]
name = "rust-ros2-dataflow"
path = "examples/rust-ros2-dataflow/run.rs"
required-features = ["ros2-examples"]

# TODO: Fix example #192
[[example]]
name = "rust-dataflow-url"
path = "examples/rust-dataflow-url/run.rs"

[[example]]
name = "cxx-dataflow"
path = "examples/c++-dataflow/run.rs"

[[example]]
name = "cxx-arrow-dataflow"
path = "examples/c++-arrow-dataflow/run.rs"

[[example]]
name = "python-dataflow"
path = "examples/python-dataflow/run.rs"

[[example]]
name = "python-ros2-dataflow"
path = "examples/python-ros2-dataflow/run.rs"
required-features = ["ros2-examples"]

[[example]]
name = "python-operator-dataflow"
path = "examples/python-operator-dataflow/run.rs"

[[example]]
name = "benchmark"
path = "examples/benchmark/run.rs"

[[example]]
name = "multiple-daemons"
path = "examples/multiple-daemons/run.rs"

[[example]]
name = "cmake-dataflow"
path = "examples/cmake-dataflow/run.rs"

[[example]]
name = "cxx-ros2-dataflow"
path = "examples/c++-ros2-dataflow/run.rs"
required-features = ["ros2-examples"]

[[example]]
name = "rerun-viewer"
path = "examples/rerun-viewer/run.rs"

# The profile that 'dist' will build with
[profile.dist]
inherits = "release"
lto = "thin"
