xarray-spatial 0.10.3__tar.gz → 0.10.4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (548) hide show
  1. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/.claude/sweep-accuracy-state.csv +1 -0
  2. {xarray_spatial-0.10.3/.codex → xarray_spatial-0.10.4/.claude}/sweep-performance-state.csv +2 -0
  3. {xarray_spatial-0.10.3/.codex → xarray_spatial-0.10.4/.claude}/sweep-security-state.csv +1 -0
  4. {xarray_spatial-0.10.3/.codex → xarray_spatial-0.10.4/.claude}/sweep-style-state.csv +3 -2
  5. xarray_spatial-0.10.4/.claude/sweep-test-coverage-state.csv +91 -0
  6. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/CHANGELOG.md +20 -0
  7. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/PKG-INFO +1 -1
  8. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xarray_spatial.egg-info/PKG-INFO +1 -1
  9. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xarray_spatial.egg-info/SOURCES.txt +1 -0
  10. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/_version.py +3 -3
  11. xarray_spatial-0.10.4/xrspatial/geotiff/tests/_geotiff_fixtures.py +118 -0
  12. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/unit/test_geotags.py +2 -82
  13. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/unit/test_metadata.py +4 -85
  14. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/interpolate/_kriging.py +26 -11
  15. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/interpolate/_spline.py +29 -8
  16. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/polygonize.py +2 -2
  17. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_interpolation.py +359 -0
  18. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_polygonize.py +0 -108
  19. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_polygonize_mask_dtype_coverage_2026_05_29.py +13 -15
  20. xarray_spatial-0.10.3/.claude/sweep-test-coverage-state.csv +0 -44
  21. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/.claude/commands/backend-parity.md +0 -0
  22. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/.claude/commands/bench.md +0 -0
  23. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/.claude/commands/dask-notebook.md +0 -0
  24. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/.claude/commands/deep-sweep.md +0 -0
  25. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/.claude/commands/efficiency-audit.md +0 -0
  26. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/.claude/commands/new-issues.md +0 -0
  27. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/.claude/commands/ready-to-merge.md +0 -0
  28. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/.claude/commands/release-major.md +0 -0
  29. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/.claude/commands/release-minor.md +0 -0
  30. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/.claude/commands/release-patch.md +0 -0
  31. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/.claude/commands/review-contributor-pr.md +0 -0
  32. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/.claude/commands/review-pr.md +0 -0
  33. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/.claude/commands/rockout.md +0 -0
  34. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/.claude/commands/sweep-accuracy.md +0 -0
  35. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/.claude/commands/sweep-api-consistency.md +0 -0
  36. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/.claude/commands/sweep-metadata.md +0 -0
  37. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/.claude/commands/sweep-performance.md +0 -0
  38. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/.claude/commands/sweep-security.md +0 -0
  39. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/.claude/commands/sweep-style.md +0 -0
  40. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/.claude/commands/sweep-test-coverage.md +0 -0
  41. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/.claude/commands/user-guide-notebook.md +0 -0
  42. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/.claude/commands/validate.md +0 -0
  43. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/.claude/sweep-api-consistency-state.csv +0 -0
  44. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/.claude/sweep-metadata-state.csv +0 -0
  45. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/.codex/commands/backend-parity.md +0 -0
  46. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/.codex/commands/bench.md +0 -0
  47. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/.codex/commands/dask-notebook.md +0 -0
  48. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/.codex/commands/deep-sweep.md +0 -0
  49. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/.codex/commands/efficiency-audit.md +0 -0
  50. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/.codex/commands/new-issues.md +0 -0
  51. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/.codex/commands/ready-to-merge.md +0 -0
  52. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/.codex/commands/release-major.md +0 -0
  53. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/.codex/commands/release-minor.md +0 -0
  54. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/.codex/commands/release-patch.md +0 -0
  55. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/.codex/commands/review-contributor-pr.md +0 -0
  56. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/.codex/commands/review-pr.md +0 -0
  57. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/.codex/commands/rockout.md +0 -0
  58. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/.codex/commands/sweep-accuracy.md +0 -0
  59. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/.codex/commands/sweep-api-consistency.md +0 -0
  60. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/.codex/commands/sweep-metadata.md +0 -0
  61. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/.codex/commands/sweep-performance.md +0 -0
  62. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/.codex/commands/sweep-security.md +0 -0
  63. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/.codex/commands/sweep-style.md +0 -0
  64. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/.codex/commands/sweep-test-coverage.md +0 -0
  65. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/.codex/commands/user-guide-notebook.md +0 -0
  66. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/.codex/commands/validate.md +0 -0
  67. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/.codex/sweep-accuracy-state.csv +0 -0
  68. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/.codex/sweep-api-consistency-state.csv +0 -0
  69. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/.codex/sweep-metadata-state.csv +0 -0
  70. {xarray_spatial-0.10.3/.claude → xarray_spatial-0.10.4/.codex}/sweep-performance-state.csv +0 -0
  71. {xarray_spatial-0.10.3/.claude → xarray_spatial-0.10.4/.codex}/sweep-security-state.csv +0 -0
  72. {xarray_spatial-0.10.3/.claude → xarray_spatial-0.10.4/.codex}/sweep-style-state.csv +0 -0
  73. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/.codex/sweep-test-coverage-state.csv +0 -0
  74. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/.efficiency-audit-baseline.json +0 -0
  75. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/.efficiency-audit-baseline.prev.json +0 -0
  76. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/.gitattributes +0 -0
  77. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  78. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/.github/ISSUE_TEMPLATE/feature-proposal.md +0 -0
  79. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/.github/ISSUE_TEMPLATE/new-contributor.md +0 -0
  80. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/.github/labeler.yml +0 -0
  81. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/.github/pull_request_template.md +0 -0
  82. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/.github/workflows/benchmarks.yml +0 -0
  83. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/.github/workflows/copilot-review.yml +0 -0
  84. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/.github/workflows/labeler.yml +0 -0
  85. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/.github/workflows/pypi-publish.yml +0 -0
  86. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/.github/workflows/test-cog-validator.yml +0 -0
  87. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/.github/workflows/test-geotiff-corpus.yml +0 -0
  88. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/.github/workflows/test.yml +0 -0
  89. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/.github/workflows/welcome-contributor.yml +0 -0
  90. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/.gitignore +0 -0
  91. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/.readthedocs.yml +0 -0
  92. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/AI_POLICY.md +0 -0
  93. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/CLAUDE.md +0 -0
  94. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/CODE_OF_CONDUCT.md +0 -0
  95. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/CONTRIBUTING.md +0 -0
  96. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/Citation-styles.md +0 -0
  97. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/LICENSE.txt +0 -0
  98. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/MANIFEST.in +0 -0
  99. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/README.md +0 -0
  100. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/RELEASE.md +0 -0
  101. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/codecov.yml +0 -0
  102. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/pyproject.toml +0 -0
  103. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/setup.cfg +0 -0
  104. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/setup.py +0 -0
  105. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xarray_spatial.egg-info/dependency_links.txt +0 -0
  106. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xarray_spatial.egg-info/entry_points.txt +0 -0
  107. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xarray_spatial.egg-info/not-zip-safe +0 -0
  108. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xarray_spatial.egg-info/requires.txt +0 -0
  109. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xarray_spatial.egg-info/top_level.txt +0 -0
  110. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/__init__.py +0 -0
  111. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/__main__.py +0 -0
  112. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/accessor.py +0 -0
  113. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/analytics.py +0 -0
  114. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/aspect.py +0 -0
  115. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/balanced_allocation.py +0 -0
  116. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/bilateral.py +0 -0
  117. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/bump.py +0 -0
  118. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/classify.py +0 -0
  119. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/contour.py +0 -0
  120. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/convolution.py +0 -0
  121. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/corridor.py +0 -0
  122. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/cost_distance.py +0 -0
  123. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/curvature.py +0 -0
  124. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/dasymetric.py +0 -0
  125. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/dataset_support.py +0 -0
  126. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/datasets/__init__.py +0 -0
  127. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/datasets/sentinel-2/blue_band.nc +0 -0
  128. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/datasets/sentinel-2/green_band.nc +0 -0
  129. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/datasets/sentinel-2/nir_band.nc +0 -0
  130. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/datasets/sentinel-2/red_band.nc +0 -0
  131. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/datasets/sentinel-2/swir1_band.nc +0 -0
  132. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/datasets/sentinel-2/swir2_band.nc +0 -0
  133. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/diagnostics.py +0 -0
  134. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/diffusion.py +0 -0
  135. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/edge_detection.py +0 -0
  136. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/emerging_hotspots.py +0 -0
  137. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/erosion.py +0 -0
  138. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/experimental/__init__.py +0 -0
  139. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/experimental/min_observable_height.py +0 -0
  140. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/fire.py +0 -0
  141. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/flood.py +0 -0
  142. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/focal.py +0 -0
  143. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geodesic.py +0 -0
  144. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/__init__.py +0 -0
  145. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/_attrs.py +0 -0
  146. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/_backends/__init__.py +0 -0
  147. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/_backends/_gpu_helpers.py +0 -0
  148. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/_backends/dask.py +0 -0
  149. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/_backends/gpu.py +0 -0
  150. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/_backends/vrt.py +0 -0
  151. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/_cog_http.py +0 -0
  152. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/_compression.py +0 -0
  153. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/_coords.py +0 -0
  154. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/_crs.py +0 -0
  155. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/_decode.py +0 -0
  156. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/_dtypes.py +0 -0
  157. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/_encode.py +0 -0
  158. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/_errors.py +0 -0
  159. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/_geotags.py +0 -0
  160. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/_gpu_decode.py +0 -0
  161. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/_header.py +0 -0
  162. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/_layout.py +0 -0
  163. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/_nodata.py +0 -0
  164. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/_overview.py +0 -0
  165. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/_overview_kernels.py +0 -0
  166. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/_reader.py +0 -0
  167. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/_runtime.py +0 -0
  168. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/_safe_xml.py +0 -0
  169. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/_sidecar.py +0 -0
  170. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/_sources.py +0 -0
  171. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/_validation.py +0 -0
  172. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/_vrt.py +0 -0
  173. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/_vrt_validation.py +0 -0
  174. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/_write_layout.py +0 -0
  175. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/_writer.py +0 -0
  176. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/_writers/__init__.py +0 -0
  177. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/_writers/eager.py +0 -0
  178. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/_writers/gpu.py +0 -0
  179. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/_writers/vrt.py +0 -0
  180. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/__init__.py +0 -0
  181. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/_helpers/__init__.py +0 -0
  182. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/_helpers/markers.py +0 -0
  183. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/_helpers/tiff_builders.py +0 -0
  184. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/_helpers/tiff_surgery.py +0 -0
  185. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/attrs/__init__.py +0 -0
  186. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/attrs/test_contract.py +0 -0
  187. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/bench_vs_rioxarray.py +0 -0
  188. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/conftest.py +0 -0
  189. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/golden_corpus/README.md +0 -0
  190. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/golden_corpus/__init__.py +0 -0
  191. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/golden_corpus/_marks.py +0 -0
  192. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/golden_corpus/_oracle.py +0 -0
  193. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/golden_corpus/fixtures/cog_internal_overview_uint16.tif +0 -0
  194. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/golden_corpus/fixtures/compression_deflate_predictor2_uint16.tif +0 -0
  195. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/golden_corpus/fixtures/compression_deflate_predictor3_float32.tif +0 -0
  196. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/golden_corpus/fixtures/compression_jpeg_uint8_ycbcr.tif +0 -0
  197. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/golden_corpus/fixtures/compression_lerc_float32.tif +0 -0
  198. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/golden_corpus/fixtures/compression_lzw_predictor2_int16.tif +0 -0
  199. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/golden_corpus/fixtures/compression_none_uint8.tif +0 -0
  200. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/golden_corpus/fixtures/crs_citation_only.tif +0 -0
  201. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/golden_corpus/fixtures/crs_epsg_3857.tif +0 -0
  202. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/golden_corpus/fixtures/crs_wkt_utm10n.tif +0 -0
  203. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/golden_corpus/fixtures/dtype_float32.tif +0 -0
  204. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/golden_corpus/fixtures/dtype_float64.tif +0 -0
  205. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/golden_corpus/fixtures/dtype_int16.tif +0 -0
  206. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/golden_corpus/fixtures/dtype_int32.tif +0 -0
  207. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/golden_corpus/fixtures/dtype_int8.tif +0 -0
  208. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/golden_corpus/fixtures/dtype_uint16.tif +0 -0
  209. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/golden_corpus/fixtures/dtype_uint32.tif +0 -0
  210. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/golden_corpus/fixtures/dtype_uint8.tif +0 -0
  211. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/golden_corpus/fixtures/extra_tags_uint16.tif +0 -0
  212. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/golden_corpus/fixtures/gdal_metadata_namespaced_uint16.tif +0 -0
  213. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/golden_corpus/fixtures/nodata_int_sentinel_uint16.tif +0 -0
  214. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/golden_corpus/fixtures/nodata_miniswhite_uint8.tif +0 -0
  215. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/golden_corpus/fixtures/nodata_nan_float32.tif +0 -0
  216. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/golden_corpus/fixtures/overview_external_ovr_uint16.tif +0 -0
  217. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/golden_corpus/fixtures/overview_external_ovr_uint16.tif.ovr +0 -0
  218. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/golden_corpus/fixtures/overview_internal_uint16.tif +0 -0
  219. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/golden_corpus/fixtures/planar_separate_uint8_rgb.tif +0 -0
  220. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/golden_corpus/fixtures/sparse_tiled_uint16.tif +0 -0
  221. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/golden_corpus/fixtures/stripped_be_uint16.tif +0 -0
  222. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/golden_corpus/fixtures/stripped_le_uint16.tif +0 -0
  223. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/golden_corpus/fixtures/tiled_be_uint16.tif +0 -0
  224. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/golden_corpus/fixtures/tiled_le_uint16.tif +0 -0
  225. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/golden_corpus/generate.py +0 -0
  226. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/golden_corpus/manifest.yaml +0 -0
  227. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/golden_corpus/test_compression.py +0 -0
  228. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/golden_corpus/test_corpus_determinism.py +0 -0
  229. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/golden_corpus/test_dask_gpu.py +0 -0
  230. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/golden_corpus/test_dask_numpy.py +0 -0
  231. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/golden_corpus/test_dtype_variants.py +0 -0
  232. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/golden_corpus/test_eager_numpy.py +0 -0
  233. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/golden_corpus/test_fsspec.py +0 -0
  234. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/golden_corpus/test_gpu.py +0 -0
  235. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/golden_corpus/test_http.py +0 -0
  236. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/golden_corpus/test_layout_endian.py +0 -0
  237. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/golden_corpus/test_manifest.py +0 -0
  238. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/golden_corpus/test_metadata_tags.py +0 -0
  239. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/golden_corpus/test_nodata_sentinels.py +0 -0
  240. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/golden_corpus/test_oracle.py +0 -0
  241. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/golden_corpus/test_overview_cog.py +0 -0
  242. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/golden_corpus/test_vrt.py +0 -0
  243. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/gpu/__init__.py +0 -0
  244. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/gpu/test_codec.py +0 -0
  245. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/gpu/test_kernels_and_kwargs.py +0 -0
  246. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/gpu/test_reader.py +0 -0
  247. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/gpu/test_writer.py +0 -0
  248. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/integration/__init__.py +0 -0
  249. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/integration/test_dask_pipeline.py +0 -0
  250. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/integration/test_gpu_pipeline.py +0 -0
  251. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/integration/test_http_sources.py +0 -0
  252. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/integration/test_sidecar.py +0 -0
  253. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/parity/__init__.py +0 -0
  254. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/parity/test_backend_matrix.py +0 -0
  255. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/parity/test_finalization.py +0 -0
  256. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/parity/test_pixel_equality.py +0 -0
  257. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/parity/test_reference.py +0 -0
  258. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/parity/test_signature_contract.py +0 -0
  259. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/read/__init__.py +0 -0
  260. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/read/test_basic.py +0 -0
  261. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/read/test_bbox_2555.py +0 -0
  262. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/read/test_bbox_vrt_2668.py +0 -0
  263. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/read/test_compression.py +0 -0
  264. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/read/test_coords.py +0 -0
  265. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/read/test_crs.py +0 -0
  266. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/read/test_dtypes.py +0 -0
  267. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/read/test_endianness.py +0 -0
  268. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/read/test_georef.py +0 -0
  269. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/read/test_nodata.py +0 -0
  270. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/read/test_overview.py +0 -0
  271. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/read/test_streaming.py +0 -0
  272. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/read/test_tiling.py +0 -0
  273. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/release_gates/__init__.py +0 -0
  274. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/release_gates/test_features.py +0 -0
  275. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/release_gates/test_stable_features.py +0 -0
  276. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/test_edge_cases.py +0 -0
  277. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/test_fuzz_hypothesis.py +0 -0
  278. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/test_polish.py +0 -0
  279. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/test_round_trip.py +0 -0
  280. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/test_security.py +0 -0
  281. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/test_shutdown_cleanup_2486.py +0 -0
  282. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/test_stable_only_bbox_ordering_2869.py +0 -0
  283. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/test_stable_only_remote_2821.py +0 -0
  284. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/unit/__init__.py +0 -0
  285. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/unit/test_codec_roundtrip.py +0 -0
  286. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/unit/test_compression.py +0 -0
  287. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/unit/test_header.py +0 -0
  288. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/unit/test_ifd.py +0 -0
  289. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/unit/test_input_validation.py +0 -0
  290. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/unit/test_photometric.py +0 -0
  291. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/unit/test_predictor.py +0 -0
  292. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/unit/test_safe_xml.py +0 -0
  293. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/unit/test_signatures.py +0 -0
  294. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/vrt/__init__.py +0 -0
  295. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/vrt/test_dtype_conversion.py +0 -0
  296. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/vrt/test_metadata.py +0 -0
  297. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/vrt/test_missing_sources.py +0 -0
  298. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/vrt/test_parity.py +0 -0
  299. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/vrt/test_source_opt_ins_2672.py +0 -0
  300. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/vrt/test_validation.py +0 -0
  301. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/vrt/test_window.py +0 -0
  302. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/write/__init__.py +0 -0
  303. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/write/test_basic.py +0 -0
  304. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/write/test_bigtiff.py +0 -0
  305. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/write/test_cog.py +0 -0
  306. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/write/test_crs.py +0 -0
  307. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/write/test_nodata.py +0 -0
  308. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/write/test_overview.py +0 -0
  309. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/write/test_streaming.py +0 -0
  310. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/geotiff/tests/write/test_vrt_atomic.py +0 -0
  311. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/glcm.py +0 -0
  312. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/gpu_rtx/__init__.py +0 -0
  313. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/gpu_rtx/_memory.py +0 -0
  314. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/gpu_rtx/cuda_utils.py +0 -0
  315. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/gpu_rtx/hillshade.py +0 -0
  316. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/gpu_rtx/mesh_utils.py +0 -0
  317. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/gpu_rtx/viewshed.py +0 -0
  318. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/hillshade.py +0 -0
  319. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/hydro/__init__.py +0 -0
  320. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/hydro/_boundary_store.py +0 -0
  321. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/hydro/basin_d8.py +0 -0
  322. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/hydro/fill_d8.py +0 -0
  323. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/hydro/flow_accumulation_d8.py +0 -0
  324. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/hydro/flow_accumulation_dinf.py +0 -0
  325. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/hydro/flow_accumulation_mfd.py +0 -0
  326. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/hydro/flow_direction_d8.py +0 -0
  327. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/hydro/flow_direction_dinf.py +0 -0
  328. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/hydro/flow_direction_mfd.py +0 -0
  329. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/hydro/flow_length_d8.py +0 -0
  330. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/hydro/flow_length_dinf.py +0 -0
  331. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/hydro/flow_length_mfd.py +0 -0
  332. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/hydro/flow_path_d8.py +0 -0
  333. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/hydro/flow_path_dinf.py +0 -0
  334. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/hydro/flow_path_mfd.py +0 -0
  335. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/hydro/hand_d8.py +0 -0
  336. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/hydro/hand_dinf.py +0 -0
  337. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/hydro/hand_mfd.py +0 -0
  338. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/hydro/sink_d8.py +0 -0
  339. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/hydro/snap_pour_point_d8.py +0 -0
  340. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/hydro/stream_link_d8.py +0 -0
  341. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/hydro/stream_link_dinf.py +0 -0
  342. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/hydro/stream_link_mfd.py +0 -0
  343. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/hydro/stream_order_d8.py +0 -0
  344. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/hydro/stream_order_dinf.py +0 -0
  345. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/hydro/stream_order_mfd.py +0 -0
  346. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/hydro/tests/__init__.py +0 -0
  347. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/hydro/tests/conftest.py +0 -0
  348. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/hydro/tests/test_basin_d8.py +0 -0
  349. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/hydro/tests/test_fill_d8.py +0 -0
  350. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/hydro/tests/test_flow_accumulation_d8.py +0 -0
  351. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/hydro/tests/test_flow_accumulation_dinf.py +0 -0
  352. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/hydro/tests/test_flow_accumulation_mfd.py +0 -0
  353. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/hydro/tests/test_flow_direction_d8.py +0 -0
  354. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/hydro/tests/test_flow_direction_dinf.py +0 -0
  355. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/hydro/tests/test_flow_direction_mfd.py +0 -0
  356. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/hydro/tests/test_flow_length_d8.py +0 -0
  357. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/hydro/tests/test_flow_length_dinf.py +0 -0
  358. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/hydro/tests/test_flow_length_mfd.py +0 -0
  359. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/hydro/tests/test_flow_path_d8.py +0 -0
  360. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/hydro/tests/test_flow_path_dinf.py +0 -0
  361. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/hydro/tests/test_flow_path_mfd.py +0 -0
  362. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/hydro/tests/test_hand_d8.py +0 -0
  363. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/hydro/tests/test_hand_dinf.py +0 -0
  364. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/hydro/tests/test_hand_mfd.py +0 -0
  365. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/hydro/tests/test_sink_d8.py +0 -0
  366. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/hydro/tests/test_snap_pour_point_d8.py +0 -0
  367. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/hydro/tests/test_stream_link_d8.py +0 -0
  368. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/hydro/tests/test_stream_link_dinf.py +0 -0
  369. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/hydro/tests/test_stream_link_mfd.py +0 -0
  370. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/hydro/tests/test_stream_order_d8.py +0 -0
  371. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/hydro/tests/test_stream_order_dinf.py +0 -0
  372. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/hydro/tests/test_stream_order_mfd.py +0 -0
  373. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/hydro/tests/test_twi_d8.py +0 -0
  374. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/hydro/tests/test_validate_cellsize.py +0 -0
  375. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/hydro/tests/test_validate_mfd_companion_shape.py +0 -0
  376. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/hydro/tests/test_validate_mfd_fractions.py +0 -0
  377. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/hydro/tests/test_validate_scalar_params.py +0 -0
  378. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/hydro/tests/test_validate_secondary_args.py +0 -0
  379. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/hydro/tests/test_watershed_d8.py +0 -0
  380. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/hydro/tests/test_watershed_dinf.py +0 -0
  381. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/hydro/tests/test_watershed_mfd.py +0 -0
  382. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/hydro/twi_d8.py +0 -0
  383. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/hydro/watershed_d8.py +0 -0
  384. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/hydro/watershed_dinf.py +0 -0
  385. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/hydro/watershed_mfd.py +0 -0
  386. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/interpolate/__init__.py +0 -0
  387. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/interpolate/_idw.py +0 -0
  388. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/interpolate/_validation.py +0 -0
  389. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/kde.py +0 -0
  390. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/mahalanobis.py +0 -0
  391. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/mcda/__init__.py +0 -0
  392. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/mcda/combine.py +0 -0
  393. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/mcda/constrain.py +0 -0
  394. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/mcda/sensitivity.py +0 -0
  395. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/mcda/standardize.py +0 -0
  396. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/mcda/weights.py +0 -0
  397. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/morphology.py +0 -0
  398. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/multispectral.py +0 -0
  399. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/normalize.py +0 -0
  400. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/pathfinding.py +0 -0
  401. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/perlin.py +0 -0
  402. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/polygon_clip.py +0 -0
  403. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/preview.py +0 -0
  404. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/proximity.py +0 -0
  405. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/rasterize.py +0 -0
  406. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/reproject/__init__.py +0 -0
  407. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/reproject/_crs_utils.py +0 -0
  408. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/reproject/_datum_grids.py +0 -0
  409. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/reproject/_grid.py +0 -0
  410. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/reproject/_interpolate.py +0 -0
  411. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/reproject/_itrf.py +0 -0
  412. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/reproject/_lite_crs.py +0 -0
  413. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/reproject/_merge.py +0 -0
  414. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/reproject/_projections.py +0 -0
  415. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/reproject/_projections_cuda.py +0 -0
  416. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/reproject/_transform.py +0 -0
  417. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/reproject/_vertical.py +0 -0
  418. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/reproject/grids/at_bev_AT_GIS_GRID.tif +0 -0
  419. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/reproject/grids/au_icsm_A66_National_13_09_01.tif +0 -0
  420. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/reproject/grids/be_ign_bd72lb72_etrs89lb08.tif +0 -0
  421. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/reproject/grids/ch_swisstopo_CHENyx06_ETRS.tif +0 -0
  422. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/reproject/grids/de_adv_BETA2007.tif +0 -0
  423. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/reproject/grids/es_ign_SPED2ETV2.tif +0 -0
  424. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/reproject/grids/nl_nsgi_rdcorr2018.tif +0 -0
  425. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/reproject/grids/pt_dgt_D73_ETRS89_geo.tif +0 -0
  426. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/reproject/grids/uk_os_OSTN15_NTv2_OSGBtoETRS.tif +0 -0
  427. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/reproject/grids/us_nga_egm96_15.tif +0 -0
  428. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/reproject/grids/us_noaa_alaska.tif +0 -0
  429. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/reproject/grids/us_noaa_conus.tif +0 -0
  430. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/reproject/grids/us_noaa_hawaii.tif +0 -0
  431. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/reproject/grids/us_noaa_nadcon5_nad27_nad83_1986_conus.tif +0 -0
  432. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/reproject/grids/us_noaa_prvi.tif +0 -0
  433. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/resample.py +0 -0
  434. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/sieve.py +0 -0
  435. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/sky_view_factor.py +0 -0
  436. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/slope.py +0 -0
  437. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/surface_distance.py +0 -0
  438. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/terrain.py +0 -0
  439. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/terrain_metrics.py +0 -0
  440. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/__init__.py +0 -0
  441. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/bench_reproject_vs_rioxarray.py +0 -0
  442. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/conftest.py +0 -0
  443. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/general_checks.py +0 -0
  444. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_accessor.py +0 -0
  445. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_analytics.py +0 -0
  446. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_aspect.py +0 -0
  447. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_balanced_allocation.py +0 -0
  448. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_bilateral.py +0 -0
  449. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_bump.py +0 -0
  450. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_classify.py +0 -0
  451. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_contour.py +0 -0
  452. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_convolution.py +0 -0
  453. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_corridor.py +0 -0
  454. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_cost_distance.py +0 -0
  455. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_curvature.py +0 -0
  456. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_dask_cupy_gaps.py +0 -0
  457. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_dask_laziness.py +0 -0
  458. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_dasymetric.py +0 -0
  459. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_dataset_support.py +0 -0
  460. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_datasets.py +0 -0
  461. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_diagnostics.py +0 -0
  462. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_diffusion.py +0 -0
  463. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_edge_detection.py +0 -0
  464. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_emerging_hotspots.py +0 -0
  465. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_erosion.py +0 -0
  466. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_fire.py +0 -0
  467. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_flood.py +0 -0
  468. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_focal.py +0 -0
  469. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_fused_overlap.py +0 -0
  470. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_geodesic_aspect.py +0 -0
  471. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_geodesic_slope.py +0 -0
  472. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_glcm.py +0 -0
  473. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_glcm_metric_order.py +0 -0
  474. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_gpu_rtx_has_rtx.py +0 -0
  475. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_gpu_rtx_memory.py +0 -0
  476. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_gpu_rtx_mesh.py +0 -0
  477. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_hillshade.py +0 -0
  478. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_hypsometric_integral.py +0 -0
  479. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_kde.py +0 -0
  480. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_lite_crs.py +0 -0
  481. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_mahalanobis.py +0 -0
  482. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_mcda.py +0 -0
  483. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_min_observable_height.py +0 -0
  484. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_morphology.py +0 -0
  485. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_morphology_derived.py +0 -0
  486. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_multi_overlap.py +0 -0
  487. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_multispectral.py +0 -0
  488. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_normalize.py +0 -0
  489. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_northness_eastness.py +0 -0
  490. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_optional_shapely.py +0 -0
  491. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_pathfinding.py +0 -0
  492. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_perlin.py +0 -0
  493. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_polygon_clip.py +0 -0
  494. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_polygonize_atol_rtol_backend_coverage_2026_05_27.py +0 -0
  495. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_polygonize_coverage_2026_05_19.py +0 -0
  496. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_polygonize_dask_row_batch_2608.py +0 -0
  497. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_polygonize_issue_2172.py +0 -0
  498. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_polygonize_issue_2583.py +0 -0
  499. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_polygonize_issue_2606.py +0 -0
  500. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_polygonize_issue_2666.py +0 -0
  501. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_preview.py +0 -0
  502. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_proximity.py +0 -0
  503. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_rasterize.py +0 -0
  504. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_rasterize_accuracy.py +0 -0
  505. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_rasterize_all_touched_supercover_2169.py +0 -0
  506. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_rasterize_coverage_2026_05_17.py +0 -0
  507. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_rasterize_coverage_2026_05_21.py +0 -0
  508. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_rasterize_coverage_2026_05_27.py +0 -0
  509. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_rasterize_coverage_2026_05_29.py +0 -0
  510. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_rasterize_descending_x_2568.py +0 -0
  511. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_rasterize_gpu_race_2167.py +0 -0
  512. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_rasterize_nan_int_fill_2504.py +0 -0
  513. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_rasterize_nan_propagation_2255.py +0 -0
  514. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_rasterize_partial_dims_2569.py +0 -0
  515. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_rasterize_props_hoist_2506.py +0 -0
  516. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_rasterize_resolution_exact_2573.py +0 -0
  517. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_rasterize_resolution_validation_2576.py +0 -0
  518. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_rasterize_signature_annot_2250.py +0 -0
  519. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_rasterize_signed_step_2566.py +0 -0
  520. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_rasterize_tile_props_slice_2020.py +0 -0
  521. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_rechunk_no_shuffle.py +0 -0
  522. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_reproject.py +0 -0
  523. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_reproject_coverage_2026_05_27.py +0 -0
  524. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_reproject_cupy_gate_2564.py +0 -0
  525. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_resample.py +0 -0
  526. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_resample_coverage_2026_05_27.py +0 -0
  527. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_resample_cupy_agg_fallback_2615.py +0 -0
  528. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_resample_input_validation_2574.py +0 -0
  529. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_resample_irregular_coords_2663.py +0 -0
  530. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_resample_signature_annot_2544.py +0 -0
  531. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_sieve.py +0 -0
  532. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_sieve_gdal_parity.py +0 -0
  533. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_sky_view_factor.py +0 -0
  534. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_slope.py +0 -0
  535. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_surface_distance.py +0 -0
  536. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_terrain.py +0 -0
  537. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_terrain_metrics.py +0 -0
  538. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_utils.py +0 -0
  539. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_validation.py +0 -0
  540. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_viewshed.py +0 -0
  541. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_visibility.py +0 -0
  542. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_zonal.py +0 -0
  543. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/tests/test_zonal_backend_coverage_2026_05_27.py +0 -0
  544. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/utils.py +0 -0
  545. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/viewshed.py +0 -0
  546. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/visibility.py +0 -0
  547. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/worley.py +0 -0
  548. {xarray_spatial-0.10.3 → xarray_spatial-0.10.4}/xrspatial/zonal.py +0 -0
