Ñò #ßøTc @s|ddklZddklZlZddkZddkZddkZdefd„ƒYZ ei ee e ƒe _ dS(iÿÿÿÿ(t _allow_facet(tEmptyIt ImmutableDictNtFacetscBsšeZdZdZdZed„Zed)d„ƒZ ed)d„ƒZ d„Z d„Z d„Z d „Zd „Zd „Zd „Zd „Zd„Zd„Zd„Zd„Zed„Zd„Zd„Zd„Zed„Zd„Zd„Zd„Zd„Z d„Z!d„Z"d)d„Z#d„Z$d„Z%d „Z&d!„Z'd"„Z(d#„Z)d$„Z*d%„Z+d&„Z,e-d'„ƒZ.e-d(„ƒZ/RS(*tsystemtlocaltparentcCsTti|ƒg|_h|_h|_d|_h|_d|_|i |ƒdS(N( tdictt__init__t_Facets__keylistt _Facets__rest_Facets__localtNonet_Facets__local_rot_Facets__inheritedt_Facets__inherited_rotupdate(tselftinit((s//usr/lib/python2.6/vendor-packages/pkg/facet.pyR\s       c Csng}|iiƒD]\}}|||tgq~g}|iiƒD]\}}|||tgqJ~S(sReturns the serialized state of this object in a format that that can be easily stored using JSON, pickle, etc.(Rt iteritemstTrueR tFalse(tobjtje_statet_[1]tktvt_[2]((s//usr/lib/python2.6/vendor-packages/pkg/facet.pytgetstatehs/cCsLtƒ}x<|D]4\}}}|p|||(tjoinR Rt __getitem__(RtsRR((s//usr/lib/python2.6/vendor-packages/pkg/facet.pyt__repr__×s  7 c Csªd„}g|_|itg}|D]!}||ijo ||q'q'~d|ƒ7_|itg}|D]!}||ijo ||qqqq~d|ƒ7_dS(s{Update __keysort, which is used to determine facet matching order. Inherited facets always take priority over local facets so make sure all inherited facets come before local facets in __keylist. All facets from a given source are sorted by length, and facets of equal length are sorted lexically.cSs5t|ƒt|ƒ}|djo|St||ƒS(Ni(tlenR%(txtyti((s//usr/lib/python2.6/vendor-packages/pkg/facet.pyt facet_sortés R%N(R tsortedR(RR;RR:R((s//usr/lib/python2.6/vendor-packages/pkg/facet.pyt__keylist_sortás    $   $cCs|idƒp td‚n|tjp |tjp td‚nt}|o||ijp| o||jo t}n|o||i|, ) where key is the explicitly set facet name (which may be a glob pattern) that matched the caller specific facet name.sfacet.skey must start w/ facet.s facet.debug.sfacet.optional.N( R>R?RR4R R tmatchR RR(RRGR((s//usr/lib/python2.6/vendor-packages/pkg/facet.pyt__getitem_internals     cCs|i|ƒdS(Ni(t_Facets__getitem_internal(RRG((s//usr/lib/python2.6/vendor-packages/pkg/facet.pyR46scCsRti||ƒp t|‚n| o||ijo t|‚n| p||ijpt‚t}|oS||ijoCti|||i|ƒti t i |ƒƒ|i |tsetR taddR RM(RtactRtat action_facetsR tfacett action_facet((s//usr/lib/python2.6/vendor-packages/pkg/facet.pyt _action_matchrs  '    cOs°t|ƒdjp't|ƒdjo d|jpt‚||ijoS|o |dSd|jo |dSt|ƒdjo td‚nt|‚n|i|dtƒS(s$pop() only operates on local facets.iitdefaultspop(): dictionary is emptyRI(R7R$R R?RTR(RRGtargstkwargs((s//usr/lib/python2.6/vendor-packages/pkg/facet.pytpop‹s&     cCsRd}x|iD] \}}PqW|djo td‚n|i|ƒ||fS(s(popitem() only operates on local facets.spopitem(): dictionary is emptyN(R R R?RT(RRGRH((s//usr/lib/python2.6/vendor-packages/pkg/facet.pytpopitems    cCs#||jo|||, , ) which represent all currently set values for this facet.(RtFACET_SRC_PARENTRtappendR tFACET_SRC_LOCALR(RtnameR tsrcRHtmasked((s//usr/lib/python2.6/vendor-packages/pkg/facet.pyt _src_valuesÁs     cCs%g}|iƒD] }||q~S(N(R(RRR\((s//usr/lib/python2.6/vendor-packages/pkg/facet.pytitemsØsccs'x |iD]}|||fVq WdS(N(R (RR((s//usr/lib/python2.6/vendor-packages/pkg/facet.pyRÛs cCs t|ƒS(N(R(R((s//usr/lib/python2.6/vendor-packages/pkg/facet.pytcopyßscCsGg|_h|_h|_d|_h|_d|_ti|ƒdS(N( R R R R R RRRtclear(R((s//usr/lib/python2.6/vendor-packages/pkg/facet.pyRrâs      cCsk|i|ƒd}||ijo|iS||ijo|iS|djo ||jpt‚|iS(sReport the source of a facet value if we were to attempt to look it up in the current Facets object dictionary.iN(RORRiR RkR R$tFACET_SRC_SYSTEM(RRlR((s//usr/lib/python2.6/vendor-packages/pkg/facet.pyt _match_srcës!cCs-|idjot|iƒ|_n|iS(N(R R RR (R((s//usr/lib/python2.6/vendor-packages/pkg/facet.pyRùscCs-|idjot|iƒ|_n|iS(N(RR RR(R((s//usr/lib/python2.6/vendor-packages/pkg/facet.pyRIÿsN(0t__name__t __module__RsRkRiRRt staticmethodR RR"R'R)R*R(R+R,R-R.R/R0R6RFRRLRAROR4RTRQRRVR`RdReRfRRURhRoRpRRqRrRttpropertyRRI(((s//usr/lib/python2.6/vendor-packages/pkg/facet.pyR#sV5    "            )             ( t pkg._varcetRtpkg.miscRRRDRBttypesRRt MethodTypeR t allow_action(((s//usr/lib/python2.6/vendor-packages/pkg/facet.pyts   ÿä