future-required-type-annotation (FA102)
派生自 flake8-future-annotations linter。
修复总是可用的。
作用
检查 Python 模块中使用 PEP 585 和 PEP 604 风格类型注解的情况,这些模块缺乏兼容旧 Python 版本所需的 from __future__ import annotations
导入。
为什么这不好?
在没有 from __future__ import annotations
导入的情况下使用 PEP 585 和 PEP 604 风格的注解,将会在低于 3.9 和 3.10 的 Python 版本上引起运行时错误。
通过添加 __future__
导入,解释器将不再在评估时解释注解,从而使代码与过去和未来的 Python 版本兼容。
此规则遵守 target-version
设置。例如,如果您的项目目标版本是 Python 3.10 及以上,则添加 from __future__ import annotations
不会影响您利用 PEP 604 风格的联合类型(例如,将 Optional[str]
转换为 str | None
)的能力。因此,如果您的项目目标版本是 Python 3.9 或更低版本,此规则才会标记此类用法。
示例
建议改为
修复安全性
此规则的修复被标记为不安全,因为添加 from __future__ import annotations
可能会更改程序的语义。