@@ -17,6 +17,7 @@ geotiff,2026-05-15,1975,HIGH,1;2;5,"Pass 25 (2026-05-15): HIGH fixed -- issue #1
17
17
  glcm,2026-05-01,1408,HIGH,2,"angle=None averaged NaN as 0, masking no-valid-pairs as zero texture; fixed via nanmean-style averaging"
18
18
  hillshade,2026-04-10T12:00:00Z,,,,"Horn's method correct. All backends consistent. NaN propagation correct. float32 adequate for [0,1] output."
19
19
  hydro,2026-04-30,,LOW,1,Only LOW: twi log(0)=-inf if fa=0 (out-of-contract); MFD weighted sum no Kahan (negligible). No CRIT/HIGH issues.
20
+ interpolate-kriging,2026-06-04,2915,MEDIUM,1,"Cat1 nugget-on-diagonal bug (MEDIUM): _build_kriging_matrix set K[:n,:n]=vario_func(D) where D has 0 diagonal, so vario_func(0)=nugget c0 landed on the matrix diagonal; semivariogram gamma(0)=0 by definition (nugget is the h->0+ limit). Forced exact interpolation of noisy data and biased kriging variance downward. Only bites when fitted nugget>0; existing trend-dominated test data fits ~0 nugget so tests passed. Fix #2915/PR #2922: np.fill_diagonal(G,0.0) in shared host code (all 4 backends consume same K_inv). Cats 2-5 clean: validate_points drops NaN/Inf rows; range floor 1e-12 prevents div blowup; dask map_blocks slices grid coords with correct half-open extents and returns matching block shape (kriging is global, no overlap needed); planar Euclidean distance is expected for kriging (Cat4 n/a); numpy/cupy/dask share one algorithm and parity tests pass rtol=1e-10. CUDA available; all 16 kriging tests pass incl cupy + dask+cupy. Singular-matrix path adds 1e-10*eye Tikhonov term (separate from nugget, unaffected, correct)."
20
21
  kde,2026-04-13T12:00:00Z,1198,,,kde/line_density return zeros for descending-y templates. Fix in PR #1199.
