Conversation
The OLCI Collection 4 (v4.01) processing baseline replaced the OC4Me chlorophyll product (chl_oc4me.nc / chlOc4meData) with chlor_a.nc and added new fluorescence (fluorescence.nc) and inherent optical properties (iop_lsd.nc) products. Manifests from the new baseline no longer contain the chlOc4meData data object, which caused create_item to raise "RuntimeError: Xpath returns no href" and abort item creation. Changes: - Skip water data objects that are absent from the manifest instead of raising, so both the legacy and Collection 4 baselines are handled. - Add the new Collection 4 water data object keys (chlorAData, fluorescenceData, iopLsdData) so they become assets when present. - Make the WFR branch data-driven via a band lookup map and return only the asset keys actually present, fixing a latent misalignment between the returned asset key list and the asset/identifier lists. - Add regression tests covering the missing-data-object case and the new Collection 4 assets. Note: the exact Collection 4 dataObject ID strings and band associations for the new products should be confirmed against a real v4.01 product once available. See: https://user.eumetsat.int/news-events/news/update-to-sentinel-3-olci-level-2-water-processing
gadomski
self-requested a review
June 29, 2026 16:39
gadomski
requested changes
Jun 29, 2026
gadomski
left a comment
Contributor
There was a problem hiding this comment.
Fix feels fine (the original code is pretty awkward so changing it will also be awkward), just one request to use real-world metadata files (instead of synthetic regex changes) for the tests.
Address review feedback: - Verified the new water data object IDs against the real Collection 4 (v4.01) product that caused the original failure (fetched from the Planetary Computer sentinel3euwest store). The actual IDs are chlor_aData and fluoData (not the previously guessed chlorAData / fluorescenceData); iopLsdData was correct. - Move the water band lookup from a function-scoped dict to the module-level OLCI_L2_WATER_BAND_KEYS constant. - Replace the synthetic regex-based tests with tests that use a real Collection 4 manifest committed under tests/data-files (NetCDF assets stripped to header-only stubs, matching the existing fixtures), plus a command-level test that builds and validates a full item.
gadomski
approved these changes
Jun 29, 2026
gadomski
left a comment
Contributor
There was a problem hiding this comment.
LGTM, thanks for the changes! I'll cut a release after merging.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
The OLCI Collection 4 (v4.01) L2 water processing baseline replaced the OC4Me chlorophyll product (
chl_oc4me.nc/chlOc4meData) withchlor_a.ncand addedfluorescence.ncandiop_lsd.nc. Manifests from the new baseline no longer containchlOc4meData, which causedcreate_itemto raiseRuntimeError: Xpath returns no href: .//dataObject[@ID='chlOc4meData']//fileLocationand abort item creation.Ref: https://user.eumetsat.int/news-events/news/update-to-sentinel-3-olci-level-2-water-processing
Changes
chlorAData,fluorescenceData,iopLsdData) so they become assets when present.Open item for review
The exact Collection 4
dataObjectID strings (chlorAData, etc.) and band associations for the new products are inferred from the EUMETSAT notice and not yet confirmed against a real v4.01 product, since one was not available at the time of writing. These should be verified once a Collection 4 WFR product is accessible; only the constants would need updating if the IDs differ.Testing
pytest: 47 passedflake8,black --check,isort --check,mypy: clean