gh-104600: Make type.__type_params__ writable by JelleZijlstra · Pull Request #104634 · python/cpython
def test_generic_pep695(self): class X[T](NamedTuple): x: T T, = X.__type_params__ self.assertIsInstance(T, TypeVar) self.assertEqual(T.__name__, 'T') self.assertEqual(X.__bases__, (tuple, Generic)) self.assertEqual(X.__orig_bases__, (NamedTuple, Generic[T])) self.assertEqual(X.__mro__, (X, tuple, Generic, object)) self.assertEqual(X.__parameters__, (T,)) self.assertEqual(X[str].__args__, (str,)) self.assertEqual(X[str].__parameters__, ())
def test_non_generic_subscript(self): # For backward compatibility, subscription works # on arbitrary NamedTuple types.
def test_pep695_generic_typeddict(self): class A[T](TypedDict): a: T
T, = A.__type_params__ self.assertIsInstance(T, TypeVar) self.assertEqual(T.__name__, 'T') self.assertEqual(A.__bases__, (Generic, dict)) self.assertEqual(A.__orig_bases__, (TypedDict, Generic[T])) self.assertEqual(A.__mro__, (A, Generic, dict, object)) self.assertEqual(A.__parameters__, (T,)) self.assertEqual(A[str].__parameters__, ()) self.assertEqual(A[str].__args__, (str,))
def test_generic_inheritance(self): class A(TypedDict, Generic[T]): a: T