mirror of
https://github.com/ruvnet/RuView
synced 2026-07-05 14:33:19 +00:00
b71d243b42
Three PyPI artifacts now live (published from .env-sourced PYPI_TOKEN via twine from the maintainer box — direct upload bypassed the GH Actions workflow auth churn): 1. wifi-densepose==1.99.0 — tombstone (raises ImportError with migration URL) https://pypi.org/project/wifi-densepose/1.99.0/ 2. wifi-densepose==2.0.0a1 — PyO3 wheel (win_amd64 cp310-abi3) + sdist https://pypi.org/project/wifi-densepose/2.0.0a1/ 3. ruview==2.0.0a1 — meta-package re-exporting wifi_densepose https://pypi.org/project/ruview/2.0.0a1/ New `python/ruview-meta/` subdirectory: - pyproject.toml — name="ruview", version="2.0.0a1", setuptools backend, dependencies = ["wifi-densepose==2.0.0a1"] - src/ruview/__init__.py — re-exports every name from `wifi_densepose.__all__` so `from ruview import BreathingExtractor` is equivalent to `from wifi_densepose import BreathingExtractor`. Also re-exports `__version__`, `__rust_version__`, `__rust_build_tag__`, `__build_features__`. Aliases the `client` sub-package transparently when wifi-densepose[client] extras are installed. - README.md — explains why two PyPI names ship the same code (brand vs technical name) and shows install commands for both. End-to-end verified: fresh venv, `pip install ruview`, `import ruview` + `import wifi_densepose` both succeed, `ruview.BreathingExtractor is wifi_densepose.BreathingExtractor` → True. Multi-platform wheels (manylinux x86_64+aarch64, macos x86_64+arm64) still pending — the cibuildwheel workflow path remains for that. Linux/macOS users today install via the sdist (requires rustup + maturin locally). Refs: docs/adr/ADR-117-pip-wifi-densepose-modernization.md Refs: #785 Co-Authored-By: claude-flow <ruv@ruv.net>
51 lines
1.6 KiB
Python
51 lines
1.6 KiB
Python
"""RuView — ambient intelligence from WiFi CSI.
|
|
|
|
This package is a thin alias around `wifi-densepose`. Both PyPI names
|
|
ship the same code and the same compiled Rust core; `ruview` is the
|
|
brand-facing name and `wifi-densepose` is the technical name. Pick
|
|
whichever you prefer:
|
|
|
|
pip install ruview
|
|
pip install wifi-densepose
|
|
|
|
Both make this work:
|
|
|
|
from ruview import BreathingExtractor, hello
|
|
# or equivalently:
|
|
from wifi_densepose import BreathingExtractor, hello
|
|
|
|
The actual compiled DSP, the Python facade, and every public class
|
|
live in `wifi_densepose` — `ruview` just re-exports the surface so the
|
|
two names are interchangeable in application code.
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
import wifi_densepose as _wdp
|
|
|
|
# Re-export everything `wifi_densepose.__all__` declares.
|
|
for _name in _wdp.__all__:
|
|
globals()[_name] = getattr(_wdp, _name)
|
|
|
|
# Version + diagnostic fields — surface them under the ruview name
|
|
# too so users can `print(ruview.__rust_version__)` without reaching
|
|
# into the wifi_densepose module.
|
|
__version__: str = _wdp.__version__
|
|
__rust_version__: str = _wdp.__rust_version__
|
|
__rust_build_tag__: str = _wdp.__rust_build_tag__
|
|
__build_features__ = list(_wdp.__build_features__)
|
|
|
|
# The client sub-package is also aliased for symmetry.
|
|
try:
|
|
from wifi_densepose import client # type: ignore[import-not-found] # noqa: F401
|
|
except ImportError:
|
|
# client extras not installed — that's fine for the core import.
|
|
pass
|
|
|
|
__all__ = list(_wdp.__all__) + [
|
|
"__version__",
|
|
"__rust_version__",
|
|
"__rust_build_tag__",
|
|
"__build_features__",
|
|
]
|