Fix to_geotiff docstring tier for extra_tags pass-through#3596
Merged
Conversation
The release-contract tier list said extra_tags pass-through was [advanced] (no kwarg gate), but SUPPORTED_FEATURES['writer.extra_tags'] is 'experimental' and _validate_write_rich_tag_optin rejects a fresh DataArray carrying attrs['extra_tags'] without allow_experimental_codecs=True. Move the bullet to [experimental], name the opt-in and the round-trip exemption, and add a drift-guard test so the docstring cannot disagree with the tier map again. Also updates the api-consistency sweep state CSV for the geotiff row.
brendancol
commented
Jul 2, 2026
brendancol
left a comment
Contributor
Author
There was a problem hiding this comment.
Doc-only change; I checked the claims against the code rather than just the prose.
- The new [experimental] bullet matches
_validate_write_rich_tag_optin: freshattrs['extra_tags']/attrs['gdal_metadata_xml']raise withoutallow_experimental_codecs=True, and the_xrspatial_geotiff_contractmarker exempts round-tripped attrs.SUPPORTED_FEATUREScarries both keys at'experimental', so the docstring and tier map now agree. - The drift-guard test scopes its string checks to the region before "Parameters", which keeps the
photometricparameter doc (which legitimately mentions the extra_tags override) out of the assertion. The bullet slicing on'* ['holds because[internal-only]follows the experimental bullet.
Nits, not blocking:
- The gate also fires on a dict
attrs['gdal_metadata'](#3320); the revised bullet doesn't name that third attr. The runtime error does, so this is fine to leave. - The test pins the two SUPPORTED_FEATURES tiers directly, which overlaps with the release-gate suite. Harmless redundancy that makes the test self-contained.
No blockers.
brendancol
added a commit
that referenced
this pull request
Jul 2, 2026
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.
Closes #3593
extra_tagspass-through" from the[advanced]bullet ofto_geotiff's release-contract tier list to[experimental], matchingSUPPORTED_FEATURES['writer.extra_tags']and the_validate_write_rich_tag_optingate (which raisesValueErroron a fresh DataArray withattrs['extra_tags']unlessallow_experimental_codecs=True). The bullet now names the opt-in and the round-trip exemption, and mentionsgdal_metadata_xmlwhich shares the gate.photometricparameter doc: the override ridesattrs['extra_tags'](not a kwarg) and sits at the experimental tier.test_to_geotiff_docstring_extra_tags_tier_matches_supported_featurestotests/unit/test_signatures.py(Section 3, next to the existing rich-tag gate tests) so the docstring cannot drift from the tier map again.geotiff.Doc-only change, no behavior touched, so backend coverage is unaffected (the gate itself already fires identically on the CPU and GPU write paths).
Test plan:
pytest xrspatial/geotiff/tests/unit/test_signatures.py(197 passed, includes the new test)pytest xrspatial/geotiff/tests/unit/test_photometric.py(37 passed)attrs['extra_tags']write raises without the flag, succeeds with it, and the cupy write round-trip still works