File: algorithm.py

package info (click to toggle)
bumblebee-status 2.2.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,844 kB
  • sloc: python: 13,430; sh: 68; makefile: 29
file content (30 lines) | stat: -rw-r--r-- 874 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import copy


def merge(target, *args):
    """Merges arbitrary data - copied from http://blog.impressiver.com/post/31434674390/deep-merge-multiple-python-dicts

    :param target: the data structure to fill
    :param args: a list of data structures to merge into target

    :return: target, with all data in args merged into it
    :rtype: whatever type was originally passed in
    """
    if len(args) > 1:
        for item in args:
            merge(target, item)
        return target

    item = args[0]
    if not isinstance(item, dict):
        return item
    for key, value in item.items():
        if key in target and isinstance(target[key], dict):
            merge(target[key], value)
        else:
            if not key in target:
                target[key] = copy.deepcopy(value)
    return target


# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4