flake8插件,用于检查类型导入是否得到正确保护
项目描述
flake8-typing-imports
flake8插件,用于检查类型导入是否得到正确保护
安装
pip install flake8-typing-imports
flake8代码
代码 | 描述 |
---|---|
TYP001 | 通过TYPE_CHECKING 保护导入 |
TYP002 | @overload 在<3.5.2中已损坏 |
TYP003 | Union[Match, ...] 或Union[Pattern, ...] 在<3.5.2中必须加引号 |
TYP004 | NamedTuple 在3.6.0中不支持方法 |
TYP005 | NamedTuple 在3.6.0中不支持默认值 |
TYP006 | 通过加引号保护typing 属性 |
理由
遗憾的是,typing
模块非常不稳定——它已在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中看到API更改!
根据您支持的Python版本,您可能需要通过if TYPE_CHECKING:
(3.5.2+)或if False:
来保护您的导入,如果您导入的东西在您支持的所有Python中都不可用。
由于很难跟踪哪些版本发生了更改,并且您不能总是针对特定的Python补丁版本进行测试,因此此插件可以帮助您自动进行静态检查!
# default / --min-python-version 3.5.0
from typing import Type # TYP001
# default / --min-python-version 3.5.0
if False:
from typing import Type # OK!
# default / --min-python-version 3.5.0
from typing import overload # TYP002
# default / --min-python-version 3.5.0
import sys
from typing import overload # OK!
if sys.version_info < (3, 5, 2):
def overload(f):
return f
# default / --min-python-version 3.5.0
def foo(bar: Union[Match, str]) -> None: pass # TYP003
def foo(bar: "Union[Match, str]") -> None: pass # OK!
def foo(bar: Union[Pattern, str]) -> None: pass # TYP003
def foo(bar: "Union[Pattern, str]") -> None: pass # OK!
# --min-python-version 3.6.0
class NT(NamedTuple):
x: int = 5 # TYP005
def f(self) -> int: # TYP004
return self.x + 4
# --min-python-version 3.7.0
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from typing import OrderedDict # OK!
配置
此插件有一个配置点(除flake8提供的以外),即--min-python-version
选项。
默认情况下,此选项为3.5.0
。这包括所有具有typing
模块的Python版本。
您还可以在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
示例.pre-commit-config.yaml
- repo: https://github.com/pycqa/flake8
rev: 3.7.7
hooks:
- id: flake8
additional_dependencies: [flake8-typing-imports==1.12.0]
项目详情
下载文件
下载适用于您的平台的文件。如果您不确定该选择哪个,请了解有关安装包的更多信息。
源分布
flake8_typing_imports-1.15.0.tar.gz (7.3 kB 查看哈希值)
构建分布
关闭
哈希值 for flake8_typing_imports-1.15.0-py2.py3-none-any.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 4594830f9ecfbe9c75f73de32db3db45d427e837df42bfc478bee6584a2400ec |
|
MD5 | 502dda7157371cbae2f7286d2430da07 |
|
BLAKE2b-256 | 25bbfad59bf06b5dd6f8b96571839ba7ac95b694b8322d18cdee5cff8dbaf5a4 |