проверка типов ключей в типе mypy Dict

Недавно я начал использовать mypy. Есть ли способ проверить типы ключей Dic в mypy.

Например).

from __future__ import annotations
from typing import List, Set, Dict, Tuple, Optional 
import sys


adj_list: Dict[int,List[int]] = {} 

if "x" not in adj_list.keys():
    print('Not found') 

Приведенный выше код не показывает никаких предупреждений mypy. В следующем коде я сравниваю строковый объект с ключом Dictionary, который может содержать только ключ int. Есть ли способ, которым mypy может предупредить об этом недопустимом сравнении


person Krish Mahajan    schedule 19.09.2019    source источник


Ответы (1)


Да - используйте флаг --strict-equality. Если вы включите этот флаг, mypy выдаст следующую ошибку:

test.py:8: error: Non-overlapping container check (element type: "str", container item type: "int")

Дополнительную информацию об этом флаге можно найти в нижней части страницы Разное раздел параметров строгости в документации mypy о поддерживаемых им флагах командной строки.

Есть еще много других флагов строгости, которые вы можете включить, если вы предпочитаете более строгую проверку типов - использование флага --strict позволит активировать большинство из них. (Хотя не флаг --strict-equality, который нужно настраивать отдельно.

person Michael0x2a    schedule 19.09.2019