feat(config): support MERGE-PRIORITIES for Config
items
#448
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.
(I hope you don't get too mad at me for trying...)
Retrofitted
loader.Config
class to support merging-priorities for specific values based on ranks (e.g. integers). Nowupdate_config()
always respects priorities. The purpose it to use it to fully support also #99 environment-variable priorities.For this PR, the new features are used also to deprecate the need to re-update
Application.cli_config
on top of file-configs.Implementation
Config
instances by default don't waste extra memory - default priorityresolved from _merge_priority
class attribute._merge_priority
is upgraded to dict.Config.substract()
method is used to limit value-changes, taking into account priority-ranks.This is useful to preserve traits that have been directly modified between loading of configs from different sources.
Config._merge_priority = 0
which in effect "force" the use of integers.