o 0iN. @ s~ d dl mZmZ d dlZd dlZd dlZd dlZd dlZd dlZddl m Z dd ZG dd de jZ d d Zd ddZdS ) )with_statementprint_functionN )refactorc C s* | } | }tj| |||ddddS )Nz (original)z(refactored) )Zlineterm) splitlinesdifflibZunified_diff)abfilename r 3/opt/alt/python310/lib64/python3.10/lib2to3/main.py diff_texts s r c s> e Zd Z d fdd Zdd Z fddZdd Z ZS )StdoutRefactoringToolr c sR || _ || _|r|tjs|tj7 }|| _|| _|| _tt | ||| d S N) nobackups show_diffsendswithossep_input_base_dir_output_dir_append_suffixsuperr __init__) selfZfixersoptionsexplicitr 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 )errorsappendloggererror)r msgargskwargsr r r log_errorA s zStdoutRefactoringTool.log_errorc sV |}| j r$|| jrtj| j |t| jd }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 st|| ||krt|| 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 pathjoinlen ValueErrorr dirnameisdirmakedirslog_messager lexistsremoveOSErrorrenamer r write_fileshutilZcopymode) r Znew_textr Zold_textencodingZ orig_filenamer Zbackupwriter! 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_lockprintsysstdoutflushUnicodeEncodeErrorwarn)r oldnewr ZequalZ diff_linesliner r r print_outputl s, ( z"StdoutRefactoringTool.print_output)r r r )__name__ __module____qualname__r r* r8 rE __classcell__r r r! r r s 'r c C s t d| f tjd d S )NzWARNING: %sfile)r<