diff --git a/openeo_processes_dask/process_implementations/cubes/aggregate.py b/openeo_processes_dask/process_implementations/cubes/aggregate.py index 1bf0f12..c7e6c14 100644 --- a/openeo_processes_dask/process_implementations/cubes/aggregate.py +++ b/openeo_processes_dask/process_implementations/cubes/aggregate.py @@ -55,6 +55,15 @@ def aggregate_temporal( f"The data cube contains multiple temporal dimensions: {temporal_dims}. The parameter `dimension` must be specified." ) t = temporal_dims[0] + if isinstance(intervals, TemporalIntervals) or isinstance(intervals, list): + interval_str = [] + for interval in intervals: + if isinstance(interval, TemporalInterval): + interval_0 = str(interval[0].root) + interval_1 = str(interval[1].root) + interval_str.append([interval_0, interval_1]) + if interval_str: + intervals = interval_str intervals_np = ( np.array(intervals, dtype=np.datetime64).astype("datetime64[s]").astype(float) diff --git a/pyproject.toml b/pyproject.toml index a3868a6..55fac9e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "openeo-processes-dask" -version = "2024.12.1" +version = "2025.1.1" description = "Python implementations of many OpenEO processes, dask-friendly by default." authors = ["Lukas Weidenholzer ", "Sean Hoyal ", "Valentina Hutter "] maintainers = ["EODC Staff "] diff --git a/tests/test_aggregate.py b/tests/test_aggregate.py index c4200af..f0a7d15 100644 --- a/tests/test_aggregate.py +++ b/tests/test_aggregate.py @@ -5,7 +5,11 @@ import pytest import xarray as xr import xvec -from openeo_pg_parser_networkx.pg_schema import ParameterReference, TemporalInterval +from openeo_pg_parser_networkx.pg_schema import ( + ParameterReference, + TemporalInterval, + TemporalIntervals, +) from openeo_processes_dask.process_implementations.cubes.aggregate import * from openeo_processes_dask.process_implementations.cubes.reduce import reduce_dimension @@ -27,7 +31,31 @@ ], ["half-1", "half-2"], 2, - ) + ), + ( + ["2018-01-01T00:00:00", "2019-01-01T00:00:00"], + [ + TemporalInterval.model_validate( + ["2018-01-01T12:00:00", "2018-06-01T12:00:00"] + ), + TemporalInterval.model_validate( + ["2018-07-01T12:00:00", "2018-12-01T12:00:00"] + ), + ], + ["half-1", "half-2"], + 2, + ), + ( + ["2018-01-01T00:00:00", "2019-01-01T00:00:00"], + TemporalIntervals.model_validate( + [ + ["2018-01-01T12:00:00", "2018-06-01T12:00:00"], + ["2018-07-01T12:00:00", "2018-12-01T12:00:00"], + ] + ), + ["half-1", "half-2"], + 2, + ), ], ) def test_aggregate_temporal( @@ -43,7 +71,7 @@ def test_aggregate_temporal( input_cube = create_fake_rastercube( data=random_raster_data, spatial_extent=bounding_box, - temporal_extent=TemporalInterval.parse_obj(temporal_extent), + temporal_extent=TemporalInterval.model_validate(temporal_extent), bands=["B02", "B03", "B04", "B08"], )