Repository navigation
Conversation
c24bb72 to
fbbf322
Compare
_repr_html_ of cube dimension metadata _repr_html_ of cube dimension metadata
There was a problem hiding this comment.
🟡 Changes recommended
Temporal extent handling and HTML rendering contain runtime failures for supported metadata and open-ended intervals.
7 open findings
Allow metadata without a temporal dimension · New Coerce dimension types before HTML escaping · New Import dateutil.parser explicitly · New Add tests for interval conversion and intersection · New Allow None in temporal extent annotations · New Define stable representation for non-concrete extents · New Add VectorCube HTML representation tests · New
What changed in this PR
Adds richer Jupyter rendering for cube metadata, addressing #827, while tracking temporal extents through filtering operations.
Changes:
- Adds HTML dimension tables to raster and vector cube representations.
- Introduces temporal interval intersection and extent markers.
- Adds rendering tests and a changelog entry.
| File | Description |
|---|---|
CHANGELOG.md |
Documents the Jupyter representation. |
openeo/dates.py |
Adds datetime migration note. |
openeo/metadata/__init__.py |
Adds rendering and temporal filtering. |
openeo/metadata/_extents.py |
Defines special extent markers. |
openeo/metadata/_jupyter.py |
Renders dimension metadata tables. |
openeo/rest/_datacube.py |
Names process-graph HTML output. |
openeo/rest/datacube.py |
Combines metadata and graph rendering. |
openeo/rest/vectorcube.py |
Adds metadata rendering to vector cubes. |
openeo/util.py |
Adds datetime migration notes. |
openeo/utils/datetime.py |
Implements datetime intervals. |
tests/metadata/test_jupyter.py |
Tests table rendering. |
tests/metadata/test_metadata.py |
Tests metadata HTML output. |
tests/rest/datacube/test_datacube.py |
Tests cube HTML composition. |
🧠 Review effort: Balanced
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
54f4316 to
9b9f13f
Compare
281ce2b to
a2ab17a
Compare
3934dab to
e288323
Compare
2c9608e to
1cb1141
Compare
There was a problem hiding this comment.
🟡 Changes recommended
Spatial metadata propagation has correctness regressions, and existing REST test expectations remain incompatible with the new representation.
5 open findings
Update REST resampling expectations for named-tuple spatial dimensions · New Rejecting symbolic BBox coordinates breaks metadata loading and filtering · New Antimeridian-crossing BBoxes incorrectly report no coverage · New Resampling changes CRS without invalidating stale spatial bounds · New STAC parsers discard declared CRS, causing incorrect metadata intersections · New
1 resolved since last review
🧠 Review effort: Balanced
fc3d941 to
fc76003
Compare
b37c6bb to
868cdc8
Compare
There was a problem hiding this comment.
🟡 Changes recommended
Resampling with incomplete target metadata can now raise an exception and prevent process graph construction.
1 open issue
6 resolved since last review
Update REST resampling expectations for named-tuple spatial dimensions STAC parsers discard declared CRS, causing incorrect metadata intersections Resampling changes CRS without invalidating stale spatial bounds Antimeridian-crossing BBoxes incorrectly report no coverage Rejecting symbolic BBox coordinates breaks metadata loading and filtering Handle unnamed STAC bands in Jupyter display
Review effort: Balanced
| if spatial_dims := sorted((d for d in dimensions if isinstance(d, SpatialDimension)), key=lambda d: d.axis): | ||
| if [d.axis for d in spatial_dims] == ["x", "y"]: | ||
| self._spatial_dimensions = SpatialDimensionsXY(x=spatial_dims[0], y=spatial_dims[1]) |




for #827