???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................U
    e5d-                     @   s|   d dl mZmZ d dlZd dlZd dlZd dlZd dlZd dlZddl	m
Z
 dd ZG dd de
jZd	d
 ZdddZdS )    )with_statementprint_functionN   )refactorc              	   C   s(   |   } |  }tj| |||ddddS )Nz
(original)z(refactored) )Zlineterm)
splitlinesdifflibZunified_diff)abfilename r   $/usr/lib64/python3.8/lib2to3/main.py
diff_texts   s     r   c                       s:   e Zd Zd
 fdd	Zdd Z fddZdd	 Z  ZS )StdoutRefactoringToolr   c	           	         sP   || _ || _|r&|tjs&|tj7 }|| _|| _|| _tt	| 
||| d S N)	nobackups
show_diffsendswithossep_input_base_dir_output_dir_append_suffixsuperr   __init__)	selfZfixersoptionsexplicitr   r   input_base_dir
output_dirappend_suffix	__class__r   r   r   $   s    
zStdoutRefactoringTool.__init__c                 O   s*   | j |||f | jj|f|| d S r   )errorsappendloggererror)r   msgargskwargsr   r   r   	log_errorA   s    zStdoutRefactoringTool.log_errorc           
   
      sz  |}| j rH|| jr6tj| j |t| jd  }ntd|| jf | jrX|| j7 }||krtj	|}tj
|s|rt| | d|| | js2|d }tj|rzt| W n. tk
r } z| d| W 5 d }~X Y nX zt|| W n2 tk
r0 } z| d|| W 5 d }~X Y nX tt| j}	|	|||| | js`t|| ||krvt|| d S )Nz5filename %s does not start with the input_base_dir %szWriting converted %s to %s.z.bakzCan't remove backup %szCan't rename %s to %s)r   
startswithr   r   pathjoinlen
ValueErrorr   dirnameisdirmakedirslog_messager   lexistsremoveOSErrorrenamer   r   
write_fileshutilZcopymode)
r   Znew_textr   Zold_textencodingZorig_filenamer   Zbackuperrwriter!   r   r   r8   E   sJ    
 

 
z StdoutRefactoringTool.write_filec              	   C   s   |r|  d| n|  d| | jrt|||}zP| jd k	rl| j" |D ]}t| qHtj  W 5 Q R X n|D ]}t| qpW n$ tk
r   t	d|f  Y d S X d S )NzNo changes to %szRefactored %sz+couldn't encode %s's diff for your terminal)
r3   r   r   Zoutput_lockprintsysstdoutflushUnicodeEncodeErrorwarn)r   oldnewr   ZequalZ
diff_linesliner   r   r   print_outputl   s$    

z"StdoutRefactoringTool.print_output)r   r   r   )__name__
__module____qualname__r   r*   r8   rF   __classcell__r   r   r!   r   r      s        'r   c                 C   s   t d| f tjd d S )NzWARNING: %sfile)r=   r>   stderr)r'   r   r   r   rB      s    rB   c              
      s  t jdd}|jddddd |jdd	d
g dd |jddddddd |jddd
g dd |jddddd |jddddd |jddddd |jd dd!d |jd"d#dd$d |jd%d&dd'd(d |jd)d*dd+d,d-d. |jd/d0dd1d |jd2dd+d,d3d. d'}i }||\}}|jr@d4|d5< |js:td6 d4|_|jrZ|jsZ|	d7 |j
rt|jst|	d8 |js|jrtd9 |js|jr|	d: |jrtd; t D ]}t| q|sd<S |s td=tjd> td?tjd> d@S dA|kr(d4}|jr(tdBtjd> d@S |jr8d4|dC< |jrFtjntj}tjdD|dE tdF}tt }	t fdGdH|jD }
t }|jrd'}|jD ](}|dIkrd4}n| dJ |  q|r|	|n|}n
|	|}||
}t j!"|}|r0|#t j$s0t j!%|s0t j!&|}|jrT|'t j$}|(dK|j| t)t*||t*||j|j ||j|j
dL}|j+s|r|,  nDz|||j|j-|j. W n( tj/k
r   tdMtjd> Y dS X |0  t1t2|j+S )NNz2to3 [options] file|dir ...)Zusagez-dz--doctests_only
store_truezFix up doctests only)actionhelpz-fz--fixr$   z1Each FIX specifies a transformation; default: all)rO   defaultrP   z-jz--processesZstorer   intzRun 2to3 concurrently)rO   rQ   typerP   z-xz--nofixz'Prevent a transformation from being runz-lz--list-fixeszList available transformationsz-pz--print-functionz0Modify the grammar so that print() is a functionz-vz	--verbosezMore verbose loggingz
--no-diffsz#Don't show diffs of the refactoringz-wz--writezWrite back modified filesz-nz--nobackupsFz&Don't write backups for modified filesz-oz--output-dirstrr   zXPut output files in this directory instead of overwriting the input files.  Requires -n.)rO   rS   rQ   rP   z-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.Twrite_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 usefulzCan't use -n without -wz2Available transformations for the -f/--fix option:r   z1At least one file or directory argument required.rK   zUse --help to show usage.   -zCan't write to stdin.r   z%(name)s: %(message)s)formatlevelzlib2to3.mainc                 3   s   | ]} d  | V  qdS ).fix_Nr   ).0fix	fixer_pkgr   r   	<genexpr>   s     zmain.<locals>.<genexpr>allrZ   z7Output in %r will mirror the input directory %r layout.)r   r   r    z+Sorry, -j isn't supported on this platform.)3optparseZOptionParserZ
add_option
parse_argsrU   r<   rB   r   r   r&   Z
add_suffixZno_diffsZ
list_fixesr=   r   Zget_all_fix_namesr>   rM   r   verboseloggingDEBUGINFOZbasicConfigZ	getLoggersetZget_fixers_from_packageZnofixr\   addunion
differencer   r,   commonprefixr   r   r1   r0   rstripinfor   sortedr#   refactor_stdinZdoctests_onlyZ	processesZMultiprocessingUnsupportedZ	summarizerR   bool)r^   r(   parserro   flagsr   ZfixnamerY   r%   Zavail_fixesZunwanted_fixesr   Zall_presentr\   Z	requestedZfixer_namesr   Zrtr   r]   r   main   s    
 



 










    
rs   )N)Z
__future__r   r   r>   r   r   rd   r9   ra   r   r   r   ZMultiprocessRefactoringToolr   rB   rs   r   r   r   r   <module>   s   	g