mypy’s current behaviour is a special case, but it’s in response to one of the most popular mypy issues of all time. I don’t know that I’d be willing to remove it entirely. I don’t know if this feels any better to you, but for what it’s worth I would be willing to e.g. remove the (x: int, *args: Any, **kwargs: Any)
→ Concatenate[int, ...]
bit, and only keep the core (*args: Any, **kwargs: Any)
→ ...
bit. Like Guido said on that mypy issue, this might be a case where practicality beats purity.
(*args: ..., **kwargs: ...)
is an interesting suggestion. It would still be a breaking change for mypy users and it suggests a different semantics to me (maybe something like this thread), but I’m curious to hear what other folks think.