Chr*_*nds 2 python boolean type-hinting python-3.x mypy
https://github.com/asottile/pyupgrade/blob/fecacc91e57c224a0bd2564579ef01238650126c/pyupgrade.py#L53
if False: # pragma: no cover (mypy)
from typing import Type
if sys.version_info >= (3,):
AsyncFunctionDef = ast.AsyncFunctionDef
else:
AsyncFunctionDef = ast.stmt
Run Code Online (Sandbox Code Playgroud)
提交没有透露:https : //github.com/asottile/pyupgrade/commit/fecacc91e57c224a0bd2564579ef01238650126c#diff-8213eba6a28bcc759225cd8cf49b2fd1
False 在 Python 2(可以重新定义)中是真实的,但在 Python 3 中不是。这可能是一个笑话,或者正在进行中,或者注释掉代码的方式,但这是一个非常成熟的工具 - 我是遗漏了什么?
的值AsyncFunctionDef在运行时从不需要,只有mypy在两个 Python-2 兼容的类型提示中(在第 1298 和 1318 行)。这if False可以防止分配在运行时发生,但让我们mypy看看在类型检查期间使用的正确基础类型。(它还可以防止在 Python 2 下ImportError尝试导入typing模块时引发。)
这将是更清晰的使用typing.TYPE_CHECKING(其值是False在运行时,但是True当mypy运行)的,除了typing.TYPE_CHECKING是也是在Python 2不可用。
if False因为pyupgrade支持if typing.TYPE_CHECKINGpython3.5.0-3.5.2而没有--你可以在flake8-typing-importstyping.TYPE_CHECKING中找到更多信息(我也是这个flake8插件的作者)
在 3.5.3+ 中,并且typing向后移植(在 <3.5 中可用)TYPE_CHECKING可用
免责声明:我是 pyupgrade 的作者