Fix overriding an inherited field alias back to the field's own name - #1133
Open
rvaccone wants to merge 1 commit into
Open
Fix overriding an inherited field alias back to the field's own name#1133rvaccone wants to merge 1 commit into
rvaccone wants to merge 1 commit into
Conversation
Merging this PR will not alter performance
Comparing Footnotes
|
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.
Fixes #654.
structmeta_process_renameskips writing torenamed_fieldswhen the requested encode name equals the field's own name, leaving any alias inherited from a base class in place. Sofield(name="x")on a redeclared fieldxwas silently ignored, and the same held for arename=policy whose result is the field's own name (e.g.rename="lower"under a parent'srename="upper"):The fix clears the inherited entry at both sites instead of skipping the write. Redeclared fields already re-apply the effective naming config, including overriding a base's
field(name=...)alias with a policy result; this extends that to identity results.Two behaviors deliberately unchanged: a redeclaration expressing no naming intent (
x: int = 1, no policy in effect) keeps the inherited alias, and so doesrename=None, which acts as "no policy in this class" rather than an identity policy. Clearing per field is spelledfield(name="x"). Both new tests fail before the fix.