U e5d…- ã @ 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.8/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 s* | j |||f¡ | jj|f|ž|Ž 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 �s2|d }tj |¡rîzt |¡ W n. tk rì } z| d|¡ W 5 d }~X Y nX zt ||¡ W n2 tk �r0 } z| d||¡ W 5 d }~X Y nX 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ÚshutilZcopymode) r Znew_textr Zold_textÚencodingZ orig_filenamer ZbackupÚerrÚwriter! r r r8 E sJ ÿ ÿÿ ÿ z StdoutRefactoringTool.write_filec C sª |r| d|¡ n”| d|¡ | jr¦t|||ƒ}zP| jd k rl| j�" |D ]}t|ƒ qHtj ¡ W 5 Q R X n|D ]}t|ƒ qpW n$ tk r¤ t d|f ƒ Y d S X 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> Ústderr)r' r r r rB � s rB c sð t jdd�}|jddddd� |jdd d g dd� |jd dddddd� |jddd g dd� |jddddd� |jddddd� |jddddd� |jd dd!d� |jd"d#dd$d� |jd%d&dd'd(d� |jd)d*dd+d,d-d.� |jd/d0dd1d� |jd2dd+d,d3d.� d'}i }| |¡\}}|j�r@d4|d5<