如何将mypy的“冻结”版本与应用程序捆绑在一起

时间:2017-02-06 17:19:45

标签: mypy transcrypt

我们在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与应用程序捆绑在一起吗?

0 个答案:

没有答案