@@ -291,44 +291,6 @@ def bar(): return 42
291291 self .assertEqual (bar (), 42 )
292292 self .assertEqual (actions , expected_actions )
293293
294- def test_wrapped_descriptor_inside_classmethod (self ):
295- class BoundWrapper :
296- def __init__ (self , wrapped ):
297- self .__wrapped__ = wrapped
298-
299- def __call__ (self , * args , ** kwargs ):
300- return self .__wrapped__ (* args , ** kwargs )
301-
302- class Wrapper :
303- def __init__ (self , wrapped ):
304- self .__wrapped__ = wrapped
305-
306- def __get__ (self , instance , owner ):
307- bound_function = self .__wrapped__ .__get__ (instance , owner )
308- return BoundWrapper (bound_function )
309-
310- def decorator (wrapped ):
311- return Wrapper (wrapped )
312-
313- class Class :
314- @decorator
315- @classmethod
316- def inner (cls ):
317- # This should already work.
318- return 'spam'
319-
320- @classmethod
321- @decorator
322- def outer (cls ):
323- # Raised TypeError with a message saying that the 'Wrapper'
324- # object is not callable.
325- return 'eggs'
326-
327- self .assertEqual (Class .inner (), 'spam' )
328- self .assertEqual (Class .outer (), 'eggs' )
329- self .assertEqual (Class ().inner (), 'spam' )
330- self .assertEqual (Class ().outer (), 'eggs' )
331-
332294 def test_bound_function_inside_classmethod (self ):
333295 class A :
334296 def foo (self , cls ):
@@ -339,91 +301,6 @@ class B:
339301
340302 self .assertEqual (B .bar (), 'spam' )
341303
342- def test_wrapped_classmethod_inside_classmethod (self ):
343- class MyClassMethod1 :
344- def __init__ (self , func ):
345- self .func = func
346-
347- def __call__ (self , cls ):
348- if hasattr (self .func , '__get__' ):
349- return self .func .__get__ (cls , cls )()
350- return self .func (cls )
351-
352- def __get__ (self , instance , owner = None ):
353- if owner is None :
354- owner = type (instance )
355- return MethodType (self , owner )
356-
357- class MyClassMethod2 :
358- def __init__ (self , func ):
359- if isinstance (func , classmethod ):
360- func = func .__func__
361- self .func = func
362-
363- def __call__ (self , cls ):
364- return self .func (cls )
365-
366- def __get__ (self , instance , owner = None ):
367- if owner is None :
368- owner = type (instance )
369- return MethodType (self , owner )
370-
371- for myclassmethod in [MyClassMethod1 , MyClassMethod2 ]:
372- class A :
373- @myclassmethod
374- def f1 (cls ):
375- return cls
376-
377- @classmethod
378- @myclassmethod
379- def f2 (cls ):
380- return cls
381-
382- @myclassmethod
383- @classmethod
384- def f3 (cls ):
385- return cls
386-
387- @classmethod
388- @classmethod
389- def f4 (cls ):
390- return cls
391-
392- @myclassmethod
393- @MyClassMethod1
394- def f5 (cls ):
395- return cls
396-
397- @myclassmethod
398- @MyClassMethod2
399- def f6 (cls ):
400- return cls
401-
402- self .assertIs (A .f1 (), A )
403- self .assertIs (A .f2 (), A )
404- self .assertIs (A .f3 (), A )
405- self .assertIs (A .f4 (), A )
406- self .assertIs (A .f5 (), A )
407- self .assertIs (A .f6 (), A )
408- a = A ()
409- self .assertIs (a .f1 (), A )
410- self .assertIs (a .f2 (), A )
411- self .assertIs (a .f3 (), A )
412- self .assertIs (a .f4 (), A )
413- self .assertIs (a .f5 (), A )
414- self .assertIs (a .f6 (), A )
415-
416- def f (cls ):
417- return cls
418-
419- self .assertIs (myclassmethod (f ).__get__ (a )(), A )
420- self .assertIs (myclassmethod (f ).__get__ (a , A )(), A )
421- self .assertIs (myclassmethod (f ).__get__ (A , A )(), A )
422- self .assertIs (myclassmethod (f ).__get__ (A )(), type (A ))
423- self .assertIs (classmethod (f ).__get__ (a )(), A )
424- self .assertIs (classmethod (f ).__get__ (a , A )(), A )
425- self .assertIs (classmethod (f ).__get__ (A , A )(), A )
426- self .assertIs (classmethod (f ).__get__ (A )(), type (A ))
427304
428305class TestClassDecorators (unittest .TestCase ):
429306
0 commit comments