
    0hh>                     0   S SK r S SKrS SKrS SKJr  S SKJrJr  Sr " S S5      r	 " S S\	5      r
 " S	 S
\	5      r " S S\\
5      r " S S\5      r " S S\5      r " S S\	5      r " S S\R                   5      r\S:X  a  \R&                  " 5         gg)    N)patch)import_helperthreading_helper   c                   *    \ rS rSrS r\S 5       rSrg)A   c                     gNr    selfs    8/opt/python-3.13.8/usr/lib/python3.13/test/test_super.pyfA.f   s        c                 
    U S4$ r   r   clss    r   cmA.cm   s    Szr   r   N)__name__
__module____qualname____firstlineno__r   classmethodr   __static_attributes__r   r   r   r   r      s     r   r   c                   >   ^  \ rS rSrU 4S jr\U 4S j5       rSrU =r$ )B   c                 &   > [         TU ]  5       S-   $ Nr   superr   r   	__class__s    r   r   B.f       wy{S  r   c                 &   > U [         TU ]  5       S4$ r"   r$   r   r   r&   s    r   r   B.cm       UWZ\3''r   r   	r   r   r   r   r   r   r   r   __classcell__r&   s   @r   r   r          !( (r   r   c                   >   ^  \ rS rSrU 4S jr\U 4S j5       rSrU =r$ )C   c                 &   > [         TU ]  5       S-   $ Nr3   r#   r%   s    r   r   C.f   r(   r   c                 &   > U [         TU ]  5       S4$ r6   r*   r+   s    r   r   C.cm   r-   r   r   r.   r0   s   @r   r3   r3      r1   r   r3   c                   4   ^  \ rS rSrU 4S jrU 4S jrSrU =r$ )D"   c                 &   > [         TU ]  5       S-   $ Nr;   r#   r%   s    r   r   D.f#   r(   r   c                 &   > U [         TU ]  5       S4$ r>   r*   r+   s    r   r   D.cm%   s    UWZ\3''r   r   )r   r   r   r   r   r   r   r/   r0   s   @r   r;   r;   "   s    !( (r   r;   c                       \ rS rSrSrg)E(   r   Nr   r   r   r   r   r   r   r   rC   rC   (       r   rC   c                   ,    \ rS rSr\R
                  rSrg)F+   r   N)r   r   r   r   rC   r   r   r   r   r   rH   rH   +   s    	Ar   rH   c                       \ rS rSrSrg)G.   r   NrE   r   r   r   rK   rK   .   rF   r   rK   c                   X  ^  \ rS rSrU 4S jrS rS rS rS rS r	S r
