Mypy使用--strict-optional分配给任何错误

时间:2018-04-04 16:10:02

标签: python types mypy

我有两个功能。一个返回混合的东西,所以我的返回类型为Dict[str, Any]。第一个函数调用另一个返回类型为Dict[str, str]的函数。该结果包含在第一个函数的返回字典中。这对我来说似乎很好。这不适合Any吗? 但是mypy抱怨说,example.py:12: error: Incompatible types in assignment (expression has type "Dict[str, str]", target has type "Union[Dict[<nothing>, <nothing>], bool, str, None]")

您可以按如下方式测试此最小示例: $ mypy --strict-optional example.py

from typing import Dict, Any


def function_one(variable: Dict[str, str]) -> Dict[str, Any]:
    result = {
        'this': None,
        'email': variable['eggs'],
        'allowed': False,
        'more_stuff': {}
    }
    response_two = function_two(variable)
    result['more_stuff'] = response_two
    return result


def function_two(stuff: Dict[str, str]) -> Dict[str, str]:
    result = {
        'one': stuff['spam']
    }
    return result

当我遗漏--strict-optional标志时,我没有收到错误,但我想将其留在,docs& #34;此标志将在不久的将来成为默认值。&#34;

仔细阅读文档后,我认为将function_one的返回类型更改为Dict[str, Optional[Any]]可能会解决问题,但我仍然会遇到相同的mypy错误。

0 个答案:

没有答案