
    daf7                     &   d Z ddlZddlZddlmZ ddlmZ dZ G d d      Z G d d	e      Z	 G d
 de      Z
 G d de
e	      Z G d de      Z G d de      Z G d de      Z G d dej                        Zedk(  r ej$                          yy)z9Unit tests for zero-argument super() & related machinery.    N)patch)import_helper   c                   "    e Zd Zd Zed        Zy)Ac                      yNr    selfs    */root/Python-3.12.4/Lib/test/test_super.pyfzA.f   s        c                 
    | dfS r	   r
   clss    r   cmzA.cm   s    Szr   N)__name__
__module____qualname__r   classmethodr   r
   r   r   r   r      s     r   r   c                   2     e Zd Z fdZe fd       Z xZS )Bc                 &    t         |          dz   S Nr   superr   r   	__class__s    r   r   zB.f       wy{S  r   c                 &    | t         |          dfS r   r   r   r   r   s    r   r   zB.cm       UWZ\3''r   r   r   r   r   r   r   __classcell__r   s   @r   r   r          !( (r   r   c                   2     e Zd Z fdZe fd       Z xZS )Cc                 &    t         |          dz   S Nr*   r   r   s    r   r   zC.f   r    r   c                 &    | t         |          dfS r,   r"   r#   s    r   r   zC.cm   r$   r   r%   r'   s   @r   r*   r*      r(   r   r*   c                   (     e Zd Z fdZ fdZ xZS )Dc                 &    t         |          dz   S Nr/   r   r   s    r   r   zD.f"   r    r   c                 &    | t         |          dfS r1   r"   r#   s    r   r   zD.cm$   s    UWZ\3''r   )r   r   r   r   r   r&   r'   s   @r   r/   r/   !   s    !( (r   r/   c                       e Zd Zy)ENr   r   r   r
   r   r   r4   r4   '       r   r4   c                   $    e Zd Zej                  Zy)FN)r   r   r   r4   r   r
   r   r   r8   r8   *   s    	Ar   r8   c                       e Zd Zy)GNr5   r
   r   r   r:   r:   -   r6   r   r:   c                   
    e Zd Z fdZd Zd Zd Zd Zd Zd Z	d Z
 fd	Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Z fdZd Z fdZ fdZ fdZd Zd Zd Zd Zd Zd Z  fdZ! fd Z" fd!Z#d" Z$d# Z% xZ&S )$	TestSuperc                     t         y N)r<   r   s    r   tearDownzTestSuper.tearDown3   s
     	r   c                 T    | j                  t               j                         d       y NABCDassertEqualr/   r   r   s    r   test_basics_workingzTestSuper.test_basics_working8   s    &)r   c                 ^    | j                  t        j                  t                     d       y rA   rC   r   s    r   test_class_getattr_workingz$TestSuper.test_class_getattr_working;   s    QS6*r   c                     | j                  t               j                         d       | j                  t        j                  t                     d       y rA   )rD   r4   r   r   s    r   !test_subclass_no_override_workingz+TestSuper.test_subclass_no_override_working>   4    &)QS6*r   c                     | j                  t               j                         d       | j                  t        j                  t                     d       y rA   )rD   r8   r   r   s    r   $test_unbound_method_transfer_workingz.TestSuper.test_unbound_method_transfer_workingB   rJ   r   c                 d   | j                  t        j                         t        df       | j                  t               j                         t        df       | j                  t        j                         t        df       | j                  t               j                         t        df       y r	   )rD   r   r   r:   r   s    r    test_class_methods_still_workingz*TestSuper.test_class_methods_still_workingF   sn    !S*As8,!S*As8,r   c                    t               }| j                  |j                         |t         t         t         dfdfdfdf       t               }| j                  |j                         |t        t        t        dfdfdfdf       y )Nr   r   r*   r/   )r/   rD   r   r4   )r   des      r   #test_super_in_class_methods_workingz-TestSuper.test_super_in_class_methods_workingL   sn    C!a!aXs);S%A3!GHC!a!aXs);S%A3!GHr   c                 l     G d dt               }| j                   |       j                         d       y )Nc                        e Zd Z fdZ xZS ),TestSuper.test_super_with_closure.<locals>.Ec                 2      fd}t                   dz   S )Nc                  
      y r>   r
   r   s   r   nestedz>TestSuper.test_super_with_closure.<locals>.E.f.<locals>.nestedW   s    r   r4   r   )r   rX   r   s   ` r   r   z.TestSuper.test_super_with_closure.<locals>.E.fV   s    wy{S((r   r   r   r   r   r&   r'   s   @r   r4   rU   U   s    ) )r   r4   AE)r   rD   r   )r   r4   s     r   test_super_with_closurez!TestSuper.test_super_with_closureR   s(    	) 	) 	$'r   c                     G d dt               } |       }| j                  |j                         d       | j                  |j                  d        G fdd      }| j	                  |j
                  t        |              | j                  t              5 }t        dt               i        d d d        | j	                  t        j                        t                G d d      }| j                  t               d   d	       t               d= | j                  d|j                          G fd
d      }| j                  d	       y # 1 sw Y   xY w)Nc                   "     e Zd Z fdZdZ xZS )7TestSuper.test_various___class___pathologies.<locals>.Xc                      t         |          S r>   r   r   s    r   r   z9TestSuper.test_various___class___pathologies.<locals>.X.f`   s    wy{"r     )r   r   r   r   r   r&   r'   s   @r   Xr^   _   s    #Ir   ra   r   r`   c                   &     e Zd ZW Z fdZ xZS )r^   c                  
      y r>   r
   r'   s   r   r   z9TestSuper.test_various___class___pathologies.<locals>.X.fh       r   )r   r   r   xr   r&   r   r   s   @r   ra   z7TestSuper.test_various___class___pathologies.<locals>.Xf   s    A r   zYclass X:
                __class__
                def f():
                    __class__c                   "     e Zd Zda fdZ xZS )r^   *   c                  
      y r>   r
   r'   s   r   r   z9TestSuper.test_various___class___pathologies.<locals>.X.ft   rd   r   )r   r   r   r   r   r&   r'   s   @r   ra   z7TestSuper.test_various___class___pathologies.<locals>.Xq   s    I r   r   rh   c                   $     e Zd Zd fdZ xZS )r^   rh   c                  
      y r>   r
   r'   s   r   r   z9TestSuper.test_various___class___pathologies.<locals>.X.f|   rd   r   rY   rf   s   @r   ra   z7TestSuper.test_various___class___pathologies.<locals>.Xy   s    I r   )r   rD   r   r   assertIsre   typeassertRaises	NameErrorexecglobals	exceptionassertNotIn__dict__)r   ra   re   rQ   r   s       r   "test_various___class___pathologiesz,TestSuper.test_various___class___pathologies]   s   	 	 C$c*	 	 	acc4:&y) 	1Q ! #*)R1	1
 	d1;;'3	 	
 	;/4Ik"ajj1	 	
 	B''	1 	1s   EEc                 b     G d d      }| j                   |       j                         |       y )Nc                        e Zd Z fdZ xZS )2TestSuper.test___class___instancemethod.<locals>.Xc                     S r>   r
   r   s    r   r   z4TestSuper.test___class___instancemethod.<locals>.X.f   	      r   rY   r'   s   @r   ra   rx          ! !r   ra   rl   r   r   ra   s     r   test___class___instancemethodz'TestSuper.test___class___instancemethod   s$    	! 	! 	aceegq!r   c                 X     G d d      }| j                  |j                         |       y )Nc                   (     e Zd Ze fd       Z xZS )/TestSuper.test___class___classmethod.<locals>.Xc                     S r>   r
   r#   s    r   r   z1TestSuper.test___class___classmethod.<locals>.X.f   	      r   )r   r   r   r   r   r&   r'   s   @r   ra   r      s    ! !r   ra   r|   r}   s     r   test___class___classmethodz$TestSuper.test___class___classmethod   "    	! 	! 	acceQr   c                 X     G d d      }| j                  |j                         |       y )Nc                   (     e Zd Ze fd       Z xZS )0TestSuper.test___class___staticmethod.<locals>.Xc                       S r>   r
   r'   s   r   r   z2TestSuper.test___class___staticmethod.<locals>.X.f   r   r   r   r   r   staticmethodr   r&   r'   s   @r   ra   r          ! !r   ra   r|   r}   s     r   test___class___staticmethodz%TestSuper.test___class___staticmethod   r   r   c                 h    d  G fddt               } G d d|      }| j                  |       y )Nc                   "     e Zd Z fdZ xZS )*TestSuper.test___class___new.<locals>.Metac                 L    t         |   | |||      }|j                         |S r>   )r   __new__r   )r   namebases	namespacer   r   
