Source code for buildtest.utils.tools

from functools import reduce


[docs]def deep_get(dictionary, *keys): return reduce( lambda d, key: d.get(key, None) if isinstance(d, dict) else None, keys, dictionary, )
[docs]class Hasher(dict):
[docs] def __missing__(self, key): value = self[key] = type(self)() return value
[docs] def get(self, path, sep=".", default=None): keys = path.split(sep) val = None for key in keys: if val: if isinstance(val, list): val = [v.get(key, default) if v else None for v in val] else: val = val.get(key, default) else: val = dict.get(self, key, default) if not val: break return val
[docs] def __str__(self): return str(dict(self))