Passed
Push — master ( b3caf6...57589b )
by Fabio
02:22
created

benedict.core.unflatten   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 23
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 4
eloc 17
dl 0
loc 23
rs 10
c 0
b 0
f 0

2 Functions

Rating   Name   Duplication   Size   Complexity  
A unflatten() 0 9 2
A _unflatten_item() 0 5 2
1
# -*- coding: utf-8 -*-
2
3
from benedict.dicts.keylist import keylist_util
4
from benedict.utils import type_util
5
6
7
def _unflatten_item(key, value, separator):
8
    keys = key.split(separator)
9
    if type_util.is_dict(value):
10
        return (keys, unflatten(value, separator=separator), )
11
    return (keys, value, )
12
13
14
def unflatten(d, separator='_'):
15
    new_dict = d.copy()
16
    new_dict.clear()
17
    keys = list(d.keys())
18
    for key in keys:
19
        value = d.get(key, None)
20
        new_keys, new_value = _unflatten_item(key, value, separator)
21
        keylist_util.set_item(new_dict, new_keys, new_value)
22
    return new_dict
23