Как аннотировать изменяемые структуры для mypy ⇐ Python

Программы на Python
Anonymous
Как аннотировать изменяемые структуры для mypy

Сообщение Anonymous »

У меня есть этот код

Код: Выделить всё

def my_foo(x: dict[str, int | float], some_condition: bool) -> None:
if some_condition:
x['the_int'] = 1
else:
x['the_float'] = 1.0

my_dict = {'some_int': 2}

my_foo(my_dict, True)
mypy (по понятным причинам) жалуется

ошибка: аргумент 1 в "my_foo" имеет несовместимый
тип " dict[str, int]"; ожидается "dict[str, int | float]" [arg-type]
примечание: "Dict" является инвариантным - см.
https://mypy.readthedocs.io/en/stable/common_issues. html#variance
src\type_test.py:23: примечание: вместо этого рассмотрите возможность использования «Сопоставления», которое
ковариантно для типа значения

Я пытался сделать подсказку типа с помощью MutableMapping, но безрезультатно:

ошибка: аргумент 1 для «my_foo» имеет несовместимый тип "dict[str, int]";
ожидается "MutableMapping[str, int | float]"


Подробнее здесь: https://stackoverflow.com/questions/790 ... s-for-mypy

Вернуться в «Python»