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

Method test_mutable_bases

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

Source from the content-addressed store, hash-verified

4154 int().__rpow__, 1, 2, 3)
4155
4156 def test_mutable_bases(self):
4157 # Testing mutable bases...
4158
4159 # stuff that should work:
4160 class C(object):
4161 pass
4162 class C2(object):
4163 def __getattribute__(self, attr):
4164 if attr == 'a':
4165 return 2
4166 else:
4167 return super(C2, self).__getattribute__(attr)
4168 def meth(self):
4169 return 1
4170 class D(C):
4171 pass
4172 class E(D):
4173 pass
4174 d = D()
4175 e = E()
4176 D.__bases__ = (C,)
4177 D.__bases__ = (C2,)
4178 self.assertEqual(d.meth(), 1)
4179 self.assertEqual(e.meth(), 1)
4180 self.assertEqual(d.a, 2)
4181 self.assertEqual(e.a, 2)
4182 self.assertEqual(C2.__subclasses__(), [D])
4183
4184 with self.assertRaisesRegex(TypeError,
4185 "cannot delete '__bases__' attribute of type 'D'"):
4186 del D.__bases__
4187 with self.assertRaisesRegex(TypeError, 'can only assign non-empty tuple'):
4188 D.__bases__ = ()
4189 with self.assertRaisesRegex(TypeError, 'can only assign tuple'):
4190 D.__bases__ = [C]
4191 with self.assertRaisesRegex(TypeError, 'duplicate base class'):
4192 D.__bases__ = (C, C)
4193 with self.assertRaisesRegex(TypeError, 'inheritance cycle'):
4194 D.__bases__ = (D,)
4195 with self.assertRaisesRegex(TypeError, 'inheritance cycle'):
4196 D.__bases__ = (E,)
4197
4198 class A:
4199 __slots__ = ()
4200 def __repr__(self):
4201 return '<A>'
4202 class A_with_dict:
4203 __slots__ = ('__dict__',)
4204 def __repr__(self):
4205 return '<A_with_dict>'
4206 class A_with_dict_weakref:
4207 def __repr__(self):
4208 return '<A_with_dict_weakref>'
4209 class A_with_slots:
4210 __slots__ = ('x',)
4211 def __repr__(self):
4212 return '<A_with_slots>'
4213 class A_with_slots_dict:

Callers

nothing calls this directly

Calls 15

methMethod · 0.95
methMethod · 0.95
B_with_dict_weakrefClass · 0.85
B_with_slotsClass · 0.85
B_with_slots_dictClass · 0.85
C_with_slotsClass · 0.85
C_with_slots_dictClass · 0.85
B_intClass · 0.85
B_tupleClass · 0.85
assertRaisesRegexMethod · 0.80
assertNotHasAttrMethod · 0.80

Tested by

no test coverage detected