Почему тип "Set [str]" рассматривается PyCharm как несовместимый, когда разрешено "set"? - PullRequest
1 голос
/ 12 февраля 2020

У меня есть простая функция, которая преобразует набор строк в словарь:

def decoder(text)
    return dict(enumerate(text))

Я хочу убедиться, что с подсказкой типа разработчики передают set строк:

def decoder(text: Set[str]) -> Dict[int, str]:
    return dict(enumerate(text))

Это вызывает следующее предупреждение в PyCharm:

Неожиданный тип (ы): (enumerate [str]) Возможные типы: (Mapping) (Iterable [Tuple [Any, Any]])

Похоже, что dict(...) не соответствует типу enumerate[str], а PyCharm жалуется, потому что это недопустимый тип для словаря. Что меня смущает, потому что перечисление набора должно привести к кортежу правильного типа.

Предупреждение исчезнет, ​​если я просто введу подсказку, что text является set:

def decoder(text: set) -> Dict[int, str]:
    return dict(enumerate(text))

Вышесказанное работает, но ничто не предупреждает разработчиков не передавать Set[int] или другие неожиданные типы.

Что я могу здесь делать неправильно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...