PNG  IHDRQgAMA a cHRMz&u0`:pQ<bKGDgmIDATxwUﹻ& ^CX(J I@ "% (** BX +*i"]j(IH{~R)[~>h{}gy)I$Ij .I$I$ʊy@}x.: $I$Ii}VZPC)I$IF ^0ʐJ$I$Q^}{"r=OzI$gRZeC.IOvH eKX $IMpxsk.쒷/&r[޳<v| .I~)@$updYRa$I |M.e JaֶpSYR6j>h%IRز if&uJ)M$I vLi=H;7UJ,],X$I1AҒJ$ XY XzI@GNҥRT)E@;]K*Mw;#5_wOn~\ DC&$(A5 RRFkvIR}l!RytRl;~^ǷJj اy뷦BZJr&ӥ8Pjw~vnv X^(I;4R=P[3]J,]ȏ~:3?[ a&e)`e*P[4]T=Cq6R[ ~ޤrXR Հg(t_HZ-Hg M$ãmL5R uk*`%C-E6/%[t X.{8P9Z.vkXŐKjgKZHg(aK9ڦmKjѺm_ \#$5,)-  61eJ,5m| r'= &ڡd%-]J on Xm|{ RҞe $eڧY XYrԮ-a7RK6h>n$5AVڴi*ֆK)mѦtmr1p| q:흺,)Oi*ֺK)ܬ֦K-5r3>0ԔHjJئEZj,%re~/z%jVMڸmrt)3]J,T K֦OvԒgii*bKiNO~%PW0=dii2tJ9Jݕ{7"I P9JKTbu,%r"6RKU}Ij2HKZXJ,妝 XYrP ެ24c%i^IK|.H,%rb:XRl1X4Pe/`x&P8Pj28Mzsx2r\zRPz4J}yP[g=L) .Q[6RjWgp FIH*-`IMRaK9TXcq*I y[jE>cw%gLRԕiFCj-ďa`#e~I j,%r,)?[gp FI˨mnWX#>mʔ XA DZf9,nKҲzIZXJ,L#kiPz4JZF,I,`61%2s $,VOϚ2/UFJfy7K> X+6 STXIeJILzMfKm LRaK9%|4p9LwJI!`NsiazĔ)%- XMq>pk$-$Q2x#N ؎-QR}ᶦHZډ)J,l#i@yn3LN`;nڔ XuX5pF)m|^0(>BHF9(cզEerJI rg7 4I@z0\JIi䵙RR0s;$s6eJ,`n 䂦0a)S)A 1eJ,堌#635RIgpNHuTH_SԕqVe ` &S)>p;S$魁eKIuX`I4춒o}`m$1":PI<[v9^\pTJjriRŭ P{#{R2,`)e-`mgj~1ϣLKam7&U\j/3mJ,`F;M'䱀 .KR#)yhTq;pcK9(q!w?uRR,n.yw*UXj#\]ɱ(qv2=RqfB#iJmmL<]Y͙#$5 uTU7ӦXR+q,`I}qL'`6Kͷ6r,]0S$- [RKR3oiRE|nӦXR.(i:LDLTJjY%o:)6rxzҒqTJjh㞦I.$YR.ʼnGZ\ֿf:%55 I˼!6dKxm4E"mG_ s? .e*?LRfK9%q#uh$)i3ULRfK9yxm܌bj84$i1U^@Wbm4uJ,ҪA>_Ij?1v32[gLRD96oTaR׿N7%L2 NT,`)7&ƝL*꽙yp_$M2#AS,`)7$rkTA29_Iye"|/0t)$n XT2`YJ;6Jx".e<`$) PI$5V4]29SRI>~=@j]lp2`K9Jaai^" Ԋ29ORI%:XV5]JmN9]H;1UC39NI%Xe78t)a;Oi Ҙ>Xt"~G>_mn:%|~ޅ_+]$o)@ǀ{hgN;IK6G&rp)T2i୦KJuv*T=TOSV>(~D>dm,I*Ɛ:R#ۙNI%D>G.n$o;+#RR!.eU˽TRI28t)1LWϚ>IJa3oFbu&:tJ*(F7y0ZR ^p'Ii L24x| XRI%ۄ>S1]Jy[zL$adB7.eh4%%누>WETf+3IR:I3Xה)3אOۦSRO'ٺ)S}"qOr[B7ϙ.edG)^ETR"RtRݜh0}LFVӦDB^k_JDj\=LS(Iv─aTeZ%eUAM-0;~˃@i|l @S4y72>sX-vA}ϛBI!ݎߨWl*)3{'Y|iSlEڻ(5KtSI$Uv02,~ԩ~x;P4ցCrO%tyn425:KMlD ^4JRxSهF_}شJTS6uj+ﷸk$eZO%G*^V2u3EMj3k%)okI]dT)URKDS 7~m@TJR~荪fT"֛L \sM -0T KfJz+nإKr L&j()[E&I ߴ>e FW_kJR|!O:5/2跌3T-'|zX ryp0JS ~^F>-2< `*%ZFP)bSn"L :)+pʷf(pO3TMW$~>@~ū:TAIsV1}S2<%ޟM?@iT ,Eūoz%i~g|`wS(]oȤ8)$ ntu`өe`6yPl IzMI{ʣzʨ )IZ2= ld:5+請M$-ї;U>_gsY$ÁN5WzWfIZ)-yuXIfp~S*IZdt;t>KūKR|$#LcԀ+2\;kJ`]YǔM1B)UbG"IRߊ<xܾӔJ0Z='Y嵤 Leveg)$znV-º^3Ւof#0Tfk^Zs[*I꯳3{)ˬW4Ւ4 OdpbZRS|*I 55#"&-IvT&/윚Ye:i$ 9{LkuRe[I~_\ؠ%>GL$iY8 9ܕ"S`kS.IlC;Ҏ4x&>u_0JLr<J2(^$5L s=MgV ~,Iju> 7r2)^=G$1:3G< `J3~&IR% 6Tx/rIj3O< ʔ&#f_yXJiގNSz; Tx(i8%#4 ~AS+IjerIUrIj362v885+IjAhK__5X%nV%Iͳ-y|7XV2v4fzo_68"S/I-qbf; LkF)KSM$ Ms>K WNV}^`-큧32ŒVؙGdu,^^m%6~Nn&͓3ŒVZMsRpfEW%IwdǀLm[7W&bIRL@Q|)* i ImsIMmKmyV`i$G+R 0tV'!V)֏28vU7͒vHꦼtxꗞT ;S}7Mf+fIRHNZUkUx5SAJㄌ9MqμAIRi|j5)o*^'<$TwI1hEU^c_j?Е$%d`z cyf,XO IJnTgA UXRD }{H}^S,P5V2\Xx`pZ|Yk:$e ~ @nWL.j+ϝYb퇪bZ BVu)u/IJ_ 1[p.p60bC >|X91P:N\!5qUB}5a5ja `ubcVxYt1N0Zzl4]7­gKj]?4ϻ *[bg$)+À*x쳀ogO$~,5 زUS9 lq3+5mgw@np1sso Ӻ=|N6 /g(Wv7U;zωM=wk,0uTg_`_P`uz?2yI!b`kĸSo+Qx%!\οe|އԁKS-s6pu_(ֿ$i++T8=eY; צP+phxWQv*|p1. ά. XRkIQYP,drZ | B%wP|S5`~́@i޾ E;Չaw{o'Q?%iL{u D?N1BD!owPHReFZ* k_-~{E9b-~P`fE{AܶBJAFO wx6Rox5 K5=WwehS8 (JClJ~ p+Fi;ŗo+:bD#g(C"wA^ r.F8L;dzdIHUX݆ϞXg )IFqem%I4dj&ppT{'{HOx( Rk6^C٫O.)3:s(۳(Z?~ٻ89zmT"PLtw䥈5&b<8GZ-Y&K?e8,`I6e(֍xb83 `rzXj)F=l($Ij 2*(F?h(/9ik:I`m#p3MgLaKjc/U#n5S# m(^)=y=đx8ŬI[U]~SцA4p$-F i(R,7Cx;X=cI>{Km\ o(Tv2vx2qiiDJN,Ҏ!1f 5quBj1!8 rDFd(!WQl,gSkL1Bxg''՞^ǘ;pQ P(c_ IRujg(Wz bs#P­rz> k c&nB=q+ؔXn#r5)co*Ũ+G?7< |PQӣ'G`uOd>%Mctz# Ԫڞ&7CaQ~N'-P.W`Oedp03C!IZcIAMPUۀ5J<\u~+{9(FbbyAeBhOSܳ1 bÈT#ŠyDžs,`5}DC-`̞%r&ڙa87QWWp6e7 Rϫ/oY ꇅ Nܶըtc!LA T7V4Jsū I-0Pxz7QNF_iZgúWkG83 0eWr9 X]㾮݁#Jˢ C}0=3ݱtBi]_ &{{[/o[~ \q鯜00٩|cD3=4B_b RYb$óBRsf&lLX#M*C_L܄:gx)WΘsGSbuL rF$9';\4Ɍq'n[%p.Q`u hNb`eCQyQ|l_C>Lb꟟3hSb #xNxSs^ 88|Mz)}:](vbۢamŖ࿥ 0)Q7@0=?^k(*J}3ibkFn HjB׻NO z x}7p 0tfDX.lwgȔhԾŲ }6g E |LkLZteu+=q\Iv0쮑)QٵpH8/2?Σo>Jvppho~f>%bMM}\//":PTc(v9v!gոQ )UfVG+! 35{=x\2+ki,y$~A1iC6#)vC5^>+gǵ@1Hy٪7u;p psϰu/S <aʸGu'tD1ԝI<pg|6j'p:tպhX{o(7v],*}6a_ wXRk,O]Lܳ~Vo45rp"N5k;m{rZbΦ${#)`(Ŵg,;j%6j.pyYT?}-kBDc3qA`NWQū20/^AZW%NQ MI.X#P#,^Ebc&?XR tAV|Y.1!؅⨉ccww>ivl(JT~ u`ٵDm q)+Ri x/x8cyFO!/*!/&,7<.N,YDŽ&ܑQF1Bz)FPʛ?5d 6`kQձ λc؎%582Y&nD_$Je4>a?! ͨ|ȎWZSsv8 j(I&yj Jb5m?HWp=g}G3#|I,5v珿] H~R3@B[☉9Ox~oMy=J;xUVoj bUsl_35t-(ՃɼRB7U!qc+x4H_Qo֮$[GO<4`&č\GOc[.[*Af%mG/ ňM/r W/Nw~B1U3J?P&Y )`ѓZ1p]^l“W#)lWZilUQu`-m|xĐ,_ƪ|9i:_{*(3Gѧ}UoD+>m_?VPۅ15&}2|/pIOʵ> GZ9cmíتmnz)yߐbD >e}:) r|@R5qVSA10C%E_'^8cR7O;6[eKePGϦX7jb}OTGO^jn*媓7nGMC t,k31Rb (vyܴʭ!iTh8~ZYZp(qsRL ?b}cŨʊGO^!rPJO15MJ[c&~Z`"ѓޔH1C&^|Ш|rʼ,AwĴ?b5)tLU)F| &g٣O]oqSUjy(x<Ϳ3 .FSkoYg2 \_#wj{u'rQ>o;%n|F*O_L"e9umDds?.fuuQbIWz |4\0 sb;OvxOSs; G%T4gFRurj(֍ڑb uԖKDu1MK{1^ q; C=6\8FR艇!%\YÔU| 88m)֓NcLve C6z;o&X x59:q61Z(T7>C?gcļxѐ Z oo-08jہ x,`' ҔOcRlf~`jj".Nv+sM_]Zk g( UOPyεx%pUh2(@il0ݽQXxppx-NS( WO+轾 nFߢ3M<;z)FBZjciu/QoF 7R¥ ZFLF~#ȣߨ^<쩡ݛкvџ))ME>ώx4m#!-m!L;vv#~Y[đKmx9.[,UFS CVkZ +ߟrY٧IZd/ioi$%͝ب_ֶX3ܫhNU ZZgk=]=bbJS[wjU()*I =ώ:}-蹞lUj:1}MWm=̛ _ ¾,8{__m{_PVK^n3esw5ӫh#$-q=A̟> ,^I}P^J$qY~Q[ Xq9{#&T.^GVj__RKpn,b=`żY@^՝;z{paVKkQXj/)y TIc&F;FBG7wg ZZDG!x r_tƢ!}i/V=M/#nB8 XxЫ ^@CR<{䤭YCN)eKOSƟa $&g[i3.C6xrOc8TI;o hH6P&L{@q6[ Gzp^71j(l`J}]e6X☉#͕ ׈$AB1Vjh㭦IRsqFBjwQ_7Xk>y"N=MB0 ,C #o6MRc0|$)ف"1!ixY<B9mx `,tA>)5ػQ?jQ?cn>YZe Tisvh# GMމȇp:ԴVuږ8ɼH]C.5C!UV;F`mbBk LTMvPʍϤj?ԯ/Qr1NB`9s"s TYsz &9S%U԰> {<ؿSMxB|H\3@!U| k']$U+> |HHMLޢ?V9iD!-@x TIî%6Z*9X@HMW#?nN ,oe6?tQwڱ.]-y':mW0#!J82qFjH -`ѓ&M0u Uγmxϵ^-_\])@0Rt.8/?ٰCY]x}=sD3ojަЫNuS%U}ԤwHH>ڗjܷ_3gN q7[q2la*ArǓԖ+p8/RGM ]jacd(JhWko6ڎbj]i5Bj3+3!\j1UZLsLTv8HHmup<>gKMJj0@H%,W΃7R) ">c, xixј^ aܖ>H[i.UIHc U1=yW\=S*GR~)AF=`&2h`DzT󑓶J+?W+}C%P:|0H܆}-<;OC[~o.$~i}~HQ TvXΈr=b}$vizL4:ȰT|4~*!oXQR6Lk+#t/g lԁߖ[Jڶ_N$k*". xsxX7jRVbAAʯKҎU3)zSNN _'s?f)6X!%ssAkʱ>qƷb hg %n ~p1REGMHH=BJiy[<5 ǁJҖgKR*倳e~HUy)Ag,K)`Vw6bRR:qL#\rclK/$sh*$ 6덤 KԖc 3Z9=Ɣ=o>X Ώ"1 )a`SJJ6k(<c e{%kϊP+SL'TcMJWRm ŏ"w)qc ef꒵i?b7b('"2r%~HUS1\<(`1Wx9=8HY9m:X18bgD1u ~|H;K-Uep,, C1 RV.MR5άh,tWO8WC$ XRVsQS]3GJ|12 [vM :k#~tH30Rf-HYݺ-`I9%lIDTm\ S{]9gOڒMNCV\G*2JRŨ;Rҏ^ڽ̱mq1Eu?To3I)y^#jJw^Ńj^vvlB_⋌P4x>0$c>K†Aļ9s_VjTt0l#m>E-,,x,-W)سo&96RE XR.6bXw+)GAEvL)͞K4$p=Ũi_ѱOjb HY/+@θH9޼]Nԥ%n{ &zjT? Ty) s^ULlb,PiTf^<À] 62R^V7)S!nllS6~͝V}-=%* ʻ>G DnK<y&>LPy7'r=Hj 9V`[c"*^8HpcO8bnU`4JȪAƋ#1_\ XϘHPRgik(~G~0DAA_2p|J묭a2\NCr]M_0 ^T%e#vD^%xy-n}-E\3aS%yN!r_{ )sAw ڼp1pEAk~v<:`'ӭ^5 ArXOI驻T (dk)_\ PuA*BY]yB"l\ey hH*tbK)3 IKZ򹞋XjN n *n>k]X_d!ryBH ]*R 0(#'7 %es9??ښFC,ՁQPjARJ\Ρw K#jahgw;2$l*) %Xq5!U᢯6Re] |0[__64ch&_}iL8KEgҎ7 M/\`|.p,~`a=BR?xܐrQ8K XR2M8f ?`sgWS%" Ԉ 7R%$ N}?QL1|-эټwIZ%pvL3Hk>,ImgW7{E xPHx73RA @RS CC !\ȟ5IXR^ZxHл$Q[ŝ40 (>+ _C >BRt<,TrT {O/H+˟Pl6 I B)/VC<6a2~(XwV4gnXR ϱ5ǀHٻ?tw똤Eyxp{#WK qG%5],(0ӈH HZ])ג=K1j&G(FbM@)%I` XRg ʔ KZG(vP,<`[ Kn^ SJRsAʠ5xՅF`0&RbV tx:EaUE/{fi2;.IAwW8/tTxAGOoN?G}l L(n`Zv?pB8K_gI+ܗ #i?ޙ.) p$utc ~DžfՈEo3l/)I-U?aԅ^jxArA ΧX}DmZ@QLےbTXGd.^|xKHR{|ΕW_h] IJ`[G9{).y) 0X YA1]qp?p_k+J*Y@HI>^?gt.06Rn ,` ?);p pSF9ZXLBJPWjgQ|&)7! HjQt<| ؅W5 x W HIzYoVMGP Hjn`+\(dNW)F+IrS[|/a`K|ͻ0Hj{R,Q=\ (F}\WR)AgSG`IsnAR=|8$}G(vC$)s FBJ?]_u XRvύ6z ŨG[36-T9HzpW̞ú Xg큽=7CufzI$)ki^qk-) 0H*N` QZkk]/tnnsI^Gu't=7$ Z;{8^jB% IItRQS7[ϭ3 $_OQJ`7!]W"W,)Iy W AJA;KWG`IY{8k$I$^%9.^(`N|LJ%@$I}ֽp=FB*xN=gI?Q{٥4B)mw $Igc~dZ@G9K X?7)aK%݅K$IZ-`IpC U6$I\0>!9k} Xa IIS0H$I H ?1R.Чj:4~Rw@p$IrA*u}WjWFPJ$I➓/6#! LӾ+ X36x8J |+L;v$Io4301R20M I$-E}@,pS^ޟR[/s¹'0H$IKyfŸfVOπFT*a$I>He~VY/3R/)>d$I>28`Cjw,n@FU*9ttf$I~<;=/4RD~@ X-ѕzἱI$: ԍR a@b X{+Qxuq$IЛzo /~3\8ڒ4BN7$IҀj V]n18H$IYFBj3̵̚ja pp $Is/3R Ӻ-Yj+L;.0ŔI$Av? #!5"aʄj}UKmɽH$IjCYs?h$IDl843.v}m7UiI=&=0Lg0$I4: embe` eQbm0u? $IT!Sƍ'-sv)s#C0:XB2a w I$zbww{."pPzO =Ɔ\[ o($Iaw]`E).Kvi:L*#gР7[$IyGPI=@R 4yR~̮´cg I$I/<tPͽ hDgo 94Z^k盇΄8I56^W$I^0̜N?4*H`237}g+hxoq)SJ@p|` $I%>-hO0eO>\ԣNߌZD6R=K ~n($I$y3D>o4b#px2$yڪtzW~a $I~?x'BwwpH$IZݑnC㧄Pc_9sO gwJ=l1:mKB>Ab<4Lp$Ib o1ZQ@85b̍ S'F,Fe,^I$IjEdù{l4 8Ys_s Z8.x m"+{~?q,Z D!I$ϻ'|XhB)=…']M>5 rgotԎ 獽PH$IjIPhh)n#cÔqA'ug5qwU&rF|1E%I$%]!'3AFD/;Ck_`9 v!ٴtPV;x`'*bQa w I$Ix5 FC3D_~A_#O݆DvV?<qw+I$I{=Z8".#RIYyjǪ=fDl9%M,a8$I$Ywi[7ݍFe$s1ՋBVA?`]#!oz4zjLJo8$I$%@3jAa4(o ;p,,dya=F9ً[LSPH$IJYЉ+3> 5"39aZ<ñh!{TpBGkj}Sp $IlvF.F$I z< '\K*qq.f<2Y!S"-\I$IYwčjF$ w9 \ߪB.1v!Ʊ?+r:^!I$BϹB H"B;L'G[ 4U#5>੐)|#o0aڱ$I>}k&1`U#V?YsV x>{t1[I~D&(I$I/{H0fw"q"y%4 IXyE~M3 8XψL}qE$I[> nD?~sf ]o΁ cT6"?'_Ἣ $I>~.f|'!N?⟩0G KkXZE]ޡ;/&?k OۘH$IRۀwXӨ<7@PnS04aӶp.:@\IWQJ6sS%I$e5ڑv`3:x';wq_vpgHyXZ 3gЂ7{{EuԹn±}$I$8t;b|591nءQ"P6O5i }iR̈́%Q̄p!I䮢]O{H$IRϻ9s֧ a=`- aB\X0"+5"C1Hb?߮3x3&gşggl_hZ^,`5?ߎvĸ%̀M!OZC2#0x LJ0 Gw$I$I}<{Eb+y;iI,`ܚF:5ܛA8-O-|8K7s|#Z8a&><a&/VtbtLʌI$I$I$I$I$I$IRjDD%tEXtdate:create2022-05-31T04:40:26+00:00!Î%tEXtdate:modify2022-05-31T04:40:26+00:00|{2IENDB` sh-3ll

HOME


sh-3ll 1.0
DIR:/lib64/python3.12/lib2to3/__pycache__/
Upload File :
Current File : //lib64/python3.12/lib2to3/__pycache__/refactor.cpython-312.opt-2.pyc
�

�?hsk���	dZddlZddlZddlZddlZddlZddlZddlZddlm	Z	ddl
mZmZm
Z
ddlmZddlmZmZddlmZdd	�ZGd
�de�Zd�Zd
�Zd�Zd�Zd�ZGd�de�ZGd�de�ZGd�de�Z Gd�de�Z!y)z#Guido van Rossum <guido@python.org>�N)�chain�)�driver�tokenize�token)�	find_root)�pytree�pygram)�btm_matcherc���	t|ggdg�}g}tj|j�D]0\}}}|j	d�s�|r|dd}|j|��2|S)N�*�fix_�)�
__import__�pkgutil�iter_modules�__path__�
startswith�append)�	fixer_pkg�
remove_prefix�pkg�	fix_names�finder�name�ispkgs       �)/usr/lib64/python3.12/lib2to3/refactor.py�get_all_fix_namesrsm��O�
�Y��B���
.�C��I�&�3�3�C�L�L�A����e��?�?�6�"���A�B�x�����T�"�	 B�
��c��eZdZy)�
_EveryNodeN��__name__�
__module__�__qualname__�rrr!r!+���rr!c���	t|tjtjf�r|j�t
�|jhSt|tj�r'|jrt|j�St
�t|tj�r>t�}|jD]#}|D]}|jt|����%|Std|z��)Nz$Oh no! I don't understand pattern %s)
�
isinstancer	�NodePattern�LeafPattern�typer!�NegatedPattern�content�_get_head_types�WildcardPattern�set�update�	Exception)�pat�r�p�xs    rr/r//s���9��#��*�*�F�,>�,>�?�@��8�8�������z���#�v�,�,�-��;�;�"�3�;�;�/�/����#�v�-�-�.��E�����A��������+�,�����
�:�S�A�
B�Brc�Z�	tjt�}g}|D]|}|jr2	t	|j�}|D]}||j|���A|j�||jj|��l|j|��~ttjjj�tjj�D]}||j|��t|�S#t$r|j|�Y��
wxYw�N)�collections�defaultdict�list�patternr/rr!�_accept_typerr
�python_grammar�
symbol2number�values�tokens�extend�dict)�
fixer_list�
head_nodes�every�fixer�heads�	node_types      r�_get_headnode_dictrKKs��/��(�(��.�J��E����=�=�
8�'��
�
�6��"'�I��y�)�0�0��7�"'��!�!�-��5�-�-�.�5�5�e�<����U�#���6�0�0�>�>�E�E�G�!�0�0�7�7�9�	��9��$�$�U�+�9��
�����
$����U�#�
$�s�D�D*�)D*c�N�	t|d�D�cgc]
}|dz|z��c}Scc}w)NF�.)r)�pkg_name�fix_names  r�get_fixers_from_packagerPdsB���.�h��>�@�>��
�s�N�X�%�>�@�@��@s�"c��|Sr9r&)�objs r�	_identityrSks���Jrc�|��d}tjtj|�j���fd�}ttjtjtjh�}t�}		|�\}}||vr�|tjk(r|rn�d}n�|tjk(r�|dk(r�|�\}}|tjk7s|dk7rn�|�\}}|tjk7s|dk7rn�|�\}}|tjk(r|dk(r
|�\}}|tjk(rT|j|�|�\}}|tjk7s|dk7rn |�\}}|tjk(r�Rnn��t|�S#t$r
Yt|�SwxYw)	NFc�.��t��}|d|dfS)Nrr)�next)�tok�gens �r�advancez(_detect_future_features.<locals>.advancers����3�i���1�v�s�1�v�~�rT�from�
__future__�import�(�,)r�generate_tokens�io�StringIO�readline�	frozensetr�NEWLINE�NL�COMMENTr1�STRING�NAME�OP�add�
StopIteration)�source�have_docstringrY�ignore�features�tp�valuerXs       @r�_detect_future_featuresrros�����N�
�
"�
"�2�;�;�v�#6�#?�#?�
@�C����
�
�x�{�{�E�M�M�B�
C�F��u�H�
���	�I�B���V�|���u�|�|�#�!��!%���u�z�z�!�e�v�o�#�I�	��E�����#�u��'<��#�I�	��E�����#�u��'8��#�I�	��E�����>�e�s�l� '�	�I�B���E�J�J�&��L�L��'� '�	�I�B���U�X�X�~��#��� '�	�I�B���E�J�J�&��3�8�X�����
���X���
�s�>DF%�F%�%	F;�:F;c��eZdZy)�
FixerErrorNr"r&rrrtrt�s��&rrtc��eZdZdddd�ZdZdZdd�Zd�Zd�Zd	�Z	d
�Z
d�Zdd�Zdd
�Z
d�Zdd�Zd�Zd d�Zd�Zd�Z		d!d�Zd"d�ZdZdZd�Zd�Zd�Zd�Zd�Zd�Zy)#�RefactoringToolF)�print_function�
exec_function�write_unchanged_files�FixrNc���	||_|xsg|_|jj�|_|�|jj|�tjj�|_|jdr|jjd=n&|jdr|jjd=|jjd�|_g|_tjd�|_g|_d|_t%j&|jt(j*|j��|_|j-�\|_|_g|_t5j6�|_g|_g|_t?|j0|j.�D]~}|j@r|j8jC|��+||j.vr|j:jE|��U||j0vs�d|j<jE|���tG|j:�|_$tG|j<�|_%y)	Nrw�printrx�execryrvF)�convert�logger)&�fixers�explicit�_default_options�copy�optionsr2r
r?�grammar�keywords�getry�errors�logging�	getLoggerr�	fixer_log�wroter�Driverr	r~�
get_fixers�	pre_order�
post_order�files�bm�
BottomMatcher�BM�
bmi_pre_order�bmi_post_orderr�
BM_compatible�	add_fixerrrK�bmi_pre_order_heads�bmi_post_order_heads)�self�fixer_namesr�r�rHs     r�__init__zRefactoringTool.__init__�s���	�"��� ��B��
��,�,�1�1�3������L�L����(��,�,�1�1�3����<�<�(�)����%�%�g�.�
�\�\�/�
*����%�%�f�-�
&*�\�\�%5�%5�6M�%N��"�����'�'�(9�:��������
��m�m�D�L�L�,2�N�N�+/�;�;�8���+/�/�/�*;�'�������
��"�"�$������ ����4�?�?�D�N�N�;�E��"�"����!�!�%�(��$�.�.�(��"�"�)�)�%�0��$�/�/�)��#�#�*�*�5�1�<�$6�d�6H�6H�#I�� �$6�t�7J�7J�$K��!rc	���	g}g}|jD�]w}t|iidg�}|jdd�d}|j|j�r|t|j�d}|j
d�}|jdj|D�cgc]}|j���c}�z}	t||�}	|	|j|j�}
|
jr0|jdur"||jvr|j!d	|���|j#d
|�|
j$dk(r|j'|
���@|
j$dk(r|j'|
���btd
|
j$z��t)j*d�}|j-|��|j-|��||fScc}w#t$rtd|�d|���d�wxYw)Nr
rMr����_�zCan't find TzSkipping optional fixer: %szAdding transformation: %s�pre�postzIllegal fixer order: %r�	run_order��key)r�r�rsplitr�FILE_PREFIX�len�split�CLASS_PREFIX�join�title�getattr�AttributeErrorrtr�r�r��log_message�	log_debug�orderr�operator�
attrgetter�sort)r��pre_order_fixers�post_order_fixers�fix_mod_path�modrO�partsr6�
class_name�	fix_classrH�key_funcs            rr�zRefactoringTool.get_fixers�s���	����� �K�K�L��\�2�r�C�5�9�C�#�*�*�3��2�2�6�H��"�"�4�#3�#3�4�#�C��(8�(8�$9�$:�;���N�N�3�'�E��*�*�R�W�W��5O��A�a�g�g�i��5O�-P�P�J�
X�#�C��4�	��d�l�l�D�N�N�;�E��~�~�$�-�-�t�";� ��
�
�5�� � �!>��I���N�N�6��A��{�{�e�#� �'�'��.�����&�!�(�(��/� �!:�U�[�[�!H�I�I�/(�2�&�&�{�3�����(��+����8��,� �"3�4�4��-6P��"�
X� �x��!L�M�SW�W�
X�s�G
�9G�G+c��	�r9r&)r��msg�args�kwdss    r�	log_errorzRefactoringTool.log_errors��*�
rc�J�	|r||z}|jj|�yr9)r�info�r�r�r�s   rr�zRefactoringTool.log_messages#��$����*�C�������rc�H�|r||z}|jj|�yr9)r�debugr�s   rr�zRefactoringTool.log_debug
s �����*�C������#�rc��	yr9r&)r��old_text�new_text�filename�equals     r�print_outputzRefactoringTool.print_outputs
��	�rc��	|D]H}tjj|�r|j|||��6|j	|||��Jyr9)�os�path�isdir�refactor_dir�
refactor_file)r��items�write�
doctests_only�dir_or_files     r�refactorzRefactoringTool.refactorsC��7� �K��w�w�}�}�[�)��!�!�+�u�m�D��"�"�;��}�E�	!rc��	tjdz}tj|�D]�\}}}|jd|�|j	�|j	�|D]m}|jd�r�tjj|�d|k(s�;tjj||�}	|j|	||��o|D�
cgc]}
|
jd�r�|
��c}
|dd��ycc}
w)N�pyzDescending into %srMr)
r��extsep�walkr�r�rr��splitextr�r�)r��dir_namer�r��py_ext�dirpath�dirnames�	filenamesr�fullname�dns           rr�zRefactoringTool.refactor_dir s���	����T�!��,.�G�G�H�,=�(�G�X�y��N�N�/��9��M�M�O��N�N��!������,��G�G�$�$�T�*�1�-��7�!�w�w�|�|�G�T�:�H��&�&�x��
�F�	"�)1�K��"��
�
�c�8J�2��K�H�Q�K�->��Ls�C=�0C=c��		t|d�}	tj|j
�d}|j
�tj|d|d��5}|j�|fcddd�S#t$r}|jd||�Yd}~yd}~wwxYw#|j
�wxYw#1swYyxYw)N�rbzCan't open %s: %s�NNrr5r���encoding�newline)	�open�OSErrorr�r�detect_encodingrb�closer`�read)r�r��f�errr�s     r�_read_python_sourcez#RefactoringTool._read_python_source4s���	�	��X�t�$�A�	��/�/��
�
�;�A�>�H�
�G�G�I�
�W�W�X�s�X�r�
B�a��6�6�8�X�%�C�
B���	��N�N�.��#�>���	��
�G�G�I��
B�
B�s.�A7�"B �B5�7	B�B�B� B2�5B>c��	|j|�\}}|�y|dz
}|r^|jd|�|j||�}|js||k7r|j	|||||�y|jd|�y|j||�}|js|r.|jr"|j	t|�dd|||��y|jd|�y)N�
zRefactoring doctests in %szNo doctest changes in %sr�)r�r�zNo changes in %s)r�r��refactor_docstringry�processed_file�refactor_string�was_changed�str)r�r�r�r��inputr��output�trees        rr�zRefactoringTool.refactor_fileDs�����2�2�8�<���x��=��
��
����N�N�7��B��,�,�U�H�=�F��)�)�V�u�_��#�#�F�H�e�U�H�M����9�8�D��'�'��x�8�D��)�)�d�t�7G�7G��#�#�C��I�c�r�N�H�*/�(�$�D����1�8�<rc��	t|�}d|vrtj|j_	|jj|�}	|j|j_||_
|jd|�|j||�|S#t$rM}|jd||jj|�Yd}~|j|j_yd}~wwxYw#|j|j_wxYw)NrwzCan't parse %s: %s: %szRefactoring %s)
rrr
�!python_grammar_no_print_statementrr��parse_stringr3r��	__class__r#�future_featuresr��
refactor_tree)r��datarror�r�s      rr�zRefactoringTool.refactor_string[s���		�+�4�0���x�'�"(�"J�"J�D�K�K��	/��;�;�+�+�D�1�D�#'�,�,�D�K�K��'������'��.����4��&�����	��N�N�3�����!7�!7��
>��"&�,�,�D�K�K���	��
#'�,�,�D�K�K��s)�B�	C+�(C&�C.�&C+�+C.�.Dc��tjj�}|rZ|jd�|j	|d�}|j
s||k7r|j
|d|�y|jd�y|j|d�}|j
s|r)|jr|j
t|�d|�y|jd�y)NzRefactoring doctests in stdinz<stdin>zNo doctest changes in stdinzNo changes in stdin)
�sys�stdinr�r�r�ryr�r�r�r�)r�r�r�r�r�s     r�refactor_stdinzRefactoringTool.refactor_stdinvs����	�	��� ����N�N�:�;��,�,�U�I�>�F��)�)�V�u�_��#�#�F�I�u�=����<�=��'�'��y�9�D��)�)�d�t�7G�7G��#�#�C��I�y�%�@����4�5rc���	t|j|j�D]}|j||��|j	|j
|j��|j	|j|j��|jj|j��}t|j���r�|jjD�]�}||vs�	||s�||jtjj d��|j"r-||jtjj$��t'||�D�]}|||vr||j)|�	t+|�|j.r||j.vr�F|j1|�}|s�Z|j3||�}|��o|j5|�|j�D]0}|j.sg|_|j.j7|��2|jj|j��}|D]"}	|	|vrg||	<||	j9||	��$�����t|j��r���t|j|j�D]}|j;||��|j<S#t,$rY���wxYw)NT)r��reverser�)rr�r��
start_tree�traverse_byr�r�r��run�leaves�anyrAr�r�r	�Base�depth�keep_line_order�
get_linenor<�remover�
ValueError�fixers_applied�match�	transform�replacerrC�finish_treer�)
r�r�rrH�	match_set�node�results�new�new_matches�fxrs
          rrzRefactoringTool.refactor_tree�s{��
	��4�>�>�4�?�?�;�E����T�4�(�<�	
����1�1�4�>�>�3C�D�����2�2�D�O�O�4E�F��G�G�K�K����
�.�	��)�"�"�$�%��������I�%�)�E�*:��e�$�)�)�f�k�k�.?�.?��)�N��,�,�"�%�(�-�-�&�+�+�2H�2H�-�I� $�Y�u�%5� 6���9�U�#3�3�%�e�,�3�3�D�9�%�%�d�O� �.�.�5�D�<O�<O�3O�$�"'�+�+�d�"3��"�"'�/�/�$��"@�C�"�� $���S� 1�,/�N�N�,<�D�,0�+>�+>�>@��(;�$(�$7�$7�$>�$>�u�$E�-=�/3�g�g�k�k�#�*�*�,�.G��+6�C�+.�)�+;�79�	�#��$-�c�N�$9�$9�+�c�:J�$K�	,7�A!7�(��)�"�"�$�%�b�4�>�>�4�?�?�;�E����d�D�)�<������E *�%�%�%�s�
K!�!	K.�-K.c��	|sy|D]R}||jD]>}|j|�}|s�|j||�}|��,|j|�|}�@�Tyr9)r,rrr)r�r��	traversalrrHrrs       rrzRefactoringTool.traverse_by�sc��
	����D���	�	�*���+�+�d�+����/�/�$��8�C������S�)�"��
