一个用于禁止PEP-420隐式命名空间包的flake8插件。
项目描述
一个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
。它们是有效且可导入的,但会破坏许多工具,例如unittest 测试发现(以及由此扩展的 Django 的测试运行器)
Mypy(不带其 –namespace-packages 选项)
在大多数情况下,工具会静默失败,这可能导致虚假的安全感
测试看起来合法,但从未运行
代码可能未经测试,但不会出现在覆盖率统计中
类型永远不能被检查
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的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | a1b6db4de355b87f8189714e68785a7c6a2d61d94f3e937b6cee336953f7d703 |
|
MD5 | b498baf7bcfb44bc98d011df4af2ef4e |
|
BLAKE2b-256 | 1a568982259cb646a7f13ebe7781db7227e86291cf64c08b3eb9aba247b25901 |
关闭
flake8_no_pep420-2.7.0-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 018bbe0fba039444689d02a0857310b62b90ff9bf737aff27e0b847ec7eb9ba3 |
|
MD5 | 3d1cb8f1fbcdac47d045f9f7d5bf2149 |
|
BLAKE2b-256 | 602e16f8f320a662c14132b67f11601fdd3a5834eed9abcbca45e29b7f0df589 |