Your IP : 18.117.101.250
��Yf�- � @ s� d Z 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 Gd d � d e j
� Z d
d � Z d d d
� Z d S)z
Main program for 2to3.
� )�with_statement�print_functionN� )�refactorc C s: | j � } | j � } t j | | | | d d d d �S)z%Return a unified diff of two strings.z
(original)z(refactored)Zlineterm� )�
splitlines�difflibZunified_diff)�a�b�filename� r �1/opt/alt/python35/lib64/python3.5/lib2to3/main.py�
diff_texts s
r c s[ e Z d Z d Z d d d � f d d � Z d d � Z � f d d � Z d d
� Z � S)�StdoutRefactoringToola2
A refactoring tool that can avoid overwriting its input files.
Prints output to stdout.
Output files can optionally be written to a different directory and or
have an extra file suffix appended to their name for use in situations
where you do not want to replace the input files.
r c ss | | _ | | _ | r8 | j t j � r8 | t j 7} | | _ | | _ | | _ t t | � j
| | | � d S)aF
Args:
fixers: A list of fixers to import.
options: A dict with RefactoringTool configuration.
explicit: A list of fixers to run even if they are explicit.
nobackups: If true no backup '.bak' files will be created for those
files that are being refactored.
show_diffs: Should diffs of the refactoring be printed to stdout?
input_base_dir: The base directory for all input files. This class
will strip this path prefix off of filenames before substituting
it with output_dir. Only meaningful if output_dir is supplied.
All files processed by refactor() must start with this path.
output_dir: If supplied, all converted files will be written into
this directory tree instead of input_base_dir.
append_suffix: If supplied, all files output by this tool will have
this appended to their filename. Useful for changing .py to
.py3 for example by passing append_suffix='3'.
N)� nobackups�
show_diffs�endswith�os�sep�_input_base_dir�_output_dir�_append_suffix�superr �__init__) �selfZfixers�options�explicitr r �input_base_dir�
output_dir�
append_suffix)� __class__r r
r $ s
zStdoutRefactoringTool.__init__c O s3 | j j | | | f � | j j | | | � d S)N)�errors�append�logger�error)r �msg�args�kwargsr r r
� log_errorA s zStdoutRefactoringTool.log_errorc
! s� | } | j rh | j | j � rO t j j | j | t | j � d � � } n t d | | j f � � | j r~ | | j 7} | | k r� t j j | � } t j j
| � s� t j | � | j d | | � | j
s�| d } t j j | � r<y t j | � Wn5 t k
r;} z | j d | � WYd d } ~ Xn Xy t j | | � Wn8 t k
r�} z | j d | | � WYd d } ~ Xn Xt t | � j } | | | | | � | j
s�t j | | � | | k r�t j | | � d S)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 �
startswithr r �path�join�len�
ValueErrorr �dirname�isdir�makedirs�log_messager �lexists�remove�OSError�renamer r �
write_file�shutilZcopymode)
r Znew_textr Zold_text�encodingZ
orig_filenamer Zbackup�err�write)r r r
r6 E s@
#& z StdoutRefactoringTool.write_filec C s� | r | j d | � n� | j d | � | j r� t | | | � } yj | j d k r� | j �- x | D] } t | � qg Wt j j � Wd QRXn x | D] } t | � q� WWn'