PK! O??dict_deep/__init__.pyfrom dict_deep.dict_deep import deep_get, deep_set, deep_del PK!Eqqdict_deep/dict_deep.py def deep_get(d, key, default: callable = None, getter: callable = None, sep: str = '.'): getter = __getter(getter, default) keys = __keys(key, sep) for k in keys: d = getter(d, k) return d def deep_set(d, key, value, default: callable = None, getter: callable = None, setter: callable = None, sep: str = '.'): keys = __keys(key, sep) getter = __getter(getter, default) setter = __setter(setter) for i in range(len(keys) - 1): d = getter(d, keys[i]) setter(d, keys[-1], value) def deep_del(d: dict, key, getter: callable = None, deleter: callable = None, sep: str = '.'): keys = __keys(key, sep) getter = getter if getter is not None else lambda o, k: o.get(k) for i in range(len(keys) - 1): if d is None: return False, None d = getter(d, keys[i]) if d is not None and isinstance(d, dict) and keys[-1] in d: retval = getter(d, keys[-1]) if deleter is None: del d[keys[-1]] else: deleter(d, keys[-1]) return True, retval else: return False, None def __keys(key, sep: str): if isinstance(key, str): return key.split(sep=sep) else: return list(key) def __getter(getter: callable, default: callable): if getter is not None: return getter elif default is not None: return lambda o, k: o.setdefault(k, default()) else: return lambda o, k: o[k] def __setter(setter: callable): def __default_setter(o, k, v): o[k] = v return setter if setter is not None else __default_setter PK!F!dict_deep-2.0.2.dist-info/LICENSECC0 LICENSE =========== To the extent possible under law, Marcelo Bello has waived all copyright and related or neighboring rights to dict-deep. This work is published from: Brasil. PK!Hu)GTUdict_deep-2.0.2.dist-info/WHEEL HM K-*ϳR03rOK-J,/R(O-)$qzd&Y)r$UV&UrPK!H-]"dict_deep-2.0.2.dist-info/METADATAWnF}W I Eߒ" A'09Y\"%%ʗ8Km&3gΜ?UjW&ňD<$0a.˝h/8\Ua}I&ˌI / [REfxEljjRqPr Kғ8MZ̨h+6Vx4=RyouRҌg'Q|Yߧ1GG;h' ]%gG6mBqg.ym&,8핮F14CUDF̖xӊn ` _LNSF&ї"#ʨ, S=Ҙ5v/蘑*lTY\~Y V% wO^='{J2>sMju Hl*-.,vx,_6}EϞQ6N7-zEslhZTW":ubzLHݴ!M8VKviLL3FS,kT@ 8\=\]3-u]QNXNכ7d$TW3UX,*K 4dS48rWPk+X,Wo7,S c yMƀH.\`D әmo7lùhSNB%|:5c"׈2OE:k9 3?WHՋzS\m}l-[d ΋44L2 V8J]$.3w5fҜ9*XKA6%Zf hP!Wdܑ$t%ܕOm@<[JT8dsCҜb^4ޘxgb2njA 6i N4yUU0M*V/x.{}4-@:ˑ"\•Eû̝uU*EA΁5Or%:9uL0P1gzk+5(U5ӏ#EdT&àFe/c<?^\ߥܘẲ+/N>"m}I![ksP ToD777EC"|m|ߺʒ+1)lۍnE4\  .]p.nYܱ;?)"_<0odxp`+[Ãd9yǛQch5zu;)G O=W^wIDX\# Lbv3^~PK! O??dict_deep/__init__.pyPK!Eqqrdict_deep/dict_deep.pyPK!F!dict_deep-2.0.2.dist-info/LICENSEPK!Hu)GTU dict_deep-2.0.2.dist-info/WHEELPK!H-]"dict_deep-2.0.2.dist-info/METADATAPK!Hce& dict_deep-2.0.2.dist-info/RECORDPKo