python (3.11.7)

(root)/
lib/
python3.11/
lib2to3/
__pycache__/
fixer_util.cpython-311.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.ej2hZ3d+Z4d-d,Z5d
S)/z1Utility functions, node construction macros, etc.)token)LeafNode)python_symbols)patcompclttj|ttjd|gS)N=)rsymsargumentrrEQUAL)keywordvalues  F/BuggyBox/python/3.11.7/bootstrap/lib/python3.11/lib2to3/fixer_util.py
KeywordArgrs.
$u{C00%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%sufd##fd##
	$u{C<<<==FHHHrNc:ttj||S)zReturn a NAME leafr)rrNAME)namers  rNamer)$s
D0000rcV|ttjt|ggS)zA node tuple for obj.attr)rr
trailerDot)objattrs  rAttrr/(s!dlSUUDM2233rc6ttjdS)zA comma leaf,)rrCOMMArrrCommar3,sS!!!rc6ttjdS)zA period (.) leaf.)rrDOTrrrr,r,0s	3rcttj||g}|r.|dttj||S)z-A parenthesised argument list, used by Call()r)rr
r+cloneinsert_childarglist)argslparenrparennodes    rArgListr?4sWv||~~v||~~>??D7!T$,55666Krcjttj|t|g}|||_|S)zA function call)rr
powerr?r)	func_namer;rr>s    rCallrC;s0
Y

