cpython icon indicating copy to clipboard operation
cpython copied to clipboard

TypeVarTuple and ParamSpec don't work together

Open LeeeeT opened this issue 3 years ago • 2 comments

Bug report

The following code gives me an error:

from typing import Generic, TypeVarTuple, ParamSpec


Ts = TypeVarTuple("Ts")

P = ParamSpec("P")


class Foo(Generic[*Ts, P]):
    pass


Foo[int, str, [bytes]]
TypeError: Too many arguments for <class 'Foo'>; actual 3, expected 2

I don't see any reasons why it doesn't work with ParamSpec. I believe it should assign int, str to Ts and [bytes] to P.

Environment

  • CPython versions tested on: 3.11
  • Operating system and architecture: Linux x86_64

LeeeeT avatar Nov 10 '22 19:11 LeeeeT

cc @mrahtz @serhiy-storchaka

JelleZijlstra avatar Nov 10 '22 19:11 JelleZijlstra

Yes, such case is just not supported in the code, and it needs a nontrivial rewriting. I have found also several other similar bugs. I am working on the solution, PRs are almost ready.

serhiy-storchaka avatar Nov 11 '22 15:11 serhiy-storchaka

Thank you for taking care of this, Serhiy!

mrahtz avatar Nov 12 '22 21:11 mrahtz