PK!Bّ``attrs_serde/__init__.pyfrom .__version__ import __version__ # noqa from .attrs_serde import serde __all__ = ['serde']PK!C-&attrs_serde/__version__.py__version__ = "0.1.1"PK!]oDDattrs_serde/attrs_serde.pyfrom cytoolz.curried import get_in, merge, update_in, reduce, pipe, map, filter from attr import attrib, attrs, fields, asdict def serde(cls): from_fields = list( map(lambda a: (a, get_in(["from"], a.metadata, [a.name])), fields(cls)) ) to_fields = pipe( fields(cls), map(lambda a: (a, get_in(["to"], a.metadata))), filter(lambda f: f[1]), list, ) def from_dict(d): return cls( **dict( map(lambda f: (f[0].name, get_in(f[1], d, f[0].default)), from_fields) ) ) def to_dict(self): d = asdict(self) return reduce( lambda acc, f: update_in(acc, f[1], lambda _: d[f[0].name]), to_fields, {} ) cls.from_dict = staticmethod(from_dict) cls.to_dict = to_dict return cls PK!H9VWX!attrs_serde-0.1.1.dist-info/WHEEL A н#f."jm)!fb҅~ܴA,mTD}E n0H饹*|D[¬c i=0(q3PK!H8/"-(|$attrs_serde-0.1.1.dist-info/METADATAWmO8_1+zDHZr!$f#sl+KTt^]cIQIR$<I # VFL[@Ie=xB 84lWaAgh.hȸ"!F+i% h>pJd~s2_Oΰ^Op^<} OC$bbxp/K:4ɥvmV@og9xgD? * a (~K B9HSXe,M~gNw,DrˤP{<~x6/Hv/Gxo"~kڛ^ƢBՒi}ĞzKx9MӦi1 _u#D<4cl7c4;9R66~q0c[KiZÃ)˂/ sخ]hk,sPԖzJE??e( w#%(4}]l]Я maueb%ChAGN=k+j/#۫M\X"S5F|s>WIxIKi4MI1oGLzw J)#3YWɴ"Jn+GR>Aq;##shFF 4*el]G%Z;zdD&{v@tS-݀$"StoF{ Zq1 Ҵb44(7늋Z5$2dV@sw2AUb{pO"e $2"Lh x߈6b-QOq!9AV~5@F$9ŌFub*qNq9D cg4DVU=<2BU6݆&w(oGF\uГI2rчwgcz'ۧx=5|t)['}u*pi-:>MΉ+*;][ttz$ @Bpr$Xi5Kqym8+&1 yX?;54eYL\sA=3[+O_VJZbMc)>|7 diόv7ꉼNjyb|,X"3|8m\5(Ē> cp~twqrpkDs]24B:IPK!H?O&"attrs_serde-0.1.1.dist-info/RECORDλr@gYR H06 kdi9_}sۭg+\dm-9Wʽ b:SaP+~ȇ(ڧ䍚VDtuO{36wԜ][_yUIY8_Zl_Rޖ' /`(2{ M0Hgfpq'6>T&q.&.  m' KN