Your IP : 216.73.216.213


Current Path : /opt/alt/python33/lib64/python3.3/Tools/scripts/__pycache__/
Upload File :
Current File : //opt/alt/python33/lib64/python3.3/Tools/scripts/__pycache__/cleanfuture.cpython-33.pyc

�
��f�!c@s�dZddlZddlZddlZddlZdadadadd�Zdd�Z	dd�Z
Gd	d
�d
�Zedkr�e	�ndS(u�cleanfuture [-d][-r][-v] path ...

-d  Dry run.  Analyze, but don't make any changes to, files.
-r  Recurse.  Search for all .py files in subdirectories too.
-v  Verbose.  Print informative msgs.

Search Python (.py) files for future statements, and remove the features
from such statements that are already mandatory in the version of Python
you're using.

Pass one or more file and/or directory paths.  When a directory path, all
.py files within the directory will be examined, and, if the -r option is
given, likewise recursively for subdirectories.

Overwrites files in place, renaming the originals with a .bak extension. If
cleanfuture finds nothing to change, the file is left alone.  If cleanfuture
does change a file, the changed file is a fixed-point (i.e., running
cleanfuture on the resulting .py file won't change it again, at least not
until you try it again with a later Python release).

Limitations:  You can do these things, but this tool won't help you then:

+ A future statement cannot be mixed with any other statement on the same
  physical line (separated by semicolon).

+ A future statement cannot contain an "as" clause.

Example:  Assuming you're using Python 2.2, if a file containing

from __future__ import nested_scopes, generators

is analyzed by cleanfuture, the line is rewritten to

from __future__ import generators

because nested_scopes is no longer optional in 2.2 but generators is.
iNcGsUtt|�}dj|�}|dd�dkrA|d7}ntjj|�dS(Nu iu
i����(umapustrujoinusysustderruwrite(uargsustringsumsg((u>/opt/alt/python33/lib64/python3.3/Tools/scripts/cleanfuture.pyuerrprint2s

uerrprintcCsddl}y)|jtjdd�d�\}}Wn6|jk
rm}zt|�dSWYdd}~XnXx_|D]W\}}|dkr�td7aqu|dkr�td7aqu|dkrutd7aququW|s�tdt�dSx|D]}t	|�q�WdS(Niiudrvu-du-ru-vuUsage:(
ugetoptusysuargvuerroruerrprintudryrunurecurseuverboseu__doc__ucheck(ugetoptuoptsuargsumsguouauarg((u>/opt/alt/python33/lib64/python3.3/Tools/scripts/cleanfuture.pyumain9s$)




umaincCs�tjj|�r�tjj|�r�tr;td|�ntj|�}xp|D]h}tjj||�}tr�tjj|�r�tjj|�s�|j	�j
d�rQt|�qQqQWdStr�td|ddd�nyt|�}WnCt
k
r5}z#td|t|�f�dSWYdd}~XnXt||�}|j�}|rd|j�n|j�|r�tr�td�tr�td	�q�nx�|D]�\}}	}
td
||d|	df�x2t||	d�D]}t|j|dd�q�W|
dkrtd�q�td
�t|
dd�q�Wts�|d}tjj|�rmtj|�ntj||�tr�td|d|�nt|d�}
|j|
�|
j�tr�td|�q�q�ntr�td�ndS(Nulisting directoryu.pyucheckingu...uendu u%r: I/O Error: %suchanged.u+But this is a dry run, so leaving it alone.u%r lines %d-%diu
-- deletedu
-- change to:u.bakurenamedutouwu	wrote newu
unchanged.(uosupathuisdiruislinkuverboseuprintulistdirujoinurecurseuloweruendswithucheckuopenuIOErroruerrprintustruFutureFinderurunu
gettherestucloseudryrunurangeulinesuNoneuexistsuremoveurenameuwrite(ufileunamesunameufullnameufumsguffuchangedusueulineuiubakug((u>/opt/alt/python33/lib64/python3.3/Tools/scripts/cleanfuture.pyucheckNsd%








ucheckcBsP|EeZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS(uFutureFindercCs1||_||_d|_g|_g|_dS(Ni(ufufnameuateofulinesuchanged(uselfufufname((u>/opt/alt/python33/lib64/python3.3/Tools/scripts/cleanfuture.pyu__init__�s
				uFutureFinder.__init__cCsH|jr
dS|jj�}|dkr4d|_n|jj|�|S(Nui(uateofufureadlineulinesuappend(uselfuline((u>/opt/alt/python33/lib64/python3.3/Tools/scripts/cleanfuture.pyugetline�s	uFutureFinder.getlinec	Cstj}tj}tj}tj}tj}tj}|j}tj|j	�j
}|�\}	}
\}}\}
}}x=|	|||fkr�|�\}	}
\}}\}
}}q{Wx4|	|kr�|�\}	}
\}}\}
}}q�Wxx=|	|||fkr1|�\}	}
\}}\}
}}q�W|	|koG|
dksNPn|d}|�\}	}
\}}\}
}}|	|ko�|
dks�Pn|�\}	}
\}}\}
}}|	|ko�|
dks�Pn|�\}	}
\}}\}
}}g}x�|	|kr�|j|
�|�\}	}
\}}\}
}}|	|koW|
dks^Pn|�\}	}
\}}\}
}}qWd}|	|kr�|
}|�\}	}
\}}\}
}}n|	|k	r�t
d|j||f�gS|d}g}xs|D]k}tt|d�}|dkr:|j|�q|j�}|dksq|tjkrdq|j|�qWt|�t|�kr�t|�dkr�d}n@d}|d	j|�7}|dk	r�|d
|7}n|d7}|j|||f�q�q�|S(Nufromiu
__future__uimportu,u)Skipping file %r; can't parse line %d:
%siufrom __future__ import u, u u
(utokenizeuSTRINGuNLuNEWLINEuCOMMENTuNAMEuOPuchangedugenerate_tokensugetlineu__next__uappenduNoneuerrprintufnameugetattru
__future__ugetMandatoryReleaseusysuversion_infoulenujoin(uselfuSTRINGuNLuNEWLINEuCOMMENTuNAMEuOPuchangedugetutypeutokenusrowuscoluerowuecolulineu	startlineufeaturesucommentuendlineu
okfeaturesufuobjectureleased((u>/opt/alt/python33/lib64/python3.3/Tools/scripts/cleanfuture.pyurun�sz							$(((
$$$
$('

	
uFutureFinder.runcCs+|jrd|_n|jj�|_dS(Nu(uateofutherestufuread(uself((u>/opt/alt/python33/lib64/python3.3/Tools/scripts/cleanfuture.pyu
gettherest�s	uFutureFinder.gettherestcCs�|j}|st�g|_|j�xT|D]L\}}}|dkra|j||d�=q/|g|j||d�<q/W|j|j�|jr�|j|j�ndS(Ni(uchangeduAssertionErrorureverseuNoneulinesu
writelinesutherestuwrite(uselfufuchangedusueuline((u>/opt/alt/python33/lib64/python3.3/Tools/scripts/cleanfuture.pyuwrites		
	uFutureFinder.writeN(u__name__u
__module__u__qualname__u__init__ugetlineurunu
gettherestuwrite(u
__locals__((u>/opt/alt/python33/lib64/python3.3/Tools/scripts/cleanfuture.pyuFutureFinder�s


_uFutureFinderu__main__(
u__doc__u
__future__utokenizeuosusysudryrunurecurseuverboseuerrprintumainucheckuFutureFinderu__name__(((u>/opt/alt/python33/lib64/python3.3/Tools/scripts/cleanfuture.pyu<module>'s8