New submission from Serhiy Storchaka <storchaka+cpyt...@gmail.com>:
If the user generic with ParamSpec parameter substituted with a parametrised list containing TypeVar, that TypeVar cannot be substituted. >>> from typing import * >>> T = TypeVar("T") >>> P = ParamSpec("P") >>> class X(Generic[P]): ... f: Callable[P, int] ... >>> Y = X[[int, T]] >>> Y __main__.X[(<class 'int'>, ~T)] >>> Y[str] Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/home/serhiy/py/cpython/Lib/typing.py", line 309, in inner return func(*args, **kwds) ^^^^^^^^^^^^^^^^^^^ File "/home/serhiy/py/cpython/Lib/typing.py", line 1028, in __getitem__ _check_generic(self, params, len(self.__parameters__)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/serhiy/py/cpython/Lib/typing.py", line 228, in _check_generic raise TypeError(f"{cls} is not a generic class") ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ TypeError: __main__.X[(<class 'int'>, ~T)] is not a generic class Expected result equal to X[[int, str]]. ---------- components: Library (Lib) messages: 398694 nosy: gvanrossum, kj, serhiy.storchaka priority: normal severity: normal status: open title: Substitution does not work after ParamSpec substitution of the user generic with a list of TypeVars type: behavior versions: Python 3.10, Python 3.11 _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue44802> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com