Your IP : 3.144.37.178


Current Path : /opt/alt/python35/lib64/python3.5/lib2to3/__pycache__/
Upload File :
Current File : //opt/alt/python35/lib64/python3.5/lib2to3/__pycache__/refactor.cpython-35.opt-2.pyc



���]�m�@s�ddlmZdZddlZddlZddlZddlZddlZddlZddl	m
Z
ddlmZm
Z
mZddlmZddlmZmZdd	lmZdd
lmZddd
�ZGdd�de�Zdd�Zdd�Zdd�Zdd�Zejddfkrjddl Z e j!Z"dd�Z#dd�Z$ne!Z"eZ#eZ$dd�Z%Gdd �d e�Z&Gd!d"�d"e'�Z(Gd#d$�d$e�Z)Gd%d&�d&e(�Z*dS)'�)�with_statementz#Guido van Rossum <guido@python.org>N)�chain�)�driver�tokenize�token)�	find_root)�pytree�pygram)�	btm_utils)�btm_matcherTcCs�t|ggdg�}tjj|j�}g}xhttj|��D]Q}|jd�rI|jd�rI|r�|dd�}|j	|dd��qIW|S)N�*�fix_z.py�����)
�
__import__�os�path�dirname�__file__�sorted�listdir�
startswith�endswith�append)Z	fixer_pkgZ
remove_prefixZpkgZ	fixer_dirZ	fix_names�name�r�-/opt/alt/python35/lib64/python3.5/refactor.py�get_all_fix_names!src@seZdZdS)�
_EveryNodeN)�__name__�
__module__�__qualname__rrrrr .sr cCs�t|tjtjf�r:|jdkr0t�|jhSt|tj�rh|jrbt|j�St�t|tj	�r�t
�}x5|jD]*}x!|D]}|jt|��q�Wq�W|Std|��dS)Nz$Oh no! I don't understand pattern %s)
�
isinstancer	ZNodePatternZLeafPattern�typer ZNegatedPatternZcontent�_get_head_typesZWildcardPattern�set�update�	Exception)�pat�r�p�xrrrr&2s
	
	
r&cCstjt�}g}x�|D]�}|jr�yt|j�}Wntk
r_|j|�Yq�XxU|D]}||j|�qgWq|jdk	r�||jj|�q|j|�qWx:tt	j
jj�t	j
j
�D]}||j|�q�Wt|�S)N)�collections�defaultdict�list�patternr&r rZ_accept_typerr
�python_grammarZ
symbol2number�values�tokens�extend�dict)Z
fixer_listZ
head_nodesZevery�fixerZheadsZ	node_typerrr�_get_headnode_dictNs"
	

