3  f-@s|ddlmZmZddlZddlZddlZddlZddlZddlZddl m Z ddZ Gddde j Z d d Zd d d ZdS))with_statementprint_functionN)refactorc Cs(|j}|j}tj||||ddddS)Nz (original)z (refactored))Zlineterm) splitlinesdifflibZ unified_diff)abfilenamer )/opt/alt/python36/lib64/python3.6/main.py diff_textss  rcs:eZdZd fdd ZddZfddZdd ZZS) StdoutRefactoringToolrc sR||_||_|r(|jtj r(|tj7}||_||_||_tt |j |||dS)N) nobackups show_diffsendswithossep_input_base_dir _output_dir_append_suffixsuperr__init__) selfZfixersoptionsexplicitrrinput_base_dir output_dir append_suffix) __class__r r r$s zStdoutRefactoringTool.__init__cOs*|jj|||f|jj|f||dS)N)errorsappendloggererror)rmsgargskwargsr r r log_errorAszStdoutRefactoringTool.log_errorc !s||}|jrH|j|jr6tjj|j|t|jd}ntd||jf|jrX||j7}||krtjj |}tjj | r|rtj ||j d|||j s4|d}tjj|rytj|Wn.tk r}z|j d|WYdd}~XnXytj||Wn2tk r2}z|j d||WYdd}~XnXtt|j} | |||||j sbtj||||krxtj||dS)Nz5filename %s does not start with the input_base_dir %szWriting converted %s to %s.z.bakzCan't remove backup %szCan't rename %s to %s)r startswithrrpathjoinlen ValueErrorrdirnameisdirmakedirs log_messagerlexistsremoveOSErrorrenamerr write_fileshutilZcopymode) rZnew_textr Zold_textencodingZ orig_filenamerZbackuperrwrite)r r r r6Es@          z StdoutRefactoringTool.write_filecCs|r|jd|n|jd||jrt|||}yX|jdk rp|j&x|D] }t|qJWtjjWdQRXnx|D] }t|qvWWn"tk rt d|fdSXdS)NzNo changes to %sz Refactored %sz+couldn't encode %s's diff for your terminal) r1rrZ output_lockprintsysstdoutflushUnicodeEncodeErrorwarn)roldnewr ZequalZ diff_linesliner r r print_outputls"       z"StdoutRefactoringTool.print_output)rrr)__name__ __module__ __qualname__rr(r6rD __classcell__r r )r r rs  'rcCstd|ftjddS)Nz WARNING: %s)file)r;r<stderr)r%r r r r@sr@c s tjdd}|jddddd|jdd d gd d |jd dddddd|jddd gdd |jddddd|jddddd|jddddd|jd dd!d|jd"d#dd$d|jd%d&dd'd(d |jd)d*dd+d,d-d.|jd/d0dd1d|jd2dd+d,d3d.d'}i}|j|\}}|jr@d4|d5<|js:td6d4|_|jr\|j r\|j d7|j rx|j rx|j d8|j r|j rtd9|j r|jr|j d:|j rt d;xtjD]}t |qW|sdt d?tjd>d@SdA|kr4d4}|jr4t dBtjd>d@S|jrDd4|dC<|jrRtjntj}gtj_tjdD|dEtjdF}ttj} tfdGdH|jD} t} |jrd'} x2|jD](} | dIkrd4} n| jdJ| qW| r| j | n| }n | j | }|j!| }t"j#j$|}|rL|j%t"j& rLt"j#j'| rLt"j#j(|}|jrp|j)t"j&}|j*dK|j|t+t,||t,| |j|j ||j|j dL}|j-s|r|j.nBy|j||j|j/|j0Wn&tj1k rt dMtjd>dSX|j2t3t4|j-S)NNz2to3 [options] file|dir ...)usagez-dz--doctests_only store_truezFix up doctests only)actionhelpz-fz--fixr"z1Each FIX specifies a transformation; default: all)rMdefaultrNz-jz --processesstorerintzRun 2to3 concurrently)rMrOtyperNz-xz--nofixz'Prevent a transformation from being runz-lz --list-fixeszList available transformationsz-pz--print-functionz0Modify the grammar so that print() is a functionz-vz --verbosezMore verbose loggingz --no-diffsz#Don't show diffs of the refactoringz-wz--writezWrite back modified filesz-nz --nobackupsFz&Don't write backups for modified filesz-oz --output-dirstrrzXPut output files in this directory instead of overwriting the input files. Requires -n.)rMrRrOrNz-Wz--write-unchanged-fileszYAlso write files even if no changes were required (useful with --output-dir); implies -w.z --add-suffixzuAppend this string to all output filenames. Requires -n if non-empty. ex: --add-suffix='3' will generate .py3 files.Twrite_unchanged_filesz&--write-unchanged-files/-W implies -w.z%Can't use --output-dir/-o without -n.z"Can't use --add-suffix without -n.z@not writing files and not printing diffs; that's not very usefulzCan't use -n without -wz2Available transformations for the -f/--fix option:rz1At least one file or directory argument required.)rIzUse --help to show usage.-zCan't write to stdin.rz%(name)s: %(message)s)formatlevelz lib2to3.mainc3s|]}d|VqdS)z.fix_Nr ).0fix) fixer_pkgr r szmain..allz.fix_z7Output in %r will mirror the input directory %r layout.)rrrz+Sorry, -j isn't supported on this platform.)5optparseZ OptionParserZ add_option parse_argsrTr:r@rrr$Z add_suffixZno_diffsZ list_fixesr;rZget_all_fix_namesr<rJrverboseloggingDEBUGINFOrootZhandlersZ basicConfigZ getLoggersetZget_fixers_from_packageZnofixrZaddunion differencerr* commonprefixrrr/r.rstripinforsortedr!refactor_stdinZ doctests_onlyZ processesZMultiprocessingUnsupportedZ summarizerQbool)r[r&parserrmflagsrZfixnamerXr#Z avail_fixesZunwanted_fixesrZ all_presentrZZ requestedZ fixer_namesrZrtr )r[r mains                                 rq)N)Z __future__rrr<rrrar7r^rrrZMultiprocessRefactoringToolrr@rqr r r r s  g