
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
U
    ¡ê,a…-  ã                   @   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   ú1/opt/alt/python38/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r”tj 	|¡}tj 
|¡s†|r†t |¡ |  d||¡ | j�s2|d }tj |¡rîz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r¦t|||ƒ}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�rŒtd9ƒ |j�s¦|j�r¦| 	d:¡ |j�rÚtd;ƒ t ˆ ¡D ]}t|ƒ �qÀ|�sÚd<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�râd'}|jD ](}|dIk�r¶d4}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