跳转到主要内容

flake8插件,用于检查类型导入是否得到正确保护

项目描述

build status pre-commit.ci status

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 查看哈希值)

上传时间

构建分布

flake8_typing_imports-1.15.0-py2.py3-none-any.whl (7.6 kB 查看哈希值)

上传时间 Python 2 Python 3

由支持

AWSAWS云计算和安全赞助商DatadogDatadog监控FastlyFastlyCDNGoogleGoogle下载分析MicrosoftMicrosoftPSF赞助商PingdomPingdom监控SentrySentry错误日志StatusPageStatusPage状态页面