跳转到主要内容

检查Cython文件

项目描述

Build Status Coverage pre-commit.ci status

cython-lint

flake8过去所做的所有事情(意外),以及更多。

一个工具和预提交钩子,用于检查Cython文件。

使用情况

以下是一些使用cython-lint的主要项目 - 您的缺失吗?请随意打开一个pull request!

安装

$ 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 查看哈希值

上传时间: Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面