관리-도구
편집 파일: refactor.cpython-39.opt-2.pyc
a �����DOgsk����������������������@���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���sT���t�|�g�g�dg�}g�}t�|j�D�].\}}}|�d�r |rD|dd���}|�|��q |S�)N�*�fix_����)� __import__�pkgutil�iter_modules�__path__� startswith�append)Z fixer_pkgZ remove_prefix�pkgZ fix_names�finder�name�ispkg��r����(/usr/lib64/python3.9/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�u�r t�|�jhS�t�|�tj�rH|�jrDt|�j�S�t�t�|�tj �r�t ��}|�jD�]}|D�]}|�t|���qhq`|S�td|����d�S�)Nz$Oh no! I don't understand pattern %s) � isinstancer���ZNodePatternZLeafPattern�typer���ZNegatedPatternZcontent�_get_head_typesZWildcardPattern�set�update� Exception)�pat�r�p�xr���r���r���r"���/���s���� r"���c�������������� ���C���s����t��t�}g�}|�D�]v}|jrbzt|j�}W�n�tyF���|�|��Y�q�0�|D�]}||��|��qLq|jd�ur~||j��|��q|�|��qtt j j���t j j �D�]}||��|��q�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$���� �r5���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���r:���r���r:���r����get_fixers_from_packaged���s���� �r=���c�����������������C���s���|�S�r*���r���)�objr���r���r���� _identityk���s����r?���c��������������������sV��d}t��t�|��j�����fdd�}ttjt�jtj h�}t ��}z�|��\}}||v�rTq>q>|tjkrl|rf�q6d}q>|tjk�r6|dk�r6|��\}}|tjks�|dkr��q6|��\}}|tjks�|dkrq6|��\}}|tj kr�|dkr�|��\}}|tjk�r4|�|��|��\}}|tj k�s.|d k�r"�q4|��\}}q�q>�q6q>W�n�t�yL���Y�n0�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_docstringrD����ignore�features�tp�valuer���rB���r����_detect_future_featureso���sB���� r[���c�������������������@���s���e�Zd�ZdS�)� FixerErrorNr���r���r���r���r���r\�������s���r\���c�������������������@���s����e�Zd�Zdddd�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� exec_function�write_unchanged_filesZFixr���Nc�����������������C���sJ��||�_�|pg�|�_|�j���|�_|d�ur0|�j�|��tj���|�_|�jd�rR|�jj d=�n|�jd�rf|�jj d=�|�j� d�|�_g�|�_t �d�|�_g�|�_d|�_tj|�jtj|�jd�|�_|����\|�_|�_g�|�_t���|�_g�|�_g�|�_t|�j|�j�D�]H}|j r�|�j�!|��q�||�jv��r|�j�"|��q�||�jv�r�|�j�"|��q�t#|�j�|�_$t#|�j�|�_%d�S�) Nr^����printr_����execr`���r]���F)�convert�logger)&�fixers�explicit�_default_options�copy�optionsr$���r ���r/����grammar�keywords�getr`����errors�logging� getLoggerrd���� fixer_log�wroter���ZDriverr���rc���� get_fixers� pre_order� post_order�files�bmZ BottomMatcher�BMZ bmi_pre_orderZbmi_post_orderr���Z BM_compatibleZ add_fixerr���r5����bmi_pre_order_heads�bmi_post_order_heads)�selfZfixer_namesri���rf���r4���r���r���r����__init__����sB���� � zRefactoringTool.__init__c�������������� ���C���sV��g�}g�}|�j�D��]}t|i�i�dg�}|�dd�d�}|�|�j�rR|t|�j�d���}|�d�}|�jd�dd��|D����}zt ||�}W�n$�t y����td ||f��d��Y�n0�||�j|�j �} | jr�|�jd ur�||�jvr�|��d|��q|��d|��| jd k�r|�| ��q| jdk�r|�| ��qtd| j���qt�d�} |j| d��|j| d��||fS�)Nr���r7���r�������_��c�����������������S���s���g�|�]}|�����qS�r���)�title)r8���r(���r���r���r���r<������������z.RefactoringTool.get_fixers.<locals>.<listcomp>zCan't find %s.%sTzSkipping optional fixer: %szAdding transformation: %s�preZpostzIllegal fixer order: %rZ run_order��key)re���r����rsplitr����FILE_PREFIX�len�split�CLASS_PREFIX�join�getattr�AttributeErrorr\���ri���rp���rf����log_message� log_debug�orderr����operator� attrgetter�sort)rz���Zpre_order_fixersZpost_order_fixersZfix_mod_path�modr9����parts� class_nameZ fix_classr4���Zkey_funcr���r���r���rr�������s:���� � zRefactoringTool.get_fixersc������������������O���s�����d�S�r*���r���)rz����msg�args�kwdsr���r���r���� log_error��s����zRefactoringTool.log_errorc�����������������G���s���|r||�}|�j��|��d�S�r*���)rd����info�rz���r����r����r���r���r���r������s����zRefactoringTool.log_messagec�����������������G���s���|r||�}|�j��|��d�S�r*���)rd����debugr����r���r���r���r���� ��s����zRefactoringTool.log_debugc�����������������C���s���d�S�r*���r���)rz����old_text�new_text�filename�equalr���r���r����print_output��s����zRefactoringTool.print_outputc�����������������C���s8���|D�].}t�j�|�r$|��|||��q|��|||��qd�S�r*���)�os�path�isdir�refactor_dir� refactor_file)rz����items�write� doctests_onlyZdir_or_filer���r���r����refactor��s����zRefactoringTool.refactorc����������� ������C���s����t�jd�}t��|�D�]�\}}}|��d|��|����|����|D�]>}|�d�s>t�j�|�d�|kr>t�j�||�} |�� | ||��q>dd��|D��|d�d��<�qd�S�)N�pyzDescending into %sr7���r���c�����������������S���s���g�|�]}|��d��s|�qS�r6���)r���)r8���Zdnr���r���r���r<���2��r����z0RefactoringTool.refactor_dir.<locals>.<listcomp>) r�����extsep�walkr����r����r���r�����splitextr����r����) rz���Zdir_namer����r����Zpy_ext�dirpath�dirnames� filenamesr����fullnamer���r���r���r���� ��s���� �zRefactoringTool.refactor_dirc�������������� ���C���s����zt�|d�}W�n4�tyB�}�z|��d||��W�Y�d�}~dS�d�}~0�0�zt�|j�d�}W�|����n |����0�tj�|d|dd��}|���|fW��d�����S�1�s�0����Y��d�S�)N�rbzCan't open %s: %s)NNr���r'���r~�����encoding�newline) �open�OSErrorr����r����detect_encodingrL����closerJ����read)rz���r�����f�errr����r���r���r����_read_python_source4��s����z#RefactoringTool._read_python_sourcec�����������������C���s����|���|�\}}|d�u�rd�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 %sr|���)r����r����zNo changes in %s)r����r�����refactor_docstringr`����processed_file�refactor_string�was_changed�str)rz���r����r����r�����inputr�����output�treer���r���r���r����D��s �����zRefactoringTool.refactor_filec�������������� ���C���s����t�|�}d|v�rtj|�j_zfz|�j�|�}W�nF�tyr�}�z.|��d||jj |��W�Y�d�}~W�|�j|�j_d�S�d�}~0�0�W�|�j|�j_n|�j|�j_0�||_ |��d|��|��||��|S�)Nr^���zCan't parse %s: %s: %szRefactoring %s) r[���r ���Z!python_grammar_no_print_statementr���rj���Zparse_stringr%���r����� __class__r����future_featuresr����� refactor_tree)rz����datar���rX���r����r����r���r���r���r����[��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����r`���r����r����r����r����)rz���r����r����r����r����r���r���r����refactor_stdinv��s���� zRefactoringTool.refactor_stdinc����������� ��� ���C���s���t�|�j|�j�D�]}|�||��q|��|�j|�����|��|�j|�����|�j�|� ���}t |�����r�|�jjD��]B}||v�rj||�rj||�j tjjdd��|jr�||�j tjjd��t||��D�]�}|||�v�r�||��|��zt|��W�n�t��y����Y�q�Y�n0�|j�r||jv��rq�|�|�}|r�|�||�}|d�ur�|�|��|���D�] }|j�s\g�|_|j�|���qJ|�j�|� ���}|D�]*} | |v�r�g�|| <�|| ��|| ����q�q�qjqTt�|�j|�j�D�]}|�||���q�|jS�)NT)r�����reverser����)r���rs���rt���Z start_tree�traverse_byrx���ry���rw����runZleaves�anyr0���re���r����r���ZBase�depthZkeep_line_orderZ get_linenor-����remover���� ValueErrorZfixers_applied�match� transform�replacer���r2���Zfinish_treer����) rz���r����r���r4���Z match_set�node�results�newZnew_matchesZfxrr���r���r���r�������sJ���� zRefactoringTool.refactor_treec�����������������C���sV���|sd�S�|D�]D}||j��D�]4}|�|�}|r|�||�}|d�ur|�|��|}qqd�S�r*���)r!���r����r����r����)rz���re���Z traversalr����r4���r����r����r���r���r���r�������s���� zRefactoringTool.traverse_byc�����������������C���s����|�j��|��|d�u�r.|��|�d�}|d�u�r.d�S�||k}|��||||��|r`|��d|��|�js`d�S�|rv|��||||��n|��d|��d�S�)Nr���zNo changes to %szNot writing changes to %s)ru���r���r����r����r����r`���� write_file)rz���r����r����r����r����r����r����r���r���r���r�������s����zRefactoringTool.processed_filec�����������������C���s����zt�j|d|dd�}W�n4�tyJ�}�z|��d||��W�Y�d�}~d�S�d�}~0�0�|�R�z|�|��W�n2�ty��}�z|��d||��W�Y�d�}~n d�}~0�0�W�d�����n1�s�0����Y��|��d|��d|�_d�S�)N�wr~���r����zCan't create %s: %szCan't write %s: %szWrote changes to %sT)rJ���r����r����r����r����r����rq���)rz���r����r����r����r�����fpr����r���r���r���r������s����BzRefactoringTool.write_filez>>> z... c����������� ��� ���C���s��g�}d�}d�}d�}d}|j�dd�D�]�}|d7�}|����|�j�r~|d�urZ|�|��||||���|}|g}|�|�j�} |d�| ��}q |d�ur�|�||�j��s�|||�j����d�kr�|� |��q |d�ur�|�|��||||���d�}d�}|� |��q |d�u�r |�|��||||���d� |�S�)Nr���T��keependsr���r����r~���)� splitlines�lstripr����PS1r2����refactor_doctest�find�PS2�rstripr���r����) rz���r����r�����result�blockZblock_lineno�indent�lineno�line�ir���r���r���r������sD�������� �z"RefactoringTool.refactor_docstringc����������� ��� ������s��z���||���}W�nh�tyz�}�zP�j�tj�rL|D�]}��d|�d���q4��d|||j j |��|W��Y�d�}~S�d�}~0�0���||��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: %sTr����r���r|���r���c��������������������s���g�|�]}���j��|��qS�r���)r����)r8���r�����r����rz���r���r���r<���^��r����z4RefactoringTool.refactor_doctest.<locals>.<listcomp>)�parse_blockr%���rd����isEnabledForrn����DEBUGr����r����r����r����r���r����r����r�����endswithr�����pop) rz���r����r����r����r����r����r����r����r����Zclippedr���r����r���r����D��s&�����"z RefactoringTool.refactor_doctestc�����������������C���s����|�j�rd}nd}|�js$|��d|��n"|��d|��|�jD�]}|��|��q6|�jrl|��d��|�jD�]}|��|��q\|�jr�t|�j�dkr�|��d��n|��dt|�j���|�jD�]"\}}}|�j|g|�R�i�|���q�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:)rq���ru���r����rp���rm���r����)rz���r�����file�messager����r����r����r���r���r���� summarizea��s$���� zRefactoringTool.summarizec�����������������C���s"���|�j��|��|||��}t��|_|S�r*���)r���Zparse_tokens� wrap_toksrM���r����)rz���r����r����r����r����r���r���r���r����x��s����zRefactoringTool.parse_blockc�����������������c���sd���t��|��||�j�}|D�]F\}}\}}\} } }||d�7�}| |d�7�} ||||f| | f|fV��qd�S�)Nr���)r���rI���� gen_lines�__next__)rz���r����r����r����r1���r!���rZ���Zline0Zcol0Zline1Zcol1Z line_textr���r���r���r�������s ����zRefactoringTool.wrap_toksc�����������������c���sx���||�j��}||�j�}|}|D�]N}|�|�r>|t|�d���V��n(||���d�krVdV��ntd||f���|}qdV��qld�S�)Nr����zline=%r, prefix=%rr~���)r����r����r���r����r�����AssertionError)rz���r����r�����prefix1Zprefix2�prefixr����r���r���r���r�������s���� zRefactoringTool.gen_lines)NN)FF)FF)FF)F)NFN)N)r���r���r���rg���r����r����r{���rr���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���r]�������s@���� 7( O��� + r]���c�������������������@���s���e�Zd�ZdS�)�MultiprocessingUnsupportedNr���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|i�|���d�|�_d�|�_d�S�r*���)�superr����r{����queue�output_lock�rz���r�����kwargs�r����r���r���r{������s����z$MultiprocessRefactoringTool.__init__Fr���c�������������� ������s>��|dkrt�t���|||�S�zdd�l��W�n�ty>���t�Y�n0��jd�urRtd��������_��� ���_ ���fdd�t|�D��}zn|D�]}|����q�t�t���|||��W��j� ���t|�D�]}�j�d���q�|D�]}|���r�|� ���q�d��_nL�j� ���t|�D�]}�j�d����q�|D�]}|����r|� ����qd��_0�d�S�)Nr���r���z already doing multiple processesc��������������������s���g�|�]}��j��jd���qS�))�target)�Process�_child)r8���r������multiprocessingrz���r���r���r<������s����z8MultiprocessRefactoringTool.refactor.<locals>.<listcomp>)r����r����r����r ���ImportErrorr����r����RuntimeError� JoinableQueue�Lockr���range�startr�����put�is_alive)rz���r����r����r����Z num_processes� processesr(���r����r��r��r���r�������sF���� � � � � z$MultiprocessRefactoringTool.refactorc��������������������s\���|�j����}|d�urX|\}}z$tt|��j|i�|���W�|�j�����n|�j�����0�|�j����}q d�S�r*���)r���rl���r����r����r����� task_done)rz���Ztaskr����r��r��r���r���r�����s���� ��z"MultiprocessRefactoringTool._childc��������������������s6���|�j�d�ur|�j��||f��ntt|��j|i�|��S�d�S�r*���)r���r��r����r����r����r��r��r���r���r�������s���� ��z)MultiprocessRefactoringTool.refactor_file)FFr���)r���r���r���r{���r����r��r����� __classcell__r���r���r��r���r�������s������r����)T)"� __author__rJ���r����r���r����rn���r����r+���� itertoolsr���Zpgen2r���r���r���Z fixer_utilr���r~���r���r ���r ���rv���r���r%���r���r"���r5���r=���r?���r[���r\����objectr]���r����r����r���r���r���r����<module>���s6��� (����