Есть ли способ для mypy
поддержки проверки экземпляров из в функции?
Мне известна поддержка isinstance
для проверки сложных типов . У меня есть следующий модуль в качестве минимального примера для целей иллюстрации:
from typing import Any, Union
def is_str(argument: Any) -> bool:
return True if isinstance(argument, str) else False
def my_string_function(input_str: str):
print(input_str)
def my_string_and_int_function(argument: Union[str, int]):
if is_str(argument):
my_string_function(argument)
if isinstance(argument, str):
my_string_function(argument)
Теперь, если я запускаю mypy, я получаю следующую ошибку для first (не второго!) Вызова функции my_string_function
изнутри my_string_and_int_function
:
ошибка: аргумент 1 для "my_string_function" имеет несовместимый тип "Union [str, int]";ожидаемая "str"
Возможно, это больше подходит для системы отслеживания проблем mypy, но, поскольку я не уверен, я подумал сначала опубликовать ее здесь.