PK!Bّ``attrs_serde/__init__.pyfrom .__version__ import __version__ # noqa from .attrs_serde import serde __all__ = ['serde']PK!94attrs_serde/__version__.py__version__ = "0.2.1"PK!5㓪attrs_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=None, from_key="from", to_key="to"): def serde_with_class(cls): from_fields = list( map(lambda a: (a, get_in([from_key], a.metadata, [a.name])), fields(cls)) ) to_fields = pipe( fields(cls), map(lambda a: (a, get_in([to_key], 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 if cls: return serde_with_class(cls) else: return serde_with_class PK!H9VWX!attrs_serde-0.2.1.dist-info/WHEEL A н#f."jm)!fb҅~ܴA,mTD}E n0H饹*|D[¬c i=0(q3PK!HZc$attrs_serde-0.2.1.dist-info/METADATAXmo6_qMlZ/nSH ,kҦq/A3ckDMEXI5Xaxw>`&To)/`xGs6*e%ƂU 3֟Mfuj5׀S@ms6.-,t2YrYyp9TƬ~xVWJDk˨k)G%kv:oic4Bj1v2*Dz2)벬%K->V|Q). I,/!X=W9+d_= G"Z}]&*-/$\X#] E¯ xr|2YIZX i/W;tV%bH Ø(xqJVXnMF3(Be,nFUbl5eٶlb<-\<Zډe<̬ƫ是U4g* é((Dg?oIFB7I7C-@k[SoEPK(Q@cQ<گ c5+ʗ['vz ƈ?} 44BHeP UeZN&c+HLVdHqI4'(3a(0aE 0bڢW)im.P*\&/Ւ1[́Zi.sTo{ć`x% e \Ҭf8 (5] Z+]PJF%,ྐྵyiWJIsS}FHWWvqYߩҝZ`:)^>(ؠWd90_Q6A3L^ \ w{Em$+:byqX Xi16FI RB0ȹ vw2nCvD~V+Phh_jI%40@3:MbT4e`&dUh`=8CYf pp^+\Ca \ab<"g2e9qP/x}-3`bҷEеϿ*:'Nrpe!g0pT# s k7p>j;^!] }Xs|-iy!0 oei 3e>1M!NHÑg- h=m8A*f!+H8> Z#ւ=UuKsk΃+7"oZ0kgk~h hpy֟[lTL =|s@DwE0@ !{Hfak*6:nd=0+ !:u9?:uSSŅ@A]կ8xjchxc/Ij|SKZjb*],~FUc!qd2ݰbH`y7{s2h_4YOPK!H,&"attrs_serde-0.2.1.dist-info/RECORD};0޳#&qɀ" Im^R)#y1'j+Nxi۟AUj8&mCI|2KWG `m ʪ} eZ5FFO1jwM.IM/|byAo_BUgNߟB3&~t^/9V"Aнg $Qe1ֶctu 5=Azc)#,\F15&s j WvN̩֭)czO< GVa^`PK!Bّ``attrs_serde/__init__.pyPK!94attrs_serde/__version__.pyPK!5㓪attrs_serde/attrs_serde.pyPK!H9VWX!attrs_serde-0.2.1.dist-info/WHEELPK!HZc$Zattrs_serde-0.2.1.dist-info/METADATAPK!H,&"4 attrs_serde-0.2.1.dist-info/RECORDPK