bgW"RdZGddeZGddZdZdZdZdS) a Handling of tree structures given in a special 'dotted' syntax. This represents trees of nodes with strings as tags, in a readable and writable and easy to parse syntax. There are two main functions, unparse_sexpr and parse_string. When parsing, the result is by default given in 'sexpr' format: each node is a tuple of the form (tag, ) or (tag, node) or (tag, node, node) ... The following invariant is intended to hold for every node x, parse_string(unparse_sexpr(x)) == x Currently the following invariant has been tested for some strings: unparse_sexpr(parse_string(s)).strip() == s.strip() [It only holds on stripped results but may be fixed sometime.] c$eZdZdZdZdZdZdS)Nodetagchildrenindexc0||_||_||_dSNr)selfrrrs g/builddir/build/BUILD/cloudlinux-venv-1.0.7/venv/lib64/python3.11/site-packages/guppy/gsl/DottedTree.py__init__z Node.__init__s   cP|jftd|jDzS)Nc6g|]}|S)as_sexpr).0cs r z!Node.as_sexpr.."s #H#H#HQAJJLL#H#H#Hr )rtuplerr s r rz Node.as_sexpr!s*{U#H#H$-#H#H#HIIIIr cP|jjd|jd|jd|jdS)N(z, )) __class____name__rrrrs r __repr__z Node.__repr__$s5 N # # # HHH MMM JJJ  r N)r __module__ __qualname__ __slots__r rrrr r rrsI+I JJJr rc`eZdZdZdZdZdZdZdZeZ ddZ dd Z dd Z dd Z d Zd ZdZdS) _GLUECLAMP_)z_parent.FileIO:IO)nodedotchar.\c(|ft|zSr )rr rr lineindexs r node_sexprz_GLUECLAMP_.node_sexprGsvh''r c>t|t||Sr )rrr's r node_nodez_GLUECLAMP_.node_nodeRsCx)444r Nc^||j||Sr ) parse_stringIO read_file)r filesrcs r parse_filez_GLUECLAMP_.parse_fileWs(  !2!24!8!8#>>>r c|j}|j}g}|} t|\}} n#t$rd} Yn1wxYw| |s|| nnSt |D]R\} } | ||zs| ||z|zr| t|d|| <S|dgkrd}nd|} | :t| |ks'| ||ks| ||dzzs|| | ||| fSt| |dzkr6| |dz|kr'|td| d|| |dz| |dzdg|||\}} } || )N zLevel must increase with 1 max) r# quotecharnext StopIteration startswithappend enumeratelenjoinr" SyntaxErrorerror parse_iter)r posrr(itr1r#r7r firstlinenextvaritchilds r rAz_GLUECLAMP_.parse_iteres!,N    %)"XX" 77     %%g..  7####  nn , ,FQ Yw.// ,LL9!4W!<== ,3y>>??+A 2$;;CC))C..C #3w<<3#6#63<7****7CE?;;+ '499S(I+N+NNN7||c!e##A'(A(A;%&FGGGII> JJJ(,AA?P8A2s)L)L %Iw OOE " " " #s ( 77cft|}|dgd||\}}}|J|S)N)r<rA)r linesr1rCr(rEr"s r parse_linesz_GLUECLAMP_.parse_liness= u  #'??1b!R#E#E 7D r cb|r|d}ng}|||SNr6)splitrL)r stringr1rKs r r-z_GLUECLAMP_.parse_strings8  LL&&EEEs+++r cP||Sr ) unparse_sexprr)r r"s r unparse_nodez_GLUECLAMP_.unparse_nodes!!$--//222r c\gfdd|dS)Nc||d|ddD]}|dz|dS)NrJr4)r; unparse_tag)depthsexprxlir unparses r r[z*_GLUECLAMP_.unparse_sexpr..unparsesc IId&&ueAh77 8 8 8122Y $ $a#### $ $r rJr6)r>)r rXrZr[s` @@r rRz_GLUECLAMP_.unparse_sexprsQ  $ $ $ $ $ $ $ 5yy}}r c|j|j}}|d}t|D]:\}}||s|||zr||z||<;d|}||z|z}|SrN)r#r7rOr<r:r>)r rWrr#r7rFrGs r rVz_GLUECLAMP_.unparse_tags!\4>iioonn ' 'FQ W%% 'LLW!455 '"QAiinnemC r r )rrr _imports_ _chgable_r#r7r)r+r"r2rArLr-rSrRrVrr r r!r!,sI"IGI(((555 D????$#$#$#$#L ,,,,333        r r!c: ddlm}|jjjj_j}j}ddgddgddgd d gd d gd dgddgddgddgddgddgddgddgddgdd gd!d"gd#d$gfD]O\}}||}|||ksJ|||ksJPj j dddgddl  fd% td&D]+} d'}||}||}||ksJ,dS)(NrJRootr5)r5arbz.a)r5rcza .b)rb)bza b .c)za b)rz .a ..a)r6)rbrczhello .a .b ..ba x ..bb)hellorc)rd)zba x)bb\.r$z.\.)r5rhr%)r%z. \)r5)z \z\\.)rgz. tag)r5)z tag )rir6)r6 a)rjz initial text .aspect for guppy.hsp ..returns ...type A ...latex ~\ \..~|begincolorbox|~raw::~LaTeX~\ ~\ ~~~{ extbackslash}{ extbackslash}begin{\{}center{\}}~\ .aspect for guppy.gsl ..contains DottedTree )z initial text)zaspect for guppy.hsp)returns)ztype A)zclatex ~\ ..~|begincolorbox|~raw::~LaTeX~\ ~\ ~~~{ extbackslash}{ extbackslash}begin{\{}center{\}}~\)zaspect for guppy.gsl)zcontains DottedTree cd}d}fdt|D}||dS)NrJr5c,g|]}dz S)r4r)rrFmaxchildrandnodes r rz,test_1..randnode.. s'BBBQHHXaZ((BBBr )randintshuffler>ranger")rnnumchildrrcharsdtrorandoms` r roztest_1..randnodesp>>!X..uggennBBBBB%//BBBwwsHa(((r ) guppyragsl DottedTreer)r"r-rRstripr7r#rvrr) raparser[rYyzrFrtrurorvs @@@@r test_1rs   $BmBG OEG U f | - %& /0 + 9 ;   w /"  #$ f w   + ,937/7/1h E!HH =6666wqzz!!QWWYY..... \2:tS# 6EMMM ))))))))2YY HQKK GAJJ E!HHAvvvvv r c <ddlm}|jjj}|j}|j}|d}t dt dt dddfd t d dd fd}t|t|ksJdS) NrJr`z'line 0 .line 1 ..line 2 line 3 .line 4 zline 0zline 1z line 2 line 3rr4zline 4 )ryrarzr{r-rSrrepr)rarur}r[r"exps r test_2rs   $B OEoG 5  D x X#R++ -q 2 2 ZQ!#$ % %C ::c " " " " " "r c>ttdSr )rrrr r test_mainr/s HHH HHHHHr N)__doc__objectrr!rrrrr r rs06&IIIIIIIIXYYYx###6     r