gt dZddlZddlZddlmZddlmZddlmZGdde Z Gd d e Z ia d Z y) z+George Boutsioukis N) defaultdict)pytree) reduce_treec6eZdZ ejZdZy)BMNodecji|_g|_ttj|_d|_y)N)transition_tablefixersnextrcountidcontentselfs :/opt/alt/python312/lib64/python3.12/lib2to3/btm_matcher.py__init__zBMNode.__init__s( " v||$ N)__name__ __module__ __qualname__ itertoolsrrrrrrsI IOO Errc,eZdZ dZdZdZdZdZy) BottomMatcherct|_t|_|jg|_g|_t jd|_y)NRefactoringTool) setmatchrrootnodesr logging getLoggerloggerrs rrzBottomMatcher.__init__s;U H ii[  ''(9: rc |jj|t|j}|j }|j ||j }|D]}|jj|y)Nstart)r appendr pattern_treeget_linear_subpatternaddr!)rfixertreelinear match_nodes match_nodes r add_fixerzBottomMatcher.add_fixer%sm  5!5--.++-hhvTYYh7 %J    $ $U +&rc  |s|gSt|dtrLg}|dD]@}|j||}|D]&}|j|j|dd|(B|S|d|jvrt }||j|d<n|j|d}|ddr|j|dd|}|S|g}|S)Nrr'r) isinstancetupler,extendr r)rpatternr(r0 alternative end_nodesend next_nodes rr,zBottomMatcher.add1s?7N gaj% (K&qz !HH[H> $C&&txx S'AB% *  qz!7!77"H 5>&&wqz2"2271:> qr{ HHWQR[ HB  'K  rc |j}tt}|D]?}|}|s d|_|jD]5}t |t js|jdk(s.d|_n|jdk(r |j}n |j}||jvr5|j|}|jD]}||j|nq|j}|j|jjr||jvr4|j|}|jD]}||j||j}|r7B|S)NT;Fr)r!rlist was_checkedchildrenr4rLeafvaluetyper r r)parent) rleavescurrent_ac_noderesultsleafcurrent_ast_nodechild node_tokenr-s rrunzBottomMatcher.runSs\ ))d#D# "/3 ,-66E!%5%++:L7<(4 7 $((A-!1!7!7J!1!6!6J!A!AA&5&F&Fz&RO!0!7!7--.>?"8'+iiO(//;,33??"_%E%EE*9*J*J:*V%4%;%;E#EN112BC&<$4#:#: C#Hrcb tdfd|jtdy)Nz digraph g{c *|jjD]u}|j|}td|j|jt |t |j fz|dk(rt|j|wy)Nz%d -> %d [label=%s] //%sr)r keysprintr type_reprstrr r)node subnode_keysubnode print_nodes rrVz*BottomMatcher.print_ac..print_nodes|#4499; // <0ww Ik,BCDWXYZ!#'//*7# rhsHG; #"V}F}@ 6r