Reason
The dependency graph at img/dependencies.dot (rendered to dependencies.svg and dependencies.png, shown in the README) is out of date. It still shows datashader, holoviews, rasterio, GDAL, GEOS, fiona, rtree, libspatialindex, and a shapely-via-fiona chain. None of those are runtime dependencies anymore:
xrspatial/ does not import datashader, holoviews, or rioxarray in the main package. datashader only appears in the examples extra.
- The README advertises "Free of GDAL / GEOS Dependencies" and ships its own GeoTIFF/COG reader and writer.
- The required dep set per
setup.cfg is numba, scipy, xarray, numpy, matplotlib, zstandard.
- New optional runtime deps are missing from the chart: kvikio (GPUDirect Storage tile reads) and nvCOMP (GPU decompression), both lazily loaded in
xrspatial/geotiff/_gpu_decode.py.
Proposal
Rewrite img/dependencies.dot and re-render dependencies.svg and dependencies.png so the README image reflects what the project actually depends on.
Required (green, solid edges) — six entries from install_requires:
- numpy, xarray, numba, scipy, matplotlib, zstandard
Optional (yellow, dashed edges) — from [options.extras_require] and lazy imports:
- GPU compute: cupy, cuspatial, rtxpy
- GPU I/O acceleration: kvikio, nvcomp
- Distributed: dask, dask-geopandas
- Vector geometry: shapely, geopandas, awkward, spatialpandas
- Reprojection: pyproj
- GeoTIFF compression: deflate
Removed from the chart:
- datashader, holoviews (only in
examples extra)
- rasterio, rioxarray, GDAL (replaced by built-in GeoTIFF reader/writer)
- GEOS, fiona, rtree, libspatialindex (no longer in the stack)
- pandas (transitive only; not used directly by xrspatial)
Flat layout — no Graphviz clusters, dashed edges from xarray_spatial to each optional, matching the style of the current diagram.
Value
The chart in the README is one of the first things a new contributor or user reads. Showing nodes that are not actually in the dep tree is misleading and contradicts the "Free of GDAL / GEOS" claim a few lines below it.
Files to Touch
img/dependencies.dot
img/dependencies.svg
img/dependencies.png
Reason
The dependency graph at
img/dependencies.dot(rendered todependencies.svganddependencies.png, shown in the README) is out of date. It still shows datashader, holoviews, rasterio, GDAL, GEOS, fiona, rtree, libspatialindex, and a shapely-via-fiona chain. None of those are runtime dependencies anymore:xrspatial/does not import datashader, holoviews, or rioxarray in the main package. datashader only appears in theexamplesextra.setup.cfgisnumba, scipy, xarray, numpy, matplotlib, zstandard.xrspatial/geotiff/_gpu_decode.py.Proposal
Rewrite
img/dependencies.dotand re-renderdependencies.svganddependencies.pngso the README image reflects what the project actually depends on.Required (green, solid edges) — six entries from
install_requires:Optional (yellow, dashed edges) — from
[options.extras_require]and lazy imports:Removed from the chart:
examplesextra)Flat layout — no Graphviz clusters, dashed edges from
xarray_spatialto each optional, matching the style of the current diagram.Value
The chart in the README is one of the first things a new contributor or user reads. Showing nodes that are not actually in the dep tree is misleading and contradicts the "Free of GDAL / GEOS" claim a few lines below it.
Files to Touch
img/dependencies.dotimg/dependencies.svgimg/dependencies.png