21
22
  mahalanobis,2026-05-01,,LOW,1,"LOW: np.linalg.inv (no pinv fallback) returns garbage for near-singular cov without raising. LOW: two-pass mean/cov instead of Welford could lose precision for inputs with very large mean/small variance. No CRIT/HIGH; all four backends use float64 throughout, NaN handled via isfinite, dist_sq clamped non-negative, singular case raises ValueError."
22
23
  morphology,2026-04-30,"1397,1399",HIGH,2;5,HIGH fixed in #1397/PR #1398: morph_erode/dilate seeded centre cell into running min/max even when kernel[centre]==0 (all 4 backends). HIGH fixed in #1399/PR #1400: dask backends raised on 1xN/Nx1 kernels because empty-slice writeback (0:-0).
@@ -22,6 +22,8 @@ geotiff,2026-05-20,SAFE,IO-bound,0,2212,"Pass 13 (2026-05-20): 1 MEDIUM found an
22
22
  glcm,2026-03-31T18:00:00Z,SAFE,compute-bound,0,,"Downgraded to MEDIUM. da.stack without rechunk is scheduling overhead, not OOM risk."
23
23
  hillshade,2026-04-16T12:00:00Z,SAFE,compute-bound,0,,"Re-audit after Horn's method rewrite (PR 1175): clean stencil, map_overlap depth=(1,1), no materialization. Zero findings."