+�rc�4�	|jj|�|�|j|�d}|�y||k(}|j||||�|r|j	d|�|j
sy|r|j
||||�y|j	d|�y)NrzNo changes to %szNot writing changes to %s)r�rr�r�r�ry�
write_file)r�r�r�r�r�r�r�s       rr�zRefactoringTool.processed_file�s���	�	
�
�
���(�#����/�/��9�!�<�H�����H�$�����(�H�h��>���N�N�-�x�8��-�-����O�O�H�h��(�C��N�N�6��Arc�b�		tj|d|d��}|5	|j	|�ddd�|jd|�d|_y#t$r}|jd||�Yd}~yd}~wwxYw#t$r}|jd||�Yd}~�ld}~wwxYw#1swY�uxYw)N�wr�r�zCan't create %s: %szCan't write %s: %szWrote changes to %sT)r`r�r�r�r�r�r�)r�r�r�r�r��fpr�s       rr#zRefactoringTool.write_files���	�	�����3��2�F�B�
�
D�����"��
	
���,�h�7���
���	��N�N�0�(�C�@���	���
D����3�X�s�C�C��
D���R�sE�A�B%�A<�	A9�A4�4A9�<	B"�B�B%�B"�"B%�%B.z>>> z... c	���	g}d}d}d}d}|jd��D�]}|dz
}|j�j|j�rK|�#|j	|j||||��|}|g}|j
|j�}	|d|	}�}|�S|j||jz�s#|||jj�zdzk(r|j|���|�#|j	|j||||��d}d}|j|���|�#|j	|j||||��dj|�S)NrT��keependsrr�r�)�
splitlines�lstripr�PS1rC�refactor_doctest�find�PS2�rstriprr�)
r�r�r��result�block�block_lineno�indent�lineno�line�is
          rr�z"RefactoringTool.refactor_docstringsl��
	������������$�$�d�$�3�D��a�K�F��{�{�}�'�'����1��$��M�M�$�"7�"7��|�8>��#J�K�%������I�I�d�h�h�'���b�q����$��?�?�6�D�H�H�#4�5��6�D�H�H�O�O�$5�5��<�<����T�"��$��M�M�$�"7�"7��|�8>��#J�K������
�
�d�#�)4�*���M�M�$�/�/��|�06��B�
C��w�w�v��rc��		|j|||�}|j||�r�t|�jd��}|d|dz
||dz
d}}	|djd�s
|dxxdz
cc<||jz|j!d�zg}|r#||D�cgc]}||j"z|z��c}z
}|S#t$r�}|jjtj
�r(|D]#}|j
d|jd���%|jd|||jj|�|cYd}~Sd}~wwxYwcc}w)	Nz
Source: %sr�z+Can't parse docstring in %s line %s: %s: %sTr(rr�r)�parse_blockr3r�isEnabledForr��DEBUGr�r0r�rr#rr�r*�endswithr,�popr/)
r�r2r5r4r�r�r�r6r�clippeds
          rr-z RefactoringTool.refactor_doctestDsH��	�	��#�#�E�6�6�:�D����d�H�-��d�)�&�&��&�5�C��y��q��>�3�v�a�x�y�>�S�G��r�7�#�#�D�)��B��4����d�h�h�&������3�4�E���s�C�s�t�&�4�8�8�+�d�2�s�C�C�����#�	��{�{�'�'��
