Fix: transformer trait override Issue 1119 #1146
Open
+30
−0
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
Fixes #1119 - Transformer not used with trait and value override
When a field has both a base
Transformerand aTraitthat overrides it with anotherTransformer, user-provided overrides were bypassing the base transformer entirely when the trait was not active.Root Cause
When a
Traitwraps a field, it replaces the declaration with aMaybethat selects between the trait's value (yes_declaration) and the base value (no_declaration). However,Maybedidn't propagate theCAPTURE_OVERRIDESattribute from its branches, so user overrides would replace the entireMaybedeclaration instead of being forwarded to the appropriate transformer.Solution
Added
CAPTURE_OVERRIDESpropagation fromno_declarationinMaybe.__init__. This ensures that when the trait is NOT active and there's a baseTransformer, user overrides are properly forwarded to the base transformer.The fix specifically uses
no_declaration(not both branches withor) to preserve the existing behavior where user overrides bypass the trait's transformer when the trait IS active.Testing
tests/test_transformer.pyChecklist