Your IP : 3.135.249.119
o
6��fN. � @ s� d Z ddlmZmZ ddlZddlZddlZddlZddlZddl Z ddl
mZ dd� ZG dd � d ej
�Zd
d� Zddd
�ZdS )z
Main program for 2to3.
� )�with_statement�print_functionN� )�refactorc C s( | � � } |� � }tj| |||dddd�S )z%Return a unified diff of two strings.z
(original)z(refactored)� )Zlineterm)�
splitlines�difflibZunified_diff)�a�b�filename� r �3/opt/alt/python310/lib64/python3.10/lib2to3/main.py�
diff_texts s �r c s@ e Zd ZdZ d� fdd� Zdd� Z� fdd�Zd d
� Z� ZS )�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 sP || _ || _|r|�tj�s|tj7 }|| _|| _|| _tt | ��
|||� dS )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 s0 | j �|||f� | jj|g|�R i |�� d S �N)�errors�append�logger�error)r �msg�args�kwargsr r r
� log_errorA s zStdoutRefactoringTool.log_errorc sV |}| j r$|�| j�rtj�| j |t| j�d � �}n td|| jf ��| jr,|| j7 }||krJtj� |�}tj�
|�sC|rCt�|� | �d||� | j
s�|d }tj�|�rnzt�|� W n tym | �d|� Y nw zt�||� W n ty� | �d||� Y nw tt| �j}|||||� | j
s�t�||� ||kr�t�||� d S 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�writer r r
r8 E sN
���
����z StdoutRefactoringTool.write_filec C s� |r
| � d|� d S | � d|� | jrct|||�}z8| jd urF| j� |D ]}t|� q%tj�� W d � n1 s;w Y W d S W d S |D ]}t|� qHW d S tyb t d|f � Y d S w 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__�__doc__r r* r8 rE �
__classcell__r r r r
r s
�'r c C s t d| f tjd� d S )NzWARNING: %s��file)r<