Reason
read_geotiff_dask (xrspatial/geotiff/__init__.py L2032) and its delayed helper _delayed_read_window (L2381) form a self-contained dask backend, together about 470 lines. With validators, attrs helpers, and sentinels already extracted, they make a clean lift.
Proposal
Move both to xrspatial/geotiff/_backends/dask.py. Re-export read_geotiff_dask from __init__.py. open_geotiff's dask-branch dispatch picks up the new import path. The 16+ existing dask tests plus the #1813 parity matrix backstop the move.
Refs: #1813.
Reason
read_geotiff_dask(xrspatial/geotiff/__init__.pyL2032) and its delayed helper_delayed_read_window(L2381) form a self-contained dask backend, together about 470 lines. With validators, attrs helpers, and sentinels already extracted, they make a clean lift.Proposal
Move both to
xrspatial/geotiff/_backends/dask.py. Re-exportread_geotiff_daskfrom__init__.py.open_geotiff's dask-branch dispatch picks up the new import path. The 16+ existing dask tests plus the #1813 parity matrix backstop the move.Refs: #1813.