diff --git a/piker/config.py b/piker/config.py index 12085261..a0d403d5 100644 --- a/piker/config.py +++ b/piker/config.py @@ -467,3 +467,51 @@ def load_accounts( accounts['paper'] = None return accounts + + +# XXX: Recursive getting & setting + +def get_value(_dict, _section): + subs = _section.split('.') + if len(subs) > 1: + return get_value( + _dict[subs[0]], + '.'.join(subs[1:]), + ) + + else: + return _dict[_section] + + +def set_value(_dict, _section, val): + subs = _section.split('.') + if len(subs) > 1: + if subs[0] not in _dict: + _dict[subs[0]] = {} + + return set_value( + _dict[subs[0]], + '.'.join(subs[1:]), + val + ) + + else: + _dict[_section] = val + + +def del_value(_dict, _section): + subs = _section.split('.') + if len(subs) > 1: + if subs[0] not in _dict: + return + + return del_value( + _dict[subs[0]], + '.'.join(subs[1:]) + ) + + else: + if _section not in _dict: + return + + del _dict[_section]