python (3.12.0)

(root)/
lib/
python3.12/
lib2to3/
__pycache__/
fixer_util.cpython-312.opt-1.pyc

̑ef;dZddlmZddlmZmZddlmZddl	m
Z
dZdZdZ
d	Zd-dZdZd
ZdZee
fdZd.dZdZdZd-dZdZd-dZd-dZdZdZdZdZdZhdZ dZ!da"da#d a$d!a%d"Z&d#Z'd$Z(d%Z)d&Z*d'Z+d(Z,d)Z-ej\ej^hZ0d-d*Z1ej^ej\ejdhZ3d+Z4d-d,Z5y
)/z1Utility functions, node construction macros, etc.)token)LeafNode)python_symbols)patcompclttj|ttj
d|gS)N=)rsymsargumentrrEQUAL)keywordvalues  F/BuggyBox/python/3.12.0/bootstrap/lib/python3.12/lib2to3/fixer_util.py
KeywordArgrs*

$u{{C0%8::c6ttjdS)N()rrLPARrrLParenr

C  rc6ttjdS)N))rrRPARrrrRParenrrrc	t|ts|g}t|ts
d|_|g}ttj
|t
tjddgz|zS)zBuild an assignment statement r	prefix)	
isinstancelistrrr
atomrrr)targetsources  rAssignr%s]fd#fd#
		$u{{C<==FHHrNc:ttj||S)zReturn a NAME leafr)rrNAME)namers  rNamer)$s

D00rcN|ttjt|ggS)zA node tuple for obj.attr)rr
trailerDot)objattrs  rAttrr/(sdllSUDM233rc6ttjdS)zA comma leaf,)rrCOMMArrrCommar3,sS!!rc6ttjdS)zA period (.) leaf.)rrDOTrrrr,r,0s		3rcttj|j|jg}|r*|j	dttj
||S)z-A parenthesised argument list, used by Call()r)rr
r+cloneinsert_childarglist)argslparenrparennodes    rArgListr?4sFv||~v||~>?D!T$,,56Krcbttj|t|g}|||_|S)zA function call)rr
powerr?r)	func_namer;rr>s    rCallrC;s-

Y
67D
Krc6ttjdS)zA newline literal
rrNEWLINErrrNewlinerHBs

t$$rc6ttjdS)zA blank linerFrrr	BlankLinerKFs

r""rc:ttj||S)Nr)rrNUMBER)nrs  rNumberrOJsa//rc	ttjttj
d|ttjdgS)zA numeric or string subscript[])rr
r+rrLBRACERBRACE)
index_nodes r	SubscriptrVMs8tELL#6)#ELL#6899rc:ttj||S)z
A string leafr)rrSTRING)stringrs  rStringrZSsfV44rc	hd|_d|_d|_ttjd}d|_ttjd}d|_||||g}|rSd|_ttjd}d|_|j	ttj||gttj|ttj|g}ttjttjd|ttjdgS)zuA list comprehension of the form [xp for fp in it if test].

    If test is None, the "if test" part is omitted.
    rJrforinifrQrR)
rrrr'appendrr
comp_if	listmakercomp_forr"rSrT)	xpfpittestfor_leafin_leaf
inner_argsif_leafinners	         rListComprlWs
BIBIBIEJJ&HHO5::t$GGNB,Juzz4($t||gt_=>"d4==*&E!FGE		U\\3/U\\3/122rc<|D]}|jttjdttj|dttjddt	t
j|g}t	t
j|}|S)zO Return an import statement in the form:
        from package import name_leafsfromrrimport)removerrr'rr
import_as_namesimport_from)package_name
name_leafsleafchildrenimps     r
FromImportrxos|
UZZ(UZZc:UZZ#6T)):68Ht
*CJrcN|dj}|jtjk(r|j}n)t	tj|jg}|d}|r|Dcgc]}|j}}t	tj
t
t|dt|dt	tj|dj||djggz|z}|j|_	|Scc}w)zfReturns an import statement and calls a method
    of the module:

    import module
    module.name()r-afterrlparrpar)
r8typer
r:rrAr/r)r+r)r>resultsnamesr-
newarglistrzrNnews        r
ImportAndCallrs%.


 C