S	 rU 4S
 jrS rS rS rS rS rS rS rS rS rS rU 4S jrS rU 4S jrU 4S jrU 4S jrS rS rS rS rS r S r!S  r"U 4S! jr#U 4S" jr$U 4S# jr%S$ r&S% r'\(RR                  " 5       S& 5       r*S'r+U =r,$ )(	TestSuper2   c                    > [         mg N)rN   r%   s    r   tearDownTestSuper.tearDown4   s
     	r   c                 T    U R                  [        5       R                  5       S5        g NABCDassertEqualr;   r   r   s    r   test_basics_workingTestSuper.test_basics_working9   s    &)r   c                 ^    U R                  [        R                  [        5       5      S5        g rU   rW   r   s    r   test_class_getattr_working$TestSuper.test_class_getattr_working<   s    QS6*r   c                     U R                  [        5       R                  5       S5        U R                  [        R                  [        5       5      S5        g rU   )rX   rC   r   r   s    r   !test_subclass_no_override_working+TestSuper.test_subclass_no_override_working?   4    &)QS6*r   c                     U R                  [        5       R                  5       S5        U R                  [        R                  [        5       5      S5        g rU   )rX   rH   r   r   s    r   $test_unbound_method_transfer_working.TestSuper.test_unbound_method_transfer_workingC   ra   r   c                 d   U R                  [        R                  5       [        S45        U R                  [        5       R                  5       [        S45        U R                  [        R                  5       [        S45        U R                  [        5       R                  5       [        S45        g r   )rX   r   r   rK   r   s    r    test_class_methods_still_working*TestSuper.test_class_methods_still_workingG   sn    !S*As8,!S*As8,r   c                    [        5       nU R                  UR                  5       U[         [         [         S4S4S4S45        [        5       nU R                  UR                  5       U[        [        [        S4S4S4S45        g )Nr   r   r3   r;   )r;   rX   r   rC   )r   des      r   #test_super_in_class_methods_working-TestSuper.test_super_in_class_methods_workingM   sn    C!a!aXs);S%A3!GHC!a!aXs);S%A3!GHr   c                 l     " S S[         5      nU R                  U" 5       R                  5       S5        g )Nc                   (   ^  \ rS rSrU 4S jrSrU =r$ ),TestSuper.test_super_with_closure.<locals>.EV   c                 4   >^  U 4S jn[         TT ]  5       S-   $ )Nc                  
   > T   g rQ   r   r   s   r   nested>TestSuper.test_super_with_closure.<locals>.E.f.<locals>.nestedX   s    r   rC   r#   )r   rs   r&   s   ` r   r   .TestSuper.test_super_with_closure.<locals>.E.fW   s    wy{S((r   r   r   r   r   r   r   r   r/   r0   s   @r   rC   ro   V   s    ) )r   rC   AE)r   rX   r   )r   rC   s     r   test_super_with_closure!TestSuper.test_super_with_closureS   s(    	) 	) 	$'r   c                   >  " S S[         5      nU" 5       nU R                  UR                  5       S5        U R                  UR                  S5         " U4S jS5      nU R	                  UR
                  [        U 5      5        U R                  [        5       n[        S[        5       0 5        S S S 5        U R	                  [        WR                  5      [        5         " S S5      nU R                  [        5       S   S	5        [        5       S	 U R                  SUR                  5         " U4S
 jS5      nU R                  TS	5        g ! , (       d  f       N= f)Nc                   ,   ^  \ rS rSrU 4S jrSrSrU =r$ )7TestSuper.test_various___class___pathologies.<locals>.X`   c                     > [         TU ]  5       $ rQ   r#   r%   s    r   r   9TestSuper.test_various___class___pathologies.<locals>.X.fa   s    wy{"r     r   )r   r   r   r   r   r&   r   r/   r0   s   @r   Xr|   `   s    #Ir   r   r   r   c                   0   >^  \ rS rSr YrU 4S jrSrU =r$ )r|   g   c                  
   > T   g rQ   r   r0   s   r   r   r   i       r   r   )r   r   r   r   xr   r   r/   r&   r&   s   @r   r   r|   g   s    A r   zYclass X:
                __class__
                def f():
                    __class__c                   ,   ^  \ rS rSrSqU 4S jrSrU =r$ )r|   r   *   c                  
   > T   g rQ   r   r0   s   r   r   r   u   r   r   r   )r   r   r   r   r&   r   r   r/   r0   s   @r   r   r|   r   s    I r   r&   r   c                   .   >^  \ rS rSrSmU 4S jrSrU =r$ )r|   z   r   c                  
   > T   g rQ   r   r0   s   r   r   r   }   r   r   r   rv   r   s   @r   r   r|   z   s    I r   )r   rX   r   r&   assertIsr   typeassertRaises	NameErrorexecglobals	exceptionassertNotIn__dict__)r   r   r   rj   r&   s       r   "test_various___class___pathologies,TestSuper.test_various___class___pathologies^   s   	 	 C$c*	 	 	acc4:&y)Q ! #*)R1 *
 	d1;;'3	 	
 	;/4Ik"ajj1	 	
 	B'' *)s   E
Ec                 b     " S S5      nU R                  U" 5       R                  5       U5        g )Nc                   (   ^  \ rS rSrU 4S jrSrU =r$ )2TestSuper.test___class___instancemethod.<locals>.X   c                    > T$ rQ   r   r%   s    r   r   4TestSuper.test___class___instancemethod.<locals>.X.f   	      r   r   rv   r0   s   @r   r   r          ! !r   r   r   r   r   r   s     r   test___class___instancemethod'TestSuper.test___class___instancemethod   s$    	! 	! 	aceegq!r   c                 X     " S S5      nU R                  UR                  5       U5        g )Nc                   2   ^  \ rS rSr\U 4S j5       rSrU =r$ )/TestSuper.test___class___classmethod.<locals>.X   c                    > T$ rQ   r   r+   s    r   r   1TestSuper.test___class___classmethod.<locals>.X.f   	      r   r   )r   r   r   r   r   r   r   r/   r0   s   @r   r   r      s    ! !r   r   r   r   s     r   test___class___classmethod$TestSuper.test___class___classmethod   "    	! 	! 	acceQr   c                 X     " S S5      nU R                  UR                  5       U5        g )Nc                   2   ^  \ rS rSr\U 4S j5       rSrU =r$ )0TestSuper.test___class___staticmethod.<locals>.X   c                     > T $ rQ   r   r0   s   r   r   2TestSuper.test___class___staticmethod.<locals>.X.f   r   r   r   r   r   r   r   staticmethodr   r   r/   r0   s   @r   r   r          ! !r   r   r   r   s     r   test___class___staticmethod%TestSuper.test___class___staticmethod   r   r   c                 d   ^ S m " U4S jS[         5      n " S SUS9nU R                  TU5        g )Nc                   ,   >^  \ rS rSrU U4S jrSrU =r$ )*TestSuper.test___class___new.<locals>.Meta   c                 H   > [         TU ]  XX#5      nUR                  5       mU$ rQ   )r$   __new__r   )r   namebases	namespacer   r&   
test_classs        r   r   2TestSuper.test___class___new.<locals>.Meta.__new__   s#    ws%C!VVX
r   r   r   r   r   r   r   r   r/   r&   r   s   @r   Metar      s     r   r   c                   2   ^  \ rS rSr\U 4S j5       rSrU =r$ )'TestSuper.test___class___new.<locals>.A   c                     > T $ rQ   r   r0   s   r   r   )TestSuper.test___class___new.<locals>.A.f   r   r   r   r   r0   s   @r   r   r      r   r   r   	metaclassr   r   r   r   r   r   s      @r   test___class___newTestSuper.test___class___new   s2     
	4 		!$ 	!
 	j!$r   c                    ^ S m " U4S jS[         5      n " S SUS9nU R                  US 5        [        SST5      nU R                  UR                  5       U5        g )Nc                   "   > \ rS rSrU 4S jrSrg).TestSuper.test___class___delayed.<locals>.Meta   c                 
   > Umg rQ   r   )r   r   r   r   test_namespaces       r   r   6TestSuper.test___class___delayed.<locals>.Meta.__new__   s    !*r   r   N)r   r   r   r   r   r   )r   s   r   r   r      s     r   r   c                   2   ^  \ rS rSr\U 4S j5       rSrU =r$ )+TestSuper.test___class___delayed.<locals>.A   c                     > T $ rQ   r   r0   s   r   r   -TestSuper.test___class___delayed.<locals>.A.f   r   r   r   r   r0   s   @r   r   r      r   r   r   r   r   r   )r   r   r   )r   r   r   r   r   s       @r   test___class___delayed TestSuper.test___class___delayed   sR    	4 		!$ 	!
 	ab.)acceQr   c                 d   ^ S m " S S[         5      n " U4S jSUS9nU R                  TU5        g )Nc                   (   ^  \ rS rSrU 4S jrSrU =r$ )*TestSuper.test___class___mro.<locals>.Meta   c                 H   > U R                   S   " 5         [        TU ]	  5       $ )Nr   )r   r$   mror%   s    r   r   .TestSuper.test___class___mro.<locals>.Meta.mro   s    c"$w{}$r   r   )r   r   r   r   r   r   r/   r0   s   @r   r   r      s    % %r   r   c                   ,   >^  \ rS rSrU U4S jrSrU =r$ )'TestSuper.test___class___mro.<locals>.A   c                  
   > T mg rQ   r   r   s   r   r   )TestSuper.test___class___mro.<locals>.A.f   s    &
r   r   rv   r   s   @r   r   r      s    ' 'r   r   r   r   r   s      @r   test___class___mroTestSuper.test___class___mro   s0    
	%4 	%	'$ 	'
 	j!$r   c                   ^  " U4S jS[         5      nS m " S SUS9nU R                  ST5        S m " S SUS9nTS   nUR                  R                  nU R	                  [        U5      S	5        U R                  XES
   5        U R                  [        5         UR                    S S S 5        g ! , (       d  f       g = f)Nc                   ,   >^  \ rS rSrU U4S jrSrU =r$ )=TestSuper.test___classcell___expected_behaviour.<locals>.Meta   c                 D   > UR                  5       m[        TU ]	  XX#5      $ rQ   )copyr$   r   )r   r   r   r   r&   namespace_snapshots       r   r   ETestSuper.test___classcell___expected_behaviour.<locals>.Meta.__new__   s!    %.^^%5"ws%CCr   r   r   )r&   r   s   @r   r   r      s    D Dr   r   c                       \ rS rSrSrg)HTestSuper.test___classcell___expected_behaviour.<locals>.WithoutClassRef   r   NrE   r   r   r   WithoutClassRefr          r   r   r   r/   c                   (   ^  \ rS rSrU 4S jrSrU =r$ )ETestSuper.test___classcell___expected_behaviour.<locals>.WithClassRef   c                    > T$ rQ   r   r%   s    r   r   GTestSuper.test___classcell___expected_behaviour.<locals>.WithClassRef.f   r   r   r   rv   r0   s   @r   WithClassRefr      r   r   r     r   )
r   r   r   __closure__rX   lenr   r   AttributeErrorr/   )r   r   r   r  
class_cellmethod_closurer   s         @r   %test___classcell___expected_behaviour/TestSuper.test___classcell___expected_behaviour   s    	D4 	D "	 	*<=
 "	!T 	! (8
