Ñò PhEc@s}dddddddddd d d d d dddgZyddkZddkZWn+ej oddkZddkZnXddkZddk Z ddk Z ddk Z ddk Z ddk Z ddkZddkZddkZddkZddkZddkZddkZyddklZWn#ej oddklZnXd„Zd„Zd„Zd„Zd efd„ƒYZdd$d„ƒYZdd%d„ƒYZde ifd„ƒYZ de ifd„ƒYZ!dd&d„ƒYZ"dd'd„ƒYZ#dd(d„ƒYZ$de$fd „ƒYZ%de$fd!„ƒYZ&de$fd"„ƒYZ'd d)d#„ƒYZ(dS(*t OrderedDictt ThreadLocaltValuet InheritedDicttConstructorClonetRegistrytWeakValuedRegistrytSyncDicttLRUCachetargdictt EncodedPathtpidt thread_idtverify_directoryt PrefixArgstmoduletStringIOiÿÿÿÿN(RcCs tiƒS(N(t_threadt get_ident(((s//usr/lib/python2.6/site-packages/myghty/util.pyR scCs tiƒS(N(tostgetpid(((s//usr/lib/python2.6/site-packages/myghty/util.pyR scCsdd}xWti|tiƒp@y|d7}ti|dƒWq |djo‚q[q Xq WdS(scverifies and creates a directory. tries to ignore collisions with other threads and processes.iiièiN(RtaccesstF_OKtmakedirs(tdirttries((s//usr/lib/python2.6/site-packages/myghty/util.pyR "s  cCsCt|ƒ}|idƒ}x!|dD]}t||ƒ}q&W|S(s5imports a module, in the ordinary way, by string namet.i(t __import__tsplittgetattr(tnametmodt componentstcomp((s//usr/lib/python2.6/site-packages/myghty/util.pyR/s   cBseZdZd„ZRS(sasupports the argument constructor form of dict which doesnt seem to be present in python 2.2cKsti|ƒ|i|ƒdS(N(tdictt__init__tupdate(tselftparams((s//usr/lib/python2.6/site-packages/myghty/util.pyR#<s (t__name__t __module__t__doc__R#(((s//usr/lib/python2.6/site-packages/myghty/util.pyR 9scBs5eZdZdd„Zd„Zd„Zd„ZRS(s#allows pass-by-reference operationscCs ||_dS(N(tvalue(R%R*((s//usr/lib/python2.6/site-packages/myghty/util.pyR#DscGs-t|ƒo|i|dƒn|iSdS(Ni(tlentassignR*(R%targ((s//usr/lib/python2.6/site-packages/myghty/util.pyt__call__Fs cCs t|iƒS(N(tstrR*(R%((s//usr/lib/python2.6/site-packages/myghty/util.pyt__str__LscCs ||_dS(N(R*(R%R*((s//usr/lib/python2.6/site-packages/myghty/util.pyR,OsN(R'R(R)tNoneR#R.R0R,(((s//usr/lib/python2.6/site-packages/myghty/util.pyRBs    cBs_eZdZd d d d„Zd„Zd„Zd„Zd„Zd„Z d„Z d„Z RS( s$stores a value on a per-thread basiscCs7h|_||_||_|o|i|ƒndS(N(R"tdefaulttcreatortput(R%R*R2R3((s//usr/lib/python2.6/site-packages/myghty/util.pyR#Us    cGs0t|ƒo|i|dƒn |iƒSdS(Ni(R+R4tget(R%R-((s//usr/lib/python2.6/site-packages/myghty/util.pyR.\s cCst|iƒƒS(N(R/R5(R%((s//usr/lib/python2.6/site-packages/myghty/util.pyR0bscCs||itiƒ‹s(tmapR:(R%((R%s//usr/lib/python2.6/site-packages/myghty/util.pyR;ŠscCs t|iƒS(N(titerR:(R%((s//usr/lib/python2.6/site-packages/myghty/util.pyt__iter__scCs,tg}|iD]}|||q~ƒS(N(RBR:(R%t_[1]R?((s//usr/lib/python2.6/site-packages/myghty/util.pyt itervaluesscCs |iƒS(N(RC(R%((s//usr/lib/python2.6/site-packages/myghty/util.pytiterkeys“scCs5tg}|iƒD]}||||fq~ƒS(N(RBR=(R%RDR?((s//usr/lib/python2.6/site-packages/myghty/util.pyt iteritems•scCs$|i|=|i|ii|ƒ=dS(N(R"R:tindex(R%R?((s//usr/lib/python2.6/site-packages/myghty/util.pyt __delitem__˜s cCs;|i|ƒp|ii|ƒn|ii||ƒdS(N(R6R:tappendR"R>(R%R?tobject((s//usr/lib/python2.6/site-packages/myghty/util.pyR>œscCs|ii|ƒS(N(R"t __getitem__(R%R?((s//usr/lib/python2.6/site-packages/myghty/util.pyRL¢sN(R'R(R)R1R#R=R$R;RCRERFRGRIR>RL(((s//usr/lib/python2.6/site-packages/myghty/util.pyRzs          cBs\eZdZd„Zd d d„Zd„Zd„Zd„Zd„Z d„Z d„Z RS( s_a dictionary that can defer lookups to a second dictionary if the key is not found locally.cCs||_||_dS(N(R"t superfunc(R%R"RM((s//usr/lib/python2.6/site-packages/myghty/util.pyR#©s cCso|djo|djo|iS|djo,y|i|ƒSWqktj odSXn|i||ƒdS(N(R1R"RLtKeyErrorR>(R%R?R*((s//usr/lib/python2.6/site-packages/myghty/util.pyR.­s  cCsT|i}|i|ƒo ||S|iƒ}|dj o ||St|ƒ‚dS(N(R"R6RMR1RN(R%R?R"tparent((s//usr/lib/python2.6/site-packages/myghty/util.pyRL¸s     cCs||i|ÂscCs|i|=dS(N(R"(R%R?((s//usr/lib/python2.6/site-packages/myghty/util.pyRIÅscCs |iiƒS(N(R"R=(R%((s//usr/lib/python2.6/site-packages/myghty/util.pyR=ÈscCs |i|ƒS(N(R6(R%R?((s//usr/lib/python2.6/site-packages/myghty/util.pyt __contains__ËscCsC|ii|ƒotS|iƒ}|dj o|i|ƒStS(N(R"R6tTrueRMR1tFalse(R%R?RO((s//usr/lib/python2.6/site-packages/myghty/util.pyR6Îs   N( R'R(R)R#R1R.RLR>RIR=RPR6(((s//usr/lib/python2.6/site-packages/myghty/util.pyR¥s     cBs/eZdZd„Zd„ZhZd„ZRS(sûcloning methods that take additional parameters. one method is a straight shallow copy, the other recreates the object via its constructor. both methods assume a relationship between the given parameters and the attribute names of the object.cKs"|i|_||_||_dS(N(t __class__tclassobjtinstanceR&(R%RUR&((s//usr/lib/python2.6/site-packages/myghty/util.pyR#Ýs  cCsFti|iƒ}x-|iiƒD]\}}t|||ƒq"W|S(N(tcopyRUR&RGtsetattr(R%tclR?R*((s//usr/lib/python2.6/site-packages/myghty/util.pyt copycloneâs  c Cs|iid|ii}tii|ƒp‰ti|iii ƒ}|dpg}|dpg}|dt |ƒt |ƒ!|t |ƒt |ƒ}}||fti|' and stores a reference. cCs%||_h|_t|ƒ|_dS(N(tprefixR&R+tprelen(R%Rh((s//usr/lib/python2.6/site-packages/myghty/util.pyR#&s  cKsSxL|iƒD]>\}}|d|i!|ijo||i||i" to this one.iN(RGRiRhR&(R%R&R?titem((s//usr/lib/python2.6/site-packages/myghty/util.pytset_prefix_params,s cKs|ii|ƒdS(s=from the given dictionary, copies all key/values to this one.N(R&R$(R%R&((s//usr/lib/python2.6/site-packages/myghty/util.pyt set_params3scKsi|iiƒ}xS|iƒD]E\}}|d|i!|ijo||||i(R%R?R*((s//usr/lib/python2.6/site-packages/myghty/util.pyR>ŠscCs|ii|ƒS(N(R"RI(R%R?((s//usr/lib/python2.6/site-packages/myghty/util.pyRIŒsN(R'R(R)R#R1R5RrRRRqRwR6RPRLR>RI(((s//usr/lib/python2.6/site-packages/myghty/util.pyRHs        cBseZdZd„ZRS(sa registry object.cCsti|tiƒhƒdS(N(RR#t _threadingtLock(R%((s//usr/lib/python2.6/site-packages/myghty/util.pyR#’s(R'R(R)R#(((s//usr/lib/python2.6/site-packages/myghty/util.pyRscBseZdZd„ZRS(sOa registry that stores objects only as long as someone has a reference to them.cCs#ti|tiƒtiƒƒdS(N(RR#RztRLocktweakreftWeakValueDictionary(R%((s//usr/lib/python2.6/site-packages/myghty/util.pyR#—s(R'R(R)R#(((s//usr/lib/python2.6/site-packages/myghty/util.pyR•scBsoeZdZdd d„ƒYZd dd„Zd„Zd„Zd„Zd„Z d „Z d „Z d „Z RS(s‚a cache (mapping class) that stores only a certain number of elements, and discards its least recently used element when full.t ListElementcBseZd„Zd„ZRS(cCs||_|i|ƒdS(N(R?tsetvalue(R%R?R*((s//usr/lib/python2.6/site-packages/myghty/util.pyR#¥s cCs6||_t|dƒo|i|_n d|_dS(Ntsizei(R*R^R(R%R*((s//usr/lib/python2.6/site-packages/myghty/util.pyR€©s (R'R(R#R€(((s//usr/lib/python2.6/site-packages/myghty/util.pyR¤s gš™™™™™É?cCsfti|tiƒhƒ||_|||_d|_d|_||_ d|_ tiƒ|_ dS(Ni( RR#RzR{Rt maxelemsizeR1theadttailt deletefunct currentsizet listmutex(R%RR…tsizethreshhold((s//usr/lib/python2.6/site-packages/myghty/util.pyR#±s      cCs»|iiƒz™|ii|dƒ}|djo0ti||ƒ}||i|<|i|ƒnD|i}|i |ƒ|i |i|7_ |i |ƒ|i ƒWd|ii ƒXdS(N(R‡RvR"R5R1RRt_insertElementRR€R†t_updateElementt _manageSizeRx(R%R?R*texistingtelementtoldsize((s//usr/lib/python2.6/site-packages/myghty/util.pyR>¾s      cCsG|iiƒz%|i|}|i|ƒ|iSWd|iiƒXdS(N(R‡RvR"RŠR*Rx(R%R?R((s//usr/lib/python2.6/site-packages/myghty/util.pyRLÕs     cCs|ii|ƒS(N(R"R6(R%R?((s//usr/lib/python2.6/site-packages/myghty/util.pyRPßscCs|ii|ƒS(N(R"R6(R%R?((s//usr/lib/python2.6/site-packages/myghty/util.pyR6âscCs||idjodSd|_|i|_|idj o||i_n ||_||_|i|i7_|iƒdS(Ni(RR1tpreviousRƒtnextR„R†R‹(R%R((s//usr/lib/python2.6/site-packages/myghty/util.pyR‰ås    cCs¼xµ|i|ijo¡|i|ii}|idj o|i|iƒn|i|i8_|i|ii=|i|ijo|ii |_d|i_ qd|_d|_qWdS(N( R†RR"R„R?R…R1R*RƒRR(R%toldelem((s//usr/lib/python2.6/site-packages/myghty/util.pyR‹ùs cCs–|idjodS|i|jodS|i}|i|_|idj o||i_n ||_d|_|i|_||i_||_dS(Ni(RRƒRRR1R„(R%Rte((s//usr/lib/python2.6/site-packages/myghty/util.pyRŠ s      (N( R'R(R)RR1R#R>RLRPR6R‰R‹RŠ(((s//usr/lib/python2.6/site-packages/myghty/util.pyR s      cBs5eZdZddeed„Zd„Zd„ZRS(stgenerates a unique file-accessible path from the given list of identifiers starting at the given root directory.s.encic Cs¹ti|dƒ}|oti|ƒiƒ}ng}x+td|ƒD]} |i|d| !ƒqHWtii||Œ} |ot | ƒn| |_ tii| ||ƒ|_dS(Nt_ii( tstringtjointshatnewt hexdigesttrangeRJRtpathR R( R%troott identifierst extensiontdepthtverifytdigesttidentttokenstdR((s//usr/lib/python2.6/site-packages/myghty/util.pyR#&s cCst|iƒdS(N(R R(R%((s//usr/lib/python2.6/site-packages/myghty/util.pyR 7scCs|iS(N(Rš(R%((s//usr/lib/python2.6/site-packages/myghty/util.pytget_path:s(R'R(R)RQR#R R¤(((s//usr/lib/python2.6/site-packages/myghty/util.pyR #s ((((((()t__all__tthreadRt threadingRzt ImportErrort dummy_threadtdummy_threadingR}R[R–R”RtUserDictRVtsystimptretstatttypesttimet cStringIORR R R RR"R RRt DictMixinRRRRRRRRR (((s//usr/lib/python2.6/site-packages/myghty/util.pyt s69  œ    '+3J&H ƒ