2016-01-13 3 views
2

С python 3.5.1. и текущая установка mypy с помощью мерзавца, mypy флаги ошибок 1 & 2, но не сообщает 3mypy не обнаруживает ошибку основного типа

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

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 

ответ

2

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

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

+1

Вы можете использовать '--check-untyped-defs', чтобы поймать эту ошибку. – dpercy

 Смежные вопросы

  • Нет связанных вопросов^_^