(self)
| 8206 | y: str |
| 8207 | |
| 8208 | def test_generic(self): |
| 8209 | class X(NamedTuple, Generic[T]): |
| 8210 | x: T |
| 8211 | self.assertEqual(X.__bases__, (tuple, Generic)) |
| 8212 | self.assertEqual(X.__orig_bases__, (NamedTuple, Generic[T])) |
| 8213 | self.assertEqual(X.__mro__, (X, tuple, Generic, object)) |
| 8214 | |
| 8215 | class Y(Generic[T], NamedTuple): |
| 8216 | x: T |
| 8217 | self.assertEqual(Y.__bases__, (Generic, tuple)) |
| 8218 | self.assertEqual(Y.__orig_bases__, (Generic[T], NamedTuple)) |
| 8219 | self.assertEqual(Y.__mro__, (Y, Generic, tuple, object)) |
| 8220 | |
| 8221 | for G in X, Y: |
| 8222 | with self.subTest(type=G): |
| 8223 | self.assertEqual(G.__parameters__, (T,)) |
| 8224 | self.assertEqual(G[T].__args__, (T,)) |
| 8225 | self.assertEqual(get_args(G[T]), (T,)) |
| 8226 | A = G[int] |
| 8227 | self.assertIs(A.__origin__, G) |
| 8228 | self.assertEqual(A.__args__, (int,)) |
| 8229 | self.assertEqual(get_args(A), (int,)) |
| 8230 | self.assertEqual(A.__parameters__, ()) |
| 8231 | |
| 8232 | a = A(3) |
| 8233 | self.assertIs(type(a), G) |
| 8234 | self.assertEqual(a.x, 3) |
| 8235 | |
| 8236 | with self.assertRaises(TypeError): |
| 8237 | G[int, str] |
| 8238 | |
| 8239 | def test_generic_pep695(self): |
| 8240 | class X[T](NamedTuple): |
nothing calls this directly
no test coverage detected