mypy可以检测到错误的TypedDict返回类型吗?

时间:2020-02-26 20:22:20

标签: pycharm static-analysis mypy python-3.8

我正在努力使mypy能够对我的项目进行全面的工作。

from typing import TypedDict

OurDict = TypedDict('OurDict', {'x': int})

bad: OurDict = {'y': 2}  # mypy successfully marks wrong
good: OurDict = {'x': 2}  # mypy likes this


def get_bad() -> OurDict:
    return 234  # mypy successfully marks wrong


def get_good() -> OurDict:
    res = {'x': 2}
    return res  # mypy successfully marks correct


def get_should_be_bad() -> OurDict:
    return {'hello': 2, 'world': 1}  # mypy fails to see a problem

似乎mypy可以在声明为内联时检测到字典是否符合类型定义,但是在检查函数返回值时,它仅检查返回值是某种字典,而不是所需的类型。这仅仅是设计的限制,还是我做错了什么?

1 个答案:

答案 0 :(得分:0)

事实证明,mypy检测到此没有问题,但我错误地认为从venv内部键入调用mypy会在venv内部使用mypy。我必须键入python3 -m mypy才能运行正确的可执行文件。