跳到内容

unquoted-type-alias (TC007)

添加于 0.10.0 · 相关议题 · 查看源码

源自 flake8-type-checking 代码检查器。

有时提供修复。

作用

检查 PEP 613 显式类型别名是否包含运行时不可用的符号引用。

为什么这不好?

引用仅用于类型检查的符号会导致运行时出现 NameError

示例

from typing import TYPE_CHECKING, TypeAlias

if TYPE_CHECKING:
    from foo import Foo
OptFoo: TypeAlias = Foo | None

建议改为

from typing import TYPE_CHECKING, TypeAlias

if TYPE_CHECKING:
    from foo import Foo
OptFoo: TypeAlias = "Foo | None"

修复安全性

该规则的修复目前被标记为不安全,因为运行时类型库可能会以无法在静态分析期间确定的方式访问/解析类型别名,且依赖于类型别名不包含任何前向引用。

参考