f dZddlZddlZddlmZddlmZddlmZGdde Z Gd d e Z ia d Z dS) z+George Boutsioukis N) defaultdict)pytree) reduce_treec4eZdZ ejZdZdS)BMNodecli|_g|_ttj|_d|_dS)N)transition_tablefixersnextrcountidcontentselfs :/opt/alt/python311/lib64/python3.11/lib2to3/btm_matcher.py__init__zBMNode.__init__s- " v|$$ N)__name__ __module__ __qualname__ itertoolsrrrrrrs5I IO  Errc.eZdZ dZdZdZdZdZdS) BottomMatcherct|_t|_|jg|_g|_t jd|_dS)NRefactoringTool) setmatchrrootnodesr logging getLoggerloggerrs rrzBottomMatcher.__init__sAUU HH i[  '(9:: rc |j|t|j}|}|||j}|D]}|j|dS)Nstart)r appendr pattern_treeget_linear_subpatternaddr!)rfixertreelinear match_nodes match_nodes r add_fixerzBottomMatcher.add_fixer%s  5!!!5-..++--hhvTYh77 % , ,J   $ $U + + + + , ,rc  |s|gSt|dtr\g}|dD]O}|||}|D]3}|||dd|4P|S|d|jvrt }||j|d<n|j|d}|ddr ||dd|}n|g}|S)Nrr'r) isinstancetupler,extendr r)rpatternr(r0 alternative end_nodesend next_nodes rr,zBottomMatcher.add1s'? 7N gaj% ( ( K&qz C C !HH[H>> $CCC&&txx S'A'ABBBBC qz!777"HH 5>&wqz22"271:> qrr{ ( HHWQRR[ HBB &K  rc8 |j}tt}|D]}|}|rd|_|jD]0}t |t jr|jdkr d|_n1|j dkr|j}n|j }||j vr3|j |}|j D]}|| |nV|j}|j |j jrnD||j vr2|j |}|j D]}|| ||j }||S)NT;Fr)r!rlist was_checkedchildrenr4rLeafvaluetyper r r)parent) rleavescurrent_ac_noderesultsleafcurrent_ast_nodechild node_tokenr-s rrunzBottomMatcher.runSs )d### ;# ;D# "! ;/3 ,-6E!%55%+:L:L7<(4#(A--!1!7JJ!1!6J!AAA&5&Fz&RO!0!7@@--.>????@'+iO(/;,3?<"_%EEE*9*J:*V%4%;DDE#EN112BCCCC#3#: C#! ;Drcp tdfd|jtddS)Nz digraph g{c "|jD]s}|j|}td|j|jt |t |jfz|dkrt|j|tdS)Nz%d -> %d [label=%s] //%sr)r keysprintr type_reprstrr r)node subnode_keysubnode print_nodes rrVz*BottomMatcher.print_ac..print_nodes#499;; $ $ / <0w Ik,B,BCDWDWXYZZZ!##'/*** 7####  $ $r})rPr!)rrVs @rprint_aczBottomMatcher.print_acsPF l $ $ $ $ $  49 c rN)rrrrr2r,rLrXrrrrrsf+;;; , , ,   D666p     rrctsGddlm}|jD]'\}}t |t kr |t|<(t||S)Nr)python_symbols) _type_reprspygramrZ__dict__itemsrCint setdefault)type_numrZnamevals rrQrQsq 9******(06688 9 9ID#CyyCDS!1  ! !(H 5 55r) __author__r#r collectionsrr r btm_utilsrobjectrrr[rQrrrrhsG; ######""""""V}}}}}F}}}@ 66666r