ruvnet/RuView · error · ImportError

wifi_densepose.meridian is not in the binary wheels yet (see

Error message

wifi_densepose.meridian is not in the binary wheels yet (see ruvnet/RuView#1412). Build from source with `maturin ... --features meridian` (or `--features sota`).

What it means

wifi_densepose.meridian re-exports MERIDIAN symbols — HardwareType, CanonicalCsiFrame, HardwareNormalizer, MeridianGeometryConfig, GeometryEncoder, RapidAdaptation, AdaptationResult — from `_native`. They exist only under the Rust `meridian` (or `sota`) cargo feature; a base wheel deliberately excludes them (ADR-185 §6 acceptance, ruvnet/RuView#1412), so the import raises ImportError.

Source

Thrown at python/wifi_densepose/meridian.py:36

    frame = norm.normalize(amplitude, phase, hw)     # -> CanonicalCsiFrame
    print(len(frame.amplitude), frame.hardware_type)

Note (honest scope, ADR-185 §3.3): the ADR's ``RapidAdaptation.calibrate``
/ ``AdaptationResult.converged`` do not exist in the Rust core — use
``push_frame(...)`` then ``adapt()``; the result exposes ``final_loss``,
``frames_used``, ``adaptation_epochs``. Training-time types
(DomainFactorizer, GradientReversalLayer, VirtualDomainAugmentor) are
out of scope for P6 (they need the deferred libtorch training tier).
"""

from __future__ import annotations

from wifi_densepose import _native

# MERIDIAN symbols are compiled into `_native` only under the Rust
# `meridian` feature; absent in a base wheel (ADR-185 §6 acceptance).
if not hasattr(_native, "HardwareNormalizer"):
    raise ImportError(
        "wifi_densepose.meridian is not in the binary wheels yet "
        "(see ruvnet/RuView#1412). Build from source with "
        "`maturin ... --features meridian` (or `--features sota`)."
    )

HardwareType = _native.HardwareType
CanonicalCsiFrame = _native.CanonicalCsiFrame
HardwareNormalizer = _native.HardwareNormalizer
MeridianGeometryConfig = _native.MeridianGeometryConfig
GeometryEncoder = _native.GeometryEncoder
RapidAdaptation = _native.RapidAdaptation
AdaptationResult = _native.AdaptationResult
CrossDomainEvaluator = _native.CrossDomainEvaluator
mpjpe = _native.mpjpe

__all__ = [
    "HardwareType",
    "CanonicalCsiFrame",

View on GitHub (pinned to 4685618388)

Solutions

  1. Build from source with the feature: `maturin build --release --features meridian` (or `--features sota`) and pip-install the wheel
  2. Feature-detect with `hasattr(wifi_densepose._native, "HardwareNormalizer")` before importing the submodule
  3. Track ruvnet/RuView#1412 for wheel enablement; note training-tier types (DomainFactorizer etc.) are out of scope per the module docstring

Example fix

# before
from wifi_densepose.meridian import HardwareNormalizer  # ImportError on wheels

# after
from wifi_densepose import _native

if not hasattr(_native, "HardwareNormalizer"):
    raise SystemExit("build with: maturin build --release --features meridian")
from wifi_densepose.meridian import HardwareNormalizer
Defensive patterns

Strategy: validation

Validate before calling

from wifi_densepose import _native

MERIDIAN_AVAILABLE = hasattr(_native, "HardwareNormalizer")
if not MERIDIAN_AVAILABLE:
    raise SystemExit("build with: maturin build --release --features meridian")
from wifi_densepose.meridian import HardwareNormalizer

Try / catch

try:
    from wifi_densepose import meridian
except ImportError as e:
    if "not in the binary wheels yet" in str(e):
        log.warning("meridian unavailable: build with --features meridian")
        meridian = None
    else:
        raise

Prevention

When it happens

Trigger: `import wifi_densepose.meridian` or `from wifi_densepose.meridian import HardwareNormalizer` on a prebuilt binary wheel install.

Common situations: Cross-hardware normalization / domain-adaptation work deployed from PyPI wheels; fresh checkouts using wheels; CI without a maturin build step.

Related errors


AI-assisted analysis of ruvnet/RuView@4685618388 (2026-08-16). Data as JSON: /api/errors/94f128cffcd49514. Report an issue: GitHub.