Module ploigos_step_runner.utils.dict
Shared utils for dealing with dictionaries.
Functions
def deep_merge(dest, source, overwrite_duplicate_keys=False)
-
"deep merges source dictionary into destination dictionary.
Parameters
dest
:dict
- Destination dictionary to deep merge source into.
source
:dict
- Source dictionary to deep merge into dest.
overwrite_duplicate_keys
:bool
- True to overwite duplicate leaf keys in destination with source dictionary values. False to raise ValueError if any duplicate leaf values.
Examples
No Duplicate Keys: dict1 = { 'A': {'value': '1'}, 'C': {'value': '1'} } dict2 = { 'B': {'value': '2'}, } expected_answer = { 'A': {'value': '1'}, 'C': {'value': '1'}, 'B': {'value': '2'} }
Duplicate keys (overwrite_duplicate_keys=True):
dict1 = { 'A': {'value': '1'}, 'C': {'value': 'overwriteme'} } dict2 = { 'B': {'value': '2'}, 'C': {'value': '2'} } expected_answer = { 'A': {'value': '1'}, 'C': {'value': '2'}, 'B': {'value': '2'} }
Raises
ValueError
- If source and destination contain a duplicate leaf key and overwrite_duplicate_keys is True
Notes
Modifies destination.
Source is https://stackoverflow.com/questions/7204805/how-to-merge-dictionaries-of-dictionaries/7205107#7205107 # pylint: disable=line-too-long