24
24
  hydro,2026-05-01,RISKY,memory-bound,0,1416,"Fixed-in-tree 2026-05-01: hand_mfd._hand_mfd_dask now assembles via da.map_blocks instead of eager da.block of pre-computed tiles (matches hand_dinf pattern). Remaining MEDIUM: sink_d8 CCL fully materializes labels (inherently global), flow_accumulation_mfd frac_bdry held in driver dict instead of memmap-backed BoundaryStore. D8 iterative paths (flow_accum/fill/watershed/basin/stream_*) use serial-tile sweep with memmap-backed boundary store -- per-tile RAM bounded but driver iterates O(diameter) times. flow_direction_*, flow_path/snap_pour_point/twi/hand_d8/hand_dinf are SAFE."
25
+ interpolate_spline,2026-06-04,SAFE,compute-bound,0,,"scope=spline-only. Audited _spline.py + _validation.py only (not _idw/_kriging). 1 MEDIUM (Cat3 GPU transfer): _spline_dask_cupy/_spline_cupy re-uploaded invariant x_pts/y_pts/weights host->device once per chunk. Fixed in PR #2929: added _tps_evaluate_gpu taking on-device point/weight arrays + only per-chunk grid slices; dask+cupy uploads invariants once at graph build (verified 48->3 on 16 chunks, scales with chunk count). numpy/cupy/dask+cupy parity ~1e-14. Added cupy+dask+cupy parity tests and an upload-count regression test (red without fix: 48!=3). _tps_cuda_kernel 30 regs/thread, 6 scalar locals -- no register pressure. CPU/dask+numpy eval @ngjit, row-major, no materialization. Dask graph probe 2560x2560/256 chunks = 200 tasks (2/chunk), no fan-in. Memory guard _check_spline_memory bounds N^2 solve. No issue filed -- gh issue create denied by auto-mode classifier; finding surfaced directly by sweep. GitHub issue field left empty."
26
+ interpolate-kriging,2026-06-04,SAFE,graph-bound,0,2923,"MEDIUM: memory guard used full-grid k0 term on dask templates -> spurious MemoryError (issue #2923, fixed). LOW: _experimental_variogram nlags python loop vectorizable via bincount (~1.2x, pair-array materialization dominates) - doc only. Dask graph clean (2 tasks/chunk); cupy returns device arrays; no .values/.compute/.data.get materialization."
25
27
  kde,2026-04-14T12:00:00Z,SAFE,compute-bound,0,,Graph construction serialized per-tile. _filter_points_to_tile scans all points per tile. No HIGH findings.
