B 0) @ 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 1/opt/alt/python37/lib64/python3.7/lib2to3/main.py diff_texts s r c s: e Zd Zd fdd Zdd Z fddZdd Z ZS )StdoutRefactoringToolr c sP || _ || _|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 s* | j |||f | jj|f|| d S )N)errorsappendloggererror)r msgargskwargsr r r log_errorA s zStdoutRefactoringTool.log_errorc sz |}| j rH|| jr6tj| j |t| jd }ntd|| jf | jrX|| j7 }||krtj |}tj |s|rt| | d|| | j s2|d }tj|ryt| W n. tk r } z| d| W d d }~X Y nX yt|| W n2 tk r0 } z| d|| W d d }~X Y nX tt| j} | |||| | j s`t|| ||krvt|| 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 Zbackuperrwrite)r r r r6 E s@ z StdoutRefactoringTool.write_filec C s |r| d| n| d| | jrt|||}yX| jd k rp| j& x|D ]}t| qJW tj W d Q R X nx|D ]}t| qvW W n" tk r t d|f d S X d S )NzNo changes to %sz Refactored %sz+couldn't encode %s's diff for your terminal) r1 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( r6 rD __classcell__r r )r r r s 'r c C s t d| f tjd d S )NzWARNING: %s)file)r; r<