@@ -43,15 +43,10 @@ def clear_typing_caches():
4343
4444class TypesTests (unittest .TestCase ):
4545
46- def test_names (self ):
46+ def check_types_names (self , module_types , * , c_extension = False ):
4747 c_only_names = {'CapsuleType' }
4848 ignored = {'new_class' , 'resolve_bases' , 'prepare_class' ,
4949 'get_original_bases' , 'DynamicClassAttribute' , 'coroutine' }
50-
51- for name in c_types .__all__ :
52- if name not in c_only_names | ignored :
53- self .assertIs (getattr (c_types , name ), getattr (py_types , name ))
54-
5550 all_names = ignored | {
5651 'AsyncGeneratorType' , 'BuiltinFunctionType' , 'BuiltinMethodType' ,
5752 'CapsuleType' , 'CellType' , 'ClassMethodDescriptorType' , 'CodeType' ,
@@ -63,8 +58,24 @@ def test_names(self):
6358 'ModuleType' , 'NoneType' , 'NotImplementedType' , 'SimpleNamespace' ,
6459 'TracebackType' , 'UnionType' , 'WrapperDescriptorType' ,
6560 }
66- self .assertEqual (all_names , set (c_types .__all__ ))
67- self .assertEqual (all_names - c_only_names , set (py_types .__all__ ))
61+ expected = all_names if c_extension else all_names - c_only_names
62+ self .assertEqual (expected , set (module_types .__all__ ))
63+
64+ @unittest .skipUnless (c_types , "requires C _types module" )
65+ def test_c_types_names (self ):
66+ self .check_types_names (c_types , c_extension = True )
67+
68+ def test_py_types_names (self ):
69+ self .check_types_names (py_types , c_extension = False )
70+
71+ @unittest .skipUnless (c_types , "requires C _types module" )
72+ def test_types_names_consistency (self ):
73+ c_only_names = {'CapsuleType' }
74+ ignored = {'new_class' , 'resolve_bases' , 'prepare_class' ,
75+ 'get_original_bases' , 'DynamicClassAttribute' , 'coroutine' }
76+ for name in c_types .__all__ :
77+ if name not in c_only_names | ignored :
78+ self .assertIs (getattr (c_types , name ), getattr (py_types , name ))
6879
6980 def test_truth_values (self ):
7081 if None : self .fail ('None is true instead of false' )
0 commit comments