File: //lib64/python3.9/lib2to3/__pycache__/main.cpython-39.opt-2.pyc
a
    �DOgN.  �                   @   s|   d dl mZmZ d dlZd dlZd dlZd dlZd dlZd dlZddl	m
Z
 dd� ZG dd� de
j�Z
d	d
� Zd
dd�ZdS )�    )�with_statement�print_functionN�   )�refactorc              	   C   s(   | � � } |� � }tj| |||dddd�S )Nz
(original)z(refactored)� )Zlineterm)�
splitlines�difflibZunified_diff)�a�b�filename� r   �$/usr/lib64/python3.9/lib2to3/main.py�
diff_texts   s    �r   c                       s:   e Zd Zd
� fdd�	Zdd� Z� fdd�Zdd	� Z�  ZS )�StdoutRefactoringToolr   c	           	         sP   || _ || _|r&|�tj�s&|tj7 }|| _|| _|| _tt	| ��
|||� 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   s0   | j �|||f� | jj|g|�R i |�� d S r   )�errors�append�logger�error)r   �msg�args�kwargsr   r   r
   �	log_errorA   s    zStdoutRefactoringTool.log_errorc           	         sZ  |}| j rH|�| j�r6tj�| j |t| j�d � �}ntd|| jf ��| jrX|| j7 }||kr�tj�	|�}tj�
|�s�|r�t�|� | �d||� | j
�s|d }tj�|�r�zt�|� W n ty�   | �d|� Y n0 zt�||� W n" t�y   | �d||� Y n0 tt| �j}|||||� | j
�s@t�||� ||k�rVt�||� 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�writer!   r   r
   r8   E   sH    
���
�
z StdoutRefactoringTool.write_filec                 C   s�   |r| � d|� n�| � d|� | jr�t|||�}zd| jd ur�| j�, |D ]}t|� qHtj��  W d   � q�1 st0    Y  n|D ]}t|� q�W n" ty�   t	d|f � Y d S 0 d S )NzNo changes to %sz
Refactored %sz+couldn't encode %s's diff for your terminal)
r3   r   r   Zoutput_lock�print�sys�stdout�flush�UnicodeEncodeError�warn)r   �old�newr   ZequalZ
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 tjd� d S )NzWARNING: %s��file)r=   r>