title: Type annotation with multiple types in **kwargs
body: <p>I'm trying out using Python's <code>type annotations</code> with abstract class.
  My <code>__init__</code> function looks like this:</p>
  
  <pre><code>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)
  </code></pre>
  
  <p>As you can see, <code>kwargs</code> could contain arguments from a several number of types- <code>float</code>, <code>bool</code> and <code>str</code>.</p>
  
  <p>Now, I am trying to write the type annotation for the function, that looks like this:</p>
  
  <pre><code>def __init__(self, *args, **kwargs: Union[bool, str, float]) -&gt; None:
  </code></pre>
  
  <p>But my <code>PyCharm</code> IDE alerts me:</p>
  
  <blockquote>
    <p>Except type 'Integral', got 'str' instead</p>
  </blockquote>
  
  <p>And:</p>
  
  <blockquote>
    <p>Cannot find referance 'get' in bool | str | float'</p>
  </blockquote>
  
  <p>Am I doing something wrong? </p>
  
  <p>How should I write the type annotation for kwargs if it contains arguments from multiple types?</p>