[package] name = "wifi-densepose-py" version = "2.0.0-alpha.1" edition.workspace = true license.workspace = true authors = ["rUv ", "WiFi-DensePose Contributors"] description = "PyO3 bindings for the WiFi-DensePose Rust core — ships as the `wifi-densepose` PyPI wheel (ADR-117)" repository.workspace = true # 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" } [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.