Skip to content

Tuple[...] is allowed since 3.11+ (gh-31021)#96792

@sobolevn

Description

@sobolevn

Before TypeVarTuple support was megred, this is what happened when Tuple[...] was used:

Python 3.10.0 (default, Nov 1 2021, 10:24:06) [Clang 11.0.0 (clang-1100.0.33.16)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> from typing import Tuple >>> Tuple[...] Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/Users/sobolev/.pyenv/versions/3.10.0/lib/python3.10/typing.py", line 309, in inner return func(*args, **kwds) File "/Users/sobolev/.pyenv/versions/3.10.0/lib/python3.10/typing.py", line 1210, in __getitem__ params = tuple(_type_check(p, msg) for p in params) File "/Users/sobolev/.pyenv/versions/3.10.0/lib/python3.10/typing.py", line 1210, in <genexpr> params = tuple(_type_check(p, msg) for p in params) File "/Users/sobolev/.pyenv/versions/3.10.0/lib/python3.10/typing.py", line 173, in _type_check raise TypeError(f"{msg} Got{arg!r:.100}.") TypeError: Tuple[t0, t1, ...]: each t must be a type. Got Ellipsis. 

Since 3.11 it is allowed:

Python 3.12.0a0 (heads/main-dirty:a36235d5c7, Sep 11 2022, 12:23:24) [Clang 11.0.0 (clang-1100.0.33.16)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> from typing import Tuple >>> Tuple[...] typing.Tuple[...] 

What should we do?

  1. Keep this as-is, provide a test that this is allowed (I don't know why anyone would use tuple[...])
  2. Make sure that it is still an error with newer version: fix regression and add a test case

In both case I would like to send a PR :)

Related:

CC @JelleZijlstra and @Fidget-Spinner

Metadata

Metadata

Labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions