evlib 0.8.6

Event Camera Data Processing Library
Documentation
[package]
name            = "evlib"
version         = "0.8.6"
authors         = ["Tarek Allam <t.allam.jr@gmail.com>"]
edition         = "2021"
resolver        = "2"
description     = "Event Camera Data Processing Library"
readme          = "README.md"
license         = "MIT"
repository      = "https://github.com/tallamjr/evlib"
homepage        = "https://github.com/tallamjr/evlib"
documentation   = "https://docs.rs/evlib"
keywords        = ["event-camera", "vision", "rust", "python", "pyo3"]
categories      = ["science", "multimedia"]
exclude         = [
    "data/**/*",
    "dist/**/*",
    "examples/**/*",
    "python/**/*",
    "tests/**/*",
    "*.png",
    "*.mp4",
]

[lib]
name           = "evlib"
crate-type     = ["cdylib", "rlib"]

[[bench]]
name = "memory_efficiency"
harness = false

[[bench]]
name = "streaming_performance"
harness = false

[[bench]]
name = "format_comparison"
harness = false

[[bench]]
name = "basic_performance"
harness = false

[[bench]]
name = "standalone_benchmark"
harness = false

[dependencies]
# Python bindings (optional)
numpy          = { version = "0.25.0", optional = true }
pyo3           = { version = "0.25.1", features = ["extension-module"], optional = true }
pyo3-ffi       = { version = "0.25.1", optional = true }

# Core data processing
ndarray        = "0.15.6"
ndarray-rand   = "0.14.0"
rand           = "=0.8.5"
rand_distr     = "=0.4.3"
fastrand       = "2.0"

# Torch-style tensor ops removed (was causing objc_exception compilation issues on Linux)
# candle-core    = { version = "0.9.1", default-features = false }
# candle-nn      = { version = "0.9.1", default-features = false }

# Optional PyTorch integration via tch-rs
tch            = { version = "0.16", optional = true }

# ONNX Runtime for model inference
ort            = { version = "2.0.0-rc.9", default-features = false, features = ["download-binaries", "copy-dylibs"], optional = true }

# Polars for efficient event data processing (optional)
polars         = { version = "0.49.1", default-features = true, features = ["temporal", "dtype-u16", "dtype-i8", "lazy"], optional = true }
pyo3-polars    = { version = "0.22.0", optional = true }

# Apache Arrow for zero-copy data transfer (optional)
arrow          = { version = "55.0", default-features = false, optional = true }
arrow-array    = { version = "55.0", optional = true }
pyo3-arrow     = { version = "0.10.1", optional = true }

# I/O & utilities
memmap2        = "0.5"
image          = "0.24"
async-channel  = "1.6"
lazy_static    = "1.4"
byteorder      = "1.5"

# GStreamer for video processing
gstreamer      = { version = "0.22", optional = true }
gstreamer-app  = { version = "0.22", optional = true }
gstreamer-video = { version = "0.22", optional = true }

# HTTP client and async runtime for model downloading
reqwest        = { version = "0.11", features = ["blocking"] }
tokio          = { version = "1.35", features = ["full"] }
serde          = { version = "1.0", features = ["derive"] }
serde_json     = "1.0"
num_cpus       = "1.16"
thiserror      = "1.0"

# WebSocket server
warp           = "0.3"
uuid           = { version = "1.6", features = ["v4", "serde"] }
dashmap        = "5.5"
futures        = "0.3"

# Terminal UI (optional)
ratatui        = { version = "0.28", optional = true }
crossterm      = { version = "0.28", optional = true }
clap           = { version = "4.0", features = ["derive"], optional = true }

# Platform-specific dependencies
# HDF5 and tracing only on Unix (Linux/macOS) - not available on Windows
[target.'cfg(unix)'.dependencies]
hdf5-metno     = { version = "0.10.1", features = ["blosc-all"] }
hdf5-metno-sys = { version = "0.10.1" }
tracing        = { version = "0.1.40" }
tracing-subscriber = { version = "0.3.18", features = ["env-filter", "fmt", "json"] }

[dev-dependencies]
tempfile       = "3.8"
criterion      = { version = "0.5", features = ["html_reports"] }

[features]
# Default features - automatically platform-aware:
# - Unix (Linux/macOS): Includes all features (HDF5 and tracing available)
# - Windows: Excludes HDF5 and tracing (not in dependencies on Windows)
default        = ["polars", "python", "arrow"]

# Individual feature flags
python         = ["dep:pyo3", "dep:pyo3-ffi", "dep:numpy", "dep:pyo3-polars"]
# cuda           = ["candle-core/cuda"]  # Removed with candle dependencies
# metal          = ["candle-core/metal"]  # Removed with candle dependencies
gstreamer      = ["dep:gstreamer", "dep:gstreamer-app", "dep:gstreamer-video"]
pytorch        = ["dep:tch"]
onnx           = ["dep:ort"]
polars         = ["dep:polars"]
arrow          = ["dep:arrow", "dep:arrow-array", "dep:pyo3-arrow"]
zero-copy      = ["arrow"]  # Alias for clarity
terminal       = ["dep:ratatui", "dep:crossterm", "dep:clap"]