mypy не обнаруживает ошибку базового типа

С питоном 3.5.1. и текущая установка mypy с использованием git, mypy помечает ошибки 1 и 2, но не сообщает об ошибке 3

Что я делаю не так, или это баг, или это известная проблема?

import typing

def test_ordered_dict(od: typing.Dict[str,int]) -> typing.Dict[str,int]:
    return 1   #type error 1

a = test_ordered_dict(1)   #type error 2

def test_me():
    a = test_ordered_dict(1)  # type error 3 is not reported

person Tim Richardson    schedule 13.01.2016    source источник


Ответы (1)


Мое понимание из документов: http://mypy.readthedocs.org/en/latest/basics.html заключается в том, что mypy будет проверять вещь (модуль, функцию и т. д.), только если ей указано, что она должна это проверять (путем импортирования ввода на уровне модуля или аннотирования функции).

Таким образом, 1 проверяется, потому что он находится в типизированной функции, 2 проверяется, поскольку типизация импорта указывает, что ваш модуль типизирован и находится в области модуля, но 3 находится в области действия нетипизированной функции, поэтому он игнорируется.

person Macha    schedule 17.01.2016
comment
Вы можете использовать --check-untyped-defs, чтобы поймать эту ошибку. - person dpercy; 02.05.2016
comment
Ссылка, кажется, мертва. - person stgatilov; 21.02.2019