mirror of
https://github.com/ruvnet/RuView
synced 2026-07-22 17:23:19 +00:00
f74e73ccf7
ADR-184 P2 (version promotion + changelog) — version-metadata prep only;
triggers NO publish (P3's real PyPI upload is still gated on the manual
Trusted Publisher registration on pypi.org).
- python/pyproject.toml: version 2.0.0a1 -> 2.0.0; classifier
"Development Status :: 3 - Alpha" -> "5 - Production/Stable".
- python/ruview-meta/pyproject.toml: version 2.0.0a1 -> 2.0.0; same
classifier bump; repointed the wifi-densepose dependency pins
(base + [client]) from ==2.0.0a1 to ==2.0.0 so the stable ruview
meta-package depends on the stable wifi-densepose, not the alpha.
- python/wifi_densepose/__init__.py: runtime __version__ 2.0.0a1 -> 2.0.0
(caught during the sanity check — it would otherwise contradict the
stable wheel version reported by `wifi_densepose.__version__`).
- CHANGELOG.md: [Unreleased] entry recording the promotion.
Sanity-checked that the core package genuinely deserves "Production/Stable"
(not just a version-string change):
maturin build --release --strip -> default wheel 279 KB
pytest python/tests/ (excluding [aether]/[meridian]/[mat] extra modules)
-> 185 passed, 0 failed (smoke/keypoint/pose/vitals/bfld/security/
WS+MQTT client)
post-bump: wheel installs as 2.0.0, __version__ = 2.0.0, smoke 6/6 pass.
No publish/tag/release commands were run.
114 lines
3.9 KiB
TOML
114 lines
3.9 KiB
TOML
# ADR-117 — `wifi-densepose` v2.x PyPI wheel
|
||
#
|
||
# This is the PyO3+maturin replacement for the legacy pure-Python
|
||
# `wifi-densepose==1.1.0` (last release 2025-06-07). One compiled
|
||
# extension module per OS/arch covers Python 3.10–3.13 via abi3.
|
||
|
||
[build-system]
|
||
requires = ["maturin>=1.7,<2.0"]
|
||
build-backend = "maturin"
|
||
|
||
[project]
|
||
name = "wifi-densepose"
|
||
version = "2.0.0"
|
||
description = "WiFi-based human pose estimation, vital sign extraction, and ambient intelligence from Channel State Information (CSI). PyO3 bindings for the Rust core."
|
||
readme = "README.md"
|
||
requires-python = ">=3.10"
|
||
license = { text = "MIT" }
|
||
authors = [
|
||
{ name = "rUv", email = "ruv@ruv.net" },
|
||
]
|
||
keywords = [
|
||
"wifi", "csi", "pose-estimation", "vital-signs",
|
||
"biometric", "ambient-intelligence", "home-assistant", "matter",
|
||
]
|
||
classifiers = [
|
||
"Development Status :: 5 - Production/Stable",
|
||
"Intended Audience :: Developers",
|
||
"Intended Audience :: Science/Research",
|
||
"License :: OSI Approved :: MIT License",
|
||
"Operating System :: OS Independent",
|
||
"Programming Language :: Python :: 3",
|
||
"Programming Language :: Python :: 3.10",
|
||
"Programming Language :: Python :: 3.11",
|
||
"Programming Language :: Python :: 3.12",
|
||
"Programming Language :: Python :: 3.13",
|
||
"Programming Language :: Rust",
|
||
"Topic :: Scientific/Engineering",
|
||
"Topic :: Scientific/Engineering :: Artificial Intelligence",
|
||
"Topic :: Scientific/Engineering :: Image Recognition",
|
||
"Topic :: System :: Hardware",
|
||
"Typing :: Typed",
|
||
]
|
||
dependencies = []
|
||
|
||
[project.optional-dependencies]
|
||
# ADR-117 §5.6 — pure-Python WS/MQTT client. Lands in P4.
|
||
client = [
|
||
"websockets>=12.0",
|
||
"paho-mqtt>=2.1",
|
||
]
|
||
# ADR-185 P1 — AETHER contrastive embeddings. Unlike `client`, this
|
||
# extra carries no pure-Python deps: it is a marker for a *compiled*
|
||
# feature build (`maturin ... --features aether` / a cibuildwheel
|
||
# feature axis, ADR-185 §3.1). Installing the base wheel and importing
|
||
# `wifi_densepose.aether` raises a clear ImportError naming this extra.
|
||
aether = []
|
||
# ADR-185 P2 — MERIDIAN domain generalization. Same compiled-feature
|
||
# marker pattern as `aether` (built via `maturin ... --features meridian`).
|
||
meridian = []
|
||
# ADR-185 P3 — MAT disaster-survivor detection. Same compiled-feature
|
||
# marker (built via `maturin ... --features mat`).
|
||
mat = []
|
||
# ADR-185 §3 convenience — all three SOTA subsystems at once.
|
||
sota = []
|
||
# Developer dependencies for running the test suite + lint.
|
||
dev = [
|
||
"pytest>=8.0",
|
||
"pytest-asyncio>=0.23",
|
||
"ruff>=0.7",
|
||
"mypy>=1.13",
|
||
]
|
||
|
||
[project.urls]
|
||
Homepage = "https://github.com/ruvnet/RuView"
|
||
Repository = "https://github.com/ruvnet/RuView"
|
||
Issues = "https://github.com/ruvnet/RuView/issues"
|
||
Documentation = "https://github.com/ruvnet/RuView/tree/main/docs"
|
||
"ADR-117 (modernization plan)" = "https://github.com/ruvnet/RuView/blob/main/docs/adr/ADR-117-pip-wifi-densepose-modernization.md"
|
||
"Release notes (v0.7.0)" = "https://github.com/ruvnet/RuView/blob/main/docs/releases/v0.7.0-mqtt-matter.md"
|
||
|
||
# Console-script entry points wired up in P5 once the CLI shim exists.
|
||
# [project.scripts]
|
||
# wifi-densepose = "wifi_densepose.cli:main"
|
||
|
||
[tool.maturin]
|
||
# Layout: pyproject.toml + Cargo.toml live at `python/`; the
|
||
# python-source directory `wifi_densepose/` is a sibling (i.e. at
|
||
# `python/wifi_densepose/`). `python-source = "."` tells maturin to
|
||
# look for packages directly under the project root.
|
||
python-source = "."
|
||
module-name = "wifi_densepose._native"
|
||
features = ["pyo3/extension-module"]
|
||
# Strip debug symbols for smaller release wheels (ADR-117 §5.4 5 MB budget).
|
||
strip = true
|
||
|
||
[tool.pytest.ini_options]
|
||
minversion = "8.0"
|
||
testpaths = ["tests"]
|
||
addopts = "-v --strict-markers"
|
||
asyncio_mode = "auto"
|
||
|
||
[tool.ruff]
|
||
line-length = 100
|
||
target-version = "py310"
|
||
|
||
[tool.ruff.lint]
|
||
select = ["E", "F", "W", "I", "UP", "B"]
|
||
|
||
[tool.mypy]
|
||
python_version = "3.10"
|
||
strict = true
|
||
warn_unused_ignores = true
|
||
warn_redundant_casts = true
|