PK!uߴkkdict_deep/__init__.pyfrom dict_deep.dict_deep import deep_get, deep_set, deep_del, METHOD_ATTR, METHOD_GET, METHOD_SETDEFAULT PK! )VVdict_deep/dict_deep.pyMETHOD_DEFAULT = 0 METHOD_ATTR = 1 METHOD_GET = 2 METHOD_SETDEFAULT = 3 def deep_get(d: dict, key, access_method: int = METHOD_DEFAULT, default: callable = None, sep: str = '.', ): if access_method == METHOD_DEFAULT: access_method = METHOD_ATTR if default is None else METHOD_SETDEFAULT if isinstance(key, str): keys = key.split(sep=sep) else: keys = list(key) if access_method == METHOD_ATTR: for k in keys: d = d[k] elif access_method == METHOD_GET: for k in keys: d = d.get(k, default()) elif access_method == METHOD_SETDEFAULT: for k in keys: d = d.setdefault(k, default()) else: raise ValueError('deep_get: invalid access method, use one of METHOD_ATTR, METHOD_GET or METHOD_SETDEFAULT') return d def deep_set(d: dict, key, value, default: callable = None, sep: str = '.'): if isinstance(key, str): keys = key.split(sep=sep) else: keys = list(key) for i in range(len(keys) - 1): d = d[keys[i]] if default is None else d.setdefault(keys[i], default()) d[keys[-1]] = value def deep_del(d: dict, key, sep: str = '.'): if isinstance(key, str): keys = key.split(sep=sep) else: keys = list(key) for i in range(len(keys) - 1): if d is None: return False, None d = d.get(keys[i], None) if d is not None and isinstance(d, dict) and keys[-1] in d: retval = d[keys[-1]] del d[keys[-1]] return True, retval else: return False, None PK!r6}!dict_deep-1.2.2.dist-info/LICENSECC0 LICENSE =========== To the extent possible under law, Marcelo Bello has waived all copyright and related or neighboring rights to odoorpc-utils. This work is published from: Brasil. PK!Hu)GTUdict_deep-1.2.2.dist-info/WHEEL HM K-*ϳR03rOK-J,/R(O-)$qzd&Y)r$UV&UrPK!Hĩ "dict_deep-1.2.2.dist-info/METADATAV]OF}_q}H dmPa˪, BĞ$.ǝCgv> Y3qUs߄҉Cv3RDƏ( CvYfWUH8H'Y S- <7 lej2x )ڈ؅T$_P7ƞi]nEc YSpgge9 "d3rg $Da|x]u] 5iZ{֡>qy#vPT!Չ/2ϥ;A.(*Xc2QBh/}\):':xQyJO,M"Kdi,[j:WrxYROx(A \C=~bCW'!]BHUyXH%?'U!فZocy3m2vYL"+;B\ɌpRȔJ06Y&24>;ӳ p˥qxF'wLf#`_"i06ɭh -EMa=J.r>6y$'~ZVva8lYD]n9 6;PV{{gT2bP-apn`V94ѦקpJ´'$ sz49>O& AlS29/SC)L^kcyyy4}>:l fwr MCyy|4e&p!/) KaRa^j٦`Q6~WV"7+DwnGB#]o1WԠ1a,cXn>M^Q;X ~*;}gW@S`};qK~CV{JjlBB{%g3޶Fm̮CS,בGAzzmXj?+'4kh6wu_*߿ 9PK!Hns& dict_deep-1.2.2.dist-info/RECORD}̻v0g E h * RX8hP#>}h;y>ʎ}LӴ1Yv];_y{ʻ։,7,(6n xuB_iGm)_r׍żH"Ts:Q8a*FYsΚ쌧|nY%L"C*&O{s@8Xd/NQa_q+TLn7+ , {:7*1<}{c\8a͠P5ΒbDQ8FE$=ò=@Դw@_PK!uߴkkdict_deep/__init__.pyPK! )VVdict_deep/dict_deep.pyPK!r6}!(dict_deep-1.2.2.dist-info/LICENSEPK!Hu)GTU"dict_deep-1.2.2.dist-info/WHEELPK!Hĩ "dict_deep-1.2.2.dist-info/METADATAPK!Hns& t dict_deep-1.2.2.dist-info/RECORDPK