xx4<<YY[
$,,
6
GE$)*q**
tzzDqNDqN3T\\fo++- fo++-/01149	9:CCJJ+s6D"ct|tr"|jtt	gk(ryt|txrt|jdk(xrt|jdtxrxt|jdtxrYt|jdtxr:|jdjdk(xr|jdjdk(S)z(Does the node represent a tuple literal?Tr{rrr)r rrvrrlenrrr>s ris_tuplers$$--FHfh3G"GtT"
.DMM"a'
.4==+T2
.4==+T2
.4==+T2	
.


a &&#-
.

a &&#-
/rcJt|txrt|jdkDxrxt|jdtxrYt|jdtxr:|jdj
dk(xr|jdj
dk(S)z'Does the node represent a list literal?rr{rQrR)r rrrvrrrs ris_listrstT"
/DMM"Q&
/4==+T2
/4==,d3
/

a &&#-	
/


b!''3.0rc\ttjt|t	gSN)rr
r"rrrs rparenthesizers		FHdFH566r>
allanymaxminsetsumr!tuplesorted	enumeratec#PKt||}|r|t||}|ryyw)alFollow an attribute chain.

    If you have a chain of objects where a.foo -> b, b.foo-> c, etc,
    use this to iterate over all objects in the chain. Iteration is
    terminated by getattr(x, attr) is None.

    Args:
        obj: the starting object
        attr: the name of the chaining attribute

    Yields:
        Each successive object in the chain.
    N)getattr)r-r.nexts   r
attr_chainrs-3D

tT"s!&&zefor_stmt< 'for' any 'in' node=any ':' any* >
        | comp_for< 'for' any 'in' node=any any* >
     z
power<
    ( 'iter' | 'list' | 'tuple' | 'sorted' | 'set' | 'sum' |
      'any' | 'all' | 'enumerate' | (any* trailer< '.' 'join' >) )
    trailer< '(' node=any ')' >
    any*
>
z`
power<
    ( 'sorted' | 'enumerate' )
    trailer< '(' arglist<node=any any*> ')' >
    any*
>
FcDtsMtjtatjtatjt
adattt
g}t
|t|dD]#\}}i}|j||s|d|us#yy)a Returns true if node is in an environment where all that is required
        of it is being iterable (ie, it doesn't matter if it returns a list
        or an iterator).
        See test_map_nochange in test_fixers.py for some examples and tests.
        Tparentr>F)	
pats_builtrcompile_patternp0p1p2ziprmatch)r>patternspatternrrs     rin_special_contextrs

$
$R
(

$
$R
(

$
$R
(
B|HxD()CD==)gfo.Erc|j}||jtjk(ry|j}|jt
jt
jfvry|jt
jk(r|jd|ury|jt
jk(sM|jt
jk(r1||jtjk(s|jd|uryy)zG
    Check that something isn't an attribute or function name etc.
    Fr{T)
prev_siblingr~rr6rr
funcdefclassdef	expr_stmtrv
parameters
typedargslistr2)r>prevrs   ris_probably_builtinrsDDII2
[[F
{{t||T]]33
{{dnn$);t)C
{{doo%
[[D..
.

$))u{{":OOA$&rc|||jtjk(rPt|jdkDr8|jd}|jt
jk(r|jS|j}||y)zFind the indentation of *node*.rrrJ)	r~r
suiterrvrINDENTrr)r>indents  rfind_indentationrsf

99

"s4=='9A'=]]1%F{{ell*||#{{
rc|jtjk(r|S|j}|jdc}|_ttj|g}||_|Sr)r~r
rr8rr)r>rrs   r
make_suitersRyyDJJ::<D++tFDKdV$EELLrc|jtjk7r7|j}|st	d|jtjk7r7|S)zFind the top level namespace.z,root found before file_input node was found.)r~r

file_inputr
ValueErrorrs r	find_rootr&sE))t
&{{KLL))t
&KrcDt|t||}t|S)z Returns true if name is imported from package at the
        top level of the tree which node belongs to.
        To cover the case of an import like 'import foo', use
        None for the package and 'foo' for the name. )find_bindingrbool)packager(r>bindings    rdoes_tree_importr/s 
44':G=rcZ|jtjtjfvS)z0Returns true if the node is an import statement.)r~r
import_namerrrs r	is_importr7s"99))4+;+;<<<rc	Hd}t|}t|||rydx}}t|jD]>\}}||st|j|dD]\}}||rn||z}n|dk(ryt|jD]a\}}|jt
jk(s$|js1|jdjtjk(s\|dz}n|Ott
jttjdttj|dg}	n't|ttj|dg}	|	tg}
|j|tt
j|
y)z\ Works like `does_tree_import` but adds an import statement
        if it was not imported. c|jtjk(xr&|jxrt	|jdS)Nr{)r~r
simple_stmtrvrrs ris_import_stmtz$touch_import.<locals>.is_import_stmt>s:		T---,$--,$--*+	-rNr{rrorr)rrrrvr~r
rrrXrrrr'rxrHr9)rr(r>rroot
insert_posoffsetidxnode2import_rvs           rtouch_importr;sw-T?Dt,Jt}}-	Td#&t}}ST':;	MFE!%(	6\

Q"4==1	IC		T---$--}}Q$$4 1W
		t''X&T#.*

WtEJJS'I&JK#Hj$t'7'7"BCrc
|jD]<}d}|jtjk(rGt	||jdr|cSt|t
|jd|}|r|}n|jtjtjfvr*t|t
|jd|}|rh|}nd|jtjk(rt|t
|jd|}|r|}nt|jddD]^\}}|jtjk(s$|jdk(s4t|t
|j|dz|}|s]|}`n|jtvr|jdj|k(r|}nst|||r|}nc|jtj k(rt|||}n8|jtj"k(rt	||jdr|}|s(|s|cSt%|s;|cSy)	z Returns the node which binds variable name, otherwise None.
        If optional argument package is supplied, only imports will
        be returned.
        See test cases for examples.Nrrrr:r{)rvr~r
for_stmt_findrrif_stmt
while_stmttry_stmtrrCOLONr	_def_syms_is_import_bindingrrr)r(r>rchildretrNikids        rrris
"::&T5>>!,-T:ennR.@#A7KA#
ZZDLL$//:
:T:ennR.@#A7KA#
ZZ4==
(T:ennQ.?#@'JA'qr(:;&FAsxx5;;.3993C(z%..1:M/NPWXAc	&
ZZ9
$):)@)@D)HC
tW
5C
ZZ4++
+tUG4C
ZZ4>>
)T5>>!,-
~
E"Frc
|g}|r~|j}|jdkDr.|jtvr|j|jn.|jt
jk(r|j|k(r|S|r~y)N)popr~_block_symsextendrvrr'r)r(r>nodess   rrrsg
FE
yy{99s?tyy;LL'
YY%**
$t);Krc,|jtjk(r9|s6|jd}|jtjk(r|jD]q}|jtj
k(r!|jdj|k(s=|cS|jtjk(s_|j|k(so|cSy|jtj
k(r=|jd}|jtjk(r?|j|k(r0|S|jtjk(r|j|k(r|Sy|jtjk(r|r*t|jdj|k7ry|jd}|r
td|ry|jtjk(rt||r|S|jtjk(r>|jd}|jtjk(r|j|k(r|Sy|jtjk(r|j|k(r|S|r|jtjk(r|Sy)z Will return node if node will import name, or node
        will import * from package.  None is returned otherwise.
        See test cases for examples. rrrNras)r~r
rrvdotted_as_namesdotted_as_namerrr'rrstrstriprrqimport_as_nameSTAR)r>r(rrwrlastrNs       rrrs
yyD$$$WmmA88t+++
 ::!4!44~~a(..$6#ZZ5::-%++2EK
 >3XX,,
,<<#DyyEJJ&4::+=
XX
#		T(9K('
d&&	&s4==+,224?MM!uT1~
VVt++
+dAK
VVt**
*JJqMEzzUZZ'EKK4,?
	VVuzz
!aggoK
5::-Krr)NN)6__doc__pgen2rpytreerrpygramrr
rJrrrrr%r)r/r3r,r?rCrHrKrOrVrZrlrxrrrrconsuming_callsrrrrrrrrrrrrrrrrrr+rrrrrr<module>rs7*:!!	H14"  &(%#09520&8
/07.#&	
&.=*DZ]]DLL)	(T||T]]DLL9'r