File: //opt/alt/python35/lib64/python3.5/lib2to3/__pycache__/main.cpython-35.opt-2.pyc
��Yf�-  �               @   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 Gd d �  d e
 j � Z
 d	 d
 �  Z d d d � Z d S)
�    )�with_statement�print_functionN�   )�refactorc          	   C   s:   |  j  �  }  | j  �  } t j |  | | | d d d d �S)Nz
(original)z(refactored)Zlineterm� )�
splitlines�difflibZunified_diff)�a�b�filename� r   �)/opt/alt/python35/lib64/python3.5/main.py�
diff_texts   s
    	r   c                   sU   e  Z d  Z d d d �  f d d � Z d d �  Z �  f d d �  Z d d	 �  Z �  S)
�StdoutRefactoringToolr   c	       	         ss   | |  _  | |  _ | r8 | j t j � r8 | t j 7} | |  _ | |  _ | |  _ t t	 |  � j
 | | | � d  S)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�shutil�copymode)
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'