我们在Transcrypt Python to JavaScript 编译器中使用 mypy 作为类型检查器。由于 mypy 仍在不断变化,我们将“冻结”版本与 Transcrypt 捆绑在一起,以防止由于 mypy 的更改而导致的不兼容。
到目前为止,我们已经将 0.4.4 版包含在 Transcrypt 安装目录的子目录中,并且运行良好。
现在我们正在尝试升级到 0.4.7,但是在检查这个简单的测试程序时:
def f (i: int) -> int:
return 'xyz'
f ('abc')
def g (i: int) -> int:
return 'xyz'
f ('abc')
我们收到以下错误消息:
test.py: error: Name '__builtins__' is not defined
test.py:1: error: Name 'int' is not defined
如果我们只使用定期安装的 mypy,一切正常,并显示以下报告:
test.py:2: error: Incompatible return value type (got "str", expected "int")
test.py:4: error: Argument 1 to "f" has incompatible type "str"; expected "int"
test.py:7: error: Incompatible return value type (got "str", expected "int")
test.py:9: error: Argument 1 to "f" has incompatible type "str"; expected "int"
似乎 mypy 需要一些设施才能位于特殊位置。我们已经尝试过该custom-typeshed-dir
选项,但没有帮助。
谁能阐明如何将 mypy 与应用程序捆绑在一起?