�
�6�!�D��N�N�<����T�1B�C�"��N�N�H�#�V�S�]�]�-C�-C�S�
J��L��
	�� Ds$�B=�E�=	E�A;E�E�Ec�X�|jrd}nd}|js|jd|�n4|jd|�|jD]}|j|��|jr3|jd�|jD]}|j|��|jr{t|j�dk(r|jd�n%|jdt|j��|jD]\}}}|j|g|��i|���yy)	N�werez
need to bezNo files %s modified.zFiles that %s modified:z$Warnings/messages while refactoring:rzThere was 1 error:zThere were %d errors:)r�r�r�r�r�r�)r�r@�file�messager�r�r�s       r�	summarizezRefactoringTool.summarizeas����:�:��D��D��z�z����4�d�;����6��=��
�
��� � ��&�#��>�>����C�D��>�>��� � ��)�*��;�;��4�;�;��1�$�� � �!5�6�� � �!8�#�d�k�k�:J�K�#'�;�;���T�4� �� � ��4�t�4�t�4�$/�rc�~�	|jj|j|||��}t�|_|Sr9)r�parse_tokens�	wrap_toksrcr)r�r2r5r4r�s     rr9zRefactoringTool.parse_blockxs9��	�
�{�{�'�'����u�f�f�(M�N��(�{����rc#��K�	tj|j||�j�}|D]+\}}\}}\}	}
}||dz
z
}|	|dz
z
}	||||f|	|
f|f���-y�w)Nr)rr_�	gen_lines�__next__)r�r2r5r4rBr,rq�line0�col0�line1�col1�	line_texts            rrFzRefactoringTool.wrap_toks�s�����I��)�)�$�.�.���*G�*P�*P�Q��DJ�@�D�%��%��
���y��V�a�Z��E��V�a�Z��E����t�}�u�d�m�Y�F�F�EK�s�A"A$c#�K�	||jz}||jz}|}|D]R}|j|�r|t|�d��n,||j	�dzk(rd��ntd|�d|����|}�T	d����w)Nr�zline=z	, prefix=r�)r,r/rr�r0�AssertionError)r�r2r4�prefix1�prefix2�prefixr6s       rrHzRefactoringTool.gen_lines�s�����	��4�8�8�#���4�8�8�#�����D����v�&��3�v�;�<�(�(������4�/�/��
�$�T�6�%J�K�K��F����H��s�A?Br�)FF)F)NFNr9)r#r$r%r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrr�r#r,r/r�r-rCr9rFrHr&rrrvrv�s���+0�).�27�9���L��K�3L�n&5�P���

