title: Variadic generic type alias
body: <p>I'm writing a python typing stub for use with mypy. There are a lot of functions that take callback parameters of the form <code>Callable[[*foo], Any]</code>, where <code>*foo</code> represents zero or more types. I would like to be able to use a generic type alias to reduce repetition.</p>
  
  <p>Generic type aliases are documented <a href="https://mypy.readthedocs.io/en/latest/generics.html#generic-type-aliases" rel="nofollow noreferrer">here</a>, but I don't see how it would be possible to have a list of types as a parameter.</p>
  
  <p>I know that this can be done with a concrete number of arguments:</p>
  
  <pre><code>T = TypeVar('T')
  Callback0 = Callable[[], Any]
  Callback1 = Callable[[T], Any]
  
  def foo(f: Callback0): ...
  def bar(f: Callback1[str]): ...
  </code></pre>
  
  <p>What I'd like to declare instead is something like:</p>
  
  <pre><code>def foo(f: Callback[]): ...
  def bar(f: Callback[str]): ...
  </code></pre>
  
  <p>If it matters, the code is for Python 3.3, and I'm running mypy with Python 3.7.</p>