Тип аннотации с несколькими типами в ** kwargs

Я пытаюсь использовать type annotations Python с абстрактным классом. Моя функция __init__ выглядит так:

 from abc import ABCMeta class SomeClass(object, metaclass=ABCMeta): def __init__(self, *args, **kwargs): print("Initiating %s object.", self.__class__.__name__) self.username = kwargs['data'] assert isinstance(self.username, str) is_premioum = kwargs.get('premioum', False) self.money_investmant = kwargs.get('investmant') if isinstance(self.money_investmant, str): self.money_investmant = float(self.money_investmant) 

Как вы можете видеть, kwargs может содержать аргументы из нескольких типов типов – float , bool и str .

Теперь я пытаюсь написать аннотацию типа для функции, которая выглядит так:

 def __init__(self, *args, **kwargs: Union[bool, str, float]) -> None: 

Но моя IDE PyCharm предупреждает меня:

За исключением типа «Интеграл», вместо этого «str»

А также:

Не удается найти ссылку «get» в bool | str | поплавок»

Я делаю что-то неправильно?

Как написать аннотацию типа для kwargs, если она содержит аргументы из нескольких типов?

Посмотрите эту ошибку и эту ошибку на трекер проблемы для PyCharm. Это, по-видимому, проблема с контрольной панелью PyCharm; mypy (еще один тип проверки для Python) не жалуется, когда я выполняю аналогичный код.

Для этого уже есть исправление и, по-видимому, доступно в сборке 171.2014.23 . До тех пор я предполагал, что Any будет достаточным для временного обходного пути, чтобы заставить контролер перестать жаловаться.