@@ -153,6 +153,7 @@ class C(A, B): pass
153
153
# assert raised
154
154
# assert C.__bases__ == [object]
155
155
156
+
156
157
def test_namespace_with_non_string_keys ():
157
158
class MyStr (str ):
158
159
pass
@@ -162,6 +163,7 @@ class MyStr(str):
162
163
})
163
164
assert any (type (k ) == MyStr for k in A .__dict__ .keys ())
164
165
166
+
165
167
def test_mro ():
166
168
class M (type ):
167
169
def mro (cls ):
@@ -173,7 +175,8 @@ class B: pass
173
175
class C (A , B , metaclass = M ): pass
174
176
175
177
assert C .__mro__ == (C , B , A , object )
176
-
178
+
179
+
177
180
def test_dir_sorted ():
178
181
class C :
179
182
b = 1
@@ -253,6 +256,7 @@ class MyDict(dict):
253
256
]:
254
257
assert type (x ).__flags__ & flag , "masked __flags__ = {}, expected {}" .format (type (x ).__flags__ & flag , flag )
255
258
259
+
256
260
def test_dict ():
257
261
def dict_element_raises (o , err ):
258
262
raised = False
@@ -295,7 +299,8 @@ class SubSlots(BaseSlots, Base):
295
299
296
300
str (type (SubSlots .__dict__ ['__dict__' ])) == "<class 'get_set_desc'>"
297
301
assert SubSlots ().__dict__ == {}
298
-
302
+
303
+
299
304
def test_itemsize ():
300
305
assert object .__itemsize__ == 0
301
306
assert list .__itemsize__ == 0
@@ -330,7 +335,8 @@ class C():
330
335
class C (tuple ):
331
336
__itemsize__ = 42
332
337
assert C .__itemsize__ == 8
333
-
338
+
339
+
334
340
def test_descr_name_qualname ():
335
341
assert float .real .__qualname__ == 'float.real'
336
342
assert float .real .__name__ == 'real'
@@ -349,7 +355,8 @@ class C: __slots__ = ['a']
349
355
except AttributeError :
350
356
raised = True
351
357
assert raised
352
-
358
+
359
+
353
360
def test_cant_set_builtin_attributes ():
354
361
raised = False
355
362
try :
@@ -392,3 +399,41 @@ def test_cant_set_builtin_attributes():
392
399
except TypeError :
393
400
raised = True
394
401
assert raised
402
+
403
+
404
+ def test_slots_no_instance_layout_conflict ():
405
+ # with slots
406
+ class A (object ):
407
+ __slots__ = ("a" , "b" )
408
+
409
+ class B (A ):
410
+ pass
411
+
412
+ class C (A ):
413
+ pass
414
+
415
+ raised = False
416
+ try :
417
+ class D (B , C ):
418
+ pass
419
+ except TypeError :
420
+ raised = True
421
+ assert not raised
422
+
423
+ # without slots
424
+ class A (object ):
425
+ pass
426
+
427
+ class B (A ):
428
+ pass
429
+
430
+ class C (A ):
431
+ pass
432
+
433
+ raised = False
434
+ try :
435
+ class D (B , C ):
436
+ pass
437
+ except TypeError :
438
+ raised = True
439
+ assert not raised
0 commit comments