diff --git a/pyproject.toml b/pyproject.toml index 4c98e7c..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" @@ -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/__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( 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 f4ee83f..542cc4f 100644 --- a/src/overflow/_fill_depressions/tiled/fill_depressions_tiled.py +++ b/src/overflow/_fill_depressions/tiled/fill_depressions_tiled.py @@ -332,8 +332,11 @@ def handle_raise_tile_result(future): while not task_queue.empty(): time.sleep(0.1) + labels_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)