Showing
1 changed file
with
15 additions
and
5 deletions
| 1 | # -*- coding: utf-8 - | 1 | # -*- coding: utf-8 - |
| 2 | +from copy import deepcopy | ||
| 2 | from datetime import timedelta | 3 | from datetime import timedelta |
| 3 | from dateutil.parser import parse | 4 | from dateutil.parser import parse |
| 4 | from dpath.util import new as xpathnew | 5 | from dpath.util import new as xpathnew |
| @@ -246,11 +247,20 @@ def wait_to_date(date_stamp): | @@ -246,11 +247,20 @@ def wait_to_date(date_stamp): | ||
| 246 | return wait_seconds | 247 | return wait_seconds |
| 247 | 248 | ||
| 248 | 249 | ||
| 249 | -def merge_dicts(left, right): | ||
| 250 | - new = {} | ||
| 251 | - new.update(left) | ||
| 252 | - new.update(right) | ||
| 253 | - return new | 250 | +def merge_dicts(a, b): |
| 251 | + """Merge dicts recursively. | ||
| 252 | + | ||
| 253 | + Origin: https://www.xormedia.com/recursively-merge-dictionaries-in-python/ | ||
| 254 | + """ | ||
| 255 | + if not isinstance(b, dict): | ||
| 256 | + return b | ||
| 257 | + result = deepcopy(a) | ||
| 258 | + for k, v in b.iteritems(): | ||
| 259 | + if k in result and isinstance(result[k], dict): | ||
| 260 | + result[k] = merge_dicts(result[k], v) | ||
| 261 | + else: | ||
| 262 | + result[k] = deepcopy(v) | ||
| 263 | + return munchify(result) | ||
| 254 | 264 | ||
| 255 | 265 | ||
| 256 | def create_data_dict(path_to_value=None, value=None): | 266 | def create_data_dict(path_to_value=None, value=None): |
Please
register
or
login
to post a comment