From bb75e7de5852da6f4ca44b517eaabb9b4154f205 Mon Sep 17 00:00:00 2001 From: Qijue Chen Date: Wed, 17 Jun 2026 08:33:18 -0700 Subject: [PATCH 1/4] Debug fill function so it handles cases where no working directory defined. Close files that are opened/edited by gdal. --- .../_fill_depressions/tiled/fill_depressions_tiled.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/overflow/_fill_depressions/tiled/fill_depressions_tiled.py b/src/overflow/_fill_depressions/tiled/fill_depressions_tiled.py index f4ee83f..51012a8 100644 --- a/src/overflow/_fill_depressions/tiled/fill_depressions_tiled.py +++ b/src/overflow/_fill_depressions/tiled/fill_depressions_tiled.py @@ -331,6 +331,10 @@ def handle_raise_tile_result(future): while not task_queue.empty(): time.sleep(0.1) + + labels_ds.Close() + dem_ds.Close() + output_ds.Close() # tear down if cleanup_working_dir: From 483efc7171ab98185f0f03a655927290c4120295 Mon Sep 17 00:00:00 2001 From: Qijue Chen Date: Wed, 17 Jun 2026 08:45:49 -0700 Subject: [PATCH 2/4] fix lint (remove whitespace) --- src/overflow/_fill_depressions/tiled/fill_depressions_tiled.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/overflow/_fill_depressions/tiled/fill_depressions_tiled.py b/src/overflow/_fill_depressions/tiled/fill_depressions_tiled.py index 51012a8..e07fe5c 100644 --- a/src/overflow/_fill_depressions/tiled/fill_depressions_tiled.py +++ b/src/overflow/_fill_depressions/tiled/fill_depressions_tiled.py @@ -331,7 +331,7 @@ def handle_raise_tile_result(future): while not task_queue.empty(): time.sleep(0.1) - + labels_ds.Close() dem_ds.Close() output_ds.Close() From 36ad8ec88b774fc035bc2852fc29367d3c8585da Mon Sep 17 00:00:00 2001 From: Brendan Barnes Date: Wed, 17 Jun 2026 20:02:04 +0000 Subject: [PATCH 3/4] fix: close datasets before deleting files. --- pyproject.toml | 2 +- .../_extract_streams/core/extract_streams.py | 2 ++ .../tiled/fill_depressions_tiled.py | 5 ++--- .../_resolve_flats/tiled/resolve_flats_tiled.py | 12 +++++++----- tests/test_raster_util.py | 4 +--- 5 files changed, 13 insertions(+), 12 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 4c98e7c..180e567 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -46,7 +46,7 @@ dependencies = [ [project.optional-dependencies] gdal = [ - "gdal>=3.6.2", + "gdal>=3.7.0", ] dev = [ "pytest>=8.0.2", diff --git a/src/overflow/_extract_streams/core/extract_streams.py b/src/overflow/_extract_streams/core/extract_streams.py index 9e51391..b821abf 100644 --- a/src/overflow/_extract_streams/core/extract_streams.py +++ b/src/overflow/_extract_streams/core/extract_streams.py @@ -430,6 +430,8 @@ def _extract_streams_core( write_lines(lines_layer, lines) # Clean up + points_layer = None + lines_layer = None del output_ds fac_ds = None fdr_ds = None diff --git a/src/overflow/_fill_depressions/tiled/fill_depressions_tiled.py b/src/overflow/_fill_depressions/tiled/fill_depressions_tiled.py index e07fe5c..542cc4f 100644 --- a/src/overflow/_fill_depressions/tiled/fill_depressions_tiled.py +++ b/src/overflow/_fill_depressions/tiled/fill_depressions_tiled.py @@ -333,11 +333,10 @@ def handle_raise_tile_result(future): time.sleep(0.1) labels_ds.Close() - dem_ds.Close() output_ds.Close() + if output_ds is not dem_ds: + dem_ds.Close() # tear down if cleanup_working_dir: shutil.rmtree(working_dir) - output_ds = None - labels_ds = None diff --git a/src/overflow/_resolve_flats/tiled/resolve_flats_tiled.py b/src/overflow/_resolve_flats/tiled/resolve_flats_tiled.py index 4b759f8..9746918 100644 --- a/src/overflow/_resolve_flats/tiled/resolve_flats_tiled.py +++ b/src/overflow/_resolve_flats/tiled/resolve_flats_tiled.py @@ -186,10 +186,12 @@ def _resolve_flats_tiled( chunk_size, tracker.callback, ) + labels_ds.Close() + flat_mask_ds.Close() + fixed_fdr_ds.Close() + if fixed_fdr_ds is not fdr_ds: + fdr_ds.Close() + dem_ds.Close() + if cleanup_working_dir: shutil.rmtree(working_dir) - dem_ds = None - fdr_ds = None - fixed_fdr_ds = None - labels_ds = None - flat_mask_ds = None diff --git a/tests/test_raster_util.py b/tests/test_raster_util.py index 485ee85..095dfcc 100644 --- a/tests/test_raster_util.py +++ b/tests/test_raster_util.py @@ -6,10 +6,8 @@ from overflow._util.raster import raster_chunker, read_raster_with_bounds_handling -band_fixtures = ["square_raster_band", "tall_raster_band", "wide_raster_band"] - -@pytest.fixture(name="raster_band", params=band_fixtures, scope="module") +@pytest.fixture(name="raster_band", scope="module") def fixture_raster_band(request): """Create a random raster band for testing. Parametrized to test all band sizes.""" return request.getfixturevalue(request.param) From e5fddaa46f7c3cbf56f6ad0b8082be17cc235b79 Mon Sep 17 00:00:00 2001 From: Brendan Barnes Date: Wed, 17 Jun 2026 20:10:09 +0000 Subject: [PATCH 4/4] bump version to 0.3.5 --- pyproject.toml | 2 +- src/overflow/__init__.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 180e567..f081c9c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "overflow-hydro" -version = "0.3.4" +version = "0.3.5" description = "High-performance Python library for hydrological terrain analysis with parallel, tiled algorithms" readme = "README.md" requires-python = ">=3.11" diff --git a/src/overflow/__init__.py b/src/overflow/__init__.py index ae99b35..2d84ff2 100644 --- a/src/overflow/__init__.py +++ b/src/overflow/__init__.py @@ -34,7 +34,7 @@ from overflow._util.raster import snap_drainage_points as _snap_drainage_points from overflow.codes import FlowDirection -__version__ = "0.3.4" +__version__ = "0.3.5" def breach(