一个 flake8 插件,用于禁止 PEP-420 隐式命名空间包。
项目描述
一个flake8插件,用于禁止PEP-420隐式命名空间包。
要求
支持 Python 3.7 到 3.11。
安装
首先,使用pip安装:
python -m pip install flake8-no-pep420
其次,如果您定义了 Flake8 的选择设置,请为其添加INP前缀。否则,该插件应默认处于活动状态。
整理一个 Django 项目? 查看我的书Boost Your Django DX,它涵盖了 Flake8 和许多其他代码质量工具。
基本原理
隐式命名空间包是没有__init__.py的 Python 文件目录。它们是有效且可导入的,但它们破坏了许多工具,例如:
unittest 测试发现(以及扩展,Django 的测试运行器)
在大多数情况下,工具会默默地失败,这可能会导致错误的安全感:
测试可能看起来合法但从不运行
代码可能未经测试但不会出现在覆盖率统计中
类型可能永远不会被检查
PEP-420 的算法非常重要,这可能是此类工具(尚未)实现它的原因。
规则
INP001:文件是隐式命名空间包的一部分。添加 __init__.py?
flake8-no-pep420 将在没有__init__.py文件的目录中的任何文件的第一行触发此操作。
通常项目有一些不在包中的根文件,不应为其添加__init__.py文件。例如,Django 项目通常在其存储库的根目录中有一个manage.py文件。在这些情况下,您可以忽略INP001错误。可以使用# noqa: INP001来忽略内联错误,但如果第一行是shebang则这是不可能的,例如在 Django 的manage.py中。在这种情况下,最好使用 Flake8 的per-file-ignores 选项,例如在setup.cfg中:
[flake8]
# ...
per-file-ignores =
manage.py:INP001
项目详情
关
flake8_no_pep420-2.3.0 -py3-none-any.whl 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | ccba3efa05c50b1c2712d78807cca81e563ab571d6b3bcb90228e87388704cf5 |
|
| MD5 | 1471fecf54333a4c5133a2abfe31fa29 |
|
| 布莱克2-256 | ce0f794be60e862a247c5765f04e346a997cf06d109195f673cb9edec0eed61d |