flake8插件,用于检查是否正确地保护了输入导入
flake8-typing-imports的Python项目详细描述
flake8输入导入
flake8插件,用于检查输入导入是否受到适当保护
安装
pip install flake8-typing-imports
flake8代码
Code | Description |
---|---|
TYP001 | guard import by ^{ |
TYP002 | ^{ |
基本原理
不幸的是,typing
模块非常不稳定——它看到了api
3.5.0、3.5.2、3.5.3、3.5.4、3.6.0、3.6.1、3.6.2、3.7.0和3.7.2中的更改!
根据您支持的python版本,您可能需要保护
通过if TYPE_CHECKING:
(3.5.2+)或if False:
导入
导入在您支持的所有python中都不可用。
因为很难跟踪什么版本的东西发生了变化 不能总是针对python的特定补丁版本进行测试,这个插件 帮助您自动静态检查!
# default / --min-python-version 3.5.0fromtypingimportType# TYP001
# default / --min-python-version 3.5.0ifFalse:fromtypingimportType# OK!
# default / --min-python-version 3.5.0fromtypingimportoverload# TYP002
# default / --min-python-version 3.5.0importsysfromtypingimportoverload# OK!ifsys.version_info<(3,5,2):defoverload(f):returnf
# --min-python-version 3.7.0fromtypingimportTYPE_CHECKINGifTYPE_CHECKING:fromtypingimportOrderedDict# OK!
配置
这个插件只有一个配置点(超出flake8提供的配置点)
这是--min-python-version
选项。
默认情况下,此选项为3.5.0
。这包括python的所有版本
它们有typing
模块。
如果不需要,也可以在flake8配置中设置此选项 使用命令行:
[flake8]min_python_version=3.6.2
如果在setup.cfg
中为python_requires
设置了>=
,则将使用该值:
# setup.cfg setuptools metadata[options]python_requires=>=3.6
作为预提交挂钩
有关说明,请参见pre-commit。
样本.pre-commit-config.yaml
:
-repo:https://gitlab.com/pycqa/flake8rev:3.7.7hooks:-id:flake8additional_dependencies:[flake8-typing-imports==1.3.0]