ruvnet/RuView · error · ImportError
wifi-densepose 1.x has been superseded by v2.0.0 which wraps
Error message
wifi-densepose 1.x has been superseded by v2.0.0 which wraps the Rust-based stack. pip install wifi-densepose==2.0.0 Migration guide: https://github.com/ruvnet/RuView/blob/main/docs/pip-migration.md Modernization rationale: https://github.com/ruvnet/RuView/blob/main/docs/adr/ADR-117-pip-wifi-densepose-modernization.md Legacy v1 source (archived): https://github.com/ruvnet/RuView/tree/main/archive/v1
What it means
Deliberate tombstone. The wifi-densepose==1.99.0 PyPI release contains only this module, which raises ImportError unconditionally at import time (ADR-117 §7.2). Its job is to give projects that upgrade from the legacy 1.x Python line a clear migration error instead of a silently broken package. The real implementation lives at wifi-densepose>=2.0.0, a PyO3+maturin build that wraps the Rust stack.
Source
Thrown at python/tombstone/src/wifi_densepose/__init__.py:10
# ADR-117 §7.2 — v1.99.0 tombstone.
#
# This module is part of the `wifi-densepose==1.99.0` PyPI release.
# Its ONLY job is to raise ImportError on import so any project that
# upgraded from the legacy 1.x line gets a clear migration error
# rather than a silent broken import.
#
# The real package lives at `wifi-densepose>=2.0.0` (built by the
# PyO3+maturin pipeline in `python/`).
raise ImportError(
"wifi-densepose 1.x has been superseded by v2.0.0 which wraps the Rust-based stack.\n"
"\n"
" pip install wifi-densepose==2.0.0\n"
"\n"
"Migration guide: https://github.com/ruvnet/RuView/blob/main/docs/pip-migration.md\n"
"Modernization rationale: https://github.com/ruvnet/RuView/blob/main/docs/adr/ADR-117-pip-wifi-densepose-modernization.md\n"
"Legacy v1 source (archived): https://github.com/ruvnet/RuView/tree/main/archive/v1\n"
)
View on GitHub (pinned to 4685618388)
Solutions
- Install the new line: pip install wifi-densepose==2.0.0 (or add wifi-densepose>=2.0.0 to requirements)
- Regenerate the lockfile (pip-compile / poetry lock / uv lock) so the 1.99.0 tombstone is dropped
- If a dependency pins wifi-densepose<2, upgrade or relax that constraint
- Follow docs/pip-migration.md for API differences between 1.x and 2.x
Example fix
# before # requirements.txt wifi-densepose==1.99.0 # import raises the tombstone ImportError # after # requirements.txt wifi-densepose>=2.0.0
Defensive patterns
Strategy: try-catch
Validate before calling
import importlib.metadata as md
version = md.version("wifi-densepose")
if version.startswith("1."):
raise SystemExit(
f"wifi-densepose {version} is the 1.x tombstone; "
"upgrade: pip install wifi-densepose==2.0.0"
)
import wifi_densepose Try / catch
try:
import wifi_densepose
except ImportError as e:
if "superseded by v2.0.0" in str(e):
raise SystemExit(
"Legacy wifi-densepose 1.x is installed. "
"Run: pip install wifi-densepose==2.0.0"
)
raise Prevention
- Pin wifi-densepose>=2.0.0 in every requirements file and lockfile
- Clear pip/CI wheel caches when upgrading past the tombstone release
- Add a CI smoke test that imports wifi_densepose in the deployed environment
When it happens
Trigger: Any `import wifi_densepose` (direct or transitive) in an environment where pip resolved the 1.x line: a pin like `wifi-densepose<2` or `~=1.99` in requirements.txt, a stale lockfile, or a cached 1.99.0 wheel in CI.
Common situations: Upgrading an app that pinned 1.x; a transitive dependency constraining wifi-densepose<2; CI layer caches serving the old wheel; deploying from a requirements snapshot taken before the 2.0 release.
Related errors
- Core dependencies not found. Make sure you installed from th
- wifi_densepose.aether is not in the binary wheels yet (see r
- module 'wifi_densepose.client' has no attribute {name!r}
- RuViewMqttClient requires the `paho-mqtt` package. Install w
- SensingClient requires the `websockets` package. Install wit
AI-assisted analysis of ruvnet/RuView@4685618388 (2026-08-16).
Data as JSON: /api/errors/5fd0542a83885121.
Report an issue: GitHub.