test_classs        r   r   z2TestSuper.test___class___new.<locals>.Meta.__new__   s'    wsD%C!VVX
r   r   r   r   r   r&   r   r   s   @r   Metar      s     r   r   c                   (     e Zd Ze fd       Z xZS )'TestSuper.test___class___new.<locals>.Ac                       S r>   r
   r'   s   r   r   z)TestSuper.test___class___new.<locals>.A.f   r   r   r   r'   s   @r   r   r      r   r   r   	metaclassrm   rl   r   r   r   r   s      @r   test___class___newzTestSuper.test___class___new   s2     
	4 		!$ 	!
 	j!$r   c                     d  G fddt               } G d d|      }| j                  |d        t        dd      }| j                  |j                         |       y )Nc                       e Zd Z fdZy).TestSuper.test___class___delayed.<locals>.Metac                 
    |y r>   r
   )r   r   r   r   test_namespaces       r   r   z6TestSuper.test___class___delayed.<locals>.Meta.__new__   s    !*r   N)r   r   r   r   )r   s   r   r   r      s    r   r   c                   (     e Zd Ze fd       Z xZS )+TestSuper.test___class___delayed.<locals>.Ac                       S r>   r
   r'   s   r   r   z-TestSuper.test___class___delayed.<locals>.A.f   r   r   r   r'   s   @r   r   r      r   r   r   r   r   r
   )rm   rl   r   )r   r   r   r   r   s       @r   test___class___delayedz TestSuper.test___class___delayed   sR    	4 		!$ 	!
 	ab.)acceQr   c                 h    d  G d dt               } G fdd|      }| j                  |       y )Nc                        e Zd Z fdZ xZS )*TestSuper.test___class___mro.<locals>.Metac                 H     | j                   d           t        | 	         S )Nr   )rt   r   mror   s    r   r   z.TestSuper.test___class___mro.<locals>.Meta.mro   s     "c"$w{}$r   )r   r   r   r   r&   r'   s   @r   r   r      s    % %r   r   c                   "     e Zd Z fdZ xZS )'TestSuper.test___class___mro.<locals>.Ac                  
     y r>   r
   r   s   r   r   z)TestSuper.test___class___mro.<locals>.A.f   s    &
