Edit File: main.cpython-36.opt-1.pyc
3 � \�-������������������@���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(���|�j���}�|j���}tj|�|||dddd�S�)z%Return a unified diff of two strings.z (original)z(refactored)��)Zlineterm)� splitlines�difflibZunified_diff)�a�b�filename��r����$/usr/lib64/python3.6/lib2to3/main.py� diff_texts���s ����r���c�������������������s>���e�Zd�ZdZd��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 ������� ���������sR���||�_�||�_|r(|jtj��r(|tj7�}||�_||�_||�_tt |��j |||��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���s*���|�j�j|||f��|�jj|f|�|��d�S�)N)�errors�append�logger�error)r����msg�args�kwargsr���r���r ���� log_errorA���s����zStdoutRefactoringTool.log_errorc������� ���!������s|��|}|�j�rH|j|�j�r6tjj|�j�|t|�j�d����}ntd||�jf���|�jrX||�j7�}||kr�tjj |�}tjj |��r�|r�tj|��|�jd||��|�j �s4|d�}tjj|�r�ytj|��W�n.�tk r��}�z|�jd|��W�Y�d�d�}~X�nX�ytj||��W�n2�tk �r2�}�z|�jd||��W�Y�d�d�}~X�nX�tt|��j} | ||||��|�j �sbtj||��||k�rxtj||��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|��|�jr�t|||�}yX|�jd�k rp|�j�&�x|D�]}t|��qJW�tjj���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_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(���r6���rD���� __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 ���r@�������s����r@���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|�\}}|j�r@d4|d5<�|j�s:td6��d4|_|j�r\|j��r\|j d7��|j �rx|j��rx|j d8��|j��r�|j�r�td9��|j��r�|j�r�|j d:��|j�r�t d;��xtj���D�]}t |���q�W�|�s�d<S�|�st d=tjd>��t d?tjd>��d@S�dA|k�r4d4}|j�r4t dBtjd>��d@S�|j�rDd4|dC<�|j�rRtjntj}tjdD|dE��tjdF�}ttj����} t��fdGdH�|jD���} t��}|j�r�d'}x2|jD�](} | dIk�r�d4}n|j��dJ�| ����q�W�|�r�| j|�n|}n | j|�}|j| �}t j!j"|�}|�rD|j#t j$���rDt j!j%|���rDt j!j&|�}|j�rh|j't j$�}|j(dK|j|��t)t*|�|t*|�|j|j�||j|j dL�}|j+�s�|�r�|j,���nBy|j||j|j-|j.��W�n&�tj/k �r����t dMtjd>��dS�X�|j0���t1t2|j+��S�)Nz�Main program. Args: fixer_pkg: the name of a package where the fixers are located. args: optional; a list of command line arguments. If omitted, sys.argv[1:] is used. Returns a suggested exit status (0, 1, 2). z2to3 [options] file|dir ...)Zusagez-dz--doctests_only� store_truezFix up doctests only)�action�helpz-fz--fixr"���z1Each FIX specifies a transformation; default: all)rM����defaultrN���z-jz--processesZstorer����intzRun 2to3 concurrently)rM���rO����typerN���z-xz--nofixz'Prevent a transformation from being runz-lz--list-fixeszList available transformationsz-pz--print-functionz0Modify the grammar so that print() is a functionz-vz --verbosezMore verbose loggingz --no-diffsz#Don't show diffs of the refactoringz-wz--writezWrite back modified filesz-nz--nobackupsFz&Don't write backups for modified filesz-oz--output-dir�strr���zXPut output files in this directory instead of overwriting the input files. Requires -n.)rM���rQ���rO���rN���z-Wz--write-unchanged-fileszYAlso write files even if no changes were required (useful with --output-dir); implies -w.z--add-suffixzuAppend this string to all output filenames. Requires -n if non-empty. ex: --add-suffix='3' will generate .py3 files.T�write_unchanged_filesz&--write-unchanged-files/-W implies -w.z%Can't use --output-dir/-o without -n.z"Can't use --add-suffix without -n.z@not writing files and not printing diffs; that's not very usefulzCan't use -n without -wz2Available transformations for the -f/--fix option:r���z1At least one file or directory argument required.)rJ���zUse --help to show usage.�����-zCan't write to stdin.r���z%(name)s: %(message)s)�format�levelzlib2to3.mainc�������������3���s���|�]}��d��|�V��qdS�)z.fix_Nr���)�.0�fix)� fixer_pkgr���r ���� <genexpr>����s����zmain.<locals>.<genexpr>�allz.fix_z7Output in %r will mirror the input directory %r layout.)r���r���r���z+Sorry, -j isn't supported on this platform.)3�optparseZOptionParserZ add_option� parse_argsrS���r:���r@���r���r���r$���Z add_suffixZno_diffsZ list_fixesr;���r���Zget_all_fix_namesr<���rK���r����verbose�logging�DEBUG�INFOZbasicConfigZ getLogger�setZget_fixers_from_packageZnofixrY����add�union� differencer���r*����commonprefixr���r���r/���r.����rstrip�infor����sortedr!����refactor_stdinZ doctests_onlyZ processesZMultiprocessingUnsupportedZ summarizerP����bool)rZ���r&����parserrk����flagsr���ZfixnamerW���r#���Zavail_fixesZunwanted_fixesr���Zall_presentrY���Z requestedZfixer_namesr���Zrtr���)rZ���r ����main����s����� ro���)N)rH���Z __future__r���r���r<���r���r���r`���r7���r]���r���r���r���ZMultiprocessRefactoringToolr���r@���ro���r���r���r���r ����<module>���s��� g