Skip to content

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

Closed as not planned
Closed as not planned
@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