r   rY   r   s   @r   r   r      s    ' 'r   r   r   r   r   s      @r   test___class___mrozTestSuper.test___class___mro   s0    
	%4 	%	'$ 	'
 	j!$r   c                     G fddt               }d  G d d|      }| j                  d       d  G d d|      }d   }|j                  j                  }| j	                  t        |      d	       | j                  ||d
          | j                  t              5  |j                   d d d        y # 1 sw Y   y xY w)Nc                   "     e Zd Z fdZ xZS )=TestSuper.test___classcell___expected_behaviour.<locals>.Metac                 H    |j                         t        | 	  | |||      S r>   )copyr   r   )r   r   r   r   r   namespace_snapshots       r   r   zETestSuper.test___classcell___expected_behaviour.<locals>.Meta.__new__   s%    %.^^%5"wsD%CCr   r   )r   r   s   @r   r   r      s    D Dr   r   c                       e Zd Zy)HTestSuper.test___classcell___expected_behaviour.<locals>.WithoutClassRefNr5   r
   r   r   WithoutClassRefr          r   r   r   r&   c                        e Zd Z fdZ xZS )ETestSuper.test___classcell___expected_behaviour.<locals>.WithClassRefc                     S r>   r
   r   s    r   r   zGTestSuper.test___classcell___expected_behaviour.<locals>.WithClassRef.f   rz   r   rY   r'   s   @r   WithClassRefr      r{   r   r      r   )
rm   rs   r   __closure__rD   lenrl   rn   AttributeErrorr&   )r   r   r   r   
class_cellmethod_closurer   s         @r   %test___classcell___expected_behaviourz/TestSuper.test___classcell___expected_behaviour   s    	D4 	D "	 	*<=
 "	!T 	! (8
