在python代码块中重新排序导入语句的工具。
nouvelordre的Python项目详细描述
用于在python代码块中重新排序import语句的工具。
此项目位于github:
github html页面:http://feth.github.com/nouvelordre/
Github经典页面:https://github.com/feth/nouvelordre
存储库:
$ git clone git://github.com/feth/nouvelordre.git
它也生活在pypi上: *http://pypi.python.org/pypi/nouvelordre/
开始
常用用法
'reorder'是一个可执行脚本:
$ nouvelordre.py --infile mymodule.py --outfile rewritten.py
相当于:
$ nouvelordre.py < mymodule.py > rewritten.py
您可能需要重写目录中的所有文件,例如'/home/to to/project':
$ for file in $(find '/home/toto/project') ; do reorder -i $file -o $file ; done $ <run your test suite!> $ git diff
当然,如果您运行上面的代码,那么您使用的是版本控制,这样您就可以检查diff并在出现问题时还原修改。
安装
目前安装程序不是很好,但应该可以工作。
来源:
$ python setup.py install
来自互联网(pypi-http://pypi.python.org):
$ pip install nouvelordre
另外,我建议在virtualenv中安装-这意味着在如上所述安装之前运行以下命令,因此不会污染系统:
$ virtualenv nouvelordre $ cd nouvelordre $ source ./bin/activate
选项
选项:
--infile INFILE, -i INFILE a Python source file, defaults to standard input --outfile OUTFILE, -o OUTFILE output, defaults to standard output --dump, -d in case of failure, keep processing data in files --version, -v prints version and exits
功能
由任何东西(例如白线)分隔的块被单独考虑。
块内的语句将重新排序
一条语句中的导入被重新排序。 示例:
import sys, os
变成:
import os import sys
或:
from module import b, a as f, c
变成:
from module import a as f, b, c
尝试并避免损坏您宝贵的python工作(请参见下文,灾难避免)
限制
- 此脚本将只处理一级语句(即不缩进语句)。
- 此脚本不会处理同一块中同一模块的多个“导入模块”。
- 有些文件不是ast.parse()可编译的(需要帮助)。
依赖性
必须
- python 2.6至少(用于ast)
- python 2.7或python argparse
建议
- Enthough的python特性-提供类型验证,可能会捕获一些bug(如果要修补此软件,则绝对是强制的)。
< H2>退出代码< /H2>
- 如果一切顺利,则为0。
- 129 if notimplementederror(与另一条指令在同一行的导入,用“;”分隔)。
- 130如果ast.parse无法编译文件。
避灾
这个软件不是完美的,可能会杀死你的金毛猎犬或毁掉你的文凭,但我已经努力做到这一点永远不会发生。
'reorder'执行两次传递。传递1对原始输入执行;传递2对传递1的结果执行。 如果在传递过程中发生任何错误,程序退出并使文件保持不变。 如果PASS 1和2会给出不同的结果,程序退出并使文件保持不变。这不是100%的保证,但它可以确保文件保持可编译性并执行所有优化。
只是因为我更喜欢我的程序承认它失败了,而不是粉碎你漂亮的python源代码。