Skip to content

mcda: no cupy/dask+cupy test coverage; owa/wpm/constrain dask paths and metadata preservation untested #3149

@brendancol

Description

@brendancol

test_mcda.py has 175 tests, and every one of them exercises the numpy or dask+numpy path. Gaps found while auditing xrspatial/mcda for the test-coverage sweep:

No cupy or dask+cupy tests. standardize.py has explicit cupy branches (_get_xp, cupy chunk handling in _interp_block / _apply_mapping) and combine.py has a dedicated cupy branch in _sort_descending, but no test constructs a cupy-backed DataArray. Running the GPU paths by hand: most work (standardize linear/sigmoidal/gaussian/triangular/categorical, wlc, wpm, fuzzy_overlay, OAT sensitivity), several raise (#3146 covers those bugs).

owa has no dask test. The dask branch of _sort_descending calls da.sort, which doesn't exist in dask.array, so owa raises AttributeError on any dask-backed input. The bug shipped because nothing exercises the path (filed in #3146). Tests should land as xfail until that's fixed.

Other dask+numpy paths untested: wpm (its positivity check has a dask branch using da.nanmin), constrain, fuzzy_overlay's gamma operator, boolean_overlay.

No metadata preservation tests. Nothing asserts that attrs (res/crs), coords, or dim names survive standardize/combine/constrain. Current behavior is correct (checked by hand) but unguarded.

Edge cases: all-NaN criterion through wpm's positivity check and Inf propagation through wlc are untested.

Plan: a test-only PR adding cross-backend parity tests via the general_checks.py helpers, xfail tests for the paths broken by #3146, and metadata preservation tests. No source changes.

Found by the test-coverage sweep. Severity per the sweep rubric: HIGH (backend coverage), MEDIUM (metadata, edge cases).

Metadata

Metadata

Assignees

No one assigned

    Labels

    backend-coverageAdding missing dask/cupy/dask+cupy backend supportgpuCuPy / CUDA GPU supportsweep-test-coverageFound by /sweep-test-coveragetestsTest coverage and parity

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions