[package] name = "wifi-densepose-py" version = "2.0.0-alpha.1" # The `python/` crate is intentionally OUTSIDE the `v2/` Cargo # workspace (ADR-117 §5.2) so maturin's `python-source` + `module-name` # config stays self-contained and `cargo test --workspace` in v2/ # doesn't have to compile pyo3. Hence no `*.workspace = true` # inheritance here — every field is local. edition = "2021" license = "MIT" authors = ["rUv ", "WiFi-DensePose Contributors"] description = "PyO3 bindings for the WiFi-DensePose Rust core — ships as the `wifi-densepose` PyPI wheel (ADR-117)" repository = "https://github.com/ruvnet/RuView" # ADR-117 §5.2: the Python wheel's compiled module name is # `wifi_densepose._native` (the leading underscore marks it as an internal # implementation detail re-exported by the pure-Python facade in # `wifi_densepose/__init__.py`). Keeping the name distinct from the crate # avoids the maturin gotcha where `wifi_densepose-py` would collide with # the user-facing `wifi_densepose` package on import. [lib] name = "wifi_densepose_native" crate-type = ["cdylib", "rlib"] path = "src/lib.rs" [dependencies] # PyO3 with abi3-py310 — one compiled binary covers Python 3.10, 3.11, # 3.12, 3.13, and any future 3.x that keeps the stable ABI (ADR-117 §5.4). # Without abi3 we'd need a separate wheel per Python minor version × OS # × arch, blowing up the cibuildwheel matrix. pyo3 = { version = "0.22", features = ["extension-module", "abi3-py310"] } # Re-export the Rust core types through PyO3 #[pyclass] wrappers in P2. # Default-features-off keeps the wheel size below the 5 MB ADR-117 §5.4 # budget by avoiding optional BLAS/openssl chains. wifi-densepose-core = { version = "0.3.0", path = "../v2/crates/wifi-densepose-core" } # P3 — vitals extraction (HR/BR via the 4-stage pipeline). Pure-sync; # no tokio (Q5 audited 2026-05-24); safe to wrap in py.allow_threads. wifi-densepose-vitals = { version = "0.3.0", path = "../v2/crates/wifi-densepose-vitals" } # ADR-118 BFLD core — PrivacyClass enum + identity_risk scoring + # privacy gate. Exposed to Python via bindings/privacy_gate.rs so the # c6-presence-watcher.py runtime (currently using a Python port of the # same semantics) can switch to the canonical Rust implementation when # the wheel ships. ADR-125 §2.1.d invariant enforcement lives here. wifi-densepose-bfld = { version = "0.3.0", path = "../v2/crates/wifi-densepose-bfld" } # numpy bridge — needed for P3.5 BfldFrame (Complex64 ndarray) and for # the future P3 CsiFrame numpy round-trip. numpy = "0.22" [dev-dependencies] # Doc-test infrastructure for the Python-facing examples in the bound # Rust functions. Lands properly in P2 once #[pyfunction]s exist to test.