Add test for the use case of Trait with mapping and callable #1336
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.
Motivated by #1258, this PR adds a few tests that exercise the scenario where migration from TraitMap to Map is hard.
The difficulty here is that
Trait
can take a number of things, and when a mapping and a callable are given to it, it makes the trait a mapped trait because there is a mapping. And when the callable is used for validation (and transformation), both the key value and the mapped value are the same. But when the callable fails, the mapping is used and the key value is not the same as the mapped value.If we migrate to Map, then the key value would be different from the mapped value. If we use Union to combine them together, then the mapped trait is gone.
I still haven't figured out a migration solution for this scenario that does not involve just reimplement a TraitType that does all these things, but maybe that's what downstream projects have to do if they need to keep these strange behaviour alive, so that Traits can deprecate TraitMap and Trait.
Checklist
Update API reference (docs/source/traits_api_reference
)Update User manual (docs/source/traits_user_manual
)Update type annotation hints intraits-stubs