Есть ли способ, чтобы mypy поддерживал проверку экземпляров внутри функции? - PullRequest
0 голосов
/ 25 октября 2019

Есть ли способ для 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, но, поскольку я не уверен, я подумал сначала опубликовать ее здесь.

...