title: Correct usage of typing types for args and kwargs?
body: <pre><code>def callable_runner(a_callable: Callable[..., Any], args: Sequence[Any]=None, kwargs: Mapping[Any, Any]=None) -&gt; None:
      if args is None:
          args = []
      if kwargs is None:
          kwargs = {}
      a_callable(*args, **kwargs)
  </code></pre>
  
  <p>I feel like this is probably a correct usage, but I'm not sure because I haven't completely grasped types yet.</p>
  
  <p>What is making me doubt myself is Pycharm gives me a warning on <code>*args</code> that says <code>Expected an iterable, got Sequence | None | list</code> and a warning on <code>**kwargs</code> that says <code>Expected a dictionary, got Mapping | None | dict</code>.  </p>
  
  <p>I lean towards PyCharm being wrong to raise a warning here, but I'm not very confident.</p>