{"record":{"id":"effb4fd1b223c188","repo":"ruvnet/RuView","slug":"wifi-densepose-mat-is-not-in-the-binary-wheels-yet","errorCode":null,"errorMessage":"wifi_densepose.mat is not in the binary wheels yet (see ruvnet/RuView#1412). Build from source with `maturin ... --features mat` (or `--features sota`).","messagePattern":"wifi_densepose\\.mat is not in the binary wheels yet \\(see ruvnet/RuView#1412\\)\\. Build from source with `maturin \\.\\.\\. --features mat` \\(or `--features sota`\\)\\.","errorType":"exception","errorClass":"ImportError","httpStatus":null,"severity":"error","filePath":"python/wifi_densepose/mat.py","lineNumber":39,"sourceCode":"    resp.scan_once()                                        # one detection cycle\n    for s in resp.survivors():\n        print(s.id, s.triage_status, s.confidence, s.location)\n\nHonest scope (ADR-185 §3.4): the ADR's Rust-side `scan_once()` wrapper was\nunnecessary — this binding drives one cycle of the public async\n`start_scanning()` (with `continuous_monitoring` forced off) on an internal\nruntime. `initialize_event` + `add_zone` are required before `scan_once`.\n`Survivor.latest_vitals` returns the latest reading (the Rust accessor is a\nhistory). The detection pipeline is real but unvalidated on live rubble.\n\"\"\"\n\nfrom __future__ import annotations\n\nfrom wifi_densepose import _native\n\n# MAT symbols are compiled into `_native` only under the Rust `mat` feature.\nif not hasattr(_native, \"DisasterResponse\"):\n    raise ImportError(\n        \"wifi_densepose.mat is not in the binary wheels yet \"\n        \"(see ruvnet/RuView#1412). Build from source with \"\n        \"`maturin ... --features mat` (or `--features sota`).\"\n    )\n\nDisasterType = _native.DisasterType\nTriageStatus = _native.TriageStatus\nDisasterConfig = _native.DisasterConfig\nDisasterResponse = _native.DisasterResponse\nScanZone = _native.ScanZone\nSurvivor = _native.Survivor\nVitalSignsReading = _native.VitalSignsReading\n\n__all__ = [\n    \"DisasterType\",\n    \"TriageStatus\",\n    \"DisasterConfig\",\n    \"DisasterResponse\",","sourceCodeStart":21,"sourceCodeEnd":57,"githubUrl":"https://github.com/ruvnet/RuView/blob/4685618388a5e49fad5b3005806f3bdd6a7c25c3/python/wifi_densepose/mat.py#L21-L57","documentation":"wifi_densepose.mat re-exports MAT (disaster-response / rubble search) symbols — DisasterType, TriageStatus, DisasterConfig, DisasterResponse, ScanZone, Survivor, VitalSignsReading — from the compiled `_native` extension. They are compiled in only under the Rust `mat` (or `sota`) cargo feature; binary wheels omit it (ruvnet/RuView#1412), so importing wifi_densepose.mat from a wheel raises ImportError.","triggerScenarios":"`import wifi_densepose.mat` or `from wifi_densepose.mat import DisasterResponse` on a stock binary-wheel install of wifi-densepose.","commonSituations":"Building USAR/survivor-detection tooling on PyPI wheels; CI environments that never build the workspace; local dev on the wheel rather than the repo.","solutions":["Build from source with the feature: `maturin build --release --features mat` (or `--features sota`) and pip-install the wheel","Feature-detect with `hasattr(wifi_densepose._native, \"DisasterResponse\")` before importing the submodule and surface the build command","Track ruvnet/RuView#1412 for binary-wheel enablement of MAT"],"exampleFix":"# before\nfrom wifi_densepose.mat import DisasterResponse  # ImportError on wheels\n\n# after\nfrom wifi_densepose import _native\n\nif not hasattr(_native, \"DisasterResponse\"):\n    raise SystemExit(\"build with: maturin build --release --features mat\")\nfrom wifi_densepose.mat import DisasterResponse","handlingStrategy":"validation","validationCode":"from wifi_densepose import _native\n\nMAT_AVAILABLE = hasattr(_native, \"DisasterResponse\")\nif not MAT_AVAILABLE:\n    raise SystemExit(\"build with: maturin build --release --features mat\")\nfrom wifi_densepose.mat import DisasterResponse","typeGuard":null,"tryCatchPattern":"try:\n    from wifi_densepose import mat\nexcept ImportError as e:\n    if \"not in the binary wheels yet\" in str(e):\n        log.warning(\"MAT unavailable: build with --features mat\")\n        mat = None\n    else:\n        raise","preventionTips":["Feature-detect hasattr(_native, 'DisasterResponse') at startup rather than importing blind","Record the maturin feature list in deployment docs for MAT-using services","Track ruvnet/RuView#1412 so you can drop the source build when wheels ship MAT"],"tags":["python","rust","maturin","feature-flags","build","import","disaster-response"],"backgroundTag":null,"analyzedSha":"4685618388a5e49fad5b3005806f3bdd6a7c25c3","analyzedAt":"2026-08-16T06:09:40.886Z","schemaVersion":2},"datasetVersion":"2026-08-16T08:17:34.114Z"}