%33^,a0j."34~. 	'&&	' 	' 	's   !B77C c                      G d dt               } G d d|      }d}| j                  t        |      5   G d d|      }d d d        y # 1 sw Y   y xY w)	Nc                        e Zd Z fdZ xZS )2TestSuper.test___classcell___missing.<locals>.Metac                 L    |j                  dd        t        | 	  | |||      S Nr&   )popr   r   )r   r   r   r   r   s       r   r   z:TestSuper.test___classcell___missing.<locals>.Meta.__new__   s&    ot4wsD%CCr   r   r'   s   @r   r   r          D Dr   r   c                       e Zd Zy)=TestSuper.test___classcell___missing.<locals>.WithoutClassRefNr5   r
   r   r   r   r      r   r   r   r   z+__class__ not set.*__classcell__ propagatedc                        e Zd Z fdZ xZS ):TestSuper.test___classcell___missing.<locals>.WithClassRefc                     S r>   r
   r   s    r   r   z<TestSuper.test___classcell___missing.<locals>.WithClassRef.f  	    $$r   rY   r'   s   @r   r   r         % %r   r   )rm   assertRaisesRegexRuntimeError)r   r   r   expected_errorr   s        r   test___classcell___missingz$TestSuper.test___classcell___missing   sU    	D4 	D	 	 G##L.A 	%% %	% 	% 	%s   A

Ac           	          G d dt               }d ddt               fD ]H  }| j                  |      5  | j                  t              5   G d d||      }d d d        d d d        J y # 1 sw Y   xY w# 1 sw Y   axY w)	Nc                        e Zd Z fdZ xZS )4TestSuper.test___classcell___overwrite.<locals>.Metac                 2    ||d<   t         |   | |||      S r   r   r   )r   r   r   r   cellr   s        r   r   z<TestSuper.test___classcell___overwrite.<locals>.Meta.__new__	  s"    -1	/*wsD%CCr   r   r'   s   @r   r   r     r   r   r   r    )bad_cellc                       e Zd Zy)1TestSuper.test___classcell___overwrite.<locals>.ANr5   r
   r   r   r   r     s    r   r   )r   r   )rm   objectsubTestrn   	TypeError)r   r   r   r   s       r   test___classcell___overwritez&TestSuper.test___classcell___overwrite  s    	D4 	D
 q"fh/ 	Hx0 &&y1 d  	  s#   A6	A*A6*A3/A66A?	c                      G d dt               }| j                  t              5   G d d|      }d d d        y # 1 sw Y   y xY w)Nc                        e Zd Z fdZ xZS )5TestSuper.test___classcell___wrong_cell.<locals>.Metac                 F    t         |   | |||      } t        dd|      }| S )Nr   r
   )r   r   rm   )r   r   r   r   r   r   s        r   r   z=TestSuper.test___classcell___wrong_cell.<locals>.Meta.__new__  s*    goc4	Bb),
