mò á¸Ec@sjdZdZddd!ZdkTdklZdklZdkl Z d k l Z l Z d k lZlZd klZlZd kZd ieeedƒƒƒZeedƒ deedƒdZeedƒ deedƒdZdfd„ƒYZeeide>ƒd S(,s&Rendering object hierarchies as Trees s8$Id: TreeTag.py 40218 2005-11-18 14:39:19Z andreasjung $s$Revision: 1.58 $i iþÿÿÿ(t*(sString(sdumps(s translate(squotesunquote(scompresss decompressobj(s b2a_base64s a2b_base64Ntit+t-itTreecBs2tZdZfZdZd„Zd„ZeZRS(Nttreec &Cs&|d\}}}t|ddddddddddddd dd dd dd dd dddddddddddddddƒ}|i}|dƒp|dƒp |dƒoRt|ddƒ\}}|dj o||d|d ƒot t ddƒ‚nt |d ƒi |d RtoidtpyidR/trootRtstatetdifftsubstatetcolspantleveltKeyErrorR"thave_argREt tpValuesIdst decode_seqt IndexErrort apply_difft tpStateLeveltrfindtlttreeDataR(RRDtkR0treplaceRFRGt tpRenderTABLERRHt encode_seqt setCookietjoin(R*R/RRR>RURaRVRRTRRNRSRYRMRWRRbR`R0RERR((R,R2ls†                ! & ) ic-Csª | i}#d}*| djoc| d}'|'oNt||'ƒo>|||'ƒ}&|od||&fp|&}|p|&}qnt | d| idƒƒ}"||"d<| |"d|#d1ƒoÂ| d1})| i|)ƒo| i |)dƒ})nd0})|)d0j o{|| d/<| |"d<| i?| ƒzE|,|)d0| d+d,||$d jo d&|$pd fd-d.ƒƒWd0| i@d ƒXqí no|| ||f}!h}x|%D]þ}t||ƒo|||ƒ}n-t|d2ƒotD|ƒ}n tE|ƒ}t|ƒd jo|igƒn|d }d ||<| i?tF|| ƒƒz7tG|||||||||| | | | | ƒ}Wd0| i@ƒX|d p |d =qž qž W|i}xAtt|ƒd dƒD]&}(|||(dƒp ||(=qà qà W|#d3ƒoŒ| d3})| i|)ƒo| i |)dƒ})nd0})|)d0j oE|,|)d0| d+d,||$d jo d&|$pd fd-d.ƒƒq† qŠ n|d=|p|,d4ƒn|S(5sRender a tree as a tableiRs%s/%sRRs tree-item-urls tree-levelstree-item-expandedRRiR RR tguarded_getitemRRRs2s0s s is s8 is"s colspan="%s"Rs style="white-space: nowrap"s R tstandard_html_headersI%ststandard_html_footers s-tree-substate-NR R?R s
i9iÿÿÿÿt=t BASEPATH1Rs%s&RsS-sS+s
(HRR"RYtexpRWturlattrROR*R>ttpUrlRtroot_urltadd_with_prefixRaR(t ptreeDataRNRMtappendtoutputR!RDRURStrangetlentitsubRR/RBR7tgetitemtunauthtindextValidationErrortlistRR;RtsizeR0RbRTt _td_colspant _td_singletcompresstdumpstst encode_strt b2a_base64tfindR`t translatettplustscripttparamRVtdataspant render_blocksRthtdocRFRHt__traceback_info__tidstitemRPRQRGRd(-R*RRpRRSRURTRMRVRR/RaRWRR>R€RRR‘R`RbR~R{RxR‰RNRŠRRzRRyR(RƒRRrRYR‹RDRoRnRwRŽRmR0Rt((R,RdÛs¦        %       !                             $      K         (        (       (          (cCs«|pdSnd|g}|iƒ||f}xs|ok|d}|d=t|ƒdjo|igƒn|d}t |ƒt fƒjot |ƒ}nd}x:t t|ƒƒD]&}||d|jo |}Pq¼q¼W|djo)| o| o ||=q¢||}q4|p|ox|i|ggƒ|dd}xT|oH|d}|d=|p|o%|i|ggƒ|dd}qNqNWq4q4WdS(Niÿÿÿÿii(RTR!RSRƒRRRRvRsR;R}tlocRuRwR (RSRTR R’RwRƒRR((R,R]ësD         cCsÐtt|ƒƒ}t|ƒ}|djoXg}x<td|dƒD](}|it |||d!ƒd ƒqDWdi |ƒ}nt |ƒd }|i dƒ}|djo|| }nt |t ƒ}|S(s'Convert a sequence to an encoded stringi9iiÿÿÿÿRRiN(RR‚RSRvR`tstatesRuRwRsR…RgR†R‡Rˆ(RSR“RwR`((R,Re s  & cCs¾t|ƒ}|djoXg}x<td|dƒD](}|it|||d!ƒd ƒq2Wdi|ƒ}nt|ƒd }|i dƒ}|djo|| }nt |t ƒ}|S(s'Convert a sequence to an encoded stringi9iiÿÿÿÿRRiN( RvRSR`R“RuRwRsR…RgR†R‡Rˆ(RSRwR`R“((R,R„s  & cCsjt|tƒ}t|ƒ}|djoÅg}d}xBt|dƒD]0}|d}|i t |||!ƒƒ|}qEW||joT||}t|ƒ}|d}|o|dd|}n|i t |ƒƒndi |ƒ}n@t|ƒ}|d}|o|dd|}nt |ƒ}t |ƒ}y ttt|ƒƒiƒƒSWn gSnXdS(s'Convert an encoded string to a sequenceiLiiRiRN(R‡RSttminusRvR`R“tjRuRwRbRst a2b_base64Rgt decompressR}t MiniUnpicklertStringIOtload(RSRwR•R`R“Rb((R,R[0s:             i(cCs”tƒ}d}xt|oltd|t|ƒdƒ}|| ||}}||i |ƒ7}t|ƒ|jot dƒ‚qqW||i ƒS(NRiièsCompressed input too large( t decompressobjtdRttinputtmaxtmax_sizeRvt fragment_sizetfragmentR—t ValueErrortflush(RRŸRœR¡R Rt((R,R—Ns cCsXxQ|D]I}t|ƒdjo!t|dt|dƒƒ}qt|dƒ}qW|S(Nii(RSRxRvRžRWR^(RSRWRx((R,R^Zs !c Cs g}|d}yîy||ƒ}Wntj o f}nXx»|D]³}y£||ƒo’t||ƒo|||ƒ} n-t|dƒot |ƒ} n t |ƒ} t |||ƒ}|o| |g} n | g} |i| ƒnWqFqFXqFWWnnX|S(NRR?(trRRNRER*RDtAttributeErrorR‘ROR>RRPRQRZteRs( R*RERR>R¦RNRDR‘R¤R((R,RZ`s4      cCstt|iƒƒd S(Niÿÿÿÿ(R…tstrR*R?(R*((R,RPs(sStringIOs2.0sInvalid pickle versionR˜cBsÀtZdZd„ZeiiiƒZxŽeiƒD]€\Z Z e djp e djoq4eee R2R!RdR]ReR„R[R—R^RZRPR©t cStringIOR™tformat_versionR­R˜R¹RºR»R¾($RÈR¹R>R¾R˜RRQR^R„R…R›RÃReR”RZRËR<RÀR[RºRÇRPRR—R]RˆRÎR‡RdR™R–R‚R¿R2R©R»((R,t?sN     &&< N oÿ "