Skip to content

tuple expression gives different result than equivalent TypeVarTuple usage. #19665

@randolf-scholz

Description

@randolf-scholz

https://mypy-play.net/?mypy=latest&python=3.12&flags=warn-unreachable&gist=0d1eeedbc631fa1d636df8e8dec1a29b

def as_tuple[*Ts](*args: *Ts) -> tuple[*Ts]: return args

def test(one: int, many: tuple[int, ...]) -> None:
    reveal_type( (one, *many, one) )           # "builtins.tuple[builtins.int, ...]"
    reveal_type( as_tuple(one, *many, one) )   # "tuple[builtins.int, Unpack[builtins.tuple[builtins.int, ...]], builtins.int]"

Both of these should infer "tuple[int, *tuple[int, ...], int]"

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugmypy got something wrong

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions