Ñò $·!Gc@s«ddklZlZlZddklZddkZddddgZhZd„Z d „Z de fd „ƒYZ de fd „ƒYZ de efd „ƒYZdS( iÿÿÿÿ(tdecoratetdecorate_classtenclosing_frame(trefNtAddOnt ClassAddOntRegistryt addons_forcCsy|i}|i}|SWn`ttfj oNt|ƒ}y t|SWq}tj o tit|tiƒhƒSXnXdS(s7Get the dictionary that should contain add-ons for `ob`N(t__dict__t setdefaulttAttributeErrort TypeErrorRt_addonstKeyErrort __delitem__(tobtdtsdtr((s4/usr/lib/python2.6/site-packages/peak/util/addons.pyR s    cCs/ddk}|idddd|i|iBƒS(Niÿÿÿÿs README.txttpackaget__main__t optionflags(tdoctestt DocFileSuitetELLIPSIStNORMALIZE_WHITESPACE(R((s4/usr/lib/python2.6/site-packages/peak/util/addons.pytadditional_testss  cBsleZdZdZdefd„ƒYZeeƒd„Zeeƒd„Z eeƒd„Z d„Z RS(s)Attach extra state to (almost) any objectt __metaclass__cBseZd„ZRS(cGsct|ƒ}|i|Œ}y ||SWn5tj o)|i|ti|||Œƒ}|SXdS(N(Rt addon_keyR R ttypet__call__(tclsRtdatataR((s4/usr/lib/python2.6/site-packages/peak/util/addons.pyR0s  !(t__name__t __module__R(((s4/usr/lib/python2.6/site-packages/peak/util/addons.pyR/scGs|o |f|S|S(N((Rtargs((s4/usr/lib/python2.6/site-packages/peak/util/addons.pyR;s cGs|i|Œt|ƒjS(s4Does an aspect of this type for the given key exist?(RR(RRtkey((s4/usr/lib/python2.6/site-packages/peak/util/addons.pyt exists_for@scGs:t|ƒ}y||i|Œ=Wntj onXdS(s>Ensure an aspect of this type for the given key does not existN(RRR (RRR%R!((s4/usr/lib/python2.6/site-packages/peak/util/addons.pyt delete_fromEs  cCsdS(N((tselftsubject((s4/usr/lib/python2.6/site-packages/peak/util/addons.pyt__init__Ms(( R"R#t__doc__t __slots__RRRt classmethodRR&R'R*(((s4/usr/lib/python2.6/site-packages/peak/util/addons.pyR*s      cBs”eZdZd Zdeifd„ƒYZeeƒd„Z eeƒd„Z eeƒd„Z eeƒd„Z d„Z d„Zd „ZRS( s+Attachment/annotation for classes and typesRcBseZd„ZRS(cGs‚|i|Œ}|i}||jo ||St|ƒ}y ||SWn5tj o)|i|ti|||Œƒ}|SXdS(N(RRRR R RR(RRR RRtd2((s4/usr/lib/python2.6/site-packages/peak/util/addons.pyRXs     !(R"R#R(((s4/usr/lib/python2.6/site-packages/peak/util/addons.pyRWscOsd|jo|idƒ}n6d|jo|idƒ}nd}ti|ƒ}|otd|ƒ‚n|i||ŒS(NtframetlevelisUnexpected keyword arguments(tpoptsyst _getframeR t for_frame(RR$tkwR/R0((s4/usr/lib/python2.6/site-packages/peak/util/addons.pytfor_enclosing_classfs  cst|ƒi}|i|Œ}y ||SWnNtj oB|i|ti|d|Œƒ‰t‡fd†d|ƒˆSXdS(Ncs ˆi|ƒS((t_ClassAddOn__decorate(tc(R(s4/usr/lib/python2.6/site-packages/peak/util/addons.pyt‡sR/( Rtf_localsRR R RRtNoneR(RR/R$R!R((Rs4/usr/lib/python2.6/site-packages/peak/util/addons.pyR4}s !cGs/|i|Œ}||ijp|t|ƒjS(s4Does an aspect of this type for the given key exist?(RRR(RRR%R((s4/usr/lib/python2.6/site-packages/peak/util/addons.pyR&‹scGstdƒ‚dS(sClass AddOns are not deletable!sClassAddOns cannot be deletedN(R (RRR%((s4/usr/lib/python2.6/site-packages/peak/util/addons.pyR'‘scCs|i|ƒ|S(N(t created_for(R(R((s4/usr/lib/python2.6/site-packages/peak/util/addons.pyt __decorate•s cCsdS(s=Override to access the decorated class, as soon as it's knownN((R(R((s4/usr/lib/python2.6/site-packages/peak/util/addons.pyR<™scCs"|dj o|i|ƒndS(s;Ensure ``created_for()`` is called, if class already existsN(R;R<(R(R)((s4/usr/lib/python2.6/site-packages/peak/util/addons.pyR*œs ((R"R#R+R,Rt __class__RRR-R6R4R&R'R7R<R*(((s4/usr/lib/python2.6/site-packages/peak/util/addons.pyRSs         cBs8eZdZdZd„Zd„Zd„Zd„ZRS(s9ClassAddOn that's a dictionary with mro-based inheritancecCs3|tjotdƒ‚ntt|ƒi|ƒS(Ns$You must subclass Registry to use it(RR tsupert__new__(RR)((s4/usr/lib/python2.6/site-packages/peak/util/addons.pyR@ªs cCs'ti|ƒtt|ƒi|ƒdS(N(tdictR*R?R(R(R)((s4/usr/lib/python2.6/site-packages/peak/util/addons.pyR*¯s cCsÆy|iddd…}WnBtj o6t|i|tfhƒidddd…}nXh}t|ƒ|_t|ƒ}x%|d D]}|i||ƒƒq‹W|i|ƒ|i|ƒdS(s$Inherit the contents of base classesNiÿÿÿÿi(t__mro__R RR"tobjectRAtdefined_in_classtupdate(R(RtmroR tmytypetbase((s4/usr/lib/python2.6/site-packages/peak/util/addons.pyR<³s4   cCsV||jo;|||jo*td|ii||||fƒ‚n|||R"(R(R%tvalue((s4/usr/lib/python2.6/site-packages/peak/util/addons.pytsetÄs$((R"R#R+R,R@R*R<RK(((s4/usr/lib/python2.6/site-packages/peak/util/addons.pyR¥s    (tpeak.util.decoratorsRRRtweakrefRR2t__all__R RRRCRRRAR(((s4/usr/lib/python2.6/site-packages/peak/util/addons.pyts   )R