Skip to content

TypeVarTuple.__typing_prepare_subst__ does not work as intented #96385

Closed
@sobolevn

Description

@sobolevn

Right now there's an uncovered branch in TypeVarTuple.__typing_prepare_subst__:

Снимок экрана 2022-08-29 в 15 16 14

And it looks like there's a bug in it, these two lines:

        for param in enumerate(params[typevartuple_index + 1:]):
            if isinstance(param, TypeVarTuple):

This if's body will never be executed, because enumerate always returns tuple[int, T], it is never TypeVarTuple.

So, I think that we need to remove enumerate() call here and add a test like:

>>> from typing import Generic, TypeVarTuple
>>> V = TypeVarTuple('V')
>>> T = TypeVarTuple('T')
>>> class My(Generic[*T]): pass
... 
>>> My[*T, *V][*V]
TypeError: More than one TypeVarTuple parameter in __main__.My[*T, *V]

I will send a PR 😉

Metadata

Metadata

Assignees

Labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions