PK!eecarve/__init__.py__version__ = "0.2.0" from .carve import treemap, mapkey, mapval, remove, on_key, remove_empty, flow PK!77<<carve/carve.py# todo: # add table / proof / fuzzy testing incl. benchmarks # add docs # add helper functions as premade lambda funcs (test for nulls, etc) # showcase composing a mapper func from cytoolz import itemmap, map, keyfilter, identity, reduce def xform(key, tree, mapfn, path): if not key: return tree (xkey, xtree) = mapfn(key, tree, path) if key: return (xkey, xtree) return xtree def on_key(key, f): return lambda k, v, p: f(k, v, p) if (key in p) else (k, v) def remove_empty(k, v, p): return (None, None) if not v else (k, v) def mapkey(f): return lambda k, v, p: (f(k, v, p), v) def mapval(f): return lambda k, v, p: (k, f(k, v, p)) def remove(f): return lambda k, v, p: (None, None) if f(k, v, p) else (k, v) def flow(*args): return lambda k, v, p: reduce( lambda tup, f: (*f(tup[0], tup[1], tup[2]), tup[2]), args, (k, v, p) )[0:2] def treemap(tree, mapfn, key=None, path=()): res = tree if isinstance(tree, dict): res = keyfilter( identity, itemmap( lambda item: treemap(item[1], mapfn, item[0], path + (item[0],)), tree ), ) elif isinstance(tree, list): res = list(map(lambda t: treemap(t, mapfn, None, path), tree)) return xform(key, res, mapfn, path) PK!M={{carve/curried.pyfrom .carve import treemap as _treemap_noncurried def treemap(fn): return lambda tree: _treemap_noncurried(tree, fn) PK!H WXcarve-0.2.0.dist-info/WHEEL A н#Z."jm)Afb~ڠO68oF04UhoAf f4=4h0k::wXPK!HG carve-0.2.0.dist-info/METADATAVn6ϧ8UTd.݄%hX6˚l5-[%#)'Z7;d{Rr.ü|CDKW4V(NNx9ܬ]Llڦa!EkavRj13t seRNHK:5hZ [.KhH rN|<^ejWJʍ{_%s#vʔ6R.z:oe(^59*%m6\9|{oZ1HMs6jE{"F- o\.Z j#%>,>_>ZGKKlk ~nE3ǍcXZZ+j F AT Й20l)͸%̖KIa|ىߤ%C>,<7\Z_pTkxÌ!qS( cwKv&_Ho;F=Igp2q蜷NYEm3/PK!H~+x%carve-0.2.0.dist-info/RECORDuϻ@@ogȨ"2y耨<įč[&qgSBvX/qP/TaBIkb]iVE[hDI}Sj\;|/z(j2DqI=&v?44Kߠke*:ydXY,9Kc1n_^9 ,ǦzɯSpxrRqt "@c^}眖nx ]цnBZ ö7n좍+s^pbA,sL~PK!eecarve/__init__.pyPK!77<<carve/carve.pyPK!M={{carve/curried.pyPK!H WXcarve-0.2.0.dist-info/WHEELPK!HG 5carve-0.2.0.dist-info/METADATAPK!H~+x%4 carve-0.2.0.dist-info/RECORDPK