Skip to main content

一个 flake8 插件,用于禁止 PEP-420 隐式命名空间包。

项目描述

https://img.shields.io/github/workflow/status/adamchainz/flake8-no-pep420/CI/main?style=for-the-badge https://img.shields.io/pypi/v/flake8-no-pep420.svg?style=for-the-badge https://img.shields.io/badge/code%20style-black-000000.svg?style=for-the-badge 预提交

一个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 文件目录。它们是有效且可导入的,但它们破坏了许多工具,例如:

在大多数情况下,工具会默默地失败,这可能会导致错误的安全感:

  • 测试可能看起来合法但从不运行

  • 代码可能未经测试但不会出现在覆盖率统计中

  • 类型可能永远不会被检查

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.tar.gz (5.3 kB 查看哈希)

已上传 source

内置分布

flake8_no_pep420-2.3.0-py3-none-any.whl (4.7 kB 查看哈希

已上传 py3