gsk dZddlZddlZddlZddlZddlZddlZddlZddlm Z ddl m Z m Z m Z ddlmZddlmZmZddlmZdd ZGd d eZd Zd ZdZdZdZGddeZGddeZGddeZ GddeZ!y)z#Guido van Rossum N)chain)drivertokenizetoken) find_root)pytreepygram) btm_matcherc t|ggdg}g}tj|jD]0\}}}|j ds|r|dd}|j |2|S)N*fix_) __import__pkgutil iter_modules__path__ startswithappend) fixer_pkg remove_prefixpkg fix_namesfindernameispkgs 7/opt/alt/python312/lib64/python3.12/lib2to3/refactor.pyget_all_fix_namesrsmO YB .CI&33CLLAe ??6 "ABx   T " B c eZdZy) _EveryNodeN__name__ __module__ __qualname__rrr!r!+rr!c t|tjtjfr|jt |jhSt|tj r'|jrt|jSt t|tjr>t}|jD]#}|D]}|jt|%|Std|z)Nz$Oh no! I don't understand pattern %s) isinstancer NodePattern LeafPatterntyper!NegatedPatterncontent_get_head_typesWildcardPatternsetupdate Exception)patrpxs rr/r//s9#**F,>,>?@ 88  z#v,,- ;;"3;;/ /#v--. EA+, :SA BBrcZ tjt}g}|D]|}|jr2 t |j}|D]}||j |A|j||jj |l|j |~ttjjjtjjD]}||j|t|S#t $r|j |Y wxYwN) collections defaultdictlistpatternr/rr! _accept_typerr python_grammar symbol2numbervaluestokensextenddict) fixer_list head_nodeseveryfixerheads node_types r_get_headnode_dictrKKs/((.J E == 8' 6"'Iy)007"'!!-5--.55e< U#600>>EEG!00779 9$$U+9   $ U# $sD  D*)D*cN t|dDcgc] }|dz|z c}Scc}w)NF.)r)pkg_namefix_names rget_fixers_from_packagerPdsB.h> @> sNX %> @@ @s"c|Sr9r&)objs r _identityrSks Jrc|d}tjtj|jfd}t t jtjt jh}t} |\}}||vr|t jk(r|rnd}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(rRnnt |S#t$r Yt |SwxYw) NFc.t}|d|dfS)Nrr)next)tokgens radvancez(_detect_future_features..advancers3i1vs1v~rTfrom __future__import(,)rgenerate_tokensioStringIOreadline frozensetrNEWLINENLCOMMENTr1STRINGNAMEOPadd StopIteration)sourcehave_docstringrYignorefeaturestpvaluerXs @r_detect_future_featuresrrosN  " "2;;v#6#?#? @C x{{EMMB CFuH  IBV|u||#!!%uzz!evo#I E#u '<#I E#u'8#I E>esl ' IBEJJ&LL' ' IBUXX~# ' IB EJJ&38 X    X  s>DF%F%% F;:F;c eZdZy) FixerErrorNr"r&rrrtrts&rrtceZdZddddZdZdZddZdZdZd Z d Z d Z dd Z dd Z dZddZdZd dZdZdZ d!dZd"dZdZdZdZdZdZdZdZdZy)#RefactoringToolF)print_function exec_functionwrite_unchanged_filesFixrNc ||_|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||j0vsd|j<jE|tG|j:|_$tG|j<|_%y) NrwprintrxexecryrvF)convertlogger)&fixersexplicit_default_optionscopyoptionsr2r r?grammarkeywordsgetryerrorslogging getLoggerr fixer_logwroterDriverr r~ get_fixers pre_order post_orderfilesbm BottomMatcherBM bmi_pre_orderbmi_post_orderr BM_compatible add_fixerrrKbmi_pre_order_headsbmi_post_order_heads)self fixer_namesrrrHs r__init__zRefactoringTool.__init__s "  B ,,113   LL   (,,113 <<( ) %%g. \\/ * %%f- &*\\%5%56M%N" ''(9:  mmDLL,2NN+/;;8 +///*;' ""$ 4??DNN;E""!!%($..(""))%0$//)##**51<$6d6H6H#I $6t7J7J$K!rc  g}g}|jD]w}t|iidg}|jddd}|j|jr|t |jd}|j d}|jdj|Dcgc]}|jc}z} t||} | |j|j} | jr0|jdur"||jvr|j!d | |j#d || j$d k(r|j'| @| j$d k(r|j'| btd | j$zt)j*d} |j-| |j-| ||fScc}w#t$rtd|d|dwxYw)Nr rMr_z Can't find TzSkipping optional fixer: %szAdding transformation: %sprepostzIllegal fixer order: %r run_orderkey)rrrsplitr FILE_PREFIXlensplit CLASS_PREFIXjointitlegetattrAttributeErrorrtrrr log_message log_debugorderroperator attrgettersort) rpre_order_fixerspost_order_fixers fix_mod_pathmodrOpartsr6 class_name fix_classrHkey_funcs rrzRefactoringTool.get_fixerss  KKL\2rC59C#**3226H""4#3#34#C(8(8$9$:;NN3'E**RWW5OAaggi5O-PPJ X#C4 dllDNN;E~~$--t";  5  !>I NN6 A{{e# ''.&!((/ !:U[[!HII/(2&&{3(+8, "344-6P" X x!LMSWW XsG 9 GG+c r9r&)rmsgargskwdss r log_errorzRefactoringTool.log_errors* rcJ |r||z}|jj|yr9)rinforrrs rrzRefactoringTool.log_messages#$ *C rcH|r||z}|jj|yr9)rdebugrs rrzRefactoringTool.log_debug s *C #rc yr9r&)rold_textnew_textfilenameequals r print_outputzRefactoringTool.print_outputs   rc |D]H}tjj|r|j|||6|j |||Jyr9)ospathisdir refactor_dir refactor_file)ritemswrite doctests_only dir_or_files rrefactorzRefactoringTool.refactorsC7 Kww}}[)!!+umD"";}E !rc tjdz}tj|D]\}}}|jd||j |j |D]m}|j drtj j|d|k(s;tj j||} |j| ||o|D cgc]} | j dr| c} |ddycc} w)NpyzDescending into %srMr) rextsepwalkrrrrsplitextrr) rdir_namerrpy_extdirpathdirnames filenamesrfullnamedns rrzRefactoringTool.refactor_dir s T!,.GGH,= (GXy NN/ 9 MMO NN !,GG$$T*1-7!ww||GT:H&&x F " )1K" c8J2KHQK->Ls C=0C=c t|d} tj|j d}|j tj|d|d5}|j|fcdddS#t$r}|jd||Yd}~yd}~wwxYw#|j wxYw#1swYyxYw)NrbzCan't open %s: %sNNrr5rencodingnewline) openOSErrorrrdetect_encodingrbcloser`read)rrferrrs r_read_python_sourcez#RefactoringTool._read_python_source4s  Xt$A // ;A>H GGI WWXsXr Ba668X%C B  NN.# >  GGI B Bs. A7"B B57 BBB B25B>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)rrzNo changes in %s)rrrefactor_docstringryprocessed_filerefactor_string was_changedstr)rrrrinputroutputtrees rrzRefactoringTool.refactor_fileDs228<x =     NN7 B,,UH=F))Vu_##FHeUHM98D''x8D))dt7G7G##CIcrNH*/($D18 "&,,DKK    #',,DKK s)B C+(C&C.&C++C..D ctjj}|rZ|jd|j |d}|j s||k7r|j |d|y|jdy|j|d}|j s|r)|jr|j t|d|y|jdy)NzRefactoring doctests in stdinzzNo doctest changes in stdinzNo changes in stdin) sysstdinrrrryrrrr)rrrrrs rrefactor_stdinzRefactoringTool.refactor_stdinvs    NN: ;,,UI>F))Vu_##FIu=<=''y9D))dt7G7G##CIy%@45rc t|j|jD]}|j|||j |j |j|j |j |j|jj|j}t|jr|jjD]}||vs ||s||jtjj d|j"r-||jtjj$t'||D]}|||vr||j)| t+||j.r||j.vrF|j1|}|sZ|j3||}|o|j5||jD]0}|j.sg|_|j.j7|2|jj|j}|D]"} | |vrg|| <|| j9|| $t|jrt|j|jD]}|j;|||j<S#t,$rYwxYw)NT)rreverser)rrr start_tree traverse_byrrrrunleavesanyrArrr Basedepthkeep_line_order get_linenor<remover ValueErrorfixers_appliedmatch transformreplacerrC finish_treer) rrrrH match_setnoderesultsnew new_matchesfxrs rrzRefactoringTool.refactor_trees{ 4>>4??;E   T4 (< 114>>3CD 22DOO4EFGGKK . )""$%I%)E*:e$))fkk.?.?)N,,"%(--&++2H2H-I $Yu%5 69U#33%e,33D9%%dO  ..5D+>>@(;$($7$7$>$>u$E -=/3ggkk#**,.G +6C+.)+;79 #$-cN$9$9+c:J$K ,7A!7()""$%b4>>4??;E   dD )<E *%%%s K!! K.-K.c |sy|D]R}||jD]>}|j|}|s|j||}|,|j||}@Tyr9)r,rrr)rr traversalrrHrrs rr zRefactoringTool.traverse_bysc  D *++d+//$8C S)" +rc4 |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)rrrrrry write_file)rrrrrrrs rrzRefactoringTool.processed_files  (#  //9!  NN-x 8--  OOHh( C NN6 Arcb tj|d|d}|5 |j |ddd|j d|d|_y#t$r}|jd||Yd}~yd}~wwxYw#t$r}|jd||Yd}~ld}~wwxYw#1swYuxYw)NwrrzCan't create %s: %szCan't write %s: %szWrote changes to %sT)r`rrrrrr)rrrrrfprs rr#zRefactoringTool.write_files  32FB  D" ,h7   NN0(C @   D3XsCC DRsEAB%A< A9A44A9< B"BB%B""B%%B.z>>> z... c  g}d}d}d}d}|jdD] }|dz }|jj|jrK|#|j |j |||||}|g}|j |j} |d| }}|S|j||jzs#|||jjzdzk(r|j||#|j |j ||||d}d}|j||#|j |j ||||dj|S)NrTkeependsrrr) splitlineslstriprPS1rCrefactor_doctestfindPS2rstriprr) rrrresultblock block_linenoindentlinenolineis rrz"RefactoringTool.refactor_docstringsl  $$d$3D aKF{{}''1$MM$"7"7|8>#JK% IIdhh'bq$??6DHH#456DHHOO$55<< T"$MM$"7"7|8>#JK d#)4*   MM$//|06B Cwwvrc |j|||}|j||rt|jd}|d|dz ||dz d}} |djds |dxxdz cc<||jz|j!dzg}|r#||Dcgc]}||j"z|zc}z }|S#t$r}|jjtj r(|D]#}|j d|jd%|jd|||jj||cYd}~Sd}~wwxYwcc}w) Nz Source: %srz+Can't parse docstring in %s line %s: %s: %sTr(rrr) parse_blockr3r isEnabledForrDEBUGrr0rrr#rrr*endswithr,popr/) rr2r5r4rrrr6rclippeds rr-z RefactoringTool.refactor_doctestDsH  ##E66:D   dH -d)&&&5Cyq>3vaxy>SGr7##D)B4dhh&34EsCst&488+d2sCC # {{'' 6!DNN<T1BC" NNH#VS]]-C-CS JL   Ds$B=E= E A;EE E cX|jrd}nd}|js|jd|n4|jd||jD]}|j||jr3|jd|jD]}|j||jr{t |jdk(r|jdn%|jdt |j|jD]\}}}|j|g|i|yy) Nwerez need to bezNo files %s modified.zFiles that %s modified:z$Warnings/messages while refactoring:rzThere was 1 error:zThere were %d errors:)rrrrrr)rr@filemessagerrrs r summarizezRefactoringTool.summarizeas ::DDzz   4d ;   6 =   &# >>   C D>>  )* ;;4;;1$  !56  !8#dkk:JK#';;T4   4t4t4$/ rc~ |jj|j|||}t|_|Sr9)r parse_tokens wrap_toksrcr)rr2r5r4rs rr9zRefactoringTool.parse_blockxs9 {{''uff(MN({ rc#K tj|j||j}|D]+\}}\}}\} } } ||dz z }| |dz z } ||||f| | f| f-yw)Nr)rr_ gen_lines__next__) rr2r5r4rBr,rqline0col0line1col1 line_texts rrFzRefactoringTool.wrap_tokssI))$..*G*P*PQDJ @D%% y VaZ E VaZ E t}udmYF FEKsA"A$c#K ||jz}||jz}|}|D]R}|j|r|t|dn,||j dzk(rdnt d|d||}T dw)Nrzline=z , prefix=r)r,r/rrr0AssertionError)rr2r4prefix1prefix2prefixr6s rrHzRefactoringTool.gen_liness 488#488#Dv&3v;<((4// $T6%JKKFHsA?Br)FF)F)NFNr9)r#r$r%rrrrrrrrrrrrrrrrr rr#r,r/rr-rCr9rFrHr&rrrvrvs+0).279LK3Ln&5P   FL(& =.66 M ^#.GL $B** C C)V:5. Grrvc eZdZy)MultiprocessingUnsupportedNr"r&rrrUrUr'rrUcBeZdZfdZ dfd ZfdZfdZxZS)MultiprocessRefactoringToolcHtt| |i|d|_d|_yr9)superrWrqueue output_lockrrkwargsrs rrz$MultiprocessRefactoringTool.__init__s' )494J6J rc|dk(rtt| |||S ddl}|j td|j|_|j|_ t|Dcgc]}|j|j }} |D]}|jtt| ||||j jt|D]}|j j!d|D]#}|j#s|j%d|_y#t$rt wxYwcc}w#|j jt|D]}|j j!d|D]#}|j#s|j%d|_wxYw)Nrrz already doing multiple processes)target)rYrWrmultiprocessing ImportErrorrUrZ RuntimeError JoinableQueueLockr[rangeProcess_childstartrputis_alive) rrrr num_processesr`r7 processesr6rs rrz$MultiprocessRefactoringTool.refactors A 4dDum- - - " :: !AB B$224 *//1#M242%,,DKK,@2 4   -t =eU>K M JJOO =) t$*::<FFHDJ) -, , - 4 JJOO =) t$*::<FFHDJs$D6/#E ,E6EAG*Gc|jj}|Q|\}} tt||i||jj |jj}|Pyy#|jj wxYwr9)rZrrYrWr task_done)rtaskrr]rs rrgz"MultiprocessRefactoringTool._childszz~~LD& '14F%#% $$&::>>#D  $$&s A00B c~|j|jj||fytt||i|Sr9)rZrirYrWrr\s rrz)MultiprocessRefactoringTool.refactor_filesA :: ! JJNND&> *4dI!! !r)FFr)r#r$r%rrrgr __classcell__)rs@rrWrWs$ :? : $!!rrW)T)" __author__r`rrrrrr: itertoolsrpgen2rrr fixer_utilrrr r r rrr3r!r/rKrPrSrrrtobjectrvrUrWr&rrrws3   +*!   C82@%P''FfFR  4!/4!r