在python代码块中重新排序导入语句的工具。

nouvelordre的Python项目详细描述


用于在python代码块中重新排序import语句的工具。

此项目位于github:

它也生活在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
< H2>退出代码< /H2>
  • 如果一切顺利,则为0。
  • 129 if notimplementederror(与另一条指令在同一行的导入,用“;”分隔)。
  • 130如果ast.parse无法编译文件。

避灾

这个软件不是完美的,可能会杀死你的金毛猎犬或毁掉你的文凭,但我已经努力做到这一点永远不会发生。

'reorder'执行两次传递。传递1对原始输入执行;传递2对传递1的结果执行。 如果在传递过程中发生任何错误,程序退出并使文件保持不变。 如果PASS 1和2会给出不同的结果,程序退出并使文件保持不变。这不是100%的保证,但它可以确保文件保持可编译性并执行所有优化。

只是因为我更喜欢我的程序承认它失败了,而不是粉碎你漂亮的python源代码。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java组织。openqa。硒。遥远的UnreachableBrowserException如何定义EXE路径?   java Camel AdviceWith不使用指定文件替换端点   基于字符串的java图像加载   Java中的启发式算法,计算8个谜题状态的线性冲突   java为什么不支持文件。probeContentType返回null   JPA@EntityListeners、@PrePersist和Spring@RepositoryEventHandler、@HandleBeforeSave之间的java差异   可能前缀的Java字符串到字符串[]   安装rJava | Makefile时发生java错误。全部:38:target’libjri的配方。所以他失败了   Java公共静态void main()   java如何覆盖txt文件中的某些单词   java如何获得循环中生成的字符值之和?   java Log4j创建另一个具有相同属性的appender   java如何在从Axis2 Web服务客户端通过代理服务器调用Web服务时设置代理设置?   在Windows上安装Elasticsearch时发生java错误   java如何向EditText组件添加TextChangedListener?