mò Dã¸Ec@srdZdkZdklZdfd„ƒYZdefd„ƒYZdefd„ƒYZd fd „ƒYZdS( sDUtility that manages the binding of configuration data to a section.N(s ValueInfot BaseMatchercBsPtZd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Z RS( NcCsË||_||_h|_x€|D]x\}}|idjo|iƒ o h}n|iƒo g}nd}|i dj pt ‚||i|i (Rt __class__t__name__tclsnameRRtextra(RRR((Rt__repr__(s cCsÈ|o<|ii|ƒotid| ƒ‚n||i|R=RI(((RRs    < , 2R3cBstZd„Zd„ZRS(NcCsR|p |iƒo ||_nti|i dƒ‚ti||||ƒdS(Ns sections may not be unnamed( RRt allowUnnamedRRRRRRR(RRRRR((RRçs cCst|i|i|ƒS(N(RJRRR(R((RRIïs(RRKRRI(((RR3æs t SchemaMatchercBstZd„Zd„ZRS(NcCsti|||gƒdS(N(RRRtschema(RRN((RRôscCsXti|ƒ}|ii|ƒ}|iidj o |ii |ii|fƒn|S(N( RR>RR RRBRHR RR(RR ((RR>÷s  (RRKRR>(((RRMós RJcBsVtZdZd„Zd„Zd„Zd„Zd„Zd„Zd„Z d„Z RS( sGeneric 'bag-of-values' object for a section. Derived classes should always call the SectionValue constructor before attempting to modify self. cCs;|ii|ƒ||_||_t|i ƒƒ|_ dS(N( Rt__dict__R<R5Rt_nametmatchert_matcherttupletkeyst _attributes(RR5RRQ((RRs  cCsN|io|i }ndt|ƒ}|ii}d||iii|fS(Nsat %#xs<%s for %s %s>( RRPRtidRRRRRR(RRR((RRs   cCs“g}g}|iiƒD]"}|ddjo ||qq~}|iƒx4|D],}t ||ƒ}|i d||fƒqVWdi |ƒS(Nit_s %-40s: %ss ( tlRERRORTR?t attrnamestsortR,tgetattrR Rtjoin(RR?RXRERYR R,((Rt__str__s? cCs|iS(N(RRP(R((RtgetSectionName!scCs |iiiS(N(RRRRR(R((RtgetSectionType$scCs |iiS(N(RRRR(R((RR@'scCs|iS(N(RRR(R((RtgetSectionMatcher*scCs|iS(N(RRU(R((RtgetSectionAttributes-s( RRKt__doc__RRR]R^R_R@R`Ra(((RRJs      (RbRt ZConfig.infoR.RR3RMRJ(RRMR.RR3RJ((Rt?s   Ñ