r   r   r'   s   @r   r   r     s     r   r   c                        e Zd Z fdZ xZS )2TestSuper.test___classcell___wrong_cell.<locals>.Ac                     S r>   r
   r   s    r   r   z4TestSuper.test___classcell___wrong_cell.<locals>.A.f  r   r   rY   r'   s   @r   r   r     r   r   r   r   )rm   rn   r   )r   r   r   s      r   test___classcell___wrong_cellz'TestSuper.test___classcell___wrong_cell  s?    	4 	 y) 	%%d %	% 	% 	%s	   ;Ac                    fd}| j                  t        d      5   |        d d d         G d d      }| j                  t        d      5  |j                          d d d        fd}| j                  t        d      5   |d        d d d         G d d      }| j                  t        d	      5   |       j                          d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   `xY w# 1 sw Y   y xY w)
Nc                      t                y r>   r   r'   s   r   r   z.TestSuper.test_obscure_super_errors.<locals>.f"  s    Gr   zno argumentsc                        e Zd Z fdZ xZS ).TestSuper.test_obscure_super_errors.<locals>.Cc                      t                y r>   r   r'   s   r   r   z0TestSuper.test_obscure_super_errors.<locals>.C.f(      r   rY   r'   s   @r   r*   r   '       r   r*   c                     ~ t                y r>   r   re   r   s    r   r   z.TestSuper.test_obscure_super_errors.<locals>.f-  s    Gr   zarg\[0\] deletedc                        e Zd Z fdZ xZS ).TestSuper.test_obscure_super_errors.<locals>.Xc                     t                y r>   r   r   s    r   r   z0TestSuper.test_obscure_super_errors.<locals>.X.f4  s    r   rY   r'   s   @r   ra   r   3  s     r   ra   zempty __class__ cell)r   r   r   )r   r   r*   ra   r   s       r   test_obscure_super_errorsz#TestSuper.test_obscure_super_errors!  s    	##L/B 	C		 	 ##L/B 	CCE		 ##L2EF 	dG		 	
 ##L2IJ 	CEEG	 	)	 		 		 		 	s/   CC	C)2C5CC&)C25C>c                      G d d      fd} |       j                   d   }| j                  t        j                  |       y )Nc                        e Zd Z fdZ xZS )&TestSuper.test_cell_as_self.<locals>.Xc                     t                y r>   r   r   s    r   methz+TestSuper.test_cell_as_self.<locals>.X.meth=  r   r   )r   r   r   r  r&   r'   s   @r   ra   r  <  r   r   ra   c                  "            fd} | S )Nc                       S r>   r
   )ks   r   gz1TestSuper.test_cell_as_self.<locals>.f.<locals>.gB  s    r   r
   )r  r  ra   s    @r   r   z&TestSuper.test_cell_as_self.<locals>.f@  s    AHr   r   )r   rn   r   r  )r   r   cra   s      @r   test_cell_as_selfzTestSuper.test_cell_as_self;  s:    	 		
 COOA)QVVQ/r   c                 |    t        t        d      }t        d      D ]  }t         j                  |t        |        y )Ng      ?i  )r   floatrange__init__int)r   spir   s      r   test_super_init_leakszTestSuper.test_super_init_leaksH  s4    
 5#t 	'ANN2sA&	'r   c                     | j                  t        d      5  t        t        t        t               d d d        y # 1 sw Y   y xY w)Nzexpected at mostr   r   r   r  r   s    r   test_super_argcountzTestSuper.test_super_argcountQ  s5    ##I/AB 	!#sC 	! 	! 	!s	   ;Ac                 |    | j                  t        d      5  t        dt               d d d        y # 1 sw Y   y xY w)Nargument 1 must be a typer   r  r   s    r   test_super_argtypezTestSuper.test_super_argtypeU  s2    ##I/JK 	!SM	 	 	s   2;c                    t        j                  d      }t        j                  d|      5  dd l}d d d        | j                  j                         j                         d       t        j                  d       y # 1 sw Y   MxY w)Nz
            class super:
                msg = "truly super"

            class C:
                def method(self):
                    return super().msg
            shadowed_super)r   sourcer   ztruly super)	textwrapdedentr   ready_to_importr  rD   r*   methodunload)r   r  r  s      r   test_shadowed_globalzTestSuper.test_shadowed_globalY  sq    	
 **0@P 	"!	"))+224mD-.	" 	"s   A>>Bc                 |     G d d       G fdd      }| j                   |       j                         d       y )Nc                       e Zd ZdZy),TestSuper.test_shadowed_local.<locals>.superquite superNr   r   r   msgr
   r   r   r   r#  j      Cr   r   c                   "     e Zd Z fdZ xZS )(TestSuper.test_shadowed_local.<locals>.Cc                 &            j                   S r>   )r&  )r   r   r   s    r   r  z/TestSuper.test_shadowed_local.<locals>.C.methodn  s    w{{"r   r   r   r   r  r&   )r   r   s   @r   r*   r)  m  s    # #r   r*   r$  )rD   r  )r   r*   r   s     @r   test_shadowed_localzTestSuper.test_shadowed_locali  s1    	  	 	# 	# 	}5r   c                      G d d      } G d d      }t        t         d|      5 }| j                   |       j                         d       d d d        y # 1 sw Y   y xY w)Nc                       e Zd ZdZy)0TestSuper.test_shadowed_dynamic.<locals>.MySupersuper superNr%  r
   r   r   MySuperr/  t  r'  r   r1  c                        e Zd Z fdZ xZS )*TestSuper.test_shadowed_dynamic.<locals>.Cc                     t         |   S r>   r   r&  r   s    r   r  z1TestSuper.test_shadowed_dynamic.<locals>.C.methodx      w{"r   r+  r'   s   @r   r*   r3  w      # #r   r*   .superr0  r   r   rD   r  )r   r1  r*   ms       r   test_shadowed_dynamiczTestSuper.test_shadowed_dynamics  sX    	  	 	# 	# hZv&0 	:AQSZZ\=9	: 	: 	:s   &AA c                     g  G fdd      } G d d      }t        t         d|      5 }| j                   |       j                         d       | j                  dg       d d d        y # 1 sw Y   y xY w)Nc                       e Zd Z fdZdZy)8TestSuper.test_shadowed_dynamic_two_arg.<locals>.MySuperc                 (    j                  |       y r>   )append)r   args	call_argss     r   r  zATestSuper.test_shadowed_dynamic_two_arg.<locals>.MySuper.__init__  s      &r   r0  N)r   r   r   r  r&  )rB  s   r   r1  r>    s    'Cr   r1  c                        e Zd Z fdZ xZS )2TestSuper.test_shadowed_dynamic_two_arg.<locals>.Cc                     t         dd  S )Nr   r   r5  r   s    r   r  z9TestSuper.test_shadowed_dynamic_two_arg.<locals>.C.method  s    Q&r   r+  r'   s   @r   r*   rD    s    ' 'r   r*   r8  r0  )r   r   r9  )r   r1  r*   r:  rB  s       @r   test_shadowed_dynamic_two_argz'TestSuper.test_shadowed_dynamic_two_arg~  sp    		  	 
	' 	' hZv&0 	2AQSZZ\=9Y1	2 	2 	2s   9A//A8c                      G d d      }| j                  t        d      5   |       j                          d d d        y # 1 sw Y   y xY w)Nc                        e Zd Z fdZ xZS ))TestSuper.test_attribute_error.<locals>.Cc                     t         |   S r>   r5  r   s    r   r  z0TestSuper.test_attribute_error.<locals>.C.method  r6  r   r+  r'   s   @r   r*   rI    r7  r   r*   z%'super' object has no attribute 'msg')r   r   r  r   r*   s     r   test_attribute_errorzTestSuper.test_attribute_error  s?    	# 	# ##N4[\ 	CJJL	 	 	   A  A	c                      G d d      }| j                  t        d      5   |       j                          d d d        y # 1 sw Y   y xY w)Nc                        e Zd Z fdZ xZS )'TestSuper.test_bad_first_arg.<locals>.Cc                      t         d|          S )Nr   )r   r  r   s    r   r  z.TestSuper.test_bad_first_arg.<locals>.C.method  s    Q,..r   r+  r'   s   @r   r*   rP    s    / /r   r*   r  )r   r   r  rK  s     r   test_bad_first_argzTestSuper.test_bad_first_arg  s?    	/ 	/ ##I/JK 	CJJL	 	 	rM  c                 l     G d d      }| j                   |       j                         t               y )Nc                        e Zd Z fdZ xZS ))TestSuper.test_super___class__.<locals>.Cc                 ,    t               j                  S r>   )r   r   r   s    r   r  z0TestSuper.test_super___class__.<locals>.C.method  s    w(((r   r+  r'   s   @r   r*   rU    s    ) )r   r*   )rD   r  r   )r   r*   r   s     r   test_super___class__zTestSuper.test_super___class__  s'    	) 	) 	u-r   c                      G d dt                G fdd      | j                          j                                y )Nc                       e Zd Zy)8TestSuper.test_super_subclass___class__.<locals>.mysuperNr5   r
   r   r   mysuperrZ    r   r   r[  c                       e Zd Z fdZy)2TestSuper.test_super_subclass___class__.<locals>.Cc                 *     |       j                   S r>   r'   )r   r*   r[  s    r   r  z9TestSuper.test_super_subclass___class__.<locals>.C.method  s    q$'111r   N)r   r   r   r  )r*   r[  s   r   r*   r]    s    2r   r*   )r   rD   r  )r   r*   r[  r   s    @@r   test_super_subclass___class__z'TestSuper.test_super_subclass___class__  s3    	e 		2 	2 	w/r   c                 n      G d dt                fd}t        t              D ]
  } |d        y )Nc                       e Zd Zy)/TestSuper.test_unusual_getattro.<locals>.MyTypeNr5   r
   r   r   MyTyperb    r   r   rc  c                      | fi       }t         t        |        |dd       j                  |j                  d       y )Nbarr   )r   rm   __setattr__rD   re  )r   mytyperc  r   r   s     r   testz-TestSuper.test_unusual_getattro.<locals>.test  s>    D6)R0F&$v,3FE1EVZZ+r   foo1)rm   r  ADAPTIVE_WARMUP_DELAY)r   rh  _rc  r   s   `  @r   test_unusual_getattrozTestSuper.test_unusual_getattro  s2    	T 		,
 ,- 	AL	r   c                 z     G d d      } G d d|      } G d d|      }t        t              D ]	  } |         y )Nc                       e Zd Zd Zd Zy)(TestSuper.test_reassigned_new.<locals>.Ac                      y r>   r
   r   s    r   r   z0TestSuper.test_reassigned_new.<locals>.A.__new__  s    r   c                 D    d| j                   vr| j                  | _        y y )Nr   )rt   r   r   s    r   __init_subclass__z:TestSuper.test_reassigned_new.<locals>.A.__init_subclass__  s    CLL0"%++CK 1r   N)r   r   r   r   rr  r
   r   r   r   ro    s    .r   r   c                       e Zd Zy)(TestSuper.test_reassigned_new.<locals>.BNr5   r
   r   r   r   rt    r   r   r   c                        e Zd Z fdZ xZS )(TestSuper.test_reassigned_new.<locals>.Cc                 "    t         |   |       S r>   r   r#   s    r   r   z0TestSuper.test_reassigned_new.<locals>.C.__new__  s    ws++r   r   r'   s   @r   r*   rv    s    , ,r   r*   )r  rj  r   r   r   r*   rk  s        r   test_reassigned_newzTestSuper.test_reassigned_new  s@    	. 	.	 		, 	, ,- 	AC	r   c                       G  fdd      } G d d|      } G d d|      }t        t              D ]  }|j                  |        y )Nc                   "    e Zd Ze fd       Zy)6TestSuper.test_mixed_staticmethod_hierarchy.<locals>.Ac                 J    j                  |       j                  |       y r>   )assertFalse)r   rA  kwargsr   s      r   somez;TestSuper.test_mixed_staticmethod_hierarchy.<locals>.A.some  s      &  (r   N)r   r   r   r   r  r   s   r   r   r|    s    ) )r   r   c                        e Zd Z fdZ xZS )6TestSuper.test_mixed_staticmethod_hierarchy.<locals>.Bc                 *    t        |   | g|i |S r>   r   r  )r   rA  r  r   s      r   r  z;TestSuper.test_mixed_staticmethod_hierarchy.<locals>.B.some  s    w|C9$9&99r   )r   r   r   r  r&   r'   s   @r   r   r    s    : :r   r   c                   (     e Zd Ze fd       Z xZS )6TestSuper.test_mixed_staticmethod_hierarchy.<locals>.Cc                 "    t         |   |       S r>   r  r#   s    r   r  z;TestSuper.test_mixed_staticmethod_hierarchy.<locals>.C.some  s    w|C((r   )r   r   r   r   r  r&   r'   s   @r   r*   r    s    ) )r   r*   )r  rj  r  rx  s   `    r   !test_mixed_staticmethod_hierarchyz+TestSuper.test_mixed_staticmethod_hierarchy  sG    	) 	)	: 	:	) 	)
 ,- 	AFF1I	r   )'r   r   r   r?   rE   rG   rI   rL   rN   rR   r[   ru   r~   r   r   r   r   r   r   r   r   r   r   r	  r  r  r  r   r,  r;  rF  rL  rR  rW  r_  rl  ry  r  r&   r'   s   @r   r<   r<   1   s    
*+++-I	(!(F"  %& (%"'>%.%40'!/ 6	:2.0
&r   r<   __main__)__doc__r  unittestunittest.mockr   test.supportr   rj  r   r   r*   r/   r4   r8   r:   TestCaser<   r   mainr
   r   r   <module>r     s    ?    &   ( (( ((1 (	 	 	 	n!! nb zHMMO r   