From d90461d85b059c15d8373316aafbe2f3aaebd590 Mon Sep 17 00:00:00 2001 From: Brendan Collins Date: Tue, 5 May 2026 12:23:39 -0700 Subject: [PATCH] Update CHANGELOG for v0.9.9 release --- CHANGELOG.md | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c390afab..0cc2b4ec 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,71 @@ ----------- +### Version 0.9.9 - 2026-05-05 + +#### Bug fixes and improvements +- Add geotiff edge-case tests and integer-coord fallback (#1482) (#1492) +- Use synchronous dask scheduler for different-CRS merge parity test (#1495) +- Fetch COG tiles concurrently in HTTP path to mask RTT (#1487) +- Geotiff polish: validation, caching caps, parallelism thresholds, memory guards (#1488) (#1493) +- Round-trip transform, crs, and tag metadata through to_geotiff/open_geotiff (#1484) (#1494) +- Tighten geotiff reader: partial-tile shape check, ModelTransformation rotation guard (#1486) (#1491) +- Add geotiff writer test matrix (#1483) (#1490) +- Stream tile writes per dask chunk segment to bound peak memory in to_geotiff (#1485) (#1489) +- Add regression test for GPU pred=3 multi-sample TIFFs (#1479) (#1481) +- Make cubic resample prefilter explicit so chunk seams stay sub-eps (#1464) (#1478) +- Preserve input float dtype through resample() (#1467) (#1476) +- Resample polish: fix cubic depth comment, tighten NaN threshold, add edge tests (#1475) +- Fix dask aggregate boundary contamination and clean up bookkeeping (#1469) (#1477) +- Support 3D rasters, expose nodata, document target_resolution tuple in resample (#1466) (#1474) +- Cover cupy median/mode, dask+cupy, integer input, target_resolution tuple in resample tests (#1470) (#1473) +- Refresh transform and nodata attrs on resample output (#1465) (#1472) +- Inline dask aggregate kernel in resample (#1463) (#1468) +- Emit fresh grid metadata and propagate _FillValue in reproject (#1458) (#1462) +- Polish reproject/merge docstrings and cover Inf and parameter edge cases (#1459) (#1461) +- Batch CuPy reductions and drop redundant copies in reproject (#1460) +- Add transform_precision parameter to merge() (#1452) (#1456) +- Preserve non-spatial coords through reproject() and merge() (#1455) +- Guard _apply_vertical_shift against non-finite coords; add vertical CRS tests (#1453) +- Honor per-raster nodata sentinels in merge() (#1448) (#1449) +- Preserve input attrs through reproject() and merge() (#1446) +- Fix dask reproject dtype and same-CRS dask merge (#1450) +- Validate raster inputs in reproject public APIs (#1431) (#1432) +- Add memory guard and scalar validation to generate_terrain (#1443) (#1444) +- Validate scalar parameters in hydro public APIs (#1427) (#1428) +- Validate mannings_n DataArray values in flood (#1437) (#1438) +- Add _validate_raster on secondary DataArray args in hydro (#1425) (#1426) +- Validate grid/bounds/precision params in reproject (#1433) (#1434) +- Validate cellsize in hydro public APIs (#1429) (#1430) +- Validate pathfinding inputs and cap waypoints (#1439) (#1440) +- Validate raster/mask inputs in polygonize (#1441) (#1442) +- Add memory guard to flow_direction_mfd numpy/cupy backends (#1423) (#1424) +- Reject NaN/Inf in reproject scalar inputs (#1435) (#1436) +- Lazy assembly for hand_mfd dask path (#1416) (#1417) +- Return NaN from glcm_texture angle=None when no angle has valid pairs (#1408) (#1409) +- Use ground distance for sky_view_factor horizon angle (#1407) (#1410) +- Exclude centre cell from morph_erode/dilate when kernel[centre]==0 (#1397) (#1398) +- Use sized slice in dask morph chunk writeback (#1399) (#1400) +- Merge sink_d8 labels across dask tile boundaries (#1394) (#1395) +- Reject complex dtypes in _validate_raster() (#1384) (#1387) +- Reject underflowing sigma_spatial in bilateral() (#1390) (#1392) +- Use int64 row_ptr in _build_row_csr_numba (#1388) (#1391) +- Reject mixed-backend arrays in validate_arrays() (#1383) (#1386) +- Reject non-positive inputs in wpm() (#1382) (#1385) +- Guard _idw knearest against unbounded grid x k allocation (#1377) (#1380) +- Validate raster dtype in convolve_2d() (#1389) (#1393) +- Reject all-zero rasters in mesh_utils.create_triangulation (#1378) (#1381) +- Validate dtypes per band in mahalanobis() (#1376) (#1379) +- Guard owa() against unbounded criteria stack (#1370) (#1375) +- Guard spline() TPS against unbounded memory allocations (#1372) (#1374) +- Reject n_samples<=0 in mcda sensitivity (#1371) (#1373) +- Guard flow_path_d8() against unbounded memory allocations (#1364) (#1368) +- Guard flow_path_mfd() against unbounded memory allocations (#1365) (#1369) +- Guard flow_path_dinf() against unbounded memory allocations (#1363) (#1367) +- Guard snap_pour_point_d8() against unbounded memory allocations (#1362) (#1366) +- Guard sink_d8() against unbounded memory allocations (#1356) (#1361) + + ### Version 0.9.8 - 2026-04-29 #### Bug fixes and improvements