Mercurial > libervia-backend
diff sat/tools/common/utils.py @ 3265:1649bbe8d07e
tools (common/utils): new `recursive_update` method for dicts
author | Goffi <goffi@goffi.org> |
---|---|
date | Wed, 29 Apr 2020 13:53:00 +0200 |
parents | 9d0df638c8b4 |
children | 84f77f04aa08 |
line wrap: on
line diff
--- a/sat/tools/common/utils.py Sat Apr 25 15:54:26 2020 +0200 +++ b/sat/tools/common/utils.py Wed Apr 29 13:53:00 2020 +0200 @@ -18,6 +18,8 @@ """Misc utils for both backend and frontends""" +import collections.abc + def per_luminance(red, green, blue): """Caculate the perceived luminance of a RGB color @@ -30,3 +32,15 @@ # cf. https://stackoverflow.com/a/1855903, thanks Gacek return 0.299 * red + 0.587 * green + 0.114 * blue + + +def recursive_update(ori: dict, update: dict): + """Recursively update a dictionary""" + # cf. https://stackoverflow.com/a/3233356, thanks Alex Martelli + for k, v in update.items(): + if isinstance(v, collections.abc.Mapping): + ori[k] = recursive_update(ori.get(k, {}), v) + else: + ori[k] = v + return ori +