Hi all, I wanted to bring into your attention about enabling support for generic TypedDicts. I am coming in from the conversation at: [WIP] Adding support for generic TypedDicts (https://github.com/microsoft/pyright/pull/1390) The TypedDict PEP 589 does not necessarily talk about generics. And the runtime TypedDict implementation does not support it either. Traceback (most recent call last): File "testing.py", line 4, in <module> class TD(Generic[T], TypedDict): File "/usr/lib/python3.9/typing.py", line 1894, in __new__ raise TypeError('cannot inherit from both a TypedDict type ' TypeError: cannot inherit from both a TypedDict type and a non-TypedDict base class Here I would like to discuss here if the implementation is done this way for a good reason (may be due to structural subtyping complications) and if there might still be a way to move forward and add generic support for TypedDicts. As you can see below there is a natural syntax for it (in both ways) and have backward compatibility. from typing import TypedDict, TypeVar, Generic, ListT = TypeVar("T") class TD(Generic[T], TypedDict): f1: List[T] R = TypeVar("R") FileCachedData = TypedDict('FileCachedData', {'mtime': float, 'size': int, 'value': R}) def test_td(aa: TD[T], bb: TD[T]): return aa["f1"], bb["f1"] td1 = test_td({"f1": ["foo"]}, {"f1": ["bar"]})reveal_type(td1) # info: Type of "td1" is "tuple[List[str], List[str]]" test_td({"f1": ["foo"]}, {"f1": [1]}) # error class TD2(TD[T]): f2: T td21: TD2[str] = { 'f1':["far"], 'f2':"boo" }reveal_type(td21["f1"]) # info: Type of "td21["f1"]" is "List[str]" td22 = TD2( f1=["far"], f2="boo" )reveal_type(td22) # info: Type of "td22" is "TD2[str]" td23: TD2[str] = { 'f1':[0], 'f2':"boo" } # error Thank you, Samodya