Проблема в том, что mypy понятия не имеет, что должен содержать ваш список.Это список строк?Список целых?Что-то еще?
Когда вы делаете что-то вроде ...
response: Dict = {'foo': []}
... mypy автоматически заполнит параметры отсутствующего типа для dict с Any
, динамическимтип .Итак, вышеприведенное объявление в точности эквивалентно выполнению:
response: Dict[Any, Any] = {'foo': []}
То есть, ваш ключ может быть буквально любым (не просто строкой), а значение также может быть любым (не просто списком).
В вашем случае вам, вероятно, следует либо (a) указать ожидаемые ключи и типы значений в аннотации:
# For example:
response: Dict[str, List[str]] = {'foo': []}
... или (b) использовать TypedDict если ваш диктант более сложный.
Если вы хотите, чтобы mypy запретил вам пропускать параметры в универсальных типах (например, запрещаете делать просто response: Dict = ...
), используйте --disallow-any-generics
флаг командной строки .Вы также можете добавить эту опцию в файл конфигурации , если вы не хотите вводить флаг каждый раз, когда запускаете mypy.