导入顺序检测
项目描述
一个脚本来检测导入顺序是否符合Mozilla WebDev Python
指南。
示例:
[baked] zamboni $ p ~/sandboxes/baked/baked.py lib/video/ffmpeg.py -p
lib/video/ffmpeg.py:9: 检查输出,子进程,VideoBase的顺序错误
--- /Users/andy/sandboxes/zamboni/lib/video/ffmpeg.py 2014-05-23 16:11:56.000000000 -0700
+++ /var/folders/15/3crpnr7j4sj75xynpsqkqbr00000gp/T/tmpXvc_Ml.py 2014-05-23 16:12:11.000000000 -0700
@@ -1,14 +1,14 @@
import logging
+import logging
import re
import tempfile
from django.conf import settings
+from django_statsd.clients import statsd
from tower import ugettext as _
-from django_statsd.clients import statsd
from .utils import check_output, subprocess, VideoBase
-import logging
注意,它检测到`logging`应该在顶部,并且
`django_statsd`与第三方导入。
用法:
baked.py [文件名] [文件名..]
文件名可以是glob。也可以是多个文件名。例如:
baked.py apps/*.py mkt/*.py
Baked还接受通过管道传入的文件,例如:
git diff-index HEAD^ --name-only | baked
Baked将以JSON格式加载配置文件。它将在以下位置查找该文件
* 在当前和父目录中检查的文件
``.baked``
* 当前目录中的``.baked``
* 用户配置文件目录中的``.baked``
示例请参阅
https://gist.github.com/andymckay/5507339
配置文件包含
**order**:导入“块”的顺序列表。这允许您将导入分组到类别中。
**fallback**:如果找不到lib的类别,应该回退到什么,对于大多数情况,这将是“local”。
**from_order**:包含各个部分的字典,每个部分对应一个布尔值。如果值为false,则baked将忽略在“from”之前出现的“import”语句。默认情况下,每个类别都为true。
**modules**:包含类别和模块列表的字典。这允许baked将每个模块放入相应的类别中。
如果您想从baked中排除某个导入语句,请添加注释“#NOQA”。
指导原则
http://mozweb.readthedocs.org/en/latest/coding.html#import-statements
除了一项例外,我们忽略导入语句的顺序应该为“CONSTANT”,“Class”,“var”。只需按字母顺序排序,不区分大小写。这样更易于解析。
对于每个人来说都更容易。
大家。
配置参数
**-i**:就地更改文件,但请注意,它不会修复同一行上导入语句的顺序,例如:`from foo import XX, bar`会被当作警告,但“XX”和“bar”的顺序不会固定。
。
。
**-p**:打印baked计算出的差异。
更改
-------
0.2.1:将导入名称转换为小写,例如:“import StringIO”在“import os”之后。
。
0.2:这是一个向后不兼容的更改,它侧重于生成易于阅读的diff,比一些规则更容易阅读。对于一行中顺序不正确的导入语句,它仍然会打印导入顺序,但不会尝试修复它。
。
。
。
指南。
示例:
[baked] zamboni $ p ~/sandboxes/baked/baked.py lib/video/ffmpeg.py -p
lib/video/ffmpeg.py:9: 检查输出,子进程,VideoBase的顺序错误
--- /Users/andy/sandboxes/zamboni/lib/video/ffmpeg.py 2014-05-23 16:11:56.000000000 -0700
+++ /var/folders/15/3crpnr7j4sj75xynpsqkqbr00000gp/T/tmpXvc_Ml.py 2014-05-23 16:12:11.000000000 -0700
@@ -1,14 +1,14 @@
import logging
+import logging
import re
import tempfile
from django.conf import settings
+from django_statsd.clients import statsd
from tower import ugettext as _
-from django_statsd.clients import statsd
from .utils import check_output, subprocess, VideoBase
-import logging
注意,它检测到`logging`应该在顶部,并且
`django_statsd`与第三方导入。
用法:
baked.py [文件名] [文件名..]
文件名可以是glob。也可以是多个文件名。例如:
baked.py apps/*.py mkt/*.py
Baked还接受通过管道传入的文件,例如:
git diff-index HEAD^ --name-only | baked
Baked将以JSON格式加载配置文件。它将在以下位置查找该文件
* 在当前和父目录中检查的文件
``.baked``
* 当前目录中的``.baked``
* 用户配置文件目录中的``.baked``
示例请参阅
https://gist.github.com/andymckay/5507339
配置文件包含
**order**:导入“块”的顺序列表。这允许您将导入分组到类别中。
**fallback**:如果找不到lib的类别,应该回退到什么,对于大多数情况,这将是“local”。
**from_order**:包含各个部分的字典,每个部分对应一个布尔值。如果值为false,则baked将忽略在“from”之前出现的“import”语句。默认情况下,每个类别都为true。
**modules**:包含类别和模块列表的字典。这允许baked将每个模块放入相应的类别中。
如果您想从baked中排除某个导入语句,请添加注释“#NOQA”。
指导原则
http://mozweb.readthedocs.org/en/latest/coding.html#import-statements
除了一项例外,我们忽略导入语句的顺序应该为“CONSTANT”,“Class”,“var”。只需按字母顺序排序,不区分大小写。这样更易于解析。
对于每个人来说都更容易。
大家。
配置参数
**-i**:就地更改文件,但请注意,它不会修复同一行上导入语句的顺序,例如:`from foo import XX, bar`会被当作警告,但“XX”和“bar”的顺序不会固定。
。
。
**-p**:打印baked计算出的差异。
更改
-------
0.2.1:将导入名称转换为小写,例如:“import StringIO”在“import os”之后。
。
0.2:这是一个向后不兼容的更改,它侧重于生成易于阅读的diff,比一些规则更容易阅读。对于一行中顺序不正确的导入语句,它仍然会打印导入顺序,但不会尝试修复它。
。
。
。