r8cs �fdd�t�d�D�S)Ncsg|]}�d|�qS)�.r)�.0�fix_name)�pkg_namerr�
<listcomp>ks	z+get_fixers_from_package.<locals>.<listcomp>F)r)r<r)r<r�get_fixers_from_packagegsr>cCs|S)Nr)�objrrr�	_identitynsr@rcCs|jdd�S)Nz
�
)�replace)�inputrrr�_from_system_newlinesusrDcCs*tjdkr"|jdtj�S|SdS)NrA)r�lineseprB)rCrrr�_to_system_newlineswsrFcs�d}tjtj|�j���fdd�}ttjtjtj	h�}t
�}yVxO|�\}}||kr�q`q`|tjkr�|r�Pd}q`|tjkr�|dkr�|�\}}|tjks�|dkr�P|�\}}|tjks|dkrP|�\}}|tj
krJ|dkrJ|�\}}x^|tjkr�|j|�|�\}}|tj
ks�|d	kr�P|�\}}qMWq`Pq`WWntk
r�YnXt|�S)
NFcst��}|d|dfS)Nrr)�next)�tok)�genrr�advance�sz(_detect_future_features.<locals>.advanceT�from�
__future__�import�(�,)r�generate_tokens�io�StringIO�readline�	frozensetr�NEWLINE�NL�COMMENTr'�STRING�NAME�OP�add�
StopIteration)�sourceZhave_docstringrJ�ignore�features�tp�valuer)rIr�_detect_future_features�sD		
	
rbc@seZdZdS)�
FixerErrorN)r!r"r#rrrrrc�srcc@sieZdZddddiZdZdZdddd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdddd�Zdddd�Z
dd�Zdddd�Zdd�Zddd�Zdd �Zd!d"�Zdddd#d$�Zdd%d&�Zd'Zd(Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3d4�ZdS)5�RefactoringTool�print_functionF�write_unchanged_filesZFixrNcCs�||_|pg|_|jj�|_|dk	rF|jj|�|jdrbtj|_ntj	|_|jj
d�|_g|_t
jd�|_g|_d|_tj|jdtjd|j�|_|j�\|_|_g|_tj�|_g|_g|_xzt|j|j�D]c}|j rQ|jj!|�q/||jkrs|jj"|�q/||jkr/|jj"|�q/Wt#|j�|_$t#|j�|_%dS)NrerfrdF�convert�logger)&�fixers�explicit�_default_options�copy�optionsr(r
�!python_grammar_no_print_statement�grammarr2�getrf�errors�logging�	getLoggerrh�	fixer_log�wroterZDriverr	rg�
get_fixers�	pre_order�
post_order�files�bmZ
BottomMatcher�BMZ
bmi_pre_orderZbmi_post_orderrZ
BM_compatibleZ	add_fixerrr8�bmi_pre_order_heads�bmi_post_order_heads)�selfZfixer_namesrmrjr7rrr�__init__�s<	
								zRefactoringTool.__init__cCs�g}g}x�|jD]}t|iidg�}|jdd�d}|j|j�ru|t|j�d�}|jd�}|jdjdd�|D��}yt	||�}Wn(t
k
r�td||f��YnX||j|j
�}	|	jr4|jd	k	r4||jkr4|jd
|�q|jd|�|	jdkrc|j|	�q|	jd
kr�|j|	�qtd|	j��qWtjd�}
|jd|
�|jd|
�||fS)Nr
r9r�_�cSsg|]}|j��qSr)�title)r:r,rrrr=�s	z.RefactoringTool.get_fixers.<locals>.<listcomp>zCan't find %s.%sTzSkipping optional fixer: %szAdding transformation: %s�preZpostzIllegal fixer order: %rZ	run_order�key���)rir�rsplitr�FILE_PREFIX�len�split�CLASS_PREFIX�join�getattr�AttributeErrorrcrmrtrj�log_message�	log_debug�orderr�operator�
attrgetter�sort)r~Zpre_order_fixersZpost_order_fixersZfix_mod_path�modr;�parts�
class_nameZ	fix_classr7Zkey_funcrrrrv�s8#
zRefactoringTool.get_fixerscOs�dS)Nr)r~�msg�args�kwdsrrr�	log_errorszRefactoringTool.log_errorcGs$|r||}|jj|�dS)N)rh�info)r~r�r�rrrr�s
zRefactoringTool.log_messagecGs$|r||}|jj|�dS)N)rh�debug)r~r�r�rrrr�s
zRefactoringTool.log_debugcCsdS)Nr)r~�old_text�new_text�filename�equalrrr�print_output!szRefactoringTool.print_outputcCsPxI|D]A}tjj|�r5|j|||�q|j|||�qWdS)N)rr�isdir�refactor_dir�
refactor_file)r~�items�write�
doctests_onlyZdir_or_filerrr�refactor&s
zRefactoringTool.refactorc
Cs�tjd}x�tj|�D]�\}}}|jd|�|j�|j�xb|D]Z}|jd�rWtjj|�d|krWtjj||�}	|j	|	||�qWWdd�|D�|dd�<qWdS)N�pyzDescending into %sr9rcSs%g|]}|jd�s|�qS)r9)r)r:Zdnrrrr=As	z0RefactoringTool.refactor_dir.<locals>.<listcomp>)
r�extsep�walkr�r�rr�splitextr�r�)
r~Zdir_namer�r�Zpy_ext�dirpath�dirnames�	filenamesr�fullnamerrrr�/s



zRefactoringTool.refactor_dircCs�yt|d�}Wn<tk
rQ}z|jd||�dSWYdd}~XnXztj|j�d}Wd|j�Xt|dd|��}t|j	��|fSWdQRXdS)N�rbzCan't open %s: %srr+�encoding)NN)
�open�OSErrorr�r�detect_encodingrS�close�_open_with_encodingrD�read)r~r��f�errr�rrr�_read_python_sourceCsz#RefactoringTool._read_python_sourcecCs|j|�\}}|dkr%dS|d7}|r�|jd|�|j||�}|jsl||kr�|j|||||�q|jd|�ni|j||�}|js�|r�|jr�|jt|�dd�|d|d|�n|jd|�dS)	NrAzRefactoring doctests in %szNo doctest changes in %srr�r�zNo changes in %sr�)r�r��refactor_docstringrf�processed_file�refactor_string�was_changed�str)r~r�r�r�rCr��output�treerrrr�Ss
zRefactoringTool.refactor_filecCs�t|�}d|kr'tj|j_zby|jj|�}WnEtk
r�}z%|jd||jj	|�dSWYdd}~XnXWd|j|j_X||_
|jd|�|j||�|S)NrezCan't parse %s: %s: %szRefactoring %s)
rbr
rnrroZparse_stringr)r��	__class__r!�future_featuresr��
refactor_tree)r~�datarr_r�r�rrrr�js		zRefactoringTool.refactor_stringcCs�tjj�}|ro|jd�|j|d�}|jsI||kr_|j|d|�q�|jd�nS|j|d�}|js�|r�|jr�|jt	|�d|�n
|jd�dS)NzRefactoring doctests in stdinz<stdin>zNo doctest changes in stdinzNo changes in stdin)
�sys�stdinr�r�r�rfr�r�r�r�)r~r�rCr�r�rrr�refactor_stdin�s
zRefactoringTool.refactor_stdinc
Cs�x-t|j|j�D]}|j||�qW|j|j|j��|j|j|j��|jj|j	��}x�t
|j��rLx�|jjD]�}||kr�||r�||j
dtjjdd�|jr�||j
dtjj�xGt||�D]5}|||kr3||j|�yt|�Wntk
rXwYnX|jrt||jkrtq|j|�}|r|j||�}|dk	r|j|�x6|j�D](}|js�g|_|jj|�q�W|jj|j	��}x9|D]1}	|	|kr(g||	<||	j||	�qWqWq�Wq}Wx-t|j|j�D]}|j||�qcW|jS)Nr��reverseT)rrwrxZ
start_tree�traverse_byr|r}r{�runZleaves�anyr3rir�r	ZBase�depthZkeep_line_orderZ
get_linenor0�remover�
ValueErrorZfixers_applied�match�	transformrBrr5Zfinish_treer�)
r~r�rr7Z	match_set�node�results�newZnew_matchesZfxrrrrr��sJ 	

		

%zRefactoringTool.refactor_treecCs}|s
dSxl|D]d}x[||jD]L}|j|�}|r%|j||�}|dk	r%|j|�|}q%WqWdS)N)r%r�r�rB)r~riZ	traversalr�r7r�r�rrrr��s

zRefactoringTool.traverse_bycCs�|jj|�|dkr?|j|�d}|dkr?dS||k}|j||||�|r�|jd|�|js�dS|r�|j||||�n|jd|�dS)NrzNo changes to %szNot writing changes to %s)ryrr�r�r�rf�
write_file)r~r�r�r�r�r�r�rrrr��s	zRefactoringTool.processed_filec%Cs�yt|dd|�}Wn<tk
rW}z|jd||�dSWYdd}~XnXzVy|jt|��Wn8tk
r�}z|jd||�WYdd}~XnXWd|j�X|jd|�d|_dS)N�wr�zCan't create %s: %szCan't write %s: %szWrote changes to %sT)r�r�r�r�rFr�r�ru)r~r�r�r�r�r�r�rrrr�s*zRefactoringTool.write_filez>>> z... c
Cs�g}d}d}d}d}x.|jdd�D]}|d7}|j�j|j�r�|dk	r�|j|j||||��|}|g}|j|j�}	|d|	�}q1|dk	r|j||j�s�|||jj�dkr|j	|�q1|dk	r2|j|j||||��d}d}|j	|�q1W|dk	rz|j|j||||��dj
|�S)Nr�keependsTrrAr�)�
splitlines�lstripr�PS1r5�refactor_doctest�find�PS2�rstriprr�)
r~rCr��result�blockZblock_lineno�indent�lineno�line�irrrr�(s:

	

z"RefactoringTool.refactor_docstringc
s^y�j||��}Wn�tk
r�}zg�jjtj�rmx'|D]}�jd|jd��qJW�jd|||j	j
|�|SWYdd}~XnX�j||�rZt|�j
dd�}|d|d�||dd�}	}|d
jd�s|dd7<��j|jd�g}|rZ|��fdd	�|D�7}|S)Nz
Source: %srAz+Can't parse docstring in %s line %s: %s: %sr�Trrcs!g|]}��j|�qSr)r�)r:r�)r�r~rrr=ms	z4RefactoringTool.refactor_doctest.<locals>.<listcomp>r�r�)�parse_blockr)rh�isEnabledForrr�DEBUGr�r�r�r�r!r�r�r�rr��pop)
r~r�r�r�r�r�r�r�r�Zclippedr)r�r~rr�Ss$
	) z RefactoringTool.refactor_doctestcCs|jrd}nd}|js4|jd|�n1|jd|�x|jD]}|j|�qNW|jr�|jd�x|jD]}|j|�q�W|jrt|j�dkr�|jd�n|jdt|j��x-|jD]"\}}}|j|||�q�WdS)	N�werez
need to bezNo files %s modified.zFiles that %s modified:z$Warnings/messages while refactoring:rzThere was 1 error:zThere were %d errors:)ruryr�rtrqr�)r~r��file�messager�r�r�rrr�	summarizeps$				
	zRefactoringTool.summarizecCs1|jj|j|||��}t�|_|S)N)rZparse_tokens�	wrap_toksrTr�)r~r�r�r�r�rrrr��s!zRefactoringTool.parse_blockccs�tj|j||�j�}xe|D]]\}}\}}\}	}
}||d7}|	|d7}	||||f|	|
f|fVq%WdS)Nr)rrP�	gen_lines�__next__)r~r�r�r�r4r%raZline0Zcol0Zline1Zcol1Z	line_textrrrr��s
(zRefactoringTool.wrap_toksccs�||j}||j}|}xo|D]g}|j|�rT|t|�d�Vn4||j�dkrrdVntd||f��|}q'Wx	dVq�WdS)NrAzline=%r, prefix=%rr�)r�r�rr�r��AssertionError)r~r�r�Zprefix1Zprefix2�prefixr�rrrr��s



zRefactoringTool.gen_lines)r!r"r#rkr�r�rrvr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrd�s:4(	O+
rdc@seZdZdS)�MultiprocessingUnsupportedN)r!r"r#rrrrr��sr�csaeZdZ�fdd�Zddd�fdd�Z�fdd�Z�fd	d
�Z�S)�MultiprocessRefactoringToolcs/tt|�j||�d|_d|_dS)N)�superr�r�queue�output_lock)r~r��kwargs)r�rrr�s	z$MultiprocessRefactoringTool.__init__FrcsU|dkr(tt��j|||�Syddl�Wntk
rRt�YnX�jdk	rntd���j��_�j	��_
��fdd�t|�D�}z;x|D]}|j�q�Wtt��j|||�Wd�jj
�x$t|�D]}�jjd�qWx$|D]}|j�r'|j
�q'Wd�_XdS)Nrrz already doing multiple processescs%g|]}�jd�j��qS)�target)�Process�_child)r:r�)�multiprocessingr~rrr=�s	z8MultiprocessRefactoringTool.refactor.<locals>.<listcomp>)r�r�r�r��ImportErrorr�r��RuntimeError�
JoinableQueue�Lockr��range�startr��put�is_alive)r~r�r�r�Z
num_processes�	processesr,r�)r�)r�r~rr��s2




z$MultiprocessRefactoringTool.refactorc
so|jj�}xY|dk	rj|\}}ztt|�j||�Wd|jj�X|jj�}qWdS)N)r�rpr�r�r��	task_done)r~Ztaskr�r�)r�rrr��sz"MultiprocessRefactoringTool._childcsE|jdk	r(|jj||f�ntt|�j||�SdS)N)r�rr�r�r�)r~r�r�)r�rrr��sz)MultiprocessRefactoringTool.refactor_file)r!r"r#rr�r�r�rr)r�rr��s
r�)+rLr�
__author__rr�rrr�r.rQ�	itertoolsrZpgen2rrrZ
fixer_utilrr�r	r
rZburrzrr)r r&r8r>r@�version_info�codecsr�r�rDrFrbrc�objectrdr�r�rrrr�<module>sD
	(��

?>