我们在Transcrypt Python to JavaScript编译器中使用mypy作为typechecker。 由于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与应用程序捆绑在一起吗?