Edit File: refactor.cpython-37.opt-2.pyc
B ����0��ck������������������@���s ��d�Z�ddlZddlZddlZddlZddlZddlZddlZddlm Z �ddl mZmZm Z �ddlmZ�ddlmZmZ�ddlmZ�d d d�ZG�dd ��d e�Zdd��Zdd��Zdd��Zdd��Zdd��ZG�dd��de�ZG�dd��de�ZG�dd��de�Z G�dd��de�Z!dS�)!z#Guido van Rossum <guido@python.org>�����N)�chain����)�driver�tokenize�token)� find_root)�pytree�pygram)�btm_matcherTc�������������C���sX���t�|�g�g�dg�}g�}x>t�|j�D�].\}}}|�d�r"|rF|dd���}|�|��q"W�|S�)N�*�fix_����)� __import__�pkgutilZiter_modules�__path__� startswith�append)Z fixer_pkgZ remove_prefixZpkgZ fix_names�finder�nameZispkg��r����5/opt/alt/python37/lib64/python3.7/lib2to3/refactor.py�get_all_fix_names���s���� r���c���������������@���s���e�Zd�ZdS�)� _EveryNodeN)�__name__� __module__�__qualname__r���r���r���r���r���+���s���r���c�������������C���s����t�|�tjtjf�r(|�jd�kr t�|�jhS�t�|�tj�rH|�jrDt|�j�S�t�t�|�tj �r�t ��}x*|�jD�] }x|D�]}|�t|���qlW�qbW�|S�td|����d�S�)Nz$Oh no! I don't understand pattern %s) � isinstancer���ZNodePatternZLeafPattern�typer���ZNegatedPatternZcontent�_get_head_typesZWildcardPattern�set�update� Exception)Zpat�r�p�xr���r���r���r���/���s���� r���c���������� ���C���s����t��t�}g�}x�|�D�]|}|jrjyt|j�}W�n�tk rJ���|�|��Y�q�X�xB|D�]}||��|��qRW�q|jd�k r�||j��|��q|�|��qW�x,tt j j���t j j �D�]}||��|��q�W�t|�S�)N)�collections�defaultdict�list�patternr���r���r���Z_accept_typer���r ����python_grammarZ symbol2number�values�tokens�extend�dict)Z fixer_listZ head_nodesZevery�fixerZheadsZ node_typer���r���r����_get_headnode_dictK���s"���� r/���c����������������s�����fdd�t���d�D��S�)Nc����������������s���g�|�]}��d��|��qS�)�.r���)�.0�fix_name)�pkg_namer���r���� <listcomp>h���s���z+get_fixers_from_package.<locals>.<listcomp>F)r���)r3���r���)r3���r����get_fixers_from_packaged���s���� r5���c�������������C���s���|�S�)Nr���)�objr���r���r���� _identityk���s����r7���c����������������sV��d}t��t�|��j�����fdd�}ttjt�jtj h�}t ��}y�x�|��\}}||krVq@q@|tjkrl|rfP�d}q@|tjk�r.|dk�r.|��\}}|tjks�|dkr�P�|��\}}|tjks�|dkr�P�|��\}}|tj kr�|dkr�|��\}}xJ|tjk�r*|�|��|��\}}|tj k�s|d k�rP�|��\}}q�W�q@P�q@W�W�n�tk �rL���Y�nX�t|�S�) NFc�����������������s���t����}�|�d�|�d�fS�)Nr���r���)�next)�tok)�genr���r����advancer���s����z(_detect_future_features.<locals>.advanceT�fromZ __future__�import�(�,)r����generate_tokens�io�StringIO�readline� frozensetr����NEWLINE�NL�COMMENTr����STRING�NAME�OP�add� StopIteration)�sourceZhave_docstringr;����ignore�features�tp�valuer���)r:���r����_detect_future_featureso���sD���� rR���c���������������@���s���e�Zd�ZdS�)� FixerErrorN)r���r���r���r���r���r���r���rS�������s���rS���c���������������@���s����e�Zd�Zddd�ZdZdZd4dd�Zdd ��Zd d��Zdd ��Z dd��Z dd��Zd5dd�Zd6dd�Z dd��Zd7dd�Zdd��Zd8dd�Zdd��Zd d!��Zd9d"d#�Zd:d$d%�Zd&Zd'Zd(d)��Zd*d+��Zd,d-��Zd.d/��Zd0d1��Zd2d3��ZdS�);�RefactoringToolF)�print_function�write_unchanged_filesZFixr���Nc�������������C���s2��||�_�|pg�|�_|�j���|�_|d�k r0|�j�|��|�jd�rDtj|�_ntj |�_|�j� d�|�_g�|�_t �d�|�_g�|�_d|�_tj|�jtj|�jd�|�_|����\|�_|�_g�|�_t���|�_g�|�_g�|�_xXt|�j|�j�D�]F}|j r�|�j�!|��q�||�jkr�|�j�"|��q�||�jkr�|�j�"|��q�W�t#|�j�|�_$t#|�j�|�_%d�S�)NrU���rV���rT���F)�convert�logger)&�fixers�explicit�_default_options�copy�optionsr ���r ����!python_grammar_no_print_statement�grammarr)����getrV����errors�loggingZ getLoggerrX���� fixer_log�wroter���ZDriverr���rW���� get_fixers� pre_order� post_order�files�bmZ BottomMatcher�BMZ bmi_pre_orderZbmi_post_orderr���Z BM_compatibleZ add_fixerr���r/����bmi_pre_order_heads�bmi_post_order_heads)�selfZfixer_namesr]���rZ���r.���r���r���r����__init__����s<���� zRefactoringTool.__init__c���������� ���C���s^��g�}g�}�x(|�j�D��]}t|i�i�dg�}|�dd�d�}|�|�j�rV|t|�j�d���}|�d�}|�jd�dd��|D����}yt ||�}W�n&�t k r����td ||f��d��Y�nX�||�j|�j �} | jr�|�jd k r�||�jkr�|��d|��q|��d|��| jd k�r |�| ��q| jdk�r"|�| ��qtd| j���qW�t�d�} |j| d��|j| d��||fS�)Nr���r0���r�������_��c�������������S���s���g�|�]}|�����qS�r���)�title)r1���r#���r���r���r���r4�������s����z.RefactoringTool.get_fixers.<locals>.<listcomp>zCan't find %s.%sTzSkipping optional fixer: %szAdding transformation: %sZpreZpostzIllegal fixer order: %rZ run_order)�key)rY���r����rsplitr����FILE_PREFIX�len�split�CLASS_PREFIX�join�getattr�AttributeErrorrS���r]���rc���rZ����log_message� log_debug�orderr����operator� attrgetter�sort)rm���Zpre_order_fixersZpost_order_fixersZfix_mod_path�modr2����parts� class_nameZ fix_classr.���Zkey_funcr���r���r���re�������s8���� zRefactoringTool.get_fixersc��������������O���s�����d�S�)Nr���)rm����msg�args�kwdsr���r���r���� log_error����s����zRefactoringTool.log_errorc�������������G���s���|r||�}|�j��|��d�S�)N)rX����info)rm���r����r����r���r���r���r|�����s����zRefactoringTool.log_messagec�������������G���s���|r||�}|�j��|��d�S�)N)rX����debug)rm���r����r����r���r���r���r}��� ��s����zRefactoringTool.log_debugc�������������C���s���d�S�)Nr���)rm����old_text�new_text�filename�equalr���r���r����print_output��s����zRefactoringTool.print_outputc�������������C���s<���x6|D�].}t�j�|�r&|��|||��q|��|||��qW�d�S�)N)�os�path�isdir�refactor_dir� refactor_file)rm����items�write� doctests_onlyZdir_or_filer���r���r����refactor��s���� zRefactoringTool.refactorc������� ������C���s����t�jd�}x�t��|�D�]�\}}}|��d|��|����|����xF|D�]>}|�d�sBt�j�|�d�|krBt�j�||�} |�� | ||��qBW�dd��|D��|d�d��<�qW�d�S�)N�pyzDescending into %sr0���r���c�������������S���s���g�|�]}|��d��s|�qS�)r0���)r���)r1���Zdnr���r���r���r4���.��s����z0RefactoringTool.refactor_dir.<locals>.<listcomp>) r�����extsep�walkr}���r����r���r�����splitextry���r����) rm���Zdir_namer����r����Zpy_ext�dirpathZdirnames� filenamesr����fullnamer���r���r���r������s���� zRefactoringTool.refactor_dirc���������� ���C���s����yt�|d�}W�n0�tk r>�}�z|��d||��dS�d�}~X�Y�nX�zt�|j�d�}W�d�|����X�tj�|d|dd��}|���|fS�Q�R�X�d�S�)N�rbzCan't open %s: %s)NNr���r"���rq���)�encoding�newline) �open�OSErrorr����r����detect_encodingrC����closerA����read)rm���r�����f�errr����r���r���r����_read_python_source0��s���� z#RefactoringTool._read_python_sourcec�������������C���s����|���|�\}}|d�krd�S�|d7�}|rn|��d|��|��||�}|�jsL||kr`|��|||||��q�|��d|��nH|��||�}|�js�|r�|jr�|�jt|�d�d��|||d��n|��d|��d�S�)N� zRefactoring doctests in %szNo doctest changes in %sro���)r����r����zNo changes in %s)r����r}����refactor_docstringrV����processed_file�refactor_string�was_changed�str)rm���r����r����r�����inputr�����output�treer���r���r���r����@��s����zRefactoringTool.refactor_filec���������� ���C���s����t�|�}d|krtj|�j_zLy|�j�|�}W�n6�tk rb�}�z|��d||jj |��d�S�d�}~X�Y�nX�W�d�|�j|�j_X�||_ |��d|��|��||��|S�)NrU���zCan't parse %s: %s: %szRefactoring %s) rR���r ���r^���r���r_���Zparse_stringr!���r����� __class__r����future_featuresr}���� refactor_tree)rm����datar���rO���r����r����r���r���r���r����W��s���� zRefactoringTool.refactor_stringc�������������C���s����t�j���}|rN|��d��|��|d�}|�js2||krB|��|d|��q�|��d��n:|��|d�}|�jsj|r~|jr~|��t |�d|��n |��d��d�S�)NzRefactoring doctests in stdinz<stdin>zNo doctest changes in stdinzNo changes in stdin) �sys�stdinr����r}���r����rV���r����r����r����r����)rm���r����r����r����r����r���r���r����refactor_stdinr��s���� zRefactoringTool.refactor_stdinc������� ��� ���C���s���x"t�|�j|�j�D�]}|�||��qW�|��|�j|�����|��|�j|�����|�j�|� ���}�xtt |�����rΐx^|�jjD��]P}||krv||�rv||�j tjjdd��|jr�||�j tjjd���xt||��D�]�}|||�kr�||��|��yt|��W�n�tk �r���w�Y�nX�|j�r&||jk�r&q�|�|�}|r�|�||�}|d�k r�|�|��x,|���D�] }|j�sng�|_|j�|���q\W�|�j�|� ���}x2|D�]*} | |k�r�g�|| <�|| ��|| ����q�W�q�W�qvW�q\W�x$t�|�j|�j�D�]}|�||���q�W�|jS�)NT)rs����reverse)rs���)r���rf���rg���Z start_tree�traverse_byrk���rl���rj����runZleaves�anyr*���rY���r����r���ZBase�depthZkeep_line_orderZ get_linenor'����remover���� ValueErrorZfixers_applied�match� transform�replacer���r,���Zfinish_treer����) rm���r����r���r.���Z match_set�node�results�newZnew_matchesZfxrr���r���r���r�������sJ���� $zRefactoringTool.refactor_treec�������������C���s^���|sd�S�xP|D�]H}xB||j��D�]4}|�|�}|r|�||�}|d�k r|�|��|}qW�qW�d�S�)N)r���r����r����r����)rm���rY���Z traversalr����r.���r����r����r���r���r���r�������s���� zRefactoringTool.traverse_byc�������������C���s����|�j��|��|d�kr.|��|�d�}|d�kr.d�S�||k}|��||||��|r`|��d|��|�js`d�S�|rv|��||||��n|��d|��d�S�)Nr���zNo changes to %szNot writing changes to %s)rh���r���r����r����r}���rV���� write_file)rm���r����r����r����r����r����r����r���r���r���r�������s����zRefactoringTool.processed_filec�������������C���s����yt�j|d|dd�}W�n0�tk rF�}�z|��d||��d�S�d�}~X�Y�nX�|�F�y|�|��W�n0�tk r��}�z|��d||��W�d�d�}~X�Y�nX�W�d�Q�R�X�|��d|��d|�_d�S�)N�wrq���)r����r����zCan't create %s: %szCan't write %s: %szWrote changes to %sT)rA���r����r����r����r����r}���rd���)rm���r����r����r����r�����fpr����r���r���r���r�������s����*zRefactoringTool.write_filez>>> z... c������� ��� ���C���s��g�}d�}d�}d�}d}x�|j�dd�D�]�}|d7�}|����|�j�r�|d�k r\|�|��||||���|}|g}|�|�j�} |d�| ��}q"|d�k r�|�||�j��s�|||�j����d�kr�|� |��q"|d�k r�|�|��||||���d�}d�}|� |��q"W�|d�k �r|�|��||||���d� |�S�)Nr���T)�keependsr���r����rq���)� splitlines�lstripr����PS1r,����refactor_doctest�find�PS2�rstripr���ry���) rm���r����r�����result�blockZblock_lineno�indent�lineno�line�ir���r���r���r������s:���� z"RefactoringTool.refactor_docstringc������� ��� ������s��y���||���}W�nf�tk rx�}�zH�j�tj�rRx|D�]}��d|�d���q8W���d|||j j |��|S�d�}~X�Y�nX���||��rt|�j dd�}|d�|d���||d�d����} }|d��d�s�|d��d7��<����j�|�d��g}|�r|���fd d �|D��7�}|S�)Nz Source: %sr����z+Can't parse docstring in %s line %s: %s: %sT)r����r���ro���r���c����������������s���g�|�]}���j��|��qS�r���)r����)r1���r����)r����rm���r���r���r4���Z��s����z4RefactoringTool.refactor_doctest.<locals>.<listcomp>)�parse_blockr!���rX���ZisEnabledForrb����DEBUGr}���r����r����r����r���r����r����r�����endswithr�����pop) rm���r����r����r����r����r����r����r����r����Zclippedr���)r����rm���r���r����@��s$���� "z RefactoringTool.refactor_doctestc�������������C���s����|�j�rd}nd}|�js$|��d|��n&|��d|��x|�jD�]}|��|��q8W�|�jrt|��d��x|�jD�]}|��|��qbW�|�jr�t|�j�dkr�|��d��n|��dt|�j���x&|�jD�]\}}}|�j|f|�|��q�W�d�S�) N�werez need to bezNo files %s modified.zFiles that %s modified:z$Warnings/messages while refactoring:r���zThere was 1 error:zThere were %d errors:)rd���rh���r|���rc���ra���rv���)rm���r�����file�messager����r����r����r���r���r���� summarize]��s$���� zRefactoringTool.summarizec�������������C���s"���|�j��|��|||��}t��|_|S�)N)r���Zparse_tokens� wrap_toksrD���r����)rm���r����r����r����r����r���r���r���r����t��s����zRefactoringTool.parse_blockc�������������c���sh���t��|��||�j�}xN|D�]F\}}\}}\} } }||d�7�}| |d�7�} ||||f| | f|fV��qW�d�S�)Nr���)r���r@���� gen_lines�__next__)rm���r����r����r����r+���r���rQ���Zline0Zcol0Zline1Zcol1Z line_textr���r���r���r����~��s ����zRefactoringTool.wrap_toksc�������������c���s����||�j��}||�j�}|}xV|D�]N}|�|�r@|t|�d���V��n(||���d�krXdV��ntd||f���|}qW�x dV��qrW�d�S�)Nr����zline=%r, prefix=%rrq���)r����r����r���rv���r�����AssertionError)rm���r����r�����prefix1Zprefix2�prefixr����r���r���r���r�������s���� zRefactoringTool.gen_lines)NN)FF)FF)FF)F)NFN)N)r���r���r���r[���rx���ru���rn���re���r����r|���r}���r����r����r����r����r����r����r����r����r����r����r����r����r����r����r����r����r����r����r����r���r���r���r���rT�������s:��� 4( O� + rT���c���������������@���s���e�Zd�ZdS�)�MultiprocessingUnsupportedN)r���r���r���r���r���r���r���r�������s���r����c�������������������sB���e�Zd�Z��fdd�Zd��fdd� Z��fdd�Z��fd d �Z���ZS�)�MultiprocessRefactoringToolc����������������s"���t�t|��j||��d�|�_d�|�_d�S�)N)�superr����rn����queue�output_lock)rm���r�����kwargs)r����r���r���rn������s����z$MultiprocessRefactoringTool.__init__Fr���c���������� ������s��|dkrt�t���|||�S�ydd�l��W�n�tk r@���t�Y�nX��jd�k rTtd��������_��� ���_ ���fdd�t|�D��}z.x|D�]}|����q�W�t�t���|||��W�d��j� ���xt|�D�]}�j�d���q�W�x|D�]}|���r�|� ���q�W�d��_X�d�S�)Nr���r���z already doing multiple processesc����������������s���g�|�]}��j��jd���qS�))�target)ZProcess�_child)r1���r����)�multiprocessingrm���r���r���r4������s���z8MultiprocessRefactoringTool.refactor.<locals>.<listcomp>)r����r����r����r�����ImportErrorr����r�����RuntimeErrorZ JoinableQueueZLockr�����range�startry����putZis_alive)rm���r����r����r����Z num_processesZ processesr#���r����)r����)r����rm���r���r�������s2���� z$MultiprocessRefactoringTool.refactorc����������������sR���|�j����}xB|d�k rL|\}}ztt|��j||��W�d�|�j�����X�|�j����}qW�d�S�)N)r����r`���r����r����r����Z task_done)rm���Ztaskr����r����)r����r���r���r�������s���� z"MultiprocessRefactoringTool._childc����������������s2���|�j�d�k r|�j��||f��ntt|��j||�S�d�S�)N)r����r����r����r����r����)rm���r����r����)r����r���r���r�������s���� z)MultiprocessRefactoringTool.refactor_file)FFr���)r���r���r���rn���r����r����r����� __classcell__r���r���)r����r���r�������s ����r����)T)"� __author__rA���r����r���r����rb���r���r%���� itertoolsr���Zpgen2r���r���r���Z fixer_utilr���rq���r���r ���r ���ri���r���r!���r���r���r/���r5���r7���rR���rS����objectrT���r����r����r���r���r���r����<module>���s6��� (����