(self)
| 1361 | |
| 1362 | @unittest.expectedFailure # TODO: RUSTPYTHON |
| 1363 | def test_slots_special2(self): |
| 1364 | # Testing __qualname__ and __classcell__ in __slots__ |
| 1365 | class Meta(type): |
| 1366 | def __new__(cls, name, bases, namespace, attr): |
| 1367 | self.assertIn(attr, namespace) |
| 1368 | return super().__new__(cls, name, bases, namespace) |
| 1369 | |
| 1370 | class C1: |
| 1371 | def __init__(self): |
| 1372 | self.b = 42 |
| 1373 | class C2(C1, metaclass=Meta, attr="__classcell__"): |
| 1374 | __slots__ = ["__classcell__"] |
| 1375 | def __init__(self): |
| 1376 | super().__init__() |
| 1377 | self.assertIsInstance(C2.__dict__["__classcell__"], |
| 1378 | types.MemberDescriptorType) |
| 1379 | c = C2() |
| 1380 | self.assertEqual(c.b, 42) |
| 1381 | self.assertNotHasAttr(c, "__classcell__") |
| 1382 | c.__classcell__ = 42 |
| 1383 | self.assertEqual(c.__classcell__, 42) |
| 1384 | with self.assertRaises(TypeError): |
| 1385 | class C3: |
| 1386 | __classcell__ = 42 |
| 1387 | __slots__ = ["__classcell__"] |
| 1388 | |
| 1389 | class Q1(metaclass=Meta, attr="__qualname__"): |
| 1390 | __slots__ = ["__qualname__"] |
| 1391 | self.assertEqual(Q1.__qualname__, C1.__qualname__[:-2] + "Q1") |
| 1392 | self.assertIsInstance(Q1.__dict__["__qualname__"], |
| 1393 | types.MemberDescriptorType) |
| 1394 | q = Q1() |
| 1395 | self.assertNotHasAttr(q, "__qualname__") |
| 1396 | q.__qualname__ = "q" |
| 1397 | self.assertEqual(q.__qualname__, "q") |
| 1398 | with self.assertRaises(TypeError): |
| 1399 | class Q2: |
| 1400 | __qualname__ = object() |
| 1401 | __slots__ = ["__qualname__"] |
| 1402 | |
| 1403 | def test_slots_descriptor(self): |
| 1404 | # Issue2115: slot descriptors did not correctly check |
nothing calls this directly
no test coverage detected