26
28
  mahalanobis,2026-03-31T18:00:00Z,SAFE,compute-bound,0,,False positive. Numpy path materializes by design. Dask path uses lazy reductions + map_blocks.
27
29
  morphology,2026-03-31T18:00:00Z,SAFE,compute-bound,0,,
@@ -23,6 +23,7 @@ glcm,2026-04-24,1257,HIGH,1,,"HIGH (fixed #1257): glcm_texture() validated windo
23
23
  gpu_rtx,2026-04-29,1308,HIGH,1,,"HIGH (fixed #1308 / PR #1310): hillshade_rtx (gpu_rtx/hillshade.py:184) and viewshed_gpu (gpu_rtx/viewshed.py:269) allocated cupy device buffers sized by raster shape with no memory check. create_triangulation (mesh_utils.py:23-24) adds verts (12 B/px) + triangles (24 B/px) = 36 B/px; hillshade_rtx adds d_rays(32) + d_hits(16) + d_aux(12) + d_output(4) = 64 B/px (100 B/px total); viewshed_gpu adds d_rays(32) + d_hits(16) + d_visgrid(4) + d_vsrays(32) = 84 B/px (120 B/px total). A 30000x30000 raster asked for 90-108 GB of VRAM before cupy surfaced an opaque allocator error. Fixed by adding gpu_rtx/_memory.py with _available_gpu_memory_bytes() and _check_gpu_memory(func_name, h, w) helpers (cost_distance #1262 / sky_view_factor #1299 pattern, 120 B/px budget covers worst case, raises MemoryError when required > 50% of free VRAM, skips silently when memGetInfo() unavailable). Wired into both entry points after the cupy.ndarray type check and before create_triangulation. 9 new tests in test_gpu_rtx_memory.py (5 helper-unit + 4 end-to-end gated on has_rtx). All 81 existing hillshade/viewshed tests still pass. Cat 4 clean: all CUDA kernels (hillshade.py:25/62/106, viewshed.py:32/74/116, mesh_utils.py:50) have bounds guards; no shared memory, no syncthreads needed. MEDIUM not fixed (Cat 6): hillshade_rtx and viewshed_gpu do not call _validate_raster directly but parent hillshade() (hillshade.py:252) and viewshed() (viewshed.py:1707) already validate, so input validation runs before the gpu_rtx entry point - defense-in-depth, not exploitable. MEDIUM not fixed (Cat 2): mesh_utils.py:64-68 cast mesh_map_index to int32 in the triangle index buffer; overflows at H*W > 2.1B vertices (~46341x46341+) but the new memory guard rejects rasters that large first - documentation/clarity item rather than exploitable. MEDIUM not fixed (Cat 3): mesh_utils.py:19 scale = maxDim / maxH divides by zero on an all-zero raster, propagating inf/NaN into mesh vertex z-coords; separate follow-up. LOW not fixed (Cat 5): mesh_utils.write() opens user-supplied path without canonicalization but its only call site (mesh_utils.py:38-39) sits behind if False: in create_triangulation, not reachable in production."
