防止平台相关 python 代码中的 mypy 错误

Prevent mypy errors in platform dependent python code

我有一些类似于下面的 python 代码:

import platform
if platform.system() == "Windows":
    import winreg
    import win32api

def do_cross_platform_thing() -> None:
    if platform.system() == "Windows":
        # do some overly complicated windows specific thing with winreg and win32api
    else:
        # do something reasonable for everyone else

现在,在 linux 上,mypy 抱怨

有什么合理的方法可以解决这个问题吗?我目前的解决方案是

有没有更好的解决方案?

好的,按照@SUTerliakov 的建议检查 Docs 之后, 看来我必须改变我的

if platform.system() == "Windows"

对此,语义相同检查:

if sys.platform == "win32"

只有第二个版本 触发了一些神奇的内置 mypy 特例 将此标识为平台检查并忽略分支 适用于其平台。