%33^,a0j"34~.&& /..s   B11
B?c                      " S S[         5      n " S SUS9nSnU R                  [        U5          " S SUS9nS S S 5        g ! , (       d  f       g = f)	Nc                   (   ^  \ rS rSrU 4S jrSrU =r$ )2TestSuper.test___classcell___missing.<locals>.Meta   c                 H   > UR                  SS 5        [        TU ]	  XX#5      $ Nr/   )popr$   r   )r   r   r   r   r&   s       r   r   :TestSuper.test___classcell___missing.<locals>.Meta.__new__   s"    ot4ws%CCr   r   r   r0   s   @r   r   r         D Dr   r   c                       \ rS rSrSrg)=TestSuper.test___classcell___missing.<locals>.WithoutClassRef   r   NrE   r   r   r   r   r     r   r   r   r   z+__class__ not set.*__classcell__ propagatedc                   (   ^  \ rS rSrU 4S jrSrU =r$ ):TestSuper.test___classcell___missing.<locals>.WithClassRefi  c                    > T$ rQ   r   r%   s    r   r   <TestSuper.test___classcell___missing.<locals>.WithClassRef.f  	    $$r   r   rv   r0   s   @r   r  r        % %r   r  )r   assertRaisesRegexRuntimeError)r   r   r   expected_errorr  s        r   test___classcell___missing$TestSuper.test___classcell___missing   sM    	D4 	D	 	 G##L.A% % BAAs   
A
Ac           
          " S S[         5      nS SS[        5       4 HB  nU R                  US9   U R                  [        5          " S SXS9nS S S 5        S S S 5        MD     g ! , (       d  f       N= f! , (       d  f       Mg  = f)	Nc                   (   ^  \ rS rSrU 4S jrSrU =r$ )4TestSuper.test___classcell___overwrite.<locals>.Metai	  c                 ,   > XCS'   [         TU ]  XX#5      $ r  r$   r   )r   r   r   r   cellr&   s        r   r   <TestSuper.test___classcell___overwrite.<locals>.Meta.__new__
  s    -1/*ws%CCr   r   r   r0   s   @r   r   r$  	  r  r   r   r    )bad_cellc                       \ rS rSrSrg)1TestSuper.test___classcell___overwrite.<locals>.Ai  r   NrE   r   r   r   r   r,    s    r   r   )r   r'  )r   objectsubTestr   	TypeError)r   r   r*  r   s       r   test___classcell___overwrite&TestSuper.test___classcell___overwrite  sl    	D4 	D
 q"fh/Hx0&&y1d  2 10 011 10s#   A6
A%A6%
A3/A66
B	c                      " S S[         5      nU R                  [        5          " S SUS9nS S S 5        g ! , (       d  f       g = f)Nc                   (   ^  \ rS rSrU 4S jrSrU =r$ )5TestSuper.test___classcell___wrong_cell.<locals>.Metai  c                 B   > [         TU ]  XX#5      n [        SSU5      nU $ )Nr   r   )r$   r   r   )r   r   r   r   r   r&   s        r   r   =TestSuper.test___classcell___wrong_cell.<locals>.Meta.__new__  s&    gocBb),
r   r   r   r0   s   @r   r   r4    s     r   r   c                   (   ^  \ rS rSrU 4S jrSrU =r$ )2TestSuper.test___classcell___wrong_cell.<locals>.Ai  c                    > T$ rQ   r   r%   s    r   r   4TestSuper.test___classcell___wrong_cell.<locals>.A.f  r  r   r   rv   r0   s   @r   r   r8    r  r   r   r   )r   r   r/  )r   r   r   s      r   test___classcell___wrong_cell'TestSuper.test___classcell___wrong_cell  s6    	4 	 y)%d % *))s	   
8
Ac                 .  > U4S jnU R                  [        S5         U" 5         S S S 5         " S S5      nU R                  [        S5         UR                  5         S S S 5        U4S jnU R                  [        S5         U" S 5        S S S 5         " S S5      nU R                  [        S	5         U" 5       R                  5         S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       No= f! , (       d  f       g = f)
Nc                     > [        5         g rQ   r$   r0   s   r   r   .TestSuper.test_obscure_super_errors.<locals>.f#  s    Gr   zno argumentsc                   (   ^  \ rS rSrU 4S jrSrU =r$ ).TestSuper.test_obscure_super_errors.<locals>.Ci(  c                     > [        5         g rQ   r?  r0   s   r   r   0TestSuper.test_obscure_super_errors.<locals>.C.f)      r   r   rv   r0   s   @r   r3   rB  (       r   r3   c                    > A [        5         g rQ   r?  r   r&   s    r   r   r@  .  s    Gr   zarg\[0\] deletedc                   (   ^  \ rS rSrU 4S jrSrU =r$ ).TestSuper.test_obscure_super_errors.<locals>.Xi4  c                    > @[        5         g rQ   r?  rH  s    r   r   0TestSuper.test_obscure_super_errors.<locals>.X.f5  s    r   r   rv   r0   s   @r   r   rJ  4  s     r   r   zempty __class__ cell)r  r  r   )r   r   r3   r   r&   s       r   test_obscure_super_errors#TestSuper.test_obscure_super_errors"  s    	##L/BC C	 	 ##L/BCCE C	 ##L2EFdG G	 	
 ##L2IJCEEG KJ) CB CB GF KJs/   CC$	C54D
C!$
C25
D
Dc                    ^  " S S5      mU4S jnU" 5       R                   S   nU R                  [        TR                  U5        g )Nc                   (   ^  \ rS rSrU 4S jrSrU =r$ )&TestSuper.test_cell_as_self.<locals>.Xi=  c                    > [        5         g rQ   r?  r%   s    r   meth+TestSuper.test_cell_as_self.<locals>.X.meth>  rE  r   r   )r   r   r   r   rS  r   r/   r0   s   @r   r   rQ  =  rF  r   r   c                  $   >^ T" 5       mU4S jn U $ )Nc                     > T $ rQ   r   )ks   r   g1TestSuper.test_cell_as_self.<locals>.f.<locals>.gC  s    r   r   )rX  rW  r   s    @r   r   &TestSuper.test_cell_as_self.<locals>.fA  s    AHr   r   )r  r   r/  rS  )r   r   cr   s      @r   test_cell_as_selfTestSuper.test_cell_as_self<  s:    	 		
 COOA)QVVQ/r   c                    > [        [        S5      n[        S5       H  n[         R                  U[        U5        M      g )Ng      ?i  )r$   floatrange__init__int)r   spir&   s      r   test_super_init_leaksTestSuper.test_super_init_leaksI  s/    
 5#tANN2sA& r   c                    > U R                  [        S5         [        [        [        [        5        S S S 5        g ! , (       d  f       g = f)Nzexpected at mostr  r/  r$   rb  r%   s    r   test_super_argcountTestSuper.test_super_argcountR  s-    ##I/AB#sC  CBBs	   ;
A	c                    > U R                  [        S5         [        S[        5        S S S 5        g ! , (       d  f       g = f)Nargument 1 must be a typer  rh  r%   s    r   test_super_argtypeTestSuper.test_super_argtypeV  s*    ##I/JK!SM LKKs	   2
A c                    [         R                  " S5      n[        R                  " SUS9   SS KnS S S 5        U R                  WR                  5       R                  5       S5        [        R                  " S5        g ! , (       d  f       NS= f)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_importrp  rX   r3   methodunload)r   rq  rp  s      r   test_shadowed_globalTestSuper.test_shadowed_globalZ  sl    	
 **0@P! Q))+224mD-. QPs   A>>
Bc                 ~   ^  " S S5      m " U4S jS5      nU R                  U" 5       R                  5       S5        g )Nc                       \ rS rSrSrSrg),TestSuper.test_shadowed_local.<locals>.superik  quite superr   Nr   r   r   r   msgr   r   r   r   r$   r{  k      Cr   r$   c                   ,   >^  \ rS rSrU U4S jrSrU =r$ )(TestSuper.test_shadowed_local.<locals>.Cin  c                 &   > T" 5       R                   $ rQ   )r~  )r   r&   r$   s    r   ru  /TestSuper.test_shadowed_local.<locals>.C.methodo  s    w{{"r   r   r   r   r   r   ru  r   r/   )r&   r$   s   @r   r3   r  n  s    # #r   r3   r|  )rX   ru  )r   r3   r$   s     @r   test_shadowed_localTestSuper.test_shadowed_localj  s1    	  	 	# 	# 	}5r   c                      " S S5      n " S S5      n[        [         S3U5       nU R                  U" 5       R                  5       S5        S S S 5        g ! , (       d  f       g = f)Nc                       \ rS rSrSrSrg)0TestSuper.test_shadowed_dynamic.<locals>.MySuperiu  super superr   Nr}  r   r   r   MySuperr  u  r  r   r  c                   (   ^  \ rS rSrU 4S jrSrU =r$ )*TestSuper.test_shadowed_dynamic.<locals>.Cix  c                    > [         TU ]  $ rQ   r$   r~  r%   s    r   ru  1TestSuper.test_shadowed_dynamic.<locals>.C.methody      w{"r   r   r  r0   s   @r   r3   r  x      # #r   r3   .superr  r   r   rX   ru  )r   r  r3   ms       r   test_shadowed_dynamicTestSuper.test_shadowed_dynamict  sO    	  	 	# 	# hZv&0AQSZZ\=9 100s   &A
A%c                   ^ / m " U4S jS5      n " S S5      n[        [         S3U5       nU R                  U" 5       R                  5       S5        U R                  TS/5        S S S 5        g ! , (       d  f       g = f)Nc                   &   > \ rS rSrU 4S jrSrSrg)8TestSuper.test_shadowed_dynamic_two_arg.<locals>.MySuperi  c                 (   > TR                  U5        g rQ   )append)r   args	call_argss     r   ra  ATestSuper.test_shadowed_dynamic_two_arg.<locals>.MySuper.__init__  s      &r   r  r   N)r   r   r   r   ra  r~  r   )r  s   r   r  r    s    'Cr   r  c                   (   ^  \ rS rSrU 4S jrSrU =r$ )2TestSuper.test_shadowed_dynamic_two_arg.<locals>.Ci  c                    > [         SS]  $ )Nr  r   r  r%   s    r   ru  9TestSuper.test_shadowed_dynamic_two_arg.<locals>.C.method  s    Q&r   r   r  r0   s   @r   r3   r    s    ' 'r   r3   r  r  )r  r   r  )r   r  r3   r  r  s       @r   test_shadowed_dynamic_two_arg'TestSuper.test_shadowed_dynamic_two_arg  sg    		  	 
	' 	' hZv&0AQSZZ\=9Y1 100s   9A00
A>c                      " S S5      nU R                  [        S5         U" 5       R                  5         S S S 5        g ! , (       d  f       g = f)Nc                   (   ^  \ rS rSrU 4S jrSrU =r$ ))TestSuper.test_attribute_error.<locals>.Ci  c                    > [         TU ]  $ rQ   r  r%   s    r   ru  0TestSuper.test_attribute_error.<locals>.C.method  r  r   r   r  r0   s   @r   r3   r    r  r   r3   z%'super' object has no attribute 'msg')r  r  ru  r   r3   s     r   test_attribute_errorTestSuper.test_attribute_error  s7    	# 	# ##N4[\CJJL ]\\   A  
Ac                      " S S5      nU R                  [        S5         U" 5       R                  5         S S S 5        g ! , (       d  f       g = f)Nc                   (   ^  \ rS rSrU 4S jrSrU =r$ )'TestSuper.test_bad_first_arg.<locals>.Ci  c                     > [         SU ]  5       $ )Nr  r$   ru  r%   s    r   ru  .TestSuper.test_bad_first_arg.<locals>.C.method  s    Q,..r   r   r  r0   s   @r   r3   r    s    / /r   r3   rl  )r  r/  ru  r  s     r   test_bad_first_argTestSuper.test_bad_first_arg  s7    	/ 	/ ##I/JKCJJL LKKr  c                     " S S5      nU" 5       nSn[         U[         R                  UR                  S4U[        5       UR                  [        R                  S4U[        UR                  [        R                  S44nU Hc  nU R                  US9   Uu  pgpn
UR	                  XU5      nU R                  [        U5         UR                  Xg5        S S S 5        S S S 5        Me     g ! , (       d  f       N= f! , (       d  f       M  = f)Nc                   (   ^  \ rS rSrU 4S jrSrU =r$ ))TestSuper.test_supercheck_fail.<locals>.Ci  c                    > [         X]  5       $ rQ   r  )r   type_objr&   s      r   ru  0TestSuper.test_supercheck_fail.<locals>.C.method  s    U/11r   r   r  r0   s   @r   r3   r    s    2 2r   r3   zOsuper\(type, obj\): obj \({} {}\) is not an instance or subtype of type \({}\).zinstance ofr   )case)rb  r   listr.  formatr  r/  ru  )r   r3   r[  err_msgcasesr  r  r  type_strobj_strinstance_or_typeregexs               r   test_supercheck_failTestSuper.test_supercheck_fail  s    	2 	2 C6 	 !S\\1::}=

DMM=Aajj$--8
 D4(BF?H/?'7(K++Iu=HHU( >	 )( 
 >=	 )(s$   /C;C*C;*
C84C;;
D
	c                 l   >  " S S5      nU R                  U" 5       R                  5       [        5        g )Nc                   (   ^  \ rS rSrU 4S jrSrU =r$ ))TestSuper.test_super___class__.<locals>.Ci  c                 ,   > [        5       R                  $ rQ   )r$   r&   r%   s    r   ru  0TestSuper.test_super___class__.<locals>.C.method  s    w(((r   r   r  r0   s   @r   r3   r    s    ) )r   r3   )rX   ru  r$   )r   r3   r&   s     r   test_super___class__TestSuper.test_super___class__  s'    	) 	) 	u-r   c                    >^^  " S S[         5      m " UU4S jS5      mU R                  T" 5       R                  5       T5        g )Nc                       \ rS rSrSrg)8TestSuper.test_super_subclass___class__.<locals>.mysuperi  r   NrE   r   r   r   mysuperr    r   r   r  c                   $   > \ rS rSrU U4S jrSrg)2TestSuper.test_super_subclass___class__.<locals>.Ci  c                 *   > T" TU 5      R                   $ rQ   r0   )r   r3   r  s    r   ru  9TestSuper.test_super_subclass___class__.<locals>.C.method  s    q$'111r   r   N)r   r   r   r   ru  r   )r3   r  s   r   r3   r    s    2 2r   r3   )r$   rX   ru  )r   r3   r  r&   s    @@r   test_super_subclass___class__'TestSuper.test_super_subclass___class__  s3    	e 		2 	2 	w/r   c                 t   >^ ^  " S S[         5      mUUU 4S jn[        [        5       H  nU" S5        M     g )Nc                       \ rS rSrSrg)/TestSuper.test_unusual_getattro.<locals>.MyTypei  r   NrE   r   r   r   MyTyper    r   r   r  c                    > T" U T40 5      n[         T[        U5      ]  USS5        TR                  UR                  S5        g )Nbarr  )r$   r   __setattr__rX   r  )r   mytyper  r&   r   s     r   test-TestSuper.test_unusual_getattro.<locals>.test  s>    D6)R0F&$v,3FE1EVZZ+r   foo1)r   r`  ADAPTIVE_WARMUP_DELAY)r   r  _r  r&   s   `  @r   test_unusual_getattroTestSuper.test_unusual_getattro  s-    	T 		,
 ,-AL .r   c                 ~     " S S5      n " S SU5      n " S SU5      n[        [        5       H
  nU" 5         M     g )Nc                        \ rS rSrS rS rSrg)(TestSuper.test_reassigned_new.<locals>.Ai  c                     g rQ   r   r   s    r   r   0TestSuper.test_reassigned_new.<locals>.A.__new__  s    r   c                 H    SU R                   ;  a  U R                  U l        g g )Nr   )r   r   r   s    r   __init_subclass__:TestSuper.test_reassigned_new.<locals>.A.__init_subclass__  s    CLL0"%++CK 1r   r   N)r   r   r   r   r   r  r   r   r   r   r   r    s    .r   r   c                       \ rS rSrSrg)(TestSuper.test_reassigned_new.<locals>.Bi  r   NrE   r   r   r   r   r    r   r   r   c                   (   ^  \ rS rSrU 4S jrSrU =r$ )(TestSuper.test_reassigned_new.<locals>.Ci  c                 "   > [         TU ]  U 5      $ rQ   r&  r+   s    r   r   0TestSuper.test_reassigned_new.<locals>.C.__new__  s    ws++r   r   r   r0   s   @r   r3   r    s    , ,r   r3   )r`  r  r   r   r   r3   r  s        r   test_reassigned_newTestSuper.test_reassigned_new  s;    	. 	.	 		, 	, ,-AC .r   c                    ^   " U 4S jS5      n " S SU5      n " S SU5      n[        [        5       H  nUR                  U5        M     g )Nc                   ,   > \ rS rSr\U 4S j5       rSrg)6TestSuper.test_mixed_staticmethod_hierarchy.<locals>.Ai  c                 J   > TR                  U5        TR                  U5        g rQ   )assertFalse)r   r  kwargsr   s      r   some;TestSuper.test_mixed_staticmethod_hierarchy.<locals>.A.some  s      &  (r   r   N)r   r   r   r   r   r   r   r   s   r   r   r    s    ) )r   r   c                   (   ^  \ rS rSrU 4S jrSrU =r$ )6TestSuper.test_mixed_staticmethod_hierarchy.<locals>.Bi  c                 ,   > [         TU ]  " U /UQ70 UD6$ rQ   r$   r   )r   r  r  r&   s      r   r   ;TestSuper.test_mixed_staticmethod_hierarchy.<locals>.B.some  s    w|C9$9&99r   r   )r   r   r   r   r   r   r/   r0   s   @r   r   r    s    : :r   r   c                   2   ^  \ rS rSr\U 4S j5       rSrU =r$ )6TestSuper.test_mixed_staticmethod_hierarchy.<locals>.Ci  c                 "   > [         TU ]  U 5      $ rQ   r  r+   s    r   r   ;TestSuper.test_mixed_staticmethod_hierarchy.<locals>.C.some  s    w|C((r   r   )r   r   r   r   r   r   r   r/   r0   s   @r   r3   r    s    ) )r   r3   )r`  r  r   r  s   `    r   !test_mixed_staticmethod_hierarchy+TestSuper.test_mixed_staticmethod_hierarchy  sB    	) 	)	: 	:	) 	)
 ,-AFF1I .r   c                   ^^^  " S S5      m " S S5      mT" 5       mUUU4S jn/ n[        S5       H8  n[        R                  " US9nUR                  5         UR	                  U5        M:     U H  nUR                  5         M     g )Nc                       \ rS rSrSrg)@TestSuper.test___class___modification_multithreaded.<locals>.Fooi  r   NrE   r   r   r   Foor    r   r   r  c                       \ rS rSrSrg)@TestSuper.test___class___modification_multithreaded.<locals>.Bari  r   NrE   r   r   r   Barr    r   r   r  c                  v   > Tn [        S5       H'  nTU l        [        U 5        TU l        [        U 5        M)     g )N   )r`  r&   r   )foor  r  r  things     r   workATestSuper.test___class___modification_multithreaded.<locals>.work  s2    C3Z #S	 #S		  r      )target)r`  	threadingThreadstartr  join)r   r  threadsr  threadr  r  r  s        @@@r   )test___class___modification_multithreaded3TestSuper.test___class___modification_multithreaded  st    	 		 	 	 qA%%T2FLLNNN6" 
 FKKM r   r   )-r   r   r   r   rR   rY   r\   r_   rc   rf   rk   rx   r   r   r   r   r   r   r   r	  r   r0  r;  rM  r\  re  ri  rm  rw  r  r  r  r  r  r  r  r  r  r  r  r   requires_working_threadingr"  r   r/   r0   s   @r   rN   rN   2   s    
*+++-I	(!(F"  %& (%"'>%.%40'!/ 6	:2)6.0
&( 002 3r   rN   __main__)rr  r  unittestunittest.mockr   test.supportr   r   r  r   r   r3   r;   rC   rH   rK   TestCaserN   r   mainr   r   r   <module>r+     s        8   ( (( ((1 (	 	 	 	j!! jZ zMMO r   