24
24
  hillshade,2026-04-27,,,,,"Clean. Cat 1: only allocation is the output np.empty(data.shape) at line 32 (cupy at line 165) and a _pad_array with hardcoded depth=1 (line 62) -- bounded by caller, no user-controlled amplifier. Azimuth/altitude are scalars and don't drive size. Cat 2: numba kernel uses range(1, rows-1) with simple (y, x) indexing; numba range loops promote to int64. Cat 3: math.sqrt(1.0 + xx_plus_yy) is always >= 1.0 (no neg sqrt, no div-by-zero); NaN elevation propagates correctly through dz_dx/dz_dy -> shaded -> output (the shaded < 0.0 / shaded > 1.0 clamps don't fire on NaN). Azimuth validated to [0, 360], altitude to [0, 90]. Cat 4: _gpu_calc_numba (line 107) guards both grid bounds and 3x3 stencil reads via i > 0 and i < shape[0]-1 and j > 0 and j < shape[1]-1; no shared memory. Cat 5: no file I/O. Cat 6: hillshade() calls _validate_raster (line 252) and _validate_scalar for both azimuth (253) and angle_altitude (254); all four backend paths cast to float32; tests parametrize int32/int64/float32/float64."
25
25
  hydro,2026-05-03,1423;1425;1427;1429,HIGH,1;3;6,,"Re-audit 2026-05-03. ALL HIGH and MEDIUM findings fixed across 4 PRs. HIGH (Cat 1) fixed in PR #1424: flow_direction_mfd numpy/cupy memory guard ports _check_memory / _check_gpu_memory from flow_accumulation_mfd. MEDIUM Cat 6 fixed in PR #1426: secondary DataArray args validated across watershed_*/snap_pour_point_d8/flow_path_*/stream_link_*/stream_order_*. MEDIUM Cat 3 scalars fixed in PR #1428: flow_direction_mfd p (finite>0), snap_pour_point_d8 search_radius (positive int), hand_*/threshold (finite), fill_d8 z_limit (non-negative finite or None). MEDIUM Cat 3 cellsize fixed in PR #1430: twi_d8/flow_direction_d8/_dinf/_mfd/flow_length_d8/_dinf/_mfd validate cellsize finite-and-non-zero before division. No remaining findings."
