cpython
cpython copied to clipboard
TypeVarTuple and ParamSpec don't work together
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
cc @mrahtz @serhiy-storchaka
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.
Thank you for taking care of this, Serhiy!