88
99# ref: http://docs.python.org/ref/metaclasses.html
1010
11- class Old :
12- def method (self ): return 10
13-
14- class New (object ):
11+ class SomeClass (object ):
1512 def method (self ): return 10
1613
1714def g_f_modify (new_base = None , new_name = None ):
@@ -89,11 +86,11 @@ def _check(T):
8986 self .assertEqual (x .__class__ .__name__ , "D" )
9087
9188 for f in [ g_f_modify , g_c_modify ]:
92- class C (object , metaclass = f ((New ,), "D" )):
89+ class C (object , metaclass = f ((SomeClass ,), "D" )):
9390 pass
9491 _check (C )
9592
96- class C (metaclass = f ((New ,), "D" )):
93+ class C (metaclass = f ((SomeClass ,), "D" )):
9794 pass
9895 _check (C )
9996
@@ -114,7 +111,6 @@ def method(self): return 10
114111 self .assertEqual (x .method (), 10 )
115112
116113 try_metaclass (type )
117- #try_metaclass(type(Old)) # bug 364938
118114 try_metaclass (dash_attributes )
119115 try_metaclass (sub_type1 )
120116
@@ -145,29 +141,29 @@ def StartSomethingToday(self): pass
145141 self .assertTrue (hasattr (D , "start_something_today" ))
146142
147143 def test_find_metaclass (self ):
144+ # A1 hits a slightly different code path in some places than A2, same for B1, B2, etc.
148145 class A1 : pass
149146 class A2 (object ): pass
147+ self .assertEqual (A1 .__class__ , type )
150148 self .assertEqual (A2 .__class__ , type )
151149
152- class B1 (metaclass = dash_attributes ):
153- pass
154- class B2 (object , metaclass = dash_attributes ):
155- pass
150+ class B1 (metaclass = dash_attributes ): pass
151+ class B2 (object , metaclass = dash_attributes ): pass
156152
157153 meta = lambda * args : 100
158154
159- class D1 (metaclass = meta ):
160- pass
155+ class D1 (metaclass = meta ): pass
161156 self .assertEqual (D1 , 100 )
157+ self .assertEqual (D1 .__class__ , int )
162158
163- class D2 (object ,metaclass = meta ):
164- pass
159+ class D2 (object ,metaclass = meta ): pass
160+ self . assertEqual ( D2 , 100 )
165161 self .assertEqual (D2 .__class__ , int )
166162
167163 # base order: how to see the effect of the order???
168164 for x in [
169165 A1 ,
170- # A2, # bug 364991
166+ A2 ,
171167 ]:
172168 for y in [B1 , B2 ]:
173169 class E (x , y ):
@@ -195,19 +191,19 @@ class C4(object,metaclass=sub_type3):
195191
196192 flag = 0
197193 class D (C1 , C2 ): pass
198- # self.assertEqual(flag, 1) # bug 364991
194+ self .assertEqual (flag , 1 )
199195 flag = 0
200196 class D (C2 , C1 ): pass
201- # self.assertEqual(flag, 1)
197+ self .assertEqual (flag , 1 )
202198 flag = 0
203199 class D (C3 , C4 ): pass # C4 derive from C3
204- # self.assertEqual(flag, 120 )
200+ self .assertEqual (flag , 110 )
205201 flag = 0
206202 class D (C3 , C1 , C4 ): pass
207- # self.assertEqual(flag, 120 )
203+ self .assertEqual (flag , 110 )
208204 flag = 0
209205 class D (C4 , C1 ): pass
210- # self.assertEqual(flag, 110)
206+ self .assertEqual (flag , 110 )
211207
212208 def f1 ():
213209 class D (C2 , C3 ): pass
@@ -218,7 +214,7 @@ class D(C2, C1, C3): pass
218214
219215 for f in [
220216 f1 ,
221- # f2, # bug 364991
217+ f2 ,
222218 f3 ,
223219 ]:
224220 self .assertRaises (TypeError , f )
@@ -229,13 +225,12 @@ class C(object, metaclass=x):
229225 pass
230226
231227 for x in [
232- # None, # bug 364967
228+ None ,
233229 1 ,
234230 [],
235231 lambda name , bases , dict , extra : 1 ,
236232 lambda name , bases : 1 ,
237- Old ,
238- New ,
233+ SomeClass ,
239234 ]:
240235 self .assertRaises (TypeError , create , x )
241236
0 commit comments