26
+ interpolate-kriging,2026-06-04,2917,MEDIUM,3;6,,"Audited _kriging.py (515 LOC) + _validation.py + __init__.py + tests. Cat 1 (alloc): _check_kriging_memory() guards variogram pair arrays, (N+1)x(N+1) matrix, and (grid_pixels,N+1) k0 against 0.8*host RAM; well-tested. LOW gap: cupy path allocates k0 on GPU but guard reads host /proc/meminfo not GPU mem, so large cupy templates can hit cupy OutOfMemoryError (loud, not silent) -- not fixed. Cat 2 (int overflow): memory math uses Python ints (bigint), triu_indices int64; no int32 overflow. Cat 3 (NaN/Inf): singular matrix caught, regularised, then returns None -> all-NaN raster (explicit). variogram divisors bounded a>=1e-12. Cat 4: no CUDA kernels. Cat 5: no file I/O. Cat 6: validate_points coerces float64+drops NaN; _validate_raster on template. FOUND (MEDIUM, fixed): single-point input (n=1 or all-but-one NaN) crashed with opaque numpy 'zero-size array to reduction' ValueError in _experimental_variogram (dists.max() before max_dist guard). Fixed via issue #2917 / PR #2924. CUDA_AVAILABLE=true; cupy/dask+cupy parity tests pass."
26
27
  kde,2026-04-27,1287,HIGH,1,,"HIGH (fixed #1287): kde() and line_density() accepted user-controlled width/height with no upper bound. The eager numpy and cupy backends allocated np.zeros((height, width), dtype=float64) (or cupy.zeros) up front (kde.py: _run_kde_numpy line 308, _run_kde_cupy line 314, line_density inline at line 706). width=1_000_000, height=1_000_000 requested ~8 TB of float64 (or VRAM on the GPU path) before any check ran. Fixed by adding local _available_memory_bytes() helper (mirrors convolution/morphology/bump pattern) and _check_grid_memory(rows, cols) that raises MemoryError when rows*cols*8 exceeds 50% of available RAM. Wired into kde() (skipped for dask paths since _run_kde_dask_numpy/_run_kde_dask_cupy build per-tile via da.from_delayed and are bounded by chunk size) and line_density() (single numpy backend, always guarded). Error message names width/height so the caller knows which knob to turn. No other HIGH findings: Cat 2 (no int32 flat-index math, numba range loops are int64), Cat 3 (bandwidth <= 0 rejected, Silverman fallback returns 1.0 when sigma==0, NaN coords clamp to empty range via min/max), Cat 4 (_kde_cuda has 'if r >= rows or c >= cols: return' bounds guard at line 254, no shared memory, each thread writes own pixel), Cat 5 (no file I/O), Cat 6 (template only used for shape/coords, output dtype forced to float64). MEDIUM (unfixed, Cat 6): _validate_template only checks DataArray + ndim; does not call _validate_raster, but template dtype does not affect compute correctness here."
27
28
  mahalanobis,2026-04-27,1288,HIGH,1,,"HIGH (fixed #1288): mahalanobis() had no memory guard. Both _compute_stats_numpy/_compute_stats_cupy and _mahalanobis_pixel_numpy/_mahalanobis_pixel_cupy materialise float64 buffers of shape (n_bands, H*W) -- the np.stack at line 45/80, the reshape+transpose at line 184 (which forces a contiguous BLAS copy), the centered diff, and the diff @ inv_cov result are all live at peak. A 100kx100k 5-band raster projected to ~400 GB of host memory just for the stack. Fixed by adding _available_memory_bytes()/_available_gpu_memory_bytes() (mirroring cost_distance.py:261-292) plus _check_memory/_check_gpu_memory at 32 bytes/cell/band budget, and wiring them into the public mahalanobis() entry point before any np.stack runs. Eager paths (numpy, cupy) are guarded; dask paths skip the check because chunks are bounded by user-supplied chunksize. MEDIUM (unfixed, Cat 6): mahalanobis() does not call _validate_raster on each band -- validate_arrays only enforces matching shape and array-type, so boolean / non-numeric DataArrays silently coerce. Deferred to a separate PR per the security-sweep one-fix-per-PR policy. No other HIGH findings: Cat 2 (no int32 indexing, numpy default int64), Cat 3 (singular covariance raises a clean ValueError, dist_sq is clamped to 0 before sqrt to absorb numerical noise, NaN mask propagates correctly), Cat 4 (no CUDA kernels), Cat 5 (no file I/O beyond /proc/meminfo)."
28
29
  mcda,2026-04-29,1311,HIGH,3,,Cat 3: NaN/Inf weights silently pass _validate_weights (combine.py:35-39) and owa order_weights check (combine.py:154-158) because abs(NaN-1.0) > 0.01 is False; produces all-NaN raster. Same shape of bug in ahp_weights (weights.py:94) where val<=0 lets NaN slip past. Fixed in #1311 with explicit np.isfinite checks. MEDIUM Cat 1 noted: sensitivity._monte_carlo eagerly computes full dask Dataset; combine.owa stacks all criteria via xr.concat without size guard. MEDIUM Cat 3 noted: sensitivity n_samples=0 divides by zero; wpm permits zero-base/negative-weight without bounds check. No CUDA kernels (Cat 4 N/A); no file I/O (Cat 5 N/A); no int32 index math (Cat 2 N/A).
@@ -1,13 +1,14 @@
1
1
  module,last_inspected,issue,severity_max,categories_found,notes
