MCPcopy Index your code
hub / github.com/python/cpython / test_slots_special2

Method test_slots_special2

Lib/test/test_descr.py:1447–1485  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

1445 __slots__ = ['__dict__', 'x']
1446
1447 def test_slots_special2(self):
1448 # Testing __qualname__ and __classcell__ in __slots__
1449 class Meta(type):
1450 def __new__(cls, name, bases, namespace, attr):
1451 self.assertIn(attr, namespace)
1452 return super().__new__(cls, name, bases, namespace)
1453
1454 class C1:
1455 def __init__(self):
1456 self.b = 42
1457 class C2(C1, metaclass=Meta, attr="__classcell__"):
1458 __slots__ = ["__classcell__"]
1459 def __init__(self):
1460 super().__init__()
1461 self.assertIsInstance(C2.__dict__["__classcell__"],
1462 types.MemberDescriptorType)
1463 c = C2()
1464 self.assertEqual(c.b, 42)
1465 self.assertNotHasAttr(c, "__classcell__")
1466 c.__classcell__ = 42
1467 self.assertEqual(c.__classcell__, 42)
1468 with self.assertRaises(TypeError):
1469 class C3:
1470 __classcell__ = 42
1471 __slots__ = ["__classcell__"]
1472
1473 class Q1(metaclass=Meta, attr="__qualname__"):
1474 __slots__ = ["__qualname__"]
1475 self.assertEqual(Q1.__qualname__, C1.__qualname__[:-2] + "Q1")
1476 self.assertIsInstance(Q1.__dict__["__qualname__"],
1477 types.MemberDescriptorType)
1478 q = Q1()
1479 self.assertNotHasAttr(q, "__qualname__")
1480 q.__qualname__ = "q"
1481 self.assertEqual(q.__qualname__, "q")
1482 with self.assertRaises(TypeError):
1483 class Q2:
1484 __qualname__ = object()
1485 __slots__ = ["__qualname__"]
1486
1487 def test_slots_descriptor(self):
1488 # Issue2115: slot descriptors did not correctly check

Callers

nothing calls this directly

Calls 6

Q1Class · 0.85
assertIsInstanceMethod · 0.80
assertNotHasAttrMethod · 0.80
C2Class · 0.70
assertEqualMethod · 0.45
assertRaisesMethod · 0.45

Tested by

no test coverage detected