python (3.12.0)

(root)/
lib/
python3.12/
lib2to3/
__pycache__/
btm_utils.cpython-312.pyc

̑e&dZddlmZddlmZmZddlmZmZeZ	eZ
ejZeZ
dZdZdZGdd	eZddZdZd
Zy
)z0Utility functions used by the btm_matcher module)pytree)grammartoken)pattern_symbolspython_symbolsc0eZdZdZddZdZdZdZdZy)	MinNodezThis class serves as an intermediate representation of the
    pattern tree during the conversion to sets of leaf-to-root
    subpatternsNcf||_||_g|_d|_d|_g|_g|_y)NF)typenamechildrenleafparentalternativesgroup)selfrrs   E/BuggyBox/python/3.12.0/bootstrap/lib/python3.12/lib2to3/btm_utils.py__init__zMinNode.__init__s4		
	
c^t|jdzt|jzS)N )strrr)rs r__repr__zMinNode.__repr__s"499~#c$))n44rcD|}g}|r|jtk(r|jj|t	|jt	|j
k(r*t
|jg}g|_|j}|j}d}	|S|jtk(r|jj|t	|jt	|j
k(r*t|j}g|_	|j}|j}d}	|S|jtjk(r(|jr|j|jn|j|j|j}|r|S)zInternal method. Returns a characteristic path of the
        pattern tree. This method must be run for all leaves until the
        linear subpatterns are merged into a singleN)rTYPE_ALTERNATIVESrappendlenrtupler
TYPE_GROUPrget_characteristic_subpatterntoken_labelsNAMEr)rnodesubps   rleaf_to_rootzMinNode.leaf_to_root!sPyy--!!((.t(()S-??!$"3"345D(*D%;;D;;DD,)yyJ&

!!$'tzz?c$--&888DD!#DJ;;D;;DDyyL---$))DII&DII&;;DCDrcZ|jD]}|j}|s|cSy)aDrives the leaf_to_root method. The reason that
        leaf_to_root must be run multiple times is because we need to
        reject 'group' matches; for example the alternative form
        (a | b c) creates a group [b c] that needs to be matched. Since
        matching multiple linear patterns overcomes the automaton's
        capabilities, leaf_to_root merges each group into a single
        choice based on 'characteristic'ity,

        i.e. (a|b c) -> (a|b) if b more characteristic than c

        Returns: The most 'characteristic'(as defined by
          get_characteristic_subpattern) path for the compiled pattern
          tree.
        N)leavesr()rlr's   rget_linear_subpatternzMinNode.get_linear_subpatternKs- 	A>>#D	rc#K|jD]}|jEd{|js|yy7w)z-Generator that returns the leaves of the treeN)rr*)rchilds  rr*zMinNode.leaves`s>]]	&E||~%%	&}}J
&s#A>A)NN)	__name__
__module____qualname____doc__rrr(r,r*rrrrs!5(T*rrNc
d}|jtjk(r|jd}|jtjk(rt|jdkrt
|jd|}ntt}|jD]K}|jj|dzr"t
||}|1|jj|Mna|jtjk(rt|jdkDr\tt}|jD],}t
||}|s|jj|.|jsd}nt
|jd|}n|jtjk(rt|jdtj r5|jdj"dk(rt
|jd|St|jdtj r|jdj"dk(sMt|jdkDr6t%|jddr|jdj"dk(ryd	}d}d}d
}d}	d
}
|jD]}|jtj&k(rd
}|}nA|jtj(k(rd	}|}	n|jtjk(r|}t%|dss|j"dk(sd	}
|
r:|jd}t%|dr.|j"dk(r|jd}n|jd}|jt*j,k(r|j"d
k(rtt.}nt%t*|j"r%tt1t*|j"}ntt1t2|j"}n|jt*j4k(rS|j"j7d}|t8vrtt8|}nEtt*j,|}n)|jtjk(rt
||}|rB|	jdj"dk(rd}n#|	jdj"dk(rnt:|r@|>|jddD],}t
||}||jj|.|r||_|S)z
    Internal function. Reduces a compiled pattern tree to an
    intermediate representation suitable for feeding the
    automaton. This also trims off any optional pattern elements(like
    [a], a*).
    N)rr([valueTF=any')rr*+r)rsymsMatcherrAlternativesr reduce_treerrindexrAlternativer"Unit
isinstancerLeafr9hasattrDetailsRepeaterr$r%TYPE_ANYgetattrpysymsSTRINGstriptokensNotImplementedErrorr)
r&rnew_noder.reducedrdetails_nodealternatives_nodehas_repeater
repeater_nodehas_variable_name	name_leafrs
             rrCrCgs]HyyDLL }}QyyD%%%t}}""4==#3V<H$56H
6==&&u-a/%eX6&%%,,W5
6
d&&	&t}}!J/H
6%eX6%%,,W5
6$$#4==#3V<H	
dii	t}}Q'5MM!""c)t}}Q/88


a(&++
6}}Q%%,DMM"1$t}}Q'1}}Q%%, 
!]]
	)EzzT\\)$t}},# %
t000$)!ug&5;;#+=$(!
	)

a(Iy'*y#/E MM!,	

a(I>>\...%'"1<9&GL)//,RSH&GFIOO,LMH
^^|22
2??((-Dv~"t5"(9(9E
^^t00
0"#4f=H%%a(..#5''*00C7*)H0%..q4
6%eX6&%%,,W5	
6
 Orct|ts|St|dk(r|dSg}g}gdg}d|D]~}tt	|dstt	|fdr|j|Dtt	|fdr|j|n|j||r|}n	|r|}n|r|}t
|tS)	zPicks the most characteristic from a list of linear patterns
    Current order used is:
    names > common_names > common_chars
    rr5)inforifnotNonez[]().,:c$t|tuSN)rr)xs r<lambda>z/get_characteristic_subpattern.<locals>.<lambda>sd1gnrc0t|txr|vSrbrGr)rccommon_charss rrdz/get_characteristic_subpattern.<locals>.<lambda>sjC&8&NQ,=Nrc0t|txr|vSrbrf)rccommon_namess rrdz/get_characteristic_subpattern.<locals>.<lambda>s
1c(:(PqL?Pr)key)rGlistr r<rec_testrmax)subpatternssubpatterns_with_namessubpatterns_with_common_namessubpatterns_with_common_chars
subpatternrgris     @@rr#r#s
k4(
;1~ $&!6L$&!L!
:
x
$<=>8JNPQ-44Z@XjPRS-44Z@'--j9
:,	&3	&3{$$rc#K|D]7}t|ttfrt||Ed{.||9y7w)zPTests test_func on all items of sequence and items of included
    sub-iterablesN)rGrkr!rl)sequence	test_funcrcs   rrlrlsBa$'9---A,	-s+AAArb)r2rpgen2rrpygramrrr@rNopmaprQr$rLrr"objectrrCr#rlr3rr<module>r{sZ2!3		


UfUnBJ#%Jr