Skip to content

Commit 9c2f39d

Browse files
iter_datapoints for empty query results
1 parent db59e9f commit 9c2f39d

5 files changed

Lines changed: 529 additions & 422 deletions

File tree

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
### Fixed
11+
12+
- `tilebox-datasets`: Allow `iter_datapoints()` to handle empty query results.
13+
1014
## [0.60.0] - 2026-08-25
1115

1216
### Changed

prek.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ hooks = [
1919

2020
[[repos]]
2121
repo = "https://github.com/charliermarsh/ruff-pre-commit"
22-
rev = "v0.16.2"
22+
rev = "v0.16.4"
2323
hooks = [
2424
{
2525
id = "ruff-check",

tilebox-datasets/tests/test_assets.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -595,6 +595,7 @@ def test_missing_referenced_context_is_rejected() -> None:
595595
def test_iter_datapoints_and_multi_datapoint_error() -> None:
596596
data = xr.Dataset({"value": ("time", [1, 2, 3])})
597597
assert [datapoint.value.item() for datapoint in iter_datapoints(data)] == [1, 2, 3]
598+
assert list(iter_datapoints(xr.Dataset())) == []
598599
with pytest.raises(ValueError, match=r"(?s)received 3.*dimension 'time'"):
599600
AssetCollection.from_datapoint(data)
600601
with pytest.raises(ValueError, match=r"'sample'.*not present"):

tilebox-datasets/tilebox/datasets/datapoints.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@
77

88
def iter_datapoints(data: xr.Dataset, *, dimension: str = "time") -> Iterator[xr.Dataset]:
99
"""Yield scalar datapoints from an xarray query result."""
10+
if not data.variables:
11+
# Empty query results produce an empty iterator.
12+
return
1013
if dimension not in data.sizes:
1114
raise ValueError(f"datapoint dimension {dimension!r} is not present in the dataset")
1215
for index in range(data.sizes[dimension]):

0 commit comments

Comments
 (0)