Split P6 SOTA bindings into separate PyPI packages (aether/mat/meridian)
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 94.5k
- Forks
- 12.5k
- Avg merge
- 21h 27m
- Merged PRs (30d)
- 43
Description
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]→ pullswifi-densepose-aether, andimport wifi_densepose.aetherworks.- Each SOTA package is built only with its own cargo feature, so a heavy dep (e.g. ONNX Runtime landing in
mat) grows onlywifi-densepose-mat, never the base. - Each SOTA package has its own size budget check.
Work items
- Decide the module-resolution model so
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). - 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.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with ADR-117 §5.4 and the current pyproject.toml extras to understand the small-base design and package boundaries. Then inspect pip-release.yml and the interim work on feature/python-sota-modernization before deciding how the sibling modules resolve. Done means each SOTA extra installs its own package, imports work, and separate build and wheel-size checks are in place.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- github-actions, python, rust
- Domain
- build-system, ci-cd, release
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100