a XC?hN.�@s|ddlmZmZddlZddlZddlZddlZddlZddlZddl m Z dd�Z Gdd�de j �Z d d �Zd d d �ZdS)�)�with_statement�print_functionN�)�refactorc Cs(|��}|��}tj||||dddd�S)Nz (original)z (refactored)�)Zlineterm)� splitlines�difflibZ unified_diff)�a�b�filename�r �1/opt/alt/python39/lib64/python3.9/lib2to3/main.py� diff_textss  �rcs:eZdZd �fdd� Zdd�Z�fdd�Zdd �Z�ZS) �StdoutRefactoringToolrc sP||_||_|r&|�tj�s&|tj7}||_||_||_tt |�� |||�dS�N) � nobackups� show_diffs�endswith�os�sep�_input_base_dir� _output_dir�_append_suffix�superr�__init__) �selfZfixers�options�explicitrr�input_base_dir� output_dir� append_suffix�� __class__r r r$s zStdoutRefactoringTool.__init__cOs0|j�|||f�|jj|g|�Ri|��dSr)�errors�append�logger�error)r�msg�args�kwargsr r r � log_errorAszStdoutRefactoringTool.log_errorc sZ|}|jrH|�|j�r6tj�|j|t|j�d��}ntd||jf��|jrX||j7}||kr�tj� |�}tj� |�s�|r�t� |�|� d||�|j �s|d}tj�|�r�zt�|�Wnty�|� d|�Yn0zt�||�Wn"t�y|� d||�Yn0tt|�j}|||||�|j �s@t�||�||k�rVt�||�dS)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� startswithrr�path�join�len� ValueErrorr�dirname�isdir�makedirs� log_messager�lexists�remove�OSError�renamerr� write_file�shutilZcopymode) rZnew_textr Zold_text�encodingZ orig_filenamerZbackup�writer!r r r8EsH  ���   �     z StdoutRefactoringTool.write_filecCs�|r|�d|�n�|�d|�|jr�t|||�}zd|jdur�|j�,|D] }t|�qHtj��Wd�q�1st0Yn|D] }t|�q�Wn"ty�t d|f�YdS0dS)NzNo changes to %sz Refactored %sz+couldn't encode %s's diff for your terminal) r3rrZ output_lock�print�sys�stdout�flush�UnicodeEncodeError�warn)r�old�newr ZequalZ diff_lines�liner r r � print_outputls$    * �z"StdoutRefactoringTool.print_output)rrr)�__name__� __module__� __qualname__rr*r8rE� __classcell__r r r!r rs  � 'rcCstd|ftjd�dS)Nz WARNING: %s��file)r<r=�stderr)r'r r r rA�srAc stjdd�}|jddddd�|jdd d gd d �|jd dddddd�|jddd gdd �|jddddd�|jddddd�|jddddd�|jd d!dd"d�|jd#dd$d�|jd%d&dd'd�|jd(d)dd*d+d �|jd,d-dd.d/d0d1�|jd2d3dd4d�|jd5dd.d/d6d1�d*}i}|�|�\}}|j�rRd7|d8<|j�sLtd9�d7|_|j�rl|j�sl|� d:�|j �r�|j�s�|� d;�|j�s�|j �r�td<�|j�s�|j�r�|� d=�|j �r�t d>�t���D]}t |��q�|�s�d?S|�st d@tjdA�t dBtjdA�dCSdD|v�r:d7}|j�r:t dEtjdA�dCS|j�rJd7|dF<|j�rZd7|dG<|j�rhtjntj}tjdH|dI�t�dJ�}tt����} t�fdKdL�|jD��} t�} |j�rd*} |jD](} | dMk�r�d7} n| ��dN| ��q�| �r�| �| �n| }n | �| �}|� | �}t!j"�#|�}|�rR|�$t!j%��sRt!j"�&|��sRt!j"�'|�}|j�rv|�(t!j%�}|�)dO|j|�t*t+|�|t+| �|j|j ||j|j dP�}|j,�s|�r�|�-�nBz|�||j|j.|j/�Wn&tj0�y�t dQtjdA�YdS0|�1�t2t3|j,��S)RNz2to3 [options] file|dir ...)Zusagez-dz--doctests_only� store_truezFix up doctests only)�action�helpz-fz--fixr$z1Each FIX specifies a transformation; default: all)rN�defaultrOz-jz --processesZstorer�intzRun 2to3 concurrently)rNrP�typerOz-xz--nofixz'Prevent a transformation from being runz-lz --list-fixeszList available transformationsz-pz--print-functionz0Modify the grammar so that print() is a functionz-ez--exec-functionz/Modify the grammar so that exec() 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�strrzXPut output files in this directory instead of overwriting the input files. Requires -n.)rNrRrPrOz-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:rz1At least one file or directory argument required.rJzUse --help to show usage.��-zCan't write to stdin.r� exec_functionz%(name)s: %(message)s)�format�levelz lib2to3.mainc3s|]}�d|VqdS)�.fix_Nr )�.0�fix�� fixer_pkgr r � ��zmain..�allrZz7Output in %r will mirror the input directory %r layout.)rrr z+Sorry, -j isn't supported on this platform.)4�optparseZ OptionParserZ add_option� parse_argsrTr;rArrr&Z add_suffixZno_diffsZ list_fixesr<rZget_all_fix_namesr=rLrrW�verbose�logging�DEBUG�INFOZ basicConfigZ getLogger�setZget_fixers_from_packageZnofixr\�add�union� differencerr,� commonprefixrrr1r0�rstrip�infor�sortedr#�refactor_stdinZ doctests_onlyZ processesZMultiprocessingUnsupportedZ summarizerQ�bool)r^r(�parserrp�flagsrZfixnamerYr%Z avail_fixesZunwanted_fixesrZ all_presentr\Z requestedZ fixer_namesrZrtr r]r �main�s�  � � � � � � � �� � � � � �            �  � � ��rt)N)Z __future__rrr=rrrer9rbrrrZMultiprocessRefactoringToolrrArtr r r r �s  g