관리-도구
편집 파일: main.cpython-34.pyc
� i f�- � @ s� d Z d d l m Z m Z d d l Z d d l Z d d l Z d d l Z d d l Z d d l Z d d l m Z d d � Z Gd d � d e j � Z d d � Z d d d � Z d S)z Main program for 2to3. � )�with_statement�print_functionN� )�refactorc C s: | j � } | j � } t j | | | | d d d d �S)z%Return a unified diff of two strings.z (original)z(refactored)Zlineterm� )� splitlines�difflibZunified_diff)�a�b�filename� r �1/opt/alt/python34/lib64/python3.4/lib2to3/main.py� diff_texts s r c s[ e Z d Z d Z d d d � f d d � Z d d � Z � f d d � Z d d � Z � S)�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 sv | | _ | | _ | r; | j t j � r; | t j 7} n | | _ | | _ | | _ t t | � j | | | � d S)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 s3 | j j | | | f � | j j | | | � d S)N)�errors�append�logger�error)r �msg�args�kwargsr r r � log_errorA s zStdoutRefactoringTool.log_errorc ! s | } | j rk | j | j � rO t j j | j | t | j � d � � } qk t d | | j f � � n | j r� | | j 7} n | | k r� t j j | � } t j j | � s� t j | � n | j d | | � n | j s�| d } t j j | � rKy t j | � WqKt k rG} z | j d | � WYd d } ~ XqKXn y t j | | � Wq�t k r�} z | j d | | � WYd d } ~ Xq�Xn t t | � j } | | | | | � | j s�t j | | � n | | k r�t j | | � n 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�write)r r r r6 E s@ &) z StdoutRefactoringTool.write_filec C s� | r | j d | � n� | j d | � | j r� t | | | � } yi | j d k r� | j �- x | D] } t | � qg Wt j j � Wd QXn x | D] } t | � q� WWq� t k r� t d | f � d SYq� Xn d S)NzNo changes to %sz Refactored %sz+couldn't encode %s's diff for your terminal) r1 r r Zoutput_lock�print�sys�stdout�flush�UnicodeEncodeError�warn)r �old�newr ZequalZ diff_lines�liner r r �print_outputl s"