2
- focal,2026-05-29,2731,HIGH,3;4;5,"F401 not_implemented_func (import line 36, unused, not re-exported). isort: stdlib reorder (import math before from-imports), dropped stray blank lines in import groups, alphabetised+rewrapped convolution/utils from-imports, moved dataset_support import into order. Cat 5: mutable default excludes=[np.nan] in mean() (line 238) -> None sentinel, resolved to [np.nan] in body; never mutated so behaviour preserved; regression test test_mean_default_excludes_does_not_leak added. Cat 1/2 clean. 115 focal tests pass. PR pending."
3
2
  aspect,2026-05-29,2683,MEDIUM,1,E402+E305 line 38: from xrspatial.geodesic import block sat below _geodesic_cuda_dims; moved up with top-of-file imports. E501 lines 219/263: wrapped two _run_gpu_geodesic_aspect kernel-launch calls (101/109 chars). Cat 4 isort reviewed but NOT applied: slope.py/curvature.py use one-import-per-line for xrspatial.utils so raw isort would make aspect inconsistent. Cat 2/3/5 grep clean. PR #2740. 82 aspect+geodesic tests pass.
4
3
  contour,2026-05-29,2698,HIGH,3,"F821 line 557: contours() return annotation ""gpd.GeoDataFrame"" referenced gpd not bound at module scope (only imported inside _to_geopandas). Fixed via TYPE_CHECKING-guarded import geopandas as gpd, matching polygonize.py. No runtime change; geopandas stays optional. isort clean. Cat 1/2/4/5 clean. 24 contour tests pass. PR open."
4
+ focal,2026-05-29,2731,HIGH,3;4;5,"F401 not_implemented_func (import line 36, unused, not re-exported). isort: stdlib reorder (import math before from-imports), dropped stray blank lines in import groups, alphabetised+rewrapped convolution/utils from-imports, moved dataset_support import into order. Cat 5: mutable default excludes=[np.nan] in mean() (line 238) -> None sentinel, resolved to [np.nan] in body; never mutated so behaviour preserved; regression test test_mean_default_excludes_does_not_leak added. Cat 1/2 clean. 115 focal tests pass. PR pending."
5
5
  geotiff,2026-05-27,2481,HIGH,1;3;4,"Bundled 387 flake8 + ~30 isort fixes since #2285/#2430. F401 x9, F811 x6, F841 x3. E501 x250 (mostly wrapped, 3 file-scope imports keep noqa: E402+E501). E252 x62, blank-line cluster, E128/E127 indents. importorskip imports use # noqa: E402. Cat 5 grep clean."
6
6
  hydro-d8,2026-05-29,2705,HIGH,1;3;4,"flake8+isort over the 13 D8 files only (dinf/mfd out of scope). Cat 3 HIGH: F401 x2 (flow_length_d8 function-local _compute_accum_seeds never called; snap_pour_point_d8 module-level cuda_args unused) - both confirmed dead, no re-export. Cat 1: E127/E128 continuation-indent x90 (mostly multi-line def signatures); E302/E303 blank-line cluster in watershed_d8; E501 x4 (flow_path_d8 + snap_pour_point_d8, wrapped ternaries). Cat 4: isort import-block reordering on all 13 files. No Cat 2 (W-codes), no Cat 5 (grep clean: no bare except, mutable defaults, ==None/==True, or shadowed builtins). flake8+isort clean after fix; 385 D8 tests pass. flow_direction_d8 needed manual blank-line placement to satisfy both isort and E302."
7
+ interpolate-kriging,2026-06-04,2916,MEDIUM,1;4,"flake8 E128 x2: continuation-line under-indent at the _chunk_var kriging-predict calls in _kriging_dask_numpy (L234) and _kriging_dask_cupy (L324); re-indented to visual-indent column. Cat 4 isort: 5-line from xrspatial.utils (...) block collapses to one 88-char line under line_length=100. Cat 2/3/5 grep clean (no W-codes, F-codes, bare except, mutable defaults, ==None/True, or shadowed builtins). flake8+isort clean after fix; 14 kriging tests pass. PR open."
7
8
  polygonize,2026-05-27,2534,HIGH,1;3;4,"F401 line 58 (is_cupy_array unused, not re-exported). E127 lines 83/88 (overload continuation indent in generated_jit). isort: 5-line .utils import block collapses to one line at 100-char limit. Cat 2 clean. Cat 5 grep clean."
8
9
  proximity,2026-05-29,2725,HIGH,1;3;4;5,"F841 line 1274 original_chunks dead local in unbounded dask+cupy branch (refactor leftover). Cat 5 mutable default target_values: list = [] in proximity/allocation/direction -> None sentinel, normalized to [] in body (never mutated, behaviour preserved). E128 line 291 np.where continuation under-indent in _vectorized_calc_direction. isort: re-sorted xrspatial import block + blank line after inline import cupy as cp. flake8+isort clean after fix; 69 proximity tests pass + new parametrized regression test. Pre-existing E127 (test_proximity.py 726/752) + test-file isort drift left untouched (out of module scope)."
9
10
  rasterize,2026-05-27,2503,HIGH,1;3,F401 line 15 + F811 line 1193 (paired: local import warnings shadowed unused module-level import); E306 line 1775 (nested @cuda.jit). isort clean. Cat 5 grep clean. Fix in PR #2507.
10
11
  resample,2026-05-27,2543,MEDIUM,4,isort drift only: 4 multi-line parenthesised imports collapsed to single/one-per-line under line_length=100 (top-of-file scipy.ndimage + xrspatial.utils; local cupyx imports in _nan_aware_interp_cupy and _interp_block_cupy); two blank-line nits after import math in _run_dask_numpy/_run_dask_cupy. flake8 clean. Cat 5 grep clean. 169 resample tests pass.
11
- viewshed,2026-05-29,2690,HIGH,1;4;5,"flake8 E127 x2 (L2013-2014 _viewshed_distance_sweep sig); isort .utils import reflow; shadowed builtin id->node_id (L1409,1474). Fixed via /rockout PR. No behavioural change."
12
12
  slope,2026-05-29,2685,HIGH,1;3;4,"F401 line 26 (VALID_BOUNDARY_MODES unused, not re-exported). E402+E305 line 48 (geodesic import block sat after _geodesic_cuda_dims; moved up to top-of-file imports). E501 line 260 (cupy kernel launch, 108 chars) wrapped. isort: consolidated/regrouped xrspatial imports (dataset_support, geodesic, utils). Cat 2 clean. Cat 5 grep clean. 41 slope + 21 geodesic_slope tests pass."
13
+ viewshed,2026-05-29,2690,HIGH,1;4;5,"flake8 E127 x2 (L2013-2014 _viewshed_distance_sweep sig); isort .utils import reflow; shadowed builtin id->node_id (L1409,1474). Fixed via /rockout PR. No behavioural change."
13
14
  zonal,2026-05-27,2522,HIGH,1;3;4,"F401 not_implemented_func (line 42, only present on import line). E501 line 455 (dd.concat one-liner, 117 chars) wrapped across 3 lines. isort: consolidated xrspatial.utils block (merged has_dask_array, dropped not_implemented_func, alphabetised, trimmed extra blank line). Cat 5 grep clean. 125 zonal tests pass."