mς fDc@sXdkZdkTdkZdkZdklZlZlZlZdfd„ƒYZdS(N(t*(sdebugserrorstracesfataltNodecBstZd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Z d „Z d „Z d „Z d „Z d „Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„ZRS(NcCs1||_||_g|_g|_d|_dS(N( tnametselftm_nametparenttm_parenttm_dirstm_filestNonetm_tstamp(RRR((t&/home/samy/kbilliards/wafadmin/Node.pyt__init__ s     cCsd|iƒS(Ns<%s>(Rtabspath(R((R t__str__ scCsd|iƒS(Ns<%s>(RR (R((R t__repr__#scCs|i|ijS(N(Rt m_oldstampt m_newstamp(R((R t haschanged'scCsAd}x!|iD]}||iƒ7}qW|t|iƒ7}|S(Ni(tl_sizeRRtitsizetlenR(RRR((R R+s  cCs*ytiii|SWn|iSnXdS(N(tParamstg_buildtm_treetm_sigsRR (R((R tget_sig1scCs[ytii|SWnB|ip d}nd|iiƒ}|tii|<|SnXdS(Nii(RRtm_height_cacheRRtvaltheight(RR((R R6s cCsKx|iD]}||_q Wx'|iD]}||_|i|ƒq'WdS(N(RRRRtm_flagRttag(RRR((R R @s    cCsAx:|iD]/}td|iƒ|i|jo|Sq q WdS(Nschild of name (RRtdttraceRRR (RRR!((R t child_of_nameGs   cCs_|tiijo5ditiƒi|ƒƒ}tiii |ƒntiii |ƒdS(Nt/( RRRtm_scanned_folderstjointsrcnodetdifflsttfolderRtscanner_mirrortappend(RR)((R t ensure_scanOscCs]|ptdƒng}|}x+||jo|i|iƒ|i}q$W|iƒ|S(Ns(Node difflst takes a non-null parameter!( tchildterrortlsttnodeRR+RRtreverse(RR-R0R/((R R(Ws  cCs+|ipgSn|iiƒi|iƒS(N(RRtpathlistR+R(R((R t path_listds cCs5|iptigSn|itig|iiƒS(N(RRRt g_rootnameRtostsept pathlist2(R((R R7ks cCsYytii|SWn@|iƒ}|iƒdi|ƒ}|tii|<|SnXdS(Nt( RRtm_abspath_cacheRR7R/R1R&R(RR/R((R R ps   cCsΖ|p|Sn|d}|djo|i|dƒSn|djo|ii|dƒSnx=|i|iD]+}|i|jo|i|dƒSqqqqWt dt |ƒdt |ƒƒdS(Nit.is..sfind_node returns nothing t ( R/RRt find_nodeRRRR!RR"tstrR (RR/R!R((R R<„s   "cCs8||jo dgSn|itig|ii|ƒS(NR:(RR0RR5R6Rt pathlist3(RR0((R R>˜s cCs>|i|jo|igSn|itig|ii|ƒS(N(RRR0RR5R6t pathlist4(RR0((R R?scCs–ytii||SWny|i|ƒ}|iƒdi|ƒ}y|tii||R/R1R&R(RRRR/((R trelpath’s cCs.tiƒ}|ptdƒn|i|ƒS(NsBUG in srcpath(RR'R0R.RRA(RR0((R tsrcpath³s cCssy'tiii|}|itiƒSWn!tj on|GH‚nXtipt dƒn|itiƒS(NsBUG in bldpath( RRRt m_bld_to_srcRtorigt relpath_gent g_bldnodetKeyErrorR.(RRD((R tbldpathΉs cCsΊ|iƒ|iƒ}|djo|i|ƒSn|}x%|djo|i}|d}q=W||jo|Sn|}x6|io+|i}|i}||jo|Sq€q€WdS(Nii(RRR0tdistt find_ancestortcandRtcursor(RR0RLRIRK((R RJΗs"        cCsAg}|}x.||j o |i}|dtig7}qW|S(Ns..(R/RRKRRR5R6(RRRKR/((R t invrelpathΧs  cCsu||jodSn|i|jodSn|i|ƒ}|i|ƒ}|i|ƒ}|i ƒdi ||ƒS(NR:s..R8( Rtgoing_toRRJtancestorRMtup_pathR?t down_pathR1R&(RRNRPRORQ((R REαs  cCsZ||jodSntiƒ}|i|ƒ}|i|ƒ}|i ƒdi ||ƒS(NR:R8( RRNRR'RORMRPR?RQR1R&(RRNRPRORQ((R t relpath_gen2νs   cCs&dGHdG|iGHdG|iGHdGHdS(Ns"========= debug node =============s dirs are s files ares"======= end debug node ===========(RRR(R((R tdebugχs  cCsti|iƒƒ}|GHdS(N(R5tunlinkRR tret(RRU((R RTύscCs:|io,|i|jodSq6|ii|ƒSndS(Nii(RRR0t is_child_of(RR0((R RVs  cCsBtiiii|ƒ}|t|ƒd }ti i |ƒ}|S(Ni( RRRt m_bldnodeR(RtreldirRR5R6R&(RRX((R tcd_tos(t__name__t __module__R RRRRRRR R#R,R(R3R7R R<R>R?RARBRHRJRMRERRRSRTRVRY(((R R s8                      ( R5tstattDeptreeRRSR.R"tfatalR(RR]R"RR.RSR^R5((R t?s