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.
Port to master of #53715
What does this PR do?
It adds
recursive_diff
tosalt.utils.data
. This is a recursive diff that can handle mixed nested mappings/iterables. This is an alternative tosalt/utils/dictdiffer.py
orsalt/utils/listdiffer.py
that can only handle nested dicts and list-of-nested-dicts respectively.What issues does this PR fix or reference?
None that I'm aware of.
Previous Behavior
Only nested dicts or list-of-nested-dicts could be recursively diffed. Nothing is available to recursively diff a mix of lists, dicts, OrderedDicts, sets, tuples or other mapping or iterable type.
New Behavior
salt.utils.data.recursive_diff
is able to produce a dict withold
andnew
keys for any combination of nested mapping- or iterable types. Some options are only applicable to certain types, likeignore_keys
andignore_missing_keys
will only work on (nested) mappings, andignore_order
will only make a difference on ordered datatypes (like OrderedDict and list).Tests written?
Yes
Commits signed with GPG?
Yes