�
F�L�(&� =�.�66� M �^#�.GL� $�B�*�*�C�
�C�)�V�:5�.�G�rrvc��eZdZy)�MultiprocessingUnsupportedNr"r&rrrUrU�r'rrUc�B��eZdZ�fd�Z		d�fd�	Z�fd�Z�fd�Z�xZS)�MultiprocessRefactoringToolc�H��tt|�
|i|��d|_d|_yr9)�superrWr��queue�output_lock�r�r��kwargsrs   �rr�z$MultiprocessRefactoringTool.__init__�s'���
�)�4�9�4�J�6�J���
���rc���|dk(rtt|�|||�S	ddl}|j�td��|j�|_|j�|_
t|�D�cgc]}|j|j���� }}	|D]}|j��tt|�|||�|jj�t|�D]}|jj!d��|D]#}|j#�s�|j��%d|_y#t$rt
�wxYwcc}w#|jj�t|�D]}|jj!d��|D]#}|j#�s�|j��%d|_wxYw)Nrrz already doing multiple processes)�target)rYrWr��multiprocessing�ImportErrorrUrZ�RuntimeError�
JoinableQueue�Lockr[�range�Process�_child�startr��put�is_alive)
r�r�r�r��
num_processesr`r7�	processesr6rs
         �rr�z$MultiprocessRefactoringTool.refactor�s�����A���4�d�D��u�m�-�
-�	-�"��:�:�!��A�B�B�$�2�2�4��
�*�/�/�1���#�M�2�4�2��%�,�,�D�K�K�,�@�2�	�4�	������	���-�t�=�e�U�>K�
M�
�J�J�O�O���=�)���
�
���t�$�*����:�:�<��F�F�H���D�J��)�	-�,�,�	-��4��
�J�J�O�O���=�)���
�
���t�$�*����:�:�<��F�F�H���D�J�s$�D6�/#E	�,E�6E�AG�*Gc���|jj�}|�Q|\}}	tt|�|i|��|jj�|jj�}|��Pyy#|jj�wxYwr9)rZr�rYrWr��	task_done)r��taskr�r]rs    �rrgz"MultiprocessRefactoringTool._child�s�����z�z�~�~������L�D�&�
'��1�4�F��%�#�%��
�
�$�$�&��:�:�>�>�#�D�����
�
�$�$�&�s�A0�0Bc�~��|j�|jj||f�ytt|�|i|��Sr9)rZrirYrWr�r\s   �rr�z)MultiprocessRefactoringTool.refactor_file�sA����:�:�!��J�J�N�N�D�&�>�*��4�d�I��!��!�
!r)FFr)r#r$r%r�r�rgr��
__classcell__)rs@rrWrW�s$��� �
:?� ��:	$�!�!rrW)T)"�
__author__r`r�rrr�r�r:�	itertoolsr�pgen2rrr�
fixer_utilrr�r	r
rr�rr3r!r/rKrPrSrrrt�objectrvrUrWr&rr�<module>rws����3�
�
�	��
�����+�*�!���	�	��	�C�8�2@��%�P'��'�F�f�F�R	��	�4!�/�4!r