跳转到主要内容

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

项目描述

https://img.shields.io/github/actions/workflow/status/adamchainz/flake8-no-pep420/main.yml?branch=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 pre-commit

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

需求

支持Python 3.8至3.12。

安装

首先,使用

pip

安装

python -m pip install flake8-no-pep420

其次,如果您定义了Flake8的

select

设置,请向其中添加

INP

前缀。否则,插件应默认激活。


正在 linting Django 项目? 查看我关于提升 Django 开发体验的书籍 Boost Your Django DX,它涵盖了Flake8和其他许多代码质量工具。


理由

隐式命名空间包是Python文件目录,没有

__init__.py

。它们是有效且可导入的,但会破坏许多工具,例如

在大多数情况下,工具会静默失败,这可能导致虚假的安全感

  • 测试看起来合法,但从未运行

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

  • 类型永远不能被检查

PEP-420的算法非平凡,这可能是为什么此类工具尚未(目前)实现它的原因。

规则

INP001:文件是隐式命名空间包的一部分。需要添加__init__.py吗?

flake8-no-pep420将在目录中缺少__init__.py文件的任何文件的 第一行触发此错误。

通常项目有一些根文件不在包中,对于这些文件不应添加__init__.py文件。例如,Django项目通常在其仓库根目录中有一个manage.py文件。在这些情况下,您可以忽略INP001错误。可以使用#noqa: INP001来忽略行内错误,但如果第一行是如Django的manage.py中的shebang,则不可能。在这种情况下,最好使用Flake8的按文件忽略选项,例如在setup.cfg中。

[flake8]
# ...
per-file-ignores =
    manage.py:INP001

项目详情


下载文件

下载您平台上的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分发

flake8_no_pep420-2.7.0.tar.gz (5.3 kB 查看哈希值)

上传时间

构建分发

flake8_no_pep420-2.7.0-py3-none-any.whl (4.7 kB 查看哈希值)

上传时间 Python 3

由以下支持

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