如何注释采用可变长度元组的函数?(可变元组类型注释)

我有一个函数,它将不同长度的元组作为参数:

from typing import Tuple


def process_tuple(t: Tuple[str]):
# Do nasty tuple stuff

process_tuple(("a",))
process_tuple(("a", "b"))
process_tuple(("a", "b", "c"))

当我像上面提到的那样注释函数时,我收到这些错误消息

fool.py:9: error: Argument 1 to "process_tuple" has incompatible type "Tuple[str, str]"; expected "Tuple[str]"
fool.py:10: error: Argument 1 to "process_tuple" has incompatible type "Tuple[str, str, str]"; expected "Tuple[str]"
process_tuple真正适用于元组,我将它们用作可变长度的不可变列表。我在互联网上没有找到关于这个主题的任何共识,所以我想知道我应该如何注释这种输入。

已邀请:
我们可以像这样使用...文字(又名Ellipsis)注释可变长度的同构元组:

def process_tuple(t: Tuple[str, ...]):
...
之后,错误应该消失。

从文档:

要指定同构类型的可变长度元组,请使用文字省略号,例如Tuple[int, ...]. 一个平原Tuple相当于Tuple[Any, ...],反过来又相当于 tuple。

要回复问题请先登录注册