;ō ž`ī>c@s–dZdfd„ƒYZdefd„ƒYZedjoVeƒ djpt‚eƒidjpt‚edd ƒid jpt‚nd S( s,This file contains the AutomaticClass class.sAutomaticClasscBs2tZdZd„Zd„Zd„Zd„ZRS(s5This is a base class for simple, struct-like classes.cKs@x9|iD].}|i|ƒot||||ƒq q WdS(sĪSubclasses should call this after initializing any defaults. **kargs - Set each attribute with the given value. Keys in kargs that aren't in self.__attributes__ will be ignored. N(sselfs__attributes__siskargsshas_keyssetattr(sselfskargssi((s./AutomaticClass.pys__init__s  cCsgSdS(s¯Return the list of attributes that this class uses. Subclasses should extend (not override) this method to add their own attributes. N((sself((s./AutomaticClass.pys getAttributesscCs%|djo|iƒSnt‚dS(soHandle the following attributes manually: __attributes__. Meta, meta, meta! s__attributes__N(s attributesselfs getAttributessAttributeError(sselfs attribute((s./AutomaticClass.pys __getattr__s cCsug}xK|iD]@}yt||ƒ}Wn d}nX|id||fƒqWd|iidi |ƒfSdS(s7Return a suitable string representing of this instance.s Undefineds%s=%ss<%s %s>s N( s attributessselfs__attributes__sisgetattrsvaluesappends __class__s__name__sjoin(sselfsis attributessvalue((s./AutomaticClass.pys__repr__&s  (s__name__s __module__s__doc__s__init__s getAttributess __getattr__s__repr__(((s./AutomaticClass.pysAutomaticClasss  s_TestcBstZd„Zd„ZRS(NcKsd|_ti||dS(NsBar(sselfsfoosAutomaticClasss__init__skargs(sselfskargs((s./AutomaticClass.pys__init__4s cCsti|ƒdgSdS(Nsfoo(sAutomaticClasss getAttributessself(sself((s./AutomaticClass.pys getAttributes7s(s__name__s __module__s__init__s getAttributes(((s./AutomaticClass.pys_Test3s s__main__s<_Test foo=Bar>sBarsfoosNot barN(s__doc__sAutomaticClasss_Tests__name__sAssertionErrorsfoo(s_TestsAutomaticClass((s./AutomaticClass.pys?s /