677D
Krc6ttjdS)zA newline literal
rrNEWLINErrrNewlinerHBs
t$$$rc6ttjdS)zA blank linerFrrr	BlankLinerKFs
r"""rc:ttj||S)Nr)rrNUMBER)nrs  rNumberrOJsa////rc	ttjttjd|ttjdgS)zA numeric or string subscript[])rr
r+rrLBRACERBRACE)
index_nodes r	SubscriptrVMs=tEL#66)#EL#668999rc:ttj||S)z
A string leafr)rrSTRING)stringrs  rStringrZSsfV4444rc	pd|_d|_d|_ttjd}d|_ttjd}d|_||||g}|rWd|_ttjd}d|_|ttj||gttj|ttj	|g}ttj
ttjd|ttjdgS)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
BIBIBIEJ&&HHO5:t$$GGNB,J?uz4(($t|gt_==>>>"d4=*&E&E!FGGE	U\3//U\3//1222rc@|D]}|ttjdttj|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



UZ((UZc:::UZ#666T):668Ht
*
*CJrcl|d}|jtjkr|}n-t	tj|g}|d}|rd|D}t	tjt
t|dt|dt	tj|d||dggz|z}|j	|_	|S)zfReturns an import statement and calls a method
    of the module:

    import module
    module.name()r-afterc6g|]}|Sr)r8).0rNs  r
<listcomp>z!ImportAndCall.<locals>.<listcomp>s ***q***rrlparrpar)
r8typer
r:rrAr/r)r+r)r>resultsnamesr-
newarglistrznews       r
ImportAndCallrs%.


 
 C
x4<YY[[

$,
66
GE+**E***
tzDqNNDqNN33T\fo++-- fo++--/001149	9::CCJJrct|tr'|jtt	gkrdSt|tot|jdkot|jdtokt|jdtoKt|jdto+|jdjdko|jdjdkS)z(Does the node represent a tuple literal?Tr~rrr)r rrvrrlenrrr>s ris_tuplers$$-FHHfhh3G"G"GttT""
.DM""a'
.4=+T22
.4=+T22
.4=+T22	
.

a &#-
.
a &#-
/rc4t|tot|jdkokt|jdtoKt|jdto+|jdjdko|jdjdkS)z'Does the node represent a list literal?rr~rQrR)r rrrvrrrs ris_listrstT""
/DM""Q&
/4=+T22
/4=,d33
/
a &#-	
/

b!'3.0rclttjt|t	gSN)rr
r"rrrs rparenthesizers#	FHHdFHH5666r>
allanymaxminsetsumr!tuplesorted	enumeratec#^Kt||}|r|Vt||}|dSdS)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_chainrsU3D
#


tT""#####rzefor_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*
>
FchtsMtjtatjtatjt
adattt
g}t
|t|dD]*\}}i}|||r
|d|urdS+dS)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()C)CDD==))	gfo.E.E445rc|j}||jtjkrdS|j}|jt
jt
jfvrdS|jt
jkr|j	d|urdS|jt
j
ks;|jt
jkr(||jtjks|j	d|urdSdS)zG
    Check that something isn't an attribute or function name etc.
    NFr~T)
prev_siblingrrr6rr
funcdefclassdef	expr_stmtrv
parameters
typedargslistr2)r>prevrs   ris_probably_builtinrsDDI22u
[F
{t|T]333u
{dn$$);t)C)Cu
{do%%
[D.
.
.

$)u{":":OA$&&u4rc|_|jtjkrAt|jdkr)|jd}|jt
jkr|jS|j}|_dS)zFind the indentation of *node*.NrrrJ)	rr
suiterrvrINDENTrr)r>indents  rfind_indentationrsd

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

file_inputr
ValueErrorrs r	find_rootr&sJ)t
&
&{	MKLLL)t
&
&Krc\t|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==rc@|jtjtjfvS)z0Returns true if the node is an import statement.)rr
import_namerrrs r	is_importr7s9)4+;<<<rc	Fd}t|}t|||rdSdx}}t|jD]E\}}||st|j|dD]\}}||sn||z}|dkr]t|jD]H\}}|jt
jkr.|jr'|jdjtjkr|dz}nI|Ott
j
ttjdttj|dg}	n+t|ttj|dg}	|	tg}
||tt
j|
dS)z\ Works like `does_tree_import` but adds an import statement
        if it was not imported. cn|jtjko |jot	|jdS)Nr~)rr
simple_stmtrvrrs ris_import_stmtz$touch_import.<locals>.is_import_stmt>s4	T--,$-,$-*++	-rNr~rrorr)rrrrvrr
rrrXrrrr'rxrHr9)rr(r>rroot
insert_posoffsetidxnode2import_rvs           rtouch_importr;s---T??Dt,,Jt}--	T~d##	&t}STT':;;		MFE!>%((

6\

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

WtEJS'I'I'I&JKK#Hj$t'7"B"BCCCCCrc
P|jD]}d}|jtjkrNt	||jdr|cSt|t
|jd|}|r|}n|jtjtjfvr/t|t
|jd|}|r|}nK|jtj	krt|t
|jd|}|r|}nt|jddD]U\}}|jtjkr;|j
dkr0t|t
|j|dz|}|r|}Vn|jtvr|jdj
|kr|}nmt|||r|}nY|jtjkrt|||}n2|jtjkrt	||jdr|}|r|s|cSt%|r|cSdS)	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~)rvrr
for_stmt_findrrif_stmt
while_stmttry_stmtrrCOLONr	_def_syms_is_import_bindingrrr)r(r>rchildretrNikids        rrris3
"":&&T5>!,--
T:enR.@#A#A7KKAM#
ZDL$/:
:
:T:enR.@#A#A7KKAM#
Z4=
(
(T:enQ.?#@#@'JJA
&'qrr(:;;&&FAsx5;..393C3C(z%.1:M/N/NPWXX
Ac	&
Z9
$
$):)@D)H)HCC
tW
5
5	CC
Z4+
+
+tUG44CC
Z4>
)
)T5>!,--
	



~~



4rc|g}|rl|}|jdkr)|jtvr||jn"|jt
jkr
|j|kr|S|ldS)N)popr_block_symsextendrvrr'r)r(r>nodess   rrrs}
FE
yy{{9s??ty;;LL''''
Y%*
$
$t););K4rc.|jtjkr|s|jd}|jtjkr`|jD]V}|jtjkr|jdj|kr|cS2|jtjkr|j|kr|cSWn{|jtjkr1|jd}|jtjkr
|j|kr|Sn5|jtjkr
|j|kr|Sn|jtj	kr|r2t|jd|krdS|jd}|rtd|rdS|jtj
krt||r|S|jtjkr0|jd}|jtjkr
|j|kr|Sn;|jtjkr
|j|kr|S|r|jtjkr|SdS)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)rr
rrvdotted_as_namesdotted_as_namerrr'rrstrstriprrqimport_as_nameSTAR)r>r(rrwrlastrNs       rrrs
yD$$$W$mA8t+++
 
 :!444~a(.$66#7Z5:--%+2E2EKKK
 X,
,
,<#DyEJ&&4:+=+=
X
#
#	T(9(9K	
d&	&	&	s4=+,,2244??4M!	uT1~~	4
Vt+
+
+dA
+K
Vt*
*
*JqMEzUZ''EK4,?,?
Vuz
!
!agooK
	5:--K4rr)NN)6__doc__pgen2rpytreerrpygramrr
rJrrrrr%r)r/r3r,r?rCrHrKrOrVrZrlrxrrrrconsuming_callsrrrrrrrrrrrrrrrrrr+rrrrrr<module>rs77******:::!!!!!!	H	H	H1111444"""    &&((%%%###0000999555522220&8
/
/
/000777...###&	
&.===*D*D*DZ]DL)	((((T|T]DL9''''''r