SafeConstructor.yaml_flatteners, to enable pluggable flattening akin to add_constructors #894
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.
As part of working through octodns/octodns#1315 I wanted to add support for
<<: !include some-file.yamland ran into the same problems as others: #632 and #814.After a few false starts and unworkable ideas I landed on adding the ability to have pluggable flattening the same way that constructors are now. It's a fairly trivial change in the repo and I'm able to port the existing map and seq blocks over and have all the tests passing.
More interestingly it allows 3rd parties to add new flatteners, so in the case of
!includeI can do something like:In the context of octoDNS that allows config like:
To work exactly as expected.
I'm out of time for now, but I plan to come back to this PR and look at adding specific tests around the ability to add custom flatteners and verify that the more complex versions of
<<:work, i.e. arrays and custom flatterers in anchors.Thoughts and suggestions welcomed.