focal.hotspots() registers a dask_cupy_func (_hotspots_dask_cupy) in its dispatch table, but nothing in test_focal.py calls it. mean, apply, and focal_stats each have a dedicated dask+cupy test. hotspots is the only one without one, so a bug in its fused convolve/z-score/classify path on dask+cupy could ship unnoticed.
This is a test-only gap. I ran the path on a CUDA host and it currently matches the numpy reference exactly, so no source change is needed.
Found by the test-coverage sweep.
focal.hotspots() registers a dask_cupy_func (
_hotspots_dask_cupy) in its dispatch table, but nothing in test_focal.py calls it. mean, apply, and focal_stats each have a dedicated dask+cupy test. hotspots is the only one without one, so a bug in its fused convolve/z-score/classify path on dask+cupy could ship unnoticed.This is a test-only gap. I ran the path on a CUDA host and it currently matches the numpy reference exactly, so no source change is needed.
Found by the test-coverage sweep.