Summary
Ship the P6 SOTA subsystems (AETHER / MAT / MERIDIAN) as separate native PyPI packages — wifi-densepose-aether, wifi-densepose-mat, wifi-densepose-meridian — that the wifi-densepose[aether] / [mat] / [meridian] extras depend on. This is the only way to honor the deliberate "small base wheel, opt-in SOTA" design (ADR-117 §5.4) while making the extras actually deliver the bindings.
Why now
A pip extra can only pull Python packages; it cannot enable a Rust cargo feature on an already-built wheel. So today the [aether]/[mat]/[meridian]/[sota] extras are = [] and inert: pip install wifi-densepose[aether] installs the base wheel, which has no P6 bindings, and import wifi_densepose.aether fails.
There are only three ways to resolve that: (A) compile SOTA into the single published wheel — abandons the small-base design and, once mat gains ONNX Runtime as anticipated, silently balloons the published wheel past the 5 MiB budget (which only guards the no-features build); (B) split into separate packages — this issue; (C) keep the base small and make P6 source-build-only for now. C was chosen for the current PR (honest error messages + source-build path via --features); B is the proper fix.
Done looks like
pip install wifi-densepose → small base wheel, no SOTA (design preserved; base stays budget-guarded).
pip install wifi-densepose[aether] → pulls wifi-densepose-aether, and import wifi_densepose.aether works.
- Each SOTA package is built only with its own cargo feature, so a heavy dep (e.g. ONNX Runtime landing in
mat) grows only wifi-densepose-mat, never the base.
- Each SOTA package has its own size budget check.
Work items
- Decide the module-resolution model so
wifi_densepose.aether resolves from the separate wifi-densepose-aether package (namespace package, or a re-export shim in the base that imports the sibling package when installed).
- A
pyproject.toml / maturin build per SOTA package, each pinning its cargo feature.
- Per-package cibuildwheel matrix + PyPI trusted-publishing lane (mirror
pip-release.yml).
- Point the base package's extras at the sibling packages (
aether = ["wifi-densepose-aether==<ver>"], …).
- Per-package wheel-size budget job.
- Remove the interim source-build-only messaging once the packages publish.
Context: the interim C fix landed on feature/python-sota-modernization — release wheels stay feature-less (small base preserved), the import shims now point users to a source build with --features, and the AETHER parity tests were made arch-portable (tolerance vs a golden vector rather than a non-portable f32 byte hash). This issue tracks the follow-up to actually ship P6 in binary wheels.
Summary
Ship the P6 SOTA subsystems (AETHER / MAT / MERIDIAN) as separate native PyPI packages —
wifi-densepose-aether,wifi-densepose-mat,wifi-densepose-meridian— that thewifi-densepose[aether]/[mat]/[meridian]extras depend on. This is the only way to honor the deliberate "small base wheel, opt-in SOTA" design (ADR-117 §5.4) while making the extras actually deliver the bindings.Why now
A pip extra can only pull Python packages; it cannot enable a Rust cargo feature on an already-built wheel. So today the
[aether]/[mat]/[meridian]/[sota]extras are= []and inert:pip install wifi-densepose[aether]installs the base wheel, which has no P6 bindings, andimport wifi_densepose.aetherfails.There are only three ways to resolve that: (A) compile SOTA into the single published wheel — abandons the small-base design and, once
matgains ONNX Runtime as anticipated, silently balloons the published wheel past the 5 MiB budget (which only guards the no-features build); (B) split into separate packages — this issue; (C) keep the base small and make P6 source-build-only for now. C was chosen for the current PR (honest error messages + source-build path via--features); B is the proper fix.Done looks like
pip install wifi-densepose→ small base wheel, no SOTA (design preserved; base stays budget-guarded).pip install wifi-densepose[aether]→ pullswifi-densepose-aether, andimport wifi_densepose.aetherworks.mat) grows onlywifi-densepose-mat, never the base.Work items
wifi_densepose.aetherresolves from the separatewifi-densepose-aetherpackage (namespace package, or a re-export shim in the base that imports the sibling package when installed).pyproject.toml/ maturin build per SOTA package, each pinning its cargo feature.pip-release.yml).aether = ["wifi-densepose-aether==<ver>"], …).Context: the interim C fix landed on
feature/python-sota-modernization— release wheels stay feature-less (small base preserved), the import shims now point users to a source build with--features, and the AETHER parity tests were made arch-portable (tolerance vs a golden vector rather than a non-portable f32 byte hash). This issue tracks the follow-up to actually ship P6 in binary wheels.