Module gundb.backends.utils
Source code
from collections import defaultdict
def uniquify(lst):
res = []
for item in lst:
if not item in res:
res.append(item)
return res
def fix_lists(obj):
if not isinstance(obj, dict):
return obj
res = {}
for k, v in obj.items():
if k.startswith('list_'):
res[k] = listify(fix_lists(v))
else:
res[k] = fix_lists(v)
return res
def listify(attr):
if isinstance(attr, dict):
return uniquify(fix_lists(attr).values())
else:
return attr
def get_first_list_prop(lst):
for i, e in enumerate(lst):
if e.startswith('list_'):
return i
return -1
rec_dd = lambda: defaultdict(rec_dd)
def defaultify(d):
"Converts a dict to a nested default dicts"
res = defaultdict(rec_dd)
for k, v in d.items():
if isinstance(v, dict):
res[k] = defaultify(v)
else:
res[k] = v
return res
Functions
def defaultify(d)
-
Converts a dict to a nested default dicts
Source code
def defaultify(d): "Converts a dict to a nested default dicts" res = defaultdict(rec_dd) for k, v in d.items(): if isinstance(v, dict): res[k] = defaultify(v) else: res[k] = v return res
def fix_lists(obj)
-
Source code
def fix_lists(obj): if not isinstance(obj, dict): return obj res = {} for k, v in obj.items(): if k.startswith('list_'): res[k] = listify(fix_lists(v)) else: res[k] = fix_lists(v) return res
def get_first_list_prop(lst)
-
Source code
def get_first_list_prop(lst): for i, e in enumerate(lst): if e.startswith('list_'): return i return -1
def listify(attr)
-
Source code
def listify(attr): if isinstance(attr, dict): return uniquify(fix_lists(attr).values()) else: return attr
def rec_dd()
-
Source code
rec_dd = lambda: defaultdict(rec_dd)
def uniquify(lst)
-
Source code
def uniquify(lst): res = [] for item in lst: if not item in res: res.append(item) return res