mς ‘γΈEc@sTdklZdklZd„Zd„Zd„ZeƒZd„Zd„Z dS((sWeakValueDictionary(s ClassTypecCst|ƒ}g}|D]}|t|dt|ƒƒq~}|i dƒo|i d|dƒn|i dƒot |dƒ|dd+nt |ƒ}|oAt |ƒdjo|d}n t|ƒ}||||ƒSndkl}||||ƒS(s;makeClass(name, bases, dict) - enhanced class creation t __class__t __metaclass__it__metaclasses__i(sclassobjN(tstrtnamet_[1]tbasestbtgetattrttypet metaclassestdictthas_keytinserttlisttnormalizeBasestlent metaclasst derivedMetatnewtclassobj(RRR RRRRR ((t6/data/zmath/zope/lib/python/Products/Five/metaclass.pyt makeClasss 3  cCs6tg}|D]}|tj o ||qq~ƒS(N(t minimalBasesRtallBasesRR(RRR((RR7scCs«g}|D]}|tj o ||q q ~}g}xl|D]d}x[|D](}t||ƒo||j oPqLqLW||jo|i|ƒn|i |ƒq?W|S(s?Reduce a list of base classes to its ordered minimum equivalentN( Rtclassestct ClassTypet candidatestmtnt issubclasstremovetappend(RRRRRR((RR:s2  cCs t|ƒ}ti|ƒ}|djoήtt|ƒƒ}ti|ƒ}|djoˆt|ƒdjo|d}n@t |ƒdi g}|D]}||i q‘~ƒ|hƒ}y|t|