用于重新排列Python代码块中导入语句的工具。
项目描述
一个用于在Python代码块中重新排列导入语句的工具。
该项目位于github
github html页面: http://feth.github.com/nouvelordre/
github classic页面: 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/toto/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
推荐
enthought的python-traits - 提供类型验证并可能捕获一些错误(如果您打算修复此软件,则绝对必需)。
退出代码
如果一切顺利,则为0。
如果出现NotImplementedError(同一行上的导入与另一条指令,由分号分隔),则为129。
如果ast.parse无法编译文件,则为130。
灾难预防
此软件并不完美,可能会杀死您的金毛犬或毁掉您的文凭,但我已经尽力确保这种情况永远不会发生。
‘reorder’执行2次遍历。遍历1在原始输入上执行;遍历2在遍历1的结果上执行。如果两次遍历中的任何一次发生错误,则程序退出并保持文件不变。如果遍历1和2的结果不同,则程序退出并保持文件不变。这不能保证100%,但它确保文件可编译,并且已执行所有优化。
我只是因为我更喜欢我的程序承认它失败了,而不是切碎您美丽的Python源代码。
项目详情
nouvelordre-0.1.tar.gz 的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 8a00476554f6b1d2e118d2397727a1363103b97f6cd05813f9544c8747a1953f |
|
MD5 | 7466cbe71e2c85704fab108b1a5681dd |
|
BLAKE2b-256 | 66663cdd2524b05b213ef61c5d9f42575dbaef55e2cf2b2e30fb2c295cdc8bf8 |