检查Cython文件
项目描述
cython-lint
flake8过去所做的所有事情(意外),以及更多。
一个工具和预提交钩子,用于检查Cython文件。
使用情况
以下是一些使用cython-lint
的主要项目 - 您的缺失吗?请随意打开一个pull request!
- ansible-pylibssh
- arrow
- CuPy
- frozenlist
- open library
- pandas
- pymatgen
- PyRFC
- RAPIDS cuspatial
- RAPIDS cudf
- RAPIDS 内存管理器
- sagemath/sage
- scikit-image
- scikit-learn
- scipy
- spaCy
- yarl
- yt
安装
$ pip install cython-lint
作为预提交钩子的使用
有关说明,请参阅pre-commit
示例 .pre-commit-config.yaml
- repo: https://github.com/MarcoGorelli/cython-lint
rev: v0.16.2
hooks:
- id: cython-lint
- id: double-quote-cython-strings
命令行示例
$ cython-lint my_file_1.pyx my_file_2.pyx
my_file_1.pyx:54:5: 'get_conversion_factor' imported but unused
my_file_2.pyx:1112:38: 'mod' defined but unused (try prefixing with underscore?)
my_file_3.pyx:4:9: dangerous default value!
my_file_3.pyx:5:9: comma after base type in definition
配置
以下配置选项可用
- 通过包含一个
# no-cython-lint
注释来排除行(类似于flake8
中的# noqa
);
以及以下命令行参数
--max-line-length
用于控制pycodestyle使用的最大行长度;--no-pycodestyle
如果您不想进行pycodestyle检查;--ignore
如果您想忽略一些特定的pycodestyle检查;--files
传递一个Regex模式,用于匹配要包含的文件;--exclude
传递一个Regex模式,用于匹配要排除的文件。
配置可以在项目根目录的pyproject.toml
文件中按项目设置。以下是一个示例pyproject.toml
[tool.cython-lint]
max-line-length = 88
ignore = ['E503', 'E504']
exclude = 'my_project/excluded_cython_file.pyx'
实现了哪些检查?
- 带元组的断言语句(总是为真...)
- 基类型定义后跟逗号(例如:
cdef ndarray, arr
) - 常量之间的比较
- 危险的默认值
- 字典键重复
- 字典键变量重复
- 无占位符的f-string
- 带有元组条件的if语句(总是真...)
- 延迟绑定闭包 https://docs.python-guide.org/writing/gotchas/#late-binding-closures
- 无意义的字符串语句
pycodestyle
吹毛求疵(您可以使用--no-pycodestyle
关闭)- 集合中的重复元素
- 使用重复字符的
.strip
、.rstrip
或.lstrip
- 不必要的列表索引查找
- 不必要的导入别名
- 定义但未使用的变量
- 导入但未使用的变量
此外,还实现了以下自动修复程序
- 双引号Cython字符串(用双引号替换单引号,如
black
格式化器所做的那样)
更多即将到来!欢迎提出建议!
项目详情
下载文件
下载您平台上的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。
源分布
cython_lint-0.16.2.tar.gz (26.4 kB 查看哈希值)
构建分布
cython_lint-0.16.2-py3-none-any.whl (12.7 kB 查看哈希值)