
    /hh                    T   S SK r S SKrS SKrS SKrS SKrS SKJr  S SKrS SKJ	r	  S SK
r
S SKJr  S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKJr  S SKrS SKJr  S SKJr  S SKJr  S SKr\R8                  " S	S
/S9r\R8                  " S	S
/S9r\R8                  " SS/S9r\R@                  S 5       r!S r"S r# " S S\$5      r% " S S\$5      r& " S S\'5      r( " S S5      r)\RT                  " \S5       " S S\)\RV                  5      5       r, " S S\)\RV                  5      r-\(       a   " S S \R\                  5      r/ " S! S"\R\                  5      r0\RT                  " \S5       " S# S$\,5      5       r1 " S% S&\-5      r2 " S' S(\RV                  5      r3 " S) S*\RV                  5      r4 " S+ S,\45      r5 " S- S.5      r6\RT                  " \S5       " S/ S0\6\RV                  5      5       r7 " S1 S2\6\RV                  5      r8 " S3 S45      r9\RT                  " \S5       " S5 S6\9\RV                  5      5       r: " S7 S8\9\RV                  5      r; " S9 S:\RV                  5      r<\Rz                   " S; S<5      5       r> " S= S>5      r? " S? S@\?\RV                  5      r@\RT                  " \S5       " SA SB\?\RV                  5      5       rA " SC SD5      rB\R                  5       SE 5       rD\(       a  \R                  5       SF 5       rE " SG SH\B\RV                  5      rF\RT                  " \S5       " SI SJ\B\RV                  5      5       rG " SK SL\RV                  5      rH " SM SN5      rI " SO SP5      rJ " SQ SR5      rK " SS ST\RV                  5      rL\MSU:X  a  \R                  " 5         gg)V    N)permutations)choice)support)proxy)	Signature)import_helper)threading_helper	functools
_functools)blocked)freshdecimal_decimalc              #      #    [         R                  U    nU[         R                  U '    S v   U[         R                  U '   g ! U[         R                  U '   f = f7fN)sysmodules)namereplacementoriginal_modules      </opt/python-3.13.8/usr/lib/python3.13/test/test_functools.pyreplaced_moduler   #   sE     kk$'O#CKK,+DODs   'AA AAAc                      X4$ r    )argskws     r   capturer   ,   s	    8O    c                 ^    U R                   U R                  U R                  U R                  4$ r   )funcr   keywords__dict__)parts    r   	signaturer$   1   s!    IItyy$--??r   c                       \ rS rSrSrg)MyTuple5   r   N__name__
__module____qualname____firstlineno____static_attributes__r   r   r   r&   r&   5       r   r&   c                       \ rS rSrS rSrg)BadTuple8   c                 0    [        U 5      [        U5      -   $ r   )listselfothers     r   __add__BadTuple.__add__9   s    DzDK''r   r   N)r)   r*   r+   r,   r7   r-   r   r   r   r0   r0   8   s    (r   r0   c                       \ rS rSrSrg)MyDict<   r   Nr(   r   r   r   r:   r:   <   r.   r   r:   c                       \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rSr g) TestPartial@   c           
      &   U R                  [        SSSSS9nU R                  [        U5      5        U R	                  U" SSSS	S
9S[        SSS	S945        U R                  [        S 5      nU R	                  [        U" / SQ5      5      / SQ5        g )N      
      ab         (   rF   cr@   rA   rG   rH   rE   rF   rL   c                     U S-  $ )NrB   r   xs    r   <lambda>1TestPartial.test_basic_examples.<locals>.<lambda>G   s    "r   )rB   rC   rI   rJ   )partialr   
assertTruecallableassertEqualdictmapr3   r5   ps     r   test_basic_examplesTestPartial.test_basic_examplesB   s    LL!Q"L3$1a2,&rR2(>?	ALLn-a	l+-=>r   c                     U R                  [        SSSSS9nU R                  UR                  [        5        U R                  UR                  S5        U R                  UR
                  [        SSS95        g )Nr@   rA   rB   rC   rD   r@   rA   )rT   r   rW   r    r   r!   rX   rZ   s     r   test_attributesTestPartial.test_attributesJ   s]    LL!Q"L3)(TB"%56r   c                     U R                  [        U R                  5         U R                  S5      " 5         U R                  S5        g ! [         a     g f = f)NrA   z%First arg not checked for callability)assertRaises	TypeErrorrT   failr5   s    r   test_argument_checking"TestPartial.test_argument_checkingQ   sL    )T\\2	?LLO II=>  		s   A
 

AAc                     SS jnSS0nU R                  USS9nU R                  U" S	0 UD6S5        U R                  USS05        U" SS9  U R                  USS05        g )
Nc                     U $ r   r   rD   s     r   r    BTestPartial.test_protection_of_callers_dict_argument.<locals>.func\   s    Hr   rE   rG      rE      rF   )rB   rC   r   )rT   rW   )r5   r    dr[   s       r   (test_protection_of_callers_dict_argument4TestPartial.test_protection_of_callers_dict_argumentZ   sg    	GLLL#Q#SG$	ASG$r   c                     SS0nU R                   " [        40 UD6nU R                  U" 5       SSS045        SUS'   U R                  U" 5       SSS045        g )NrE   rG   r   rl   rT   r   rW   )r5   rp   r[   s      r   test_kwargs_copyTestPartial.test_kwargs_copye   s]     !HLL&A&rC8n-#rC8n-r   c                 ,   U R                  [        5      nU R                  U" 5       S0 45        U R                  U" SS5      S0 45        U R                  [        SS5      nU R                  U" 5       S0 45        U R                  U" SS5      S0 45        g )Nr   r@   rA   r_   rG   rH   rM   rt   rZ   s     r   test_arg_combinations!TestPartial.test_arg_combinationsn   s     LL!r2h'1Q%-LL!Q'ubk*1Q)R1r   c                    U R                  [        5      nU R                  UR                  0 5        U R                  U" 5       S0 45        U R                  U" SS9SSS045        U R                  [        SS9nU R                  UR                  SS05        U R                  U" 5       SSS045        U R                  U" SS9SSSS.45        U R                  U" SSS9SSSS.45        g )	Nr   r@   rm   rE   rA   ro   rD   rG   )rT   r   rW   r!   rZ   s     r   test_kw_combinations TestPartial.test_kw_combinationsx   s     LL!R(r2h'Q"s1g/LLAL&c!W-rC7m,Q"1!n!56Q!rq>&:;r   c                     S HH  nU R                   " [        /UQ76 nUS-   nU" S5      u  pEU R                  X4:H  =(       a    U0 :H  5        MJ     g )N)r   r   r   r@   )r   r@   rA   )r   r@   rA   rG   rP   rQ   rT   r   rU   )r5   r   r[   expectedgotemptys         r   test_positionalTestPartial.test_positional   sJ    9DW,t,Af}H3JCOOHO;<	 :r   c                     S HC  nU R                  [        US9nUS S.nU" S S9u  pEU R                  X5:H  =(       a    US:H  5        ME     g )N)rE   r   Ng      @rm   )rE   rQ   rP   r   r   )r5   rE   r[   r   r   r   s         r   test_keywordTestPartial.test_keyword   sJ    $AW*A$'HTJEOOHO;<	 %r   c                     U R                  [        SSS9nU" SSS9u  p#U R                  US:H  =(       a    USSS.:H  5        U" 5       u  pEU R                  US:H  =(       a    US	S0:H  5        g )
Nr   r@   rm   rA   ro   r   rD   r~   rE   r   )r5   r[   args1kw1args2kw2s         r   test_no_side_effects TestPartial.test_no_side_effects   sg    LL!qL)qAY
?3qQ-+?@S
8##a.9r   c                 >   S nU R                  [        U R                  USS5      5        U R                  [        U R                  US5      S5        U R                  [        U R                  U5      SS5        U R                  [        U R                  USS9S5        g )Nc                     X-    g r   r   rQ   ys     r   f-TestPartial.test_error_propagation.<locals>.f   s    Er   r@   r   )r   )rc   ZeroDivisionErrorrT   r5   r   s     r   test_error_propagation"TestPartial.test_error_propagation   s    	+T\\!Q-BC+T\\!Q-?C+T\\!_aC+T\\!q\-A1Er   c                     U R                  [        SS9n[        U5      nU R                  UR                  UR                  5        S n[
        R                  " 5         U R                  [        [        US5        g )N   )baser    )
rT   intr   rW   r    r   
gc_collectrc   ReferenceErrorgetattrr5   r   r[   s      r   test_weakrefTestPartial.test_weakref   sZ    LL2L&!H(.'1f=r   c                    [        [        [        [        S5      5      5      nU R	                  [        R
                  S5      nU R                  U" U5      S5        U R	                  SR
                  5      nU R                  U" U5      S5        g )NrB    
0123456789)r3   rY   strrangerT   joinrW   )r5   datar   s      r   #test_with_bound_and_unbound_methods/TestPartial.test_with_bound_and_unbound_methods   se    CU2Y'(||CHHb)d\2||BGG$d\2r   c                     U R                   nU" [        S5      nU" USS9nU" [        SSS9nU R                  [        U5      [        U5      5        g NasdfTbar)rT   r$   rW   )r5   rT   innernestedflats        r   test_nested_optimization$TestPartial.test_nested_optimization   sJ    ,,	6*D)y&d36*IdO<r   c                 ^   ^ U R                   m " U4S jS5      nU" 5       nUR                  ng )Nc                   (   > \ rS rSrS rU 4S jrSrg)9TestPartial.test_nested_optimization_bug.<locals>.Builder   c                 
    XU4$ r   r   )r5   tagchildrenattribs       r   __call__BTestPartial.test_nested_optimization_bug.<locals>.Builder.__call__   s    v..r   c                    > T" X5      $ r   r   )r5   r   rT   s     r   __getattr__ETestPartial.test_nested_optimization_bug.<locals>.Builder.__getattr__   s    t))r   r   N)r)   r*   r+   r,   r   r   r-   )rT   s   r   Builderr      s    /* *r   r   )rT   m)r5   r   Br   rT   s       @r   test_nested_optimization_bug(TestPartial.test_nested_optimization_bug   s(    ,,	* 	* ICCr   c                     U R                   nS nU" US5      nU" US5      nSUl        U R                  UR                  S5        g )Nc                     U $ r   r   r   s    r   foo;TestPartial.test_nested_partial_with_attribute.<locals>.foo   s    Jr   firstsecondspam)rT   new_attrrW   )r5   rT   r   r[   p2s        r   "test_nested_partial_with_attribute.TestPartial.test_nested_partial_with_attribute   sE    ,,	 C!Q!f-r   c                    [        5       [        5       4nSR                  S U 5       5      n[        5       [        5       S.nSR                  U5      SR                  U5      /nU R                  R                   SU R                  R
                   3nU R                  [        5      nU R                  U S[        < S3[        U5      5        U R                  " [        /UQ76 nU R                  U S[        < SU S3[        U5      5        U R                  " [        40 UD6nU R                  [        U5      U Vs/ s H  nU S[        < SU S3PM     sn5        U R                  " [        /UQ70 UD6nU R                  [        U5      U Vs/ s H  nU S[        < SU SU S3PM     sn5        g s  snf s  snf )	Nz, c              3   8   #    U  H  n[        U5      v   M     g 7fr   )repr).0rE   s     r   	<genexpr>(TestPartial.test_repr.<locals>.<genexpr>   s     4t!d1ggts   rD   za={a!r}, b={b!r}zb={b!r}, a={a!r}.())
objectr   
format_maprT   r*   r+   r   rW   r   assertIn)r5   r   	args_reprkwargskwargs_reprsr   r   kwargs_reprs           r   	test_reprTestPartial.test_repr   s   &(#II4t44	xfh/*55f=*55f=?,,))*!DLL,E,E+FGLL!D67+Q/a9LL(4(D67+R	{!<d1gFLL+F+d1g*68*6; q2k]!<*68	9 LL24262d1g*68*6; q2i[;-qI*68	9	8
8s   >F7
F<
c                    U R                   R                   SU R                   R                   3nU R                  [        5      nUR	                  US0 0 45         U R                  [        U5      U< S35        UR	                  [        S0 0 45        U R                  [        5      nUR	                  [        U40 0 45         U R                  [        U5      U< S[        < S35        UR	                  [        S0 0 45        U R                  [        5      nUR	                  [        SSU00 45         U R                  [        U5      U< S[        < S35        UR	                  [        S0 0 45        g ! UR	                  [        S0 0 45        f = f! UR	                  [        S0 0 45        f = f! UR	                  [        S0 0 45        f = f)Nr   r   z(...)r   z, ...)rE   z, a=...))rT   r*   r+   r   __setstate__rW   r   )r5   r   r   s      r   test_recursive_reprTestPartial.test_recursive_repr   sv   ,,))*!DLL,E,E+FGLL!	2r2'	2T!W4&9:NNGRR01LL!	!r2./	2T!WtW&FGNNGRR01LL!	c1Xr23	2T!Ww&HINNGRR01 NNGRR01 NNGRR01 NNGRR01s$   E5 'F 4'F1 5FF.1Gc                    [        SU R                  5         U R                  [        S/S/S9n/ Ul        [        [        R                  S-   5       HQ  n[        R                  " [        R                  " X5      5      nU R                  [        U5      [        U5      5        MS     S S S 5        g ! , (       d  f       g = f)Nr
   r   Tr   r@   )r   modulerT   r$   attrr   pickleHIGHEST_PROTOCOLloadsdumpsrW   r5   r   protof_copys       r   test_pickleTestPartial.test_pickle  s    [$++6Ytf=AAFv66:;fll1&<=  6!2IaLA < 766s   BB00
B>c                    U R                  [        S/S/S9n/ Ul        [        R                  " U5      nU R	                  [        U5      [        U5      5        U R                  UR                  UR                  5        U R                  UR                  UR                  5        U R                  UR                  UR                  5        g r   )rT   r$   r   copyrW   assertIsr   r!   r5   r   r   s      r   	test_copyTestPartial.test_copy  s    LLVH4&L916*IaL9fkk166*fkk166*fooqzz2r   c                 H   U R                  [        S/S/S9n/ Ul        [        R                  " U5      nU R                  [        U5      [        U5      5        U R                  UR                  UR                  5        U R                  UR                  UR                  5        U R                  UR                  S   UR                  S   5        U R                  UR                  UR                  5        U R                  UR                  S   UR                  S   5        g )Nr   Tr   r   r   )	rT   r$   r   r   deepcopyrW   assertIsNotr   r!   r   s      r   test_deepcopyTestPartial.test_deepcopy  s    LLVH4&L9q!6*IaL9aff-aff-Q3!**5/E1BCr   c           
         U R                  [        5      nUR                  [        S[	        SS9[	        / S945        U R                  [        U5      [        S[	        SS9[	        / S945        U R                  U" SSS9SSSS	.45        UR                  [        S[	        SS9S 45        U R                  [        U5      [        S[	        SS90 45        U R                  U" SSS9SSSS	.45        UR                  [        SS S 45        U R                  U" SSS9SS
S045        U R                  U" S5      S0 45        U R                  U" 5       S0 45        UR                  [        S0 S 45        U R                  [        U5      [        S0 0 45        U R                  U" SSS9SS
S045        U R                  U" S5      S0 45        U R                  U" 5       S0 45        g )Nr@   rB   rm   r   rA   rC   ro   r_   rD   rF   r   )rA   )rT   r$   r   r   rX   rW   r   s     r   test_setstateTestPartial.test_setstate!  s   LL#	tbz4R=AB1!4Tr]C	E1fBR.@%AB	tbz4891tbz2'FG1fBR.@%AB	tT231fsBi%891|,tRj)	R./1R'<=1dS"I%671bz*r2h'r   c           	      d   U R                  [        5      nU R                  [        UR                  [
        S0 45        U R                  [        UR                  [
        S0 0 S 45        U R                  [        UR                  [
        S0 S /5        U R                  [        UR                  S S0 S 45        U R                  [        UR                  [
        S 0 S 45        U R                  [        UR                  [
        / 0 S 45        U R                  [        UR                  [
        S/ S 45        g Nr   )rT   r$   rc   rd   r   r   r   s     r   test_setstate_errors TestPartial.test_setstate_errors:  s    LL#)Q^^gr25FG)Q^^gr2r45PQ)Q^^gr2t5LM)Q^^dBD5IJ)Q^^gtR5NO)Q^^gr2t5LM)Q^^gr2t5LMr   c           	      p   U R                  [        5      nUR                  [        [	        S5      [        SS9S 45        [        U5      nU R                  U[        S[        SS90 45        U R                  [        US   5      [        5        U R                  [        US   5      [        5        U" 5       nU R                  USSS045        U R                  [        US   5      [        5        U R                  [        US   5      [        5        UR                  [        [        S5      0 S 45        [        U5      nU R                  U[        S0 0 45        U R                  [        US   5      [        5        U" S5      nU R                  US0 45        U R                  [        US   5      [        5        g )	Nr  rB   rm   r@   rA   rE   r   r_   )rT   r$   r   r   r&   r:   rW   rX   r   typetupler0   )r5   r   srs       r   test_setstate_subclasses$TestPartial.test_setstate_subclassesD  sO   LL#	dCDaLWdD2J;<d1Q4j%(d1Q4j$'CTC9-.d1Q4j%(d1Q4j$'	$T:;aLWdB34d1Q4j%(aDVRL)d1Q4j%(r   c           
         [        SU R                  5         U R                  [        5      nUR	                  US0 0 45         [        [        R                  S-   5       HV  n[        R                  " S5         U R                  [        5         [        R                  " X5        S S S 5        S S S 5        MX     UR	                  [        S0 0 45        U R                  [        5      nUR	                  [        U40 0 45         [        [        R                  S-   5       Hf  n[        R                  " [        R                  " X5      5      n U R                  UR                  S   U5        UR	                  [        S0 0 45        Mh     UR	                  [        S0 0 45        U R                  [        5      nUR	                  [        SSU00 45         [        [        R                  S-   5       Hf  n[        R                  " [        R                  " X5      5      n U R                  UR                   S   U5        UR	                  [        S0 0 45        Mh     UR	                  [        S0 0 45         S S S 5        g ! , (       d  f       GN= f! , (       d  f       GM>  = f! UR	                  [        S0 0 45        f = f! UR	                  [        S0 0 45        f = f! UR	                  [        S0 0 45        f = f! UR	                  [        S0 0 45        f = f! UR	                  [        S0 0 45        f = f! , (       d  f       g = f)Nr
   r   r@   d   r   rE   )r   r   rT   r   r   r   r   r   r   infinite_recursionrc   RecursionErrorr   r   r   r   r!   r   s       r   test_recursive_pickle!TestPartial.test_recursive_pickleX  s   [$++6W%ANNAr2r?+6"6#:#:Q#>?E 33C8!..~>"LL2 ? 98 @ R45W%ANNGaT2r236"6#:#:Q#>?E#\\&,,q*@AFCfkk!nf=++Wb"b,AB @ R45W%ANNGR#q2676"6#:#:Q#>?E#\\&,,q*@AFCfooc&:FC++Wb"b,AB @ R45E 76 ?> 98 R45 ++Wb"b,ABR45 ++Wb"b,ABR45E 76s   +L65J 8JI;	%J-J 9AL6A	KJ>+KA	L6A	LK:;LL6;
J
J
J	J  J;;L6>KKK77L6:LLL33L66
Mc                      " S S5      nU R                  [        5      nU R                  [        UR                  U" 5       5        g )Nc                        \ rS rSrS rS rSrg)7TestPartial.test_setstate_refcount.<locals>.BadSequencei  c                     g)NrH   r   rf   s    r   __len__?TestPartial.test_setstate_refcount.<locals>.BadSequence.__len__      r   c                 j    US:X  a  [         $ US:X  a  [        [        S5      5      $ US;   a  0 $ [        e)Nr   r@   i@B )rA   rG   )maxr  r   
IndexError)r5   keys     r   __getitem__CTestPartial.test_setstate_refcount.<locals>.BadSequence.__getitem__  s6    !8JAX w00F]I  r   r   N)r)   r*   r+   r,   r  r"  r-   r   r   r   BadSequencer    s    !r   r$  )rT   r   rc   rd   r   )r5   r$  r   s      r   test_setstate_refcount"TestPartial.test_setstate_refcount~  s4    
	! 
	! LL )Q^^[]Cr   c                   ^   " U 4S jS5      nU" 5       nT R                  UR                  SSS9SSSS.45        T R                  UR                  SSS9S	US4SSS.45        T R                  UR                  SSS9SSSS.45        T R	                  [
        5       nT R                  UR                  SSS9SSSS.45        S S S 5        T R                  WR                  [        5        T R                  UR                  SSS9S	US4SSS.45        T R                  UR                  SSS9SSSS.45        g ! , (       d  f       N|= f)
Nc                      > \ rS rSr Y R	                  \SSS9r\"  Y R	                  \SSS95      r\	"  Y R	                  \SSS95      r
Srg)-TestPartial.test_partial_as_method.<locals>.Ai  r@   rA   rm   r   N)r)   r*   r+   r,   rT   r   methclassmethodcmethstaticmethodsmethr-   rf   s   r   Ar)    sI    <<a<0DWa1 =>E gqA!>?Er   r/  rG   rH   ro   )r@   rG   rA   rD   r@   )rW   r*  r,  r.  assertWarnsFutureWarningfilename__file__)r5   r/  rE   ws   `   r   test_partial_as_method"TestPartial.test_partial_as_method  s:   	@ 	@
 CQ&2B)CDaAq!9AA6F*GHa63C*DEm,QVVAV^fAA6F-GH -X.aAq!9AA6F*GHa63C*DE	 -,s   &D99
Ec                     U R                   [           nU R                  UR                  U R                   5        U R	                  UR
                  [        45        U R	                  UR                  S5        g r  )rT   r   r   
__origin__rW   __args____parameters__)r5   aliass     r   test_partial_genericalias%TestPartial.test_partial_genericalias  sT    S!e&&5#0--r2r   r   N)!r)   r*   r+   r,   r\   r`   rg   rq   ru   rx   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r%  r5  r<  r-   r   r   r   r=   r=   @   s    ?7?	%.2<==:F>3=8
.9020B3	D(2N)(#6LD F 3r   r=   z requires the C _functools modulec                   P    \ rS rSr\(       a  \r\R                  rS rS rS r	Sr
g)TestPartialCi  c                 j   U R                  [        SSSSS9nU R                  [        [        US[
        5        U R                  [        [        USS5        U R                  [        [        US	[        SSS95        U R                  [        5      n U?U R                  S
5        g ! [         a     g f = f)Nr@   rA   rB   rC   rD   r    r   r_   r!   z-partial object allowed __dict__ to be deleted)rT   r   rc   AttributeErrorsetattrrY   rX   hexr"   re   rd   rZ   s     r   test_attributes_unwritable'TestPartialC.test_attributes_unwritable  s    LL!Q"L3.'1fcB.'1ffE.'1j$a.QLL	G
 IIEF  		s   B% %
B21B2c                    U R                  [        5      nSUR                  S'   [        U5      nU R	                  SU5        U R	                  SU5        U R                  [        5         U" 5         S S S 5        g ! , (       d  f       g = f)Nvaluei  1234z'value')rT   r   r!   r   r   rc   rd   )r5   r[   r  s      r   'test_manually_adding_non_string_keyword4TestPartialC.test_manually_adding_non_string_keyword  sb    LL!"

4Gfa i#y)C *))s   )A::
Bc                    ^ U R                  [        5      m " U4S jS[        5      nS/TR                  U" 5       '   [	        T5      nU R                  SU5        U R                  SU5        g )Nc                   "   > \ rS rSrU 4S jrSrg)@TestPartialC.test_keystr_replaces_value.<locals>.MutatesYourDicti  c                 &   > S/TR                   U '   g)Nsth2astr)r!   rZ   s    r   __str__HTestPartialC.test_keystr_replaces_value.<locals>.MutatesYourDict.__str__  s    $*8

4 r   r   N)r)   r*   r+   r,   rQ  r-   )r[   s   r   MutatesYourDictrM    s     r   rS  sthrP  z['sth'])rT   r   r   r!   r   r   )r5   rS  r  r[   s      @r   test_keystr_replaces_value'TestPartialC.test_keystr_replaces_value  sW    LL!	f 	 */

?$%Gfa i#r   r   N)r)   r*   r+   r,   c_functoolsr   rT   rD  rI  rU  r-   r   r   r   r?  r?    s%    %%G$r   r?  c                   0    \ rS rSr\r\R                  rSrg)TestPartialPyi  r   N)r)   r*   r+   r,   py_functoolsr   rT   r-   r   r   r   rY  rY    s    F""Gr   rY  c                       \ rS rSrSrg)CPartialSubclassi  r   Nr(   r   r   r   r\  r\    s    r   r\  c                       \ rS rSrSrg)PyPartialSubclassi  r   Nr(   r   r   r   r^  r^    r.   r   r^  c                   *    \ rS rSr\(       a  \rSrSrg)TestPartialCSubclassi  Nr   )	r)   r*   r+   r,   rW  r\  rT   r   r-   r   r   r   r`  r`    s    "  $r   r`  c                       \ rS rSr\rSrg)TestPartialPySubclassi  r   N)r)   r*   r+   r,   r^  rT   r-   r   r   r   rb  rb    s    Gr   rb  c                   z    \ rS rSr " S S\5      r\" 5       rS rS rS r	S r
S rS	 rS
 rS rS rS rS rSrg)TestPartialMethodi  c                      \ rS rSr\R
                  " \5      r\R
                  " \S5      r\R
                  " \SS9r	\R
                  " \SSS9r
\R
                  " \SSS9r\R
                  " \S	5      r\R
                  " \R                  " \S
S9S5      r\R
                  " \" \5      S5      r\R
                  " \" \5      SS9rSrg)TestPartialMethod.Ai  r@   rA   rm   rG   rH   ro   r5   r    rl      rL   rn      	   rp   r   N)r)   r*   r+   r,   r
   partialmethodr   nothing
positionalr!   bothspec_keywordsr   rT   over_partialr-  staticr+  clsr-   r   r   r   r/  rf    s    ))'2,,Wa8
**7a8&&wQ7!//aaH((Q7 ..y/@/@A/NPQR((g)>B%%k'&:a@r   r/  c                 >   U R                  U R                  R                  5       U R                  40 45        U R                  U R                  R                  S5      U R                  S40 45        U R                  U R                  R                  SS9U R                  4SS045        U R                  U R                  R                  SSS9U R                  S4SS045        U R                  U R                  R                  5       U R                  S40 45        U R                  U R                  R                  S5      U R                  SS40 45        U R                  U R                  R                  SS9U R                  S4SS045        U R                  U R                  R                  SSS9U R                  SS4SS045        U R                  U R                  R	                  5       U R                  4SS045        U R                  U R                  R	                  S5      U R                  S4SS045        U R                  U R                  R	                  SS9U R                  4SSS.45        U R                  U R                  R	                  SSS9U R                  S4SSS.45        U R                  U R                  R                  5       U R                  S	4S
S045        U R                  U R                  R                  S5      U R                  S	S4S
S045        U R                  U R                  R                  SS9U R                  S	4SSS.45        U R                  U R                  R                  SSS9U R                  S	S4SSS.45        U R                  U R                  R                  U R                  SSS9U R                  S	S4SSS.45        U R                  U R                  R                  5       U R                  4SSS.45        g )Nrl   rh  ri  rL   r@   rE   rA   )rE   rL   rG   rF   rH   rK   rg  )rW   rE   rn  ro  r!   rp  r/  rq  rf   s    r   rx   'TestPartialMethod.test_arg_combinations  sW   )TVVIr?;*dffa[",=>!,y3(.CDQ/4661+Qx1HI**,{B.?@**1-A/CD**Q*/4661+Qx1HI**1*2dffa^c1X4NO*dffYa,AB+tvvqkC8-DE1-	;K/LMa0DFFA;aa@P2QR$&&!sAh(?@Q4661a.3()CDq)TVVQKqq9I+JKQ!,1~QQ?O.PQTVVQ!41~QUVGW6XY--/466)aQR=S1TUr   c                 f   U R                  U R                  R                  5       U R                  SS40 45        U R                  U R                  R                  S5      U R                  SSS40 45        U R                  U R                  R                  SS9U R                  SS4SS045        U R                  U R                  R                  SSS9U R                  SSS4SS045        U R                  U R                  R                  U R                  SSS9U R                  SSS4SS045        g )Nr@   rl   rh  rn   rl  rp   )rW   rE   r   r/  rf   s    r   test_nestedTestPartialMethod.test_nested  s   DFFAq>2*>?q)TVVQ1,=r+BC+tvvq!nsAh-GHqA.$&&!Q1BS!H0MNtvvqA6$&&!Q9JSRSH8UVr   c                 j   U R                  U R                  R                  5       U R                  S4SS045        U R                  U R                  R                  S5      U R                  SS4SS045        U R                  U R                  R                  SS9U R                  S4SSS.45        U R                  U R                  R                  SSS9U R                  SS4SSS.45        U R                  U R                  R                  U R                  SSS9U R                  SS4SSS.45        g )Nrn   rL   rh  rl   rj  rl  rL   rp   )rW   rE   rr  r/  rf   s    r   test_over_partial#TestPartialMethod.test_over_partial  s   ,,.$&&!sAh0GH,,Q/4661a.3(1KL,,q,1TVVQKqqAQ3RS,,Q!,41~QUVGW6XY,,TVVQ!,<1~UV]^O_>`ar   c                    U R                   nU R                  UR                  R                  U5        U R                  UR                  R                  U5        U R                  UR
                  R                  U5        U R                  UR                  R                  U R                  5        U R                  U R                  R                  R                  U R                  5        g r   )rE   r   rp  __self__r   rr  rt  r/  r5   objs     r   test_bound_method_introspection1TestPartialMethod.test_bound_method_introspection&  s    ffchh''-cjj))3/c&&//5cgg&&/dffjj))4662r   c                    U R                   nU R                  [        UR                  S5      5        U R                  [        UR                  S5      5        U R                  [        UR
                  S5      5        U R                  [        UR                  S5      5        U R                  [        U R                  R                  S5      5        g )Nr  )r/  assertFalsehasattrrp  r   rr  rs  rE   r  s     r   test_unbound_method_retrieval/TestPartialMethod.test_unbound_method_retrieval.  s    ff:67Z89!1!1:>?Z89
;<r   c           	      4   U R                   U R                  4 GHh  nU R                  US9   U R                  UR	                  5       S0 45        U R                  UR	                  S5      S0 45        U R                  UR	                  SS9SSS045        U R                  UR	                  SSS9SSS045        U R                  UR                  5       U R                   4SS045        U R                  UR                  S5      U R                   S4SS045        U R                  UR                  SS	9U R                   4SSS
.45        U R                  UR                  SSS	9U R                   S4SSS
.45        S S S 5        GMk     g ! , (       d  f       GM~  = f)Nr  )rj  rl   )rj  rl   rj  rl  rp   rk  ri  r{  )r/  rE   subTestrW   rs  rt  r  s     r   test_descriptors"TestPartialMethod.test_descriptors6  s[   FFDFF#C#&  bz:  A=  a4#q2BC  A!3fsAh5GH  dffYa,AB  tvvqkC8-DE  1	;K/LM  aDFFA;aa@P2QR '& $&&s   EF
F	c                     U R                  U R                  R                  SS9U R                  4SS045        U R                  U R                  R                  U R                  SS9U R                  4SS045        g )NrG   rm   rE   )rW   rE   r!   r/  rf   s    r   test_overriding_keywords*TestPartialMethod.test_overriding_keywordsC  sd    1-	C8/DE15	C87LMr   c                 d   U R                  [        5          " S S[        5      nS S S 5        U R                  [        5          " S S5      nS S S 5        U R                  [        5          " S S5      nS S S 5        g ! , (       d  f       N_= f! , (       d  f       NH= f! , (       d  f       g = f)Nc                   :    \ rS rSr\R
                  " SS5      rSrg).TestPartialMethod.test_invalid_args.<locals>.BiI  Nr@   r   r)   r*   r+   r,   r
   rm  methodr-   r   r   r   r   r  I  s    "00q9r   r   c                   6    \ rS rSr\R
                  " 5       rSrg)r  iL  r   Nr  r   r   r   r   r  L  s    "002r   c                   6    \ rS rSr\R
                  " \SS9rSrg)r  iO  r@   )r    rE   r   N)	r)   r*   r+   r,   r
   rm  r   r  r-   r   r   r   r   r  O  s    "00gCr   )rc   rd   r   )r5   r   s     r   test_invalid_args#TestPartialMethod.test_invalid_argsG  s    y):F : * y)3 3 * y)D D *) *) *) *)s#   A?B+B!?
B
B!
B/c                    U R                  [        [        U R                  5      S   5      SR	                  [
        5      5        U R                  [        [        U R                  5      S   5      SR	                  [
        5      5        U R                  [        [        U R                  5      S   5      SR	                  [
        5      5        U R                  [        [        U R                  5      S   5      SR	                  [
        5      5        U R                  [        [        U R                  5      S	   5      S
R	                  [
        5      5        g )Nrn  zfunctools.partialmethod({})ro  zfunctools.partialmethod({}, 1)r!   z functools.partialmethod({}, a=2)rq  z+functools.partialmethod({}, self=1, func=2)rp  z#functools.partialmethod({}, 3, b=4))rW   r   varsr/  formatr   rf   s    r   r   TestPartialMethod.test_reprR  s    d466l9566==gF	Hd466l<899@@I	Kd466l:67;BB7K	Md466l?;<FMMgV	Xd466l623>EEgN	Pr   c                     " S S[         R                  5      nU R                  UR                  R                  5        U R                  UR
                  R                  5        U R                  R                  U R                  R                  U R                  R                  U R                  R                  U R                  R                  4 H  nU R                  [        USS5      5        M!     g )Nc                   ^    \ rS rSr\R
                  S 5       r\R                  " \S5      r	Sr
g)1TestPartialMethod.test_abstract.<locals>.Abstracti_  c                     g r   r   r5   rQ   r   s      r   add5TestPartialMethod.test_abstract.<locals>.Abstract.adda      r   rl   r   N)r)   r*   r+   r,   abcabstractmethodr  r
   rm  add5r-   r   r   r   Abstractr  _  s.       **32Dr   r  __isabstractmethod__F)r  ABCMetarU   r  r  r  r/  rs  rt  rr  r   rp  r  r   )r5   r  r    s      r   test_abstractTestPartialMethod.test_abstract^  s    	3s{{ 	3 	99:::;VV]]DFFJJ0C0CTVV]]TXTZTZT_T_`DWT+A5IJ ar   c                 v    S n[         R                  " US5      nU R                  U" S5      U" SS5      5        g )Nc                
    X-   $ r   r   rD   s     r   r   1TestPartialMethod.test_positional_only.<locals>.fn  	    5Lr   r@   rA   )r
   rT   rW   r   s      r   test_positional_only&TestPartialMethod.test_positional_onlym  s5    	 a#1qAw'r   r   N)r)   r*   r+   r,   r   r/  rE   rx   rx  r|  r  r  r  r  r  r   r  r  r-   r   r   r   rd  rd    sX    AF A 	
AV2Wb3=SN	D
PK(r   rd  c                   L   \ rS rSr\R
                  \R                  4S jrS rS r	\
R                  " \R                  R                  S:  S5      S 5       rS rS	 rS
 r\R(                  \
R                  " \R                  R                  S:  S5      S 5       5       rS rSrg)TestUpdateWrapperiu  c                 .   U H'  nU R                  [        X5      [        X%5      5        M)     U HF  n[        X5      n[        X%5      nU H'  nUS:X  a  US:X  a  M  U R                  Xx   Xh   5        M)     MH     U R                  UR                  U5        g )Nr"   __wrapped__)r   r   r  )	r5   wrapperwrappedassignedupdatedr   wrapper_attrwrapped_attrr!  s	            r   check_wrapperTestUpdateWrapper.check_wrapperw  s     DMM''0''2HI  D"71L"71L#:%#*>l/1BC	 $  	g))73r   c                 j    S " 5       nSUl         SUl        SS jn[        R                  " X!5        X!4$ )Nc                      S 7=n4SS js8$ )Tc                     g r   r   rm   s    r   r   ,TestUpdateWrapper._default_update.<locals>.f      r   )rE   This is a new annotationr   )	.defaultsr  s     r   <generic parameters of f>DTestUpdateWrapper._default_update.<locals>.<generic parameters of f>  s	    a 	r   This is also a testzThis is a bald faced liec                     g r   r   ro   s    r   r  2TestUpdateWrapper._default_update.<locals>.wrapper      r   )rF   zThis is the prior annotation)r   r  r
   update_wrapperr5   r   r  s      r   _default_update!TestUpdateWrapper._default_update  s2    	 '2	  ,zr   c                 
   U R                  5       u  pU R                  X5        UR                  u  nU R                  UR                  U5        U R                  UR                  S5        U R                  UR                  UR                  5        U R                  UR                  S5        U R                  UR                  S   S5        U R                  SUR                  5        U R                  UR                  U45        g )Nr   r  rE   r  rF   )r  r  __type_params__r   r  rW   r)   r+   r   __annotations__assertNotIn)r5   r  r   r  s       r   test_default_update%TestUpdateWrapper.test_default_update  s    ))+
7&g))1-))3/--q~~>'<=0057QRg556001$7r   rA   )Docstrings are omitted with -O2 and abovec                 `    U R                  5       u  pU R                  UR                  S5        g NzThis is a testr  rW   __doc__r5   r  r   s      r   test_default_update_doc)TestUpdateWrapper.test_default_update_doc  )     ))+
*:;r   c                    S nSUl         S n[        R                  " X!SS5        U R                  X!SS5        U R	                  UR
                  S5        U R                  UR                  UR                  5        U R	                  UR                  S 5        U R	                  UR                  0 5        U R                  [        US5      5        g )Nc                      g r   r   r   r   r   r   +TestUpdateWrapper.test_no_update.<locals>.f  r  r   r  c                      g r   r   r   r   r   r  1TestUpdateWrapper.test_no_update.<locals>.wrapper  r  r   r   r  r   )r   r
   r  r  rW   r)   assertNotEqualr+   r  r  r  r  r  s      r   test_no_update TestUpdateWrapper.test_no_update  s    	 '	  R47r2.))95G00!..A$/00"5&12r   c                    S nSUl         [        SSSS9Ul        S n0 Ul        SnS	n[        R                  " X!X45        U R                  X!X45        U R                  UR                  S
5        U R                  UR                  UR                  5        U R                  UR                  S 5        U R                  UR                   S5        U R                  UR                  UR                  5        g )Nc                      g r   r   r   r   r   r   2TestUpdateWrapper.test_selective_update.<locals>.f  r  r   This is a different testr@   rA   rG   rN   c                      g r   r   r   r   r   r  8TestUpdateWrapper.test_selective_update.<locals>.wrapper  r  r   r  	dict_attrr  )r   rX   r  r
   r  r  rW   r)   r  r+   r  r5   r   r  assignupdates        r   test_selective_update'TestUpdateWrapper.test_selective_update  s    	+Q!q)	  V<7v6))95G00!..A$/'AB**AKK8r   c                    S nS n0 Ul         SnSn[        R                  " X!X45        U R                  SUR                  5        U R                  UR                   0 5        U? U R                  [        5         [        R                  " X!X45        S S S 5        SUl         U R                  [        5         [        R                  " X!X45        S S S 5        g ! , (       d  f       NK= f! , (       d  f       g = f)Nc                      g r   r   r   r   r   r   4TestUpdateWrapper.test_missing_attributes.<locals>.f  r  r   c                      g r   r   r   r   r   r  :TestUpdateWrapper.test_missing_attributes.<locals>.wrapper  r  r   r  r  r   r@   )r  r
   r  r  r"   rW   rc   rA  r  s        r   test_missing_attributes)TestUpdateWrapper.test_missing_attributes  s    		  V<!1!12**B/~.$$W@ /~.$$W@ /. /. /.s   8C4C&
C#&
C4c                    S n[         R                  " U[        5        U R                  UR                  S5        U R                  UR                  R                  S5      5        U R                  UR                  0 5        g )Nc                      g r   r   r   r   r   r  6TestUpdateWrapper.test_builtin_update.<locals>.wrapper  r  r   r  zmax()	r
   r  r  rW   r)   rU   r  
startswithr  r5   r  s     r   test_builtin_update%TestUpdateWrapper.test_builtin_update  s^    
	  #.))51226:;00"5r   c                     S n[         R                  " U[        5        U R                  UR                  S5        U R                  UR
                  0 5        U R                  UR                  S5        g )Nc                      g r   r   r   s    r   r  ;TestUpdateWrapper.test_update_type_wrapper.<locals>.wrapper  s    Dr   r  r   )r
   r  r  rW   r)   r  r  r  s     r   test_update_type_wrapper*TestUpdateWrapper.test_update_type_wrapper  sW       $/))6200"500"5r   r   N)r)   r*   r+   r,   r
   WRAPPER_ASSIGNMENTSWRAPPER_UPDATESr  r  r  unittestskipIfr   flagsoptimizer  r  r  r  r   requires_docstringsr  r  r-   r   r   r   r  r  u  s      )<<'774&	
8 __SYY''1,@B<B<39$A(   __SYY''1,@B6B !66r   r  c                       \ rS rSrS rS r\R                  " \R                  R                  S:  S5      S 5       rS rS rS	rg
)	TestWrapsi  c                 b    S nSUl         SUl        [        R                  " U5      S 5       nX!4$ )Nc                      g r   r   r   r   r   r   $TestWraps._default_update.<locals>.f  r  r   r  zThis is still a bald faced liec                      g r   r   r   r   r   r  *TestWraps._default_update.<locals>.wrapper  r  r   )r   r  r
   wrapsr  s      r   r  TestWraps._default_update  s:    	 '8			 
	zr   c                    U R                  5       u  pU R                  X5        U R                  UR                  S5        U R                  UR                  UR                  5        U R                  UR
                  S5        g )Nr   r  )r  r  rW   r)   r+   r   r  s      r   r  TestWraps.test_default_update  se    ))+
7&))3/--q~~>'<=r   rA   r  c                 `    U R                  5       u  pU R                  UR                  S5        g r  r  )r5   r  _s      r   r  !TestWraps.test_default_update_doc  r  r   c                 l   S nSUl         [        R                  " USS5      S 5       nU R                  X!SS5        U R	                  UR
                  S5        U R                  UR                  UR                  5        U R	                  UR                  S 5        U R                  [        US5      5        g )Nc                      g r   r   r   r   r   r   #TestWraps.test_no_update.<locals>.f  r  r   r  r   c                      g r   r   r   r   r   r  )TestWraps.test_no_update.<locals>.wrapper  r  r   r  r   )r   r
   r  r  rW   r)   r  r+   r  r  r  r  s      r   r  TestWraps.test_no_update  s    	 '	B	#	 
$	7r2.))95G00!..A$/&12r   c                    S nSUl         [        SSSS9Ul        S nSnS	n[        R                  " XU5      US
 5       5       nU R                  XQX45        U R                  UR                  S5        U R                  UR                  UR                  5        U R                  UR                  S 5        U R                  UR                   S5        U R                  UR                  UR                  5        g )Nc                      g r   r   r   r   r   r   *TestWraps.test_selective_update.<locals>.f  r  r   r  r@   rA   rG   rN   c                     0 U l         U $ r   r  )r   s    r   add_dict_attr6TestWraps.test_selective_update.<locals>.add_dict_attr  s    AKHr   r  r  c                      g r   r   r   r   r   r  0TestWraps.test_selective_update.<locals>.wrapper#  s     r   r  )r   rX   r  r
   r  r  rW   r)   r  r+   r  )r5   r   r)  r  r  r  s         r   r  TestWraps.test_selective_update  s    	+Q!q)	 	F	+		 
 
,	7v6))95G00!..A$/'AB**AKK8r   r   N)r)   r*   r+   r,   r  r  r  r  r   r  r  r  r  r  r-   r   r   r   r  r    sI    	> __SYY''1,@B<B<39r   r  c                        \ rS rSrS rS rSrg)
TestReducei/  c           	      l    " S S5      nS nU R                  U R                  U/ SQS5      S5        U R                  U R                  USS// S	S
/// 5      / SQ5        U R                  U R                  S [        SS5      S5      S5        U R                  U R                  S [        SS5      S5      S5        U R                  U R                  X!" S5      5      S5        U R                  U R                  X!" S5      S5      S5        U R                  U R                  X!" S5      S5      S5        U R                  [        U R                  5        U R                  [        U R                  SS5        U R                  [        U R                  SSS5        U R                  U R                  SS5      S5        U R                  U R                  SSS5      S5        U R                  [        U R                  SS5        U R                  [        U R                  U/ 5        U R                  [        U R                  US5        U R                  [        U R                  US5        U R                  [        U R                  U[        5       5         " S S5      nU R                  [        U R                  X#" 5       5        U R                  U R                  U/ S 5      S 5        U R                  U R                  U/ S5      S5         " S S5      nU R                  [        U R                  SU" 5       5        g )Nc                   &    \ rS rSrS rS rS rSrg)'TestReduce.test_reduce.<locals>.Squaresi1  c                     Xl         / U l        g r   r  sofar)r5   r  s     r   __init__0TestReduce.test_reduce.<locals>.Squares.__init__2  s    
r   c                 ,    [        U R                  5      $ r   )lenr5  rf   s    r   r  /TestReduce.test_reduce.<locals>.Squares.__len__6  s    4::&r   c                     SUs=::  a  U R                   :  d  [        e  [        e[        U R                  5      nX!::  a)  U R                  R	                  X"-  5        US-  nX!::  a  M)  U R                  U   $ )Nr   r@   )r  r   r9  r5  append)r5   ins      r   r"  3TestReduce.test_reduce.<locals>.Squares.__getitem__9  sf    A((
*:(
*:

OfJJ%%ac*FA f zz!}$r   r4  N)r)   r*   r+   r,   r6  r  r"  r-   r   r   r   Squaresr2  1  s     '%r   r@  c                 
    X-   $ r   r   r   s     r   r  #TestReduce.test_reduce.<locals>.add@  r  r   rN   r   r  rE   rL   rp   r4  )rE   rL   rp   r4  c                 
    X-  $ r   r   r   s     r   rR   (TestReduce.test_reduce.<locals>.<lambda>G  s    !#r   rA   rj  r@   i  c                 
    X-  $ r   r   r   s     r   rR   rD  I  s    QSr      l     h rB   i  r   *   1)rG  rG  r   c                       \ rS rSrS rSrg)/TestReduce.test_reduce.<locals>.TestFailingIteriZ  c                     [         er   RuntimeErrorrf   s    r   __iter__8TestReduce.test_reduce.<locals>.TestFailingIter.__iter__[  s    ""r   r   N)r)   r*   r+   r,   rN  r-   r   r   r   TestFailingIterrJ  Z  s    #r   rP  c                       \ rS rSrS rSrg)&TestReduce.test_reduce.<locals>.BadSeqib  c                     [         er   )
ValueError)r5   indexs     r   r"  2TestReduce.test_reduce.<locals>.BadSeq.__getitem__c  s      r   r   N)r)   r*   r+   r,   r"  r-   r   r   r   BadSeqrR  b  s    !r   rW  )rW   reducer   rc   rd   r   rM  rT  )r5   r@  r  rP  rW  s        r   test_reduceTestReduce.test_reduce0  s   	% 	%	S/2>FKKsCj"sCj92>	
 	%5uQqz1EtLKK(%"+q9	
 	S'"+6<S'"+q93?S'!*a8!<)T[[1)T[["b9)T[["b"=R-s3RS137)T[["h?)T[[#r:)T[[#r:)T[[#r:)T[[#vx@	# 	# 	,S/:KLS"d3T:S"b126	! 	! 	*dkk2vx@r   c                     " S S5      nSSK Jn  U R                  U R                  X!" S5      5      S5        U R                  U R                  X!" S5      S5      S5        U R	                  [
        U R                  X!" S5      5        U R                  U R                  X!" S5      S5      S5        U R                  U R                  X!" S	5      5      S5        U R                  U R                  X!" S	5      S5      S5        S	S
SS.nU R                  U R                  X#5      SR                  UR                  5       5      5        g )Nc                        \ rS rSrS rS rSrg)5TestReduce.test_iterator_usage.<locals>.SequenceClassii  c                     Xl         g r   r>  )r5   r>  s     r   r6  >TestReduce.test_iterator_usage.<locals>.SequenceClass.__init__j      r   c                 P    SUs=::  a  U R                   :  a
   U$   [        e[        eNr   )r>  r   )r5   r=  s     r   r"  ATestReduce.test_iterator_usage.<locals>.SequenceClass.__getitem__l  s(    ?DFF?H # %$*$r   r_  N)r)   r*   r+   r,   r6  r"  r-   r   r   r   SequenceClassr]  i  s    %r   re  r   )r  rl   rB   rG  4   r@   rA   rG   )onetwothreer   )operatorr  rW   rX  rc   rd   r   keys)r5   re  r  rp   s       r   test_iterator_usageTestReduce.test_iterator_usageh  s   	% 	% 	!S-*:;R@S-*:B?D)T[[#}Q7GHS-*:B?DS-*:;Q?S-*:B?Da!,S,bggaffh.?@r   r   N)r)   r*   r+   r,   rY  rl  r-   r   r   r   r/  r/  /  s    5ApAr   r/  c                   @    \ rS rSr\(       a  \R
                  rSrgSrg)TestReduceCi~  r   N)r)   r*   r+   r,   rW  rX  r-   r   r   r   ro  ro  ~  s    ## r   ro  c                   8    \ rS rSr\" \R                  5      rSrg)TestReducePyi  r   N)r)   r*   r+   r,   r-  rZ  rX  r-   r   r   r   rq  rq    s    ,--.Fr   rq  c                       \ rS rSrS rS rS rS rS rS r	S r
\R                  " \R                  S	5      S
 5       rSrg)TestCmpToKeyi  c                    S nU R                  U5      nU R                  U" S5      U" S5      5        U R                  U" S5      U" S5      5        U R                  U" S5      U" S5      5        S nU R                  U5      nU R                  U" S5      U" S5      5        U R	                  U" S5      U" S5      5        U R                  U" S5      U" S5      5        U R                  U" S5      U" S5      5        g )	Nc                     X:  X:  -
  $ r   r   r   s     r   cmp1*TestCmpToKey.test_cmp_to_key.<locals>.cmp1      Eae$$r   rG   r@   c                 0    [        U 5      [        U5      -
  $ r   r   r   s     r   cmp2*TestCmpToKey.test_cmp_to_key.<locals>.cmp2  s    q6CF?"r   g      @4rA   35)
cmp_to_keyrW   assertGreaterassertGreaterEqual
assertLessassertLessEqualr  )r5   rv  r!  r{  s       r   test_cmp_to_keyTestCmpToKey.test_cmp_to_key  s    	%ood#QQ(3q63q6*AA/	#ood#S3s8,AD	*SVSY/CFCI.r   c                    S nU R                  US9nU R                  U" SS9U" SS95        U R                  U" SS9U" SS95        U R                  [        [
        45         U" S5      S:    S S S 5        U R                  [        [
        45         SU" S5      :    S S S 5        U R                  [        5         U R                  5       nS S S 5        U R                  [        5         U R                  US 5      nS S S 5        U R                  U5      nU R                  [        5         U" 5         S S S 5        U R                  [        5         U" S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Nz= f! , (       d  f       g = f)Nc                     X:  X:  -
  $ r   r   r   s     r   rv  4TestCmpToKey.test_cmp_to_key_arguments.<locals>.cmp1  rx  r   mycmprG   r  r@   )r  rW   r  rc   rd   rA  r5   rv  r!  s      r   test_cmp_to_key_arguments&TestCmpToKey.test_cmp_to_key_arguments  sB   	%ooDo)SQZ031:sqz2	>:;FQJ <	>:;AJ <y)//#C *y)//$-C *ood#y)E *y)dO *) <;;;)))) *)))sH   "E!E2:F(F)F%
F6!
E/2
F 
F
F"%
F36
Gc                 N  ^ S nU R                  U5      nU R                  [        5         U" S5      U" S5      :    S S S 5         " S S5      mU4S jnU R                  [        5         U" S5      U" S5      :    S S S 5        g ! , (       d  f       NN= f! , (       d  f       g = f)Nc                     [         er   r   r   s     r   rv  'TestCmpToKey.test_bad_cmp.<locals>.cmp1  s    ##r   rG   r@   c                       \ rS rSrS rSrg))TestCmpToKey.test_bad_cmp.<locals>.BadCmpi  c                     [         er   r  r4   s     r   __lt__0TestCmpToKey.test_bad_cmp.<locals>.BadCmp.__lt__  s    ''r   r   N)r)   r*   r+   r,   r  r-   r   r   r   BadCmpr    s    (r   r  c                    > T" 5       $ r   r   )rQ   r   r  s     r   rv  r    s
    8Or   )r  rc   r   )r5   rv  r!  r  s      @r   test_bad_cmpTestCmpToKey.test_bad_cmp  s    	$ood#01FSVO 2	( 	(	01FSVO 21 21 21s   B*B
B
B$c                 l    S nU R                  US9nU R                  U" S5      R                  S5        g )Nc                     X:  X:  -
  $ r   r   r   s     r   rv  )TestCmpToKey.test_obj_field.<locals>.cmp1  rx  r   r  2   )r  rW   r  r  s      r   test_obj_fieldTestCmpToKey.test_obj_field  s/    	%ooDo)Rb)r   c                 r    S nU R                  [        [        S5      U R                  U5      S9/ SQ5        g )Nc                 
    X-
  $ r   r   r   s     r   r  )TestCmpToKey.test_sort_int.<locals>.mycmp  r  r   rl   r!  )rH   rG   rA   r@   r   )rW   sortedr   r  )r5   r  s     r   test_sort_intTestCmpToKey.test_sort_int  s.    	adooe.DE(	*r   c                     S n/ SQn[        X R                  U5      S9nU R                  U Vs/ s H  n[        U5      PM     sn/ SQ5        g s  snf )Nc                 >    [        U 5      [        U5      pX:  X:  -
  $ r   rz  r   s     r   r  -TestCmpToKey.test_sort_int_str.<locals>.mycmp  s     q63q6qEae$$r   )	rl   3rn   rA   0rH  rH   10r@   r  )	r   r@   r@   rA   rG   rH   rl   rn   rB   )r  r  rW   r   )r5   r  valuesrG  s       r   test_sort_int_strTestCmpToKey.test_sort_int_str  sJ    	% 6OOE$:;&9&#e*&95	79s   Ac                     S nU R                  U5      nU" S5      nU R                  [        [        U5        U R	                  U[
        R                  R                  5        g )Nc                 
    X-
  $ r   r   r   s     r   r  %TestCmpToKey.test_hash.<locals>.mycmp  r  r   rB   )r  rc   rd   hashassertNotIsInstancecollectionsr  Hashable)r5   r  r!  ks       r   	test_hashTestCmpToKey.test_hash  sJ    	ooe$G)T1-  KOO$<$<=r   z6Signature information for builtins requires docstringsc                     [         R                  " U R                  5      nU R                  [	        U5      S5        S n[         R                  " U R                  U5      5      nU R                  [	        U5      S5        g )Nz(mycmp)c                 
    X-
  $ r   r   r   s     r   r  1TestCmpToKey.test_cmp_to_signature.<locals>.mycmp  r  r   z(obj))r   from_callabler  rW   r   )r5   sigr  s      r   test_cmp_to_signature"TestCmpToKey.test_cmp_to_signature  s^     %%doo6S9-	%%dooe&<=S7+r   r   N)r)   r*   r+   r,   r  r  r  r  r  r  r  r  r  r   MISSING_C_DOCSTRINGSr  r-   r   r   r   rs  rs    sO    / (**7> __W11MO,O,r   rs  c                   ^    \ rS rSr\(       a  \R
                  r\R                  S 5       rSr	g)TestCmpToKeyCi  c                 j    [         R                  " U [        [        R	                  S 5      5      5        g r   )r   check_disallow_instantiationr  rW  r  rf   s    r   test_disallow_instantiation)TestCmpToKeyC.test_disallow_instantiation  s'     	,,${--d34	
r   r   N)
r)   r*   r+   r,   rW  r  r   cpython_onlyr  r-   r   r   r   r  r    s(     ++

 
r   r  c                   8    \ rS rSr\" \R                  5      rSrg)TestCmpToKeyPyi  r   N)r)   r*   r+   r,   r-  rZ  r  r-   r   r   r   r  r    s    l556Jr   r  c                   P    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rSrg)TestTotalOrderingi  c                    [         R                   " S S5      5       nU R                  U" S5      U" S5      :  5        U R                  U" S5      U" S5      :  5        U R                  U" S5      U" S5      :*  5        U R                  U" S5      U" S5      :  5        U R                  U" S5      U" S5      :*  5        U R                  U" S5      U" S5      :  5        U R                  U" S5      U" S5      :  5        g )Nc                   &    \ rS rSrS rS rS rSrg)3TestTotalOrdering.test_total_ordering_lt.<locals>.Ai  c                     Xl         g r   rG  r5   rG  s     r   r6  <TestTotalOrdering.test_total_ordering_lt.<locals>.A.__init__      "
r   c                 4    U R                   UR                   :  $ r   r  r4   s     r   r  :TestTotalOrdering.test_total_ordering_lt.<locals>.A.__lt__      zzEKK//r   c                 4    U R                   UR                   :H  $ r   r  r4   s     r   __eq__:TestTotalOrdering.test_total_ordering_lt.<locals>.A.__eq__       zzU[[00r   r  Nr)   r*   r+   r,   r6  r  r  r-   r   r   r   r/  r        #01r   r/  r@   rA   r
   total_orderingrU   r  r5   r/  s     r   test_total_ordering_lt(TestTotalOrdering.test_total_ordering_lt      		!	!	1 	1 
"	1 	!qt$!qt$!!%!!%!!%!!%1!%r   c                    [         R                   " S S5      5       nU R                  U" S5      U" S5      :  5        U R                  U" S5      U" S5      :  5        U R                  U" S5      U" S5      :*  5        U R                  U" S5      U" S5      :  5        U R                  U" S5      U" S5      :*  5        U R                  U" S5      U" S5      :  5        U R                  U" S5      U" S5      :  5        g )Nc                   &    \ rS rSrS rS rS rSrg)3TestTotalOrdering.test_total_ordering_le.<locals>.Ai  c                     Xl         g r   r  r  s     r   r6  <TestTotalOrdering.test_total_ordering_le.<locals>.A.__init__  r  r   c                 4    U R                   UR                   :*  $ r   r  r4   s     r   __le__:TestTotalOrdering.test_total_ordering_le.<locals>.A.__le__  r  r   c                 4    U R                   UR                   :H  $ r   r  r4   s     r   r  :TestTotalOrdering.test_total_ordering_le.<locals>.A.__eq__  r  r   r  N)r)   r*   r+   r,   r6  r  r  r-   r   r   r   r/  r        #11r   r/  r@   rA   r  r  s     r   test_total_ordering_le(TestTotalOrdering.test_total_ordering_le
      		!	!	1 	1 
"	1 	!qt$!qt$!!%!!%!!%!!%11&r   c                    [         R                   " S S5      5       nU R                  U" S5      U" S5      :  5        U R                  U" S5      U" S5      :  5        U R                  U" S5      U" S5      :*  5        U R                  U" S5      U" S5      :  5        U R                  U" S5      U" S5      :*  5        U R                  U" S5      U" S5      :  5        U R                  U" S5      U" S5      :  5        g )Nc                   &    \ rS rSrS rS rS rSrg)3TestTotalOrdering.test_total_ordering_gt.<locals>.Ai  c                     Xl         g r   r  r  s     r   r6  <TestTotalOrdering.test_total_ordering_gt.<locals>.A.__init__  r  r   c                 4    U R                   UR                   :  $ r   r  r4   s     r   __gt__:TestTotalOrdering.test_total_ordering_gt.<locals>.A.__gt__   r  r   c                 4    U R                   UR                   :H  $ r   r  r4   s     r   r  :TestTotalOrdering.test_total_ordering_gt.<locals>.A.__eq__"  r  r   r  N)r)   r*   r+   r,   r6  r  r  r-   r   r   r   r/  r    r  r   r/  r@   rA   r  r  s     r   test_total_ordering_gt(TestTotalOrdering.test_total_ordering_gt  r  r   c                    [         R                   " S S5      5       nU R                  U" S5      U" S5      :  5        U R                  U" S5      U" S5      :  5        U R                  U" S5      U" S5      :*  5        U R                  U" S5      U" S5      :  5        U R                  U" S5      U" S5      :*  5        U R                  U" S5      U" S5      :  5        U R                  U" S5      U" S5      :*  5        g )Nc                   &    \ rS rSrS rS rS rSrg)3TestTotalOrdering.test_total_ordering_ge.<locals>.Ai-  c                     Xl         g r   r  r  s     r   r6  <TestTotalOrdering.test_total_ordering_ge.<locals>.A.__init__/  r  r   c                 4    U R                   UR                   :  $ r   r  r4   s     r   __ge__:TestTotalOrdering.test_total_ordering_ge.<locals>.A.__ge__1  r  r   c                 4    U R                   UR                   :H  $ r   r  r4   s     r   r  :TestTotalOrdering.test_total_ordering_ge.<locals>.A.__eq__3  r  r   r  N)r)   r*   r+   r,   r6  r  r  r-   r   r   r   r/  r  -  r  r   r/  r@   rA   r  r  s     r   test_total_ordering_ge(TestTotalOrdering.test_total_ordering_ge,  r  r   c                    [         R                   " S S[        5      5       nU R                  U" S5      U" S5      :  5        U R                  U" S5      U" S5      :  5        U R                  U" S5      U" S5      :*  5        U R                  U" S5      U" S5      :  5        U R                  U" S5      U" S5      :*  5        U R                  U" S5      U" S5      :  5        g )Nc                       \ rS rSrSrg)=TestTotalOrdering.test_total_ordering_no_overwrite.<locals>.Ai?  r   Nr(   r   r   r   r/  r  ?      r   r/  r@   rA   )r
   r  r   rU   r  s     r    test_total_ordering_no_overwrite2TestTotalOrdering.test_total_ordering_no_overwrite=  s    		!	!	 	 
"	!qt$!qt$!!%!!%!!%!!%r   c                     U R                  [        5         [        R                   " S S5      5       nS S S 5        g ! , (       d  f       g = f)Nc                       \ rS rSrSrg)7TestTotalOrdering.test_no_operations_defined.<locals>.AiK  r   Nr(   r   r   r   r/  r  K  s    r   r/  )rc   rT  r
   r  r  s     r   test_no_operations_defined,TestTotalOrdering.test_no_operations_definedI  s9    z*%%  & +**s	   =
Ac                   ^^^^ [         R                   " U4S jS5      5       m[         R                   " U4S jS5      5       m[         R                   " U4S jS5      5       m[         R                   " U4S jS5      5       mU R                  T" S	5      R                  S	5      [        5        U R                  T" S	5      R                  S	5      [        5        U R                  T" S	5      R                  S	5      [        5        U R                  T" S	5      R                  S	5      [        5        U R                  T" S	5      R                  S	5      [        5        U R                  T" S	5      R                  S	5      [        5        U R                  T" S	5      R                  S	5      [        5        U R                  T" S	5      R                  S	5      [        5        U R                  T" S	5      R                  S	5      [        5        U R                  T" S	5      R                  S	5      [        5        U R                  T" S	5      R                  S	5      [        5        U R                  T" S	5      R                  S	5      [        5        g )
Nc                   4   > \ rS rSrS rU 4S jrU 4S jrSrg)ATestTotalOrdering.test_notimplemented.<locals>.ImplementsLessThaniQ  c                     Xl         g r   r  r  s     r   r6  JTestTotalOrdering.test_notimplemented.<locals>.ImplementsLessThan.__init__S  r  r   c                 Z   > [        UT5      (       a  U R                  UR                  :H  $ gNF
isinstancerG  r5   r6   ImplementsLessThans     r   r  HTestTotalOrdering.test_notimplemented.<locals>.ImplementsLessThan.__eq__U  '    e%788::44r   c                 d   > [        UT5      (       a  U R                  UR                  :  $ [        $ r   r  rG  NotImplementedr  s     r   r  HTestTotalOrdering.test_notimplemented.<locals>.ImplementsLessThan.__lt__Y  *    e%788::33%%r   r  Nr)   r*   r+   r,   r6  r  r  r-   r   s   r   r   r  Q      #& &r   r   c                   4   > \ rS rSrS rU 4S jrU 4S jrSrg)HTestTotalOrdering.test_notimplemented.<locals>.ImplementsLessThanEqualToi^  c                     Xl         g r   r  r  s     r   r6  QTestTotalOrdering.test_notimplemented.<locals>.ImplementsLessThanEqualTo.__init__`  r  r   c                 Z   > [        UT5      (       a  U R                  UR                  :H  $ gr  r  r5   r6   ImplementsLessThanEqualTos     r   r  OTestTotalOrdering.test_notimplemented.<locals>.ImplementsLessThanEqualTo.__eq__b  '    e%>??::44r   c                 d   > [        UT5      (       a  U R                  UR                  :*  $ [        $ r   r$  r0  s     r   r  OTestTotalOrdering.test_notimplemented.<locals>.ImplementsLessThanEqualTo.__le__f  *    e%>??::44%%r   r  Nr)   r*   r+   r,   r6  r  r  r-   r1  s   r   r1  r,  ^  r*  r   r1  c                   4   > \ rS rSrS rU 4S jrU 4S jrSrg)DTestTotalOrdering.test_notimplemented.<locals>.ImplementsGreaterThanik  c                     Xl         g r   r  r  s     r   r6  MTestTotalOrdering.test_notimplemented.<locals>.ImplementsGreaterThan.__init__m  r  r   c                 Z   > [        UT5      (       a  U R                  UR                  :H  $ gr  r  r5   r6   ImplementsGreaterThans     r   r  KTestTotalOrdering.test_notimplemented.<locals>.ImplementsGreaterThan.__eq__o  '    e%:;;::44r   c                 d   > [        UT5      (       a  U R                  UR                  :  $ [        $ r   r$  r>  s     r   r  KTestTotalOrdering.test_notimplemented.<locals>.ImplementsGreaterThan.__gt__s  *    e%:;;::33%%r   r  Nr)   r*   r+   r,   r6  r  r  r-   r?  s   r   r?  r:  k  r*  r   r?  c                   4   > \ rS rSrS rU 4S jrU 4S jrSrg)KTestTotalOrdering.test_notimplemented.<locals>.ImplementsGreaterThanEqualToix  c                     Xl         g r   r  r  s     r   r6  TTestTotalOrdering.test_notimplemented.<locals>.ImplementsGreaterThanEqualTo.__init__z  r  r   c                 Z   > [        UT5      (       a  U R                  UR                  :H  $ gr  r  r5   r6   ImplementsGreaterThanEqualTos     r   r  RTestTotalOrdering.test_notimplemented.<locals>.ImplementsGreaterThanEqualTo.__eq__|  '    e%ABB::44r   c                 d   > [        UT5      (       a  U R                  UR                  :  $ [        $ r   r$  rL  s     r   r  RTestTotalOrdering.test_notimplemented.<locals>.ImplementsGreaterThanEqualTo.__ge__  *    e%ABB::44%%r   r  Nr)   r*   r+   r,   r6  r  r  r-   rM  s   r   rM  rH  x  r*  r   rM  r@   )r
   r  r   r  r%  r  r  r  )r5   r?  rM  r   r1  s    @@@@r   test_notimplemented%TestTotalOrdering.test_notimplementedO  s   		!	!
	& 
	& 
"
	& 
	!	!
	& 
	& 
"
	& 
	!	!
	& 
	& 
"
	& 
	!	!
	& 
	& 
"
	& 	(+2215~F(+2215~F(+2215~F/299!<nM/299!<nM/299!<nM+A.55a8.I+A.55a8.I+A.55a8.I215<<Q?P215<<Q?P215<<Q?Pr   c                 
  ^^^^^ [         R                   " U4S jS5      5       m[         R                   " U4S jS5      5       m[         R                   " U4S jS5      5       m[         R                   " U4S jS5      5       m[         R                   " U4S	 jS
5      5       mU R                  S5         U R                  [        5         T" S5      S:    S S S 5        S S S 5        U R                  S5         U R                  [        5         T" S5      T" S5      :    S S S 5        S S S 5        U R                  S5         U R                  [        5         T" S5      T" S5      :    S S S 5        S S S 5        U R                  S5         U R                  [        5         T" S5      T" S5      :*    S S S 5        S S S 5        U R                  S5         U R                  [        5         T" S5      T" S5      :*    S S S 5        S S S 5        U R                  S5         U R                  [        5         T" S5      T" S5      :    S S S 5        S S S 5        U R                  S5         U R                  [        5         T" S5      T" S5      :    S S S 5        S S S 5        U R                  S5         U R                  [        5         T" S5      T" S5      :    S S S 5        S S S 5        U R                  S5         U R                  [        5         T" S5      T" S5      :    S S S 5        S S S 5        U R                  S5         T" S5      nT" S5      nU R                  X5        U R                  [        5         X:    S S S 5        S S S 5        U R                  S5         T" S 5      nT" S 5      nU R                  X5        U R                  [        5         X:*    S S S 5        S S S 5        g ! , (       d  f       GN= f! , (       d  f       GN$= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNa= f! , (       d  f       GNk= f! , (       d  f       GN<= f! , (       d  f       GNF= f! , (       d  f       GN= f! , (       d  f       GN!= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       g = f)!Nc                   4   > \ rS rSrS rU 4S jrU 4S jrSrg)RTestTotalOrdering.test_type_error_when_not_implemented.<locals>.ImplementsLessThani  c                     Xl         g r   r  r  s     r   r6  [TestTotalOrdering.test_type_error_when_not_implemented.<locals>.ImplementsLessThan.__init__  r  r   c                 Z   > [        UT5      (       a  U R                  UR                  :H  $ gr  r  r  s     r   r  YTestTotalOrdering.test_type_error_when_not_implemented.<locals>.ImplementsLessThan.__eq__  r"  r   c                 d   > [        UT5      (       a  U R                  UR                  :  $ [        $ r   r$  r  s     r   r  YTestTotalOrdering.test_type_error_when_not_implemented.<locals>.ImplementsLessThan.__lt__  r'  r   r  Nr(  r)  s   r   r   rY    r*  r   r   c                   4   > \ rS rSrS rU 4S jrU 4S jrSrg)UTestTotalOrdering.test_type_error_when_not_implemented.<locals>.ImplementsGreaterThani  c                     Xl         g r   r  r  s     r   r6  ^TestTotalOrdering.test_type_error_when_not_implemented.<locals>.ImplementsGreaterThan.__init__  r  r   c                 Z   > [        UT5      (       a  U R                  UR                  :H  $ gr  r  r>  s     r   r  \TestTotalOrdering.test_type_error_when_not_implemented.<locals>.ImplementsGreaterThan.__eq__  rA  r   c                 d   > [        UT5      (       a  U R                  UR                  :  $ [        $ r   r$  r>  s     r   r  \TestTotalOrdering.test_type_error_when_not_implemented.<locals>.ImplementsGreaterThan.__gt__  rD  r   r  NrE  rF  s   r   r?  ra    r*  r   r?  c                   4   > \ rS rSrS rU 4S jrU 4S jrSrg)YTestTotalOrdering.test_type_error_when_not_implemented.<locals>.ImplementsLessThanEqualToi  c                     Xl         g r   r  r  s     r   r6  bTestTotalOrdering.test_type_error_when_not_implemented.<locals>.ImplementsLessThanEqualTo.__init__  r  r   c                 Z   > [        UT5      (       a  U R                  UR                  :H  $ gr  r  r0  s     r   r  `TestTotalOrdering.test_type_error_when_not_implemented.<locals>.ImplementsLessThanEqualTo.__eq__  r3  r   c                 d   > [        UT5      (       a  U R                  UR                  :*  $ [        $ r   r$  r0  s     r   r  `TestTotalOrdering.test_type_error_when_not_implemented.<locals>.ImplementsLessThanEqualTo.__le__  r6  r   r  Nr7  r8  s   r   r1  ri    r*  r   r1  c                   4   > \ rS rSrS rU 4S jrU 4S jrSrg)\TestTotalOrdering.test_type_error_when_not_implemented.<locals>.ImplementsGreaterThanEqualToi  c                     Xl         g r   r  r  s     r   r6  eTestTotalOrdering.test_type_error_when_not_implemented.<locals>.ImplementsGreaterThanEqualTo.__init__  r  r   c                 Z   > [        UT5      (       a  U R                  UR                  :H  $ gr  r  rL  s     r   r  cTestTotalOrdering.test_type_error_when_not_implemented.<locals>.ImplementsGreaterThanEqualTo.__eq__  rO  r   c                 d   > [        UT5      (       a  U R                  UR                  :  $ [        $ r   r$  rL  s     r   r  cTestTotalOrdering.test_type_error_when_not_implemented.<locals>.ImplementsGreaterThanEqualTo.__ge__  rR  r   r  NrS  rT  s   r   rM  rq    r*  r   rM  c                   .   > \ rS rSrS rU 4S jrS rSrg)XTestTotalOrdering.test_type_error_when_not_implemented.<locals>.ComparatorNotImplementedi  c                     Xl         g r   r  r  s     r   r6  aTestTotalOrdering.test_type_error_when_not_implemented.<locals>.ComparatorNotImplemented.__init__  r  r   c                 Z   > [        UT5      (       a  U R                  UR                  :H  $ gr  r  )r5   r6   ComparatorNotImplementeds     r   r  _TestTotalOrdering.test_type_error_when_not_implemented.<locals>.ComparatorNotImplemented.__eq__  s'    e%=>>::44r   c                     [         $ r   )r%  r4   s     r   r  _TestTotalOrdering.test_type_error_when_not_implemented.<locals>.ComparatorNotImplemented.__lt__  s    %%r   r  Nr(  )r}  s   r   r}  ry    s    #&r   r}  zLT < 1r@   zLT < LEr   zLT < GTzLE <= LTrA   zLE <= GErG   zGT > GErH   zGT > LTrl   zGE >= GTrh  zGE >= LErn   zGE when equalrj  zLE when equalrk  )r
   r  r  rc   rd   rW   )r5   rE   rF   r}  r?  rM  r   r1  s      @@@@@r   $test_type_error_when_not_implemented6TestTotalOrdering.test_type_error_when_not_implemented  s    
	!	!
	& 
	& 
"
	& 
	!	!
	& 
	& 
"
	& 
	!	!
	& 
	& 
"
	& 
	!	!
	& 
	& 
"
	& 
	!	!	& 	& 
"	& \\(#T%6%6y%Ar"Q& &B# \\)$d&7&7	&Bq!$=a$@@ 'C$ \\)$d&7&7	&Bq!$9!$<< 'C$ \\*%t'8'8'C%a(,>q,AA (D% \\*%t'8'8'C%a(,H,KK (D% \\)$d&7&7	&B!!$'CA'FF 'C$ \\)$d&7&7	&B!!$'9!'<< 'C$ \\*%t'8'8'C(+/DQ/GG (D% \\*%t'8'8'C(+/H/KK (D% \\/*(+A(+AQ"""9- .	 + \\/*(+A(+AQ"""9- .	 +*E &B%A## 'C&B$$ 'C&B$$ (D'C%% (D'C%% 'C&B$$ 'C&B$$ (D'C%% (D'C%% .-	 +* .-	 +*s  7O>O,O>:P"P"P"QP4+QQ*"Q4Q*R+Q<=RR24R R2'S=SS0S:S(S:9TT!T7U9T0>U7U&UU&,
O;	6O>>
P
P	P""
P14
Q	>Q
Q
Q'	"Q**
Q9<
R	R
R 
R/	*R22
S
S	S
S%(
S7	2S::
T	
T	T
T-0
T?	:U
U
U#	U&&
U4c           	      F   [        [        R                  S-   5       Ho  nS Hf  nU R                  X!S9   [	        [
        U5      n[        R                  " [        R                  " X15      5      nU R                  XC5        S S S 5        Mh     Mq     g ! , (       d  f       M~  = f)Nr@   )r  r  r  r  )r  r   )	r   r   r   r  r   Orderable_LTr   r   r   )r5   r   r   r  method_copys        r   r   TestTotalOrdering.test_pickle  sr    622Q67E>\\\;$\48F"(,,v||F/J"KKMM+6 <; ? 8;;s   AB
B c                    ^ [         R                   " U4S jS[        5      5       m " S STS9n " S STS9nU R                  X!:  5        U R	                  X!:  5        g )Nc                   B   >^  \ rS rSrU 4S jrU4S jrU4S jrSrU =r$ )WTestTotalOrdering.test_total_ordering_for_metaclasses_issue_44605.<locals>.SortableMetai  c                 $   > [         TU ]  XX#5      $ r   )super__new__)rt  r   basesns	__class__s       r   r  _TestTotalOrdering.test_total_ordering_for_metaclasses_issue_44605.<locals>.SortableMeta.__new__
  s    ws%<<r   c                 Z   > [        UT5      (       d   U R                  UR                  :  $ r   r  r)   r5   r6   SortableMetas     r   r  ^TestTotalOrdering.test_total_ordering_for_metaclasses_issue_44605.<locals>.SortableMeta.__lt__  s&    !%66}}u~~55r   c                 Z   > [        UT5      (       d   U R                  UR                  :H  $ r   r  r  s     r   r  ^TestTotalOrdering.test_total_ordering_for_metaclasses_issue_44605.<locals>.SortableMeta.__eq__  s&    !%66}}66r   r   )	r)   r*   r+   r,   r  r  r  r-   __classcell__)r  r  s   @r   r  r    s    =6
7 7r   r  c                       \ rS rSrSrg)LTestTotalOrdering.test_total_ordering_for_metaclasses_issue_44605.<locals>.Bi  r   Nr(   r   r   r   r   r        r   r   	metaclassc                       \ rS rSrSrg)LTestTotalOrdering.test_total_ordering_for_metaclasses_issue_44605.<locals>.Ai  r   Nr(   r   r   r   r/  r    r  r   r/  )r
   r  r  rU   r  )r5   r   r/  r  s      @r   /test_total_ordering_for_metaclasses_issue_44605ATestTotalOrdering.test_total_ordering_for_metaclasses_issue_44605  sZ    		!	!	74 	7 
"	7	, 		, 	 	r   r   N)r)   r*   r+   r,   r  r  r  r	  r  r  rU  r  r   r  r-   r   r   r   r  r    s9    &"'"&"'"
&AQFiV7 r   r  c                   &    \ rS rSrS rS rS rSrg)r  i!  c                     Xl         g r   r  r  s     r   r6  Orderable_LT.__init__#  s    
r   c                 4    U R                   UR                   :  $ r   r  r4   s     r   r  Orderable_LT.__lt__%  s    zzEKK''r   c                 4    U R                   UR                   :H  $ r   r  r4   s     r   r  Orderable_LT.__eq__'  s    zzU[[((r   r  Nr  r   r   r   r  r  !  s    ()r   r  c                       \ rS rSrS rSrg)	TestCachei+  c           
        ^ U R                   R                  U4S j5       mU R                  [        S5       Vs/ s H  nT" U5      PM     sn/ SQ5        U R                  TR	                  5       U R                   R                  SSS SS95        TR                  5         U R                  TR	                  5       U R                   R                  SSS SS95        g s  snf )Nc                 B   > U S:  a  U $ T" U S-
  5      T" U S-
  5      -   $ NrA   r@   r   r>  fibs    r   r  !TestCache.test_cache.<locals>.fib0  *    1uqs8c!A#h&&r   r   r   r@   r@   rA   rG   rl   rj     rF  "   7   Y         iy  ib     hitsmissesmaxsizecurrsizer   )r   cacherW   r   
cache_info
_CacheInfocache_clearr5   r>  r  s     @r   
test_cacheTestCache.test_cache/  s    				' 
	' 	%)4)Q#a&)4I	K)KK""2tb"Q	S)KK""!TA"N	P 5s   Cr   N)r)   r*   r+   r,   r  r-   r   r   r   r  r  +  s    Pr   r  c                       \ rS rSr\rSrg)TestCachePyi>  r   N)r)   r*   r+   r,   rZ  r   r-   r   r   r   r  r  >  s    Fr   r  c                   ,    \ rS rSr\(       a  \rSrgSrg)
TestCacheCiB  r   N)r)   r*   r+   r,   rW  r   r-   r   r   r   r  r  B  s     r   r  c                      \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS r\R,                  " 5       S 5       r\R,                  " 5       S 5       r\R,                  " 5       S 5       rS rS rS rS rS rS r\ RB                  " 5       S 5       r"S r#\ RH                  \%RL                  " \ RN                  S5      S 5       5       r(S r)g!)"TestLRUiH  c                 n	  ^ S nU R                   R                  SS9" U5      nUR                  5       u  p4pVU R                  US5        U R                  US5        U R                  US5        U R                  US5        [	        S5      n[	        S5       H9  n[        U5      [        U5      pU" X5      nU" X5      nU R                  X5        M;     UR                  5       u  p4pVU R                  X4:  5        U R                  X4-   S5        U R                  US5        UR                  5         UR                  5       u  p4pVU R                  US5        U R                  US5        U R                  US5        U" W	W
5        UR                  5       u  p4pVU R                  US5        U R                  US5        U R                  US5        U R                  UR                  U5        UR                  X5        UR                  5       u  p4pVU R                  US5        U R                  US5        U R                  US5        U R                   R                  S5      U4S j5       nU R                  UR                  5       R                  S5        Sm[	        S5       H  nU R                  U" 5       S5        M     U R                  TS5        UR                  5       u  p4pVU R                  US5        U R                  US5        U R                  US5        U R                   R                  S5      U4S	 j5       nU R                  UR                  5       R                  S5        Sm[	        S5       H  nU R                  U" 5       S5        M     U R                  TS5        UR                  5       u  p4pVU R                  US
5        U R                  US5        U R                  US5        U R                   R                  S5      U4S j5       nU R                  UR                  5       R                  S5        SmS H  n	U R                  U" U	5      U	S-  5        M      U R                  TS
5        UR                  5       u  p4pVU R                  US5        U R                  US
5        U R                  US5        g )Nc                     SU -  U-   $ NrG   r   r   s     r   origTestLRU.test_lru.<locals>.origK      q519r   rC   r  r   rl     r@   c                     > T S-  m gNr@   rC   r   f_cnts   r   r   TestLRU.test_lru.<locals>.fs       QJEr   c                     > T S-  m gr  r   r  s   r   r   r    r  r   rH   rA   c                    > TS-  mU S-  $ Nr@   rB   r   )rQ   r  s    r   r   r    s     QJER4Kr   )rn   rk  rn   rk  rn   rk  rj  rj  rj  rk  rk  rk  rj  rj  rj  rn   rB      )r   	lru_cacher  rW   r   r   rU   r  r   r  r  )r5   r  r   r  r  r  r  domainr=  rQ   r   actualr   r  s                @r   test_lruTestLRU.test_lruJ  s   	KK!!"!-d3*+,,.'g"%1%q!#qtA&>6&>qqWFAzHV.	 
 +,,,.'g&-2&	*+,,.'gq!#1%	!Q*+,,.'gq!#1% 	ammT*	a*+,,.'gq!#1% 
		q	!	 
"	 	//3qAQS"% "*+,,.'gq!#1% 
		q	!	 
"	 	//3qAQS"% "*+,,.'gq!#1% 
		q	!	 
"	 	//3?AQqT1R4( @ 	"*+,,.'gr"#1%r   c           	         U R                   R                  S 5       nU R                  [        [	        U/ SQ5      5      / SQ5        U R                  UR                  5       R                  S5        U R                  UR                  5       R                  S5        U R                  UR                  5       R                  S5        U R                  UR                  5       R                  S5        g )Nc                     U S-  $ NrA   r   rP   s    r   square(TestLRU.test_lru_no_args.<locals>.square  s    6Mr   )rB   rC   rB   )r  i  r  r@   rA      )
r   r  rW   r3   rY   r  r  r  r  r  )r5   r  s     r   test_lru_no_argsTestLRU.test_lru_no_args  s    				 
	 	c&,78(	***,1115**,33Q7**,44c:**,55q9r   c                   ^^ SmU R                   R                  SS9UU4S j5       m[        S5       H  nU R                  T" U5      SU S35        M!     U R                  TR	                  5       R
                  S5        U R                  T" S5      S5        U R                  TR	                  5       R
                  S5        g )	NTrB   r  c                 B   > SU  S3nU S:X  a  T(       a
  SmT" U 5      nU$ )Nr   rC   Fr   )rQ   rvr   onces     r   r   %TestLRU.test_lru_bug_35780.<locals>.f  s.     QCqBBw4qTIr      r   rC   z.20.)r   r  r   rW   r  r  )r5   rQ   r   r  s     @@r   test_lru_bug_35780TestLRU.test_lru_bug_35780  s     			r		*	 
+	 rAQqTQqc8, 00"5 	2'00"5r   c                     U R                   R                  5       S 5       nU" S5        U" S0 0 D6  U R                  UR                  5       R                  S5        g )Nc                     g r   r   rP   s    r   r   %TestLRU.test_lru_bug_36650.<locals>.f  r  r   r   r@   r~   )r   r  rW   r  r  r   s     r   test_lru_bug_36650TestLRU.test_lru_bug_36650  sQ     
			 	 
!	 	
!	
r
,,a0r   c                    U R                   R                  SS9S 5       n[        R                  R	                  5       n[        R                  R	                  SS9Ul        [        R                  R	                  SS9Ul        U R                  U" US5      S5        U R                  UR                  R                  S5        U R                  UR                  5       S5        U R                  U" US5      S5        U R                  UR                  R                  S	5        U R                  UR                  5       S
5        U R                  U" SS	5      S5        U R                  UR                  R                  S	5        U R                  UR                  5       S5        U R                  U" US5      S5        U R                  UR                  R                  S5        U R                  UR                  5       S5        g )Nr@   r  c                     U S-  U-   $ r  r   r   s     r   r   *TestLRU.test_lru_hash_only_once.<locals>.f      q519r   r  )return_value  r   )r   r@   r@   r@   rA   )r@   r@   r@   r@   rh  rC   )r@   rA   r@   r@   rG   )r@   rG   r@   r@   )
r   r  r  mockMock__mul____hash__rW   
call_countr  )r5   r   mock_ints      r   test_lru_hash_only_onceTestLRU.test_lru_hash_only_once  s    
		q		)	 
*	 ==%%'#==--2->$MM..C.@ 	8Q,**55q96 	8Q,**55q96 	1a"%**55q96 	8Q,**55q96r   c                    [         R                  n U R                  R                  S5      " [        5      [         l        S H!  nU R	                  [        SS U 5      U5        M#     U[         l        g ! U[         l        f = f)NrH   )r   r   r@   rA   rG   rG   rH   rl   rh  r@   rn   rA   r@   abcdefghijklmn)builtinsr9  r   r  rW   )r5   old_lenr=  s      r   test_lru_reentrancy_with_len$TestLRU.test_lru_reentrancy_with_len  se     ,,	#;;003C8HL<  %5bq%9!:A> = #HL7HLs   AA3 3B c                     U R                   R                  5       S 5       nU R                  U" SS5      S5        U R                  U" S5      S5        g )Nc                      U $ r   r   r  s    r   r   -TestLRU.test_lru_star_arg_handling.<locals>.f	  s    Kr   r@   rA   r_   )r_   r   r  rW   r   s     r   test_lru_star_arg_handling"TestLRU.test_lru_star_arg_handling  sM    				 	 
!	 	1a&)6I.r   c                 \   U R                   R                  S S9S 5       nU R                   R                  SS9S 5       nU R                  [        5         U" / 5        S S S 5        U R                  [        5         U" / 5        S S S 5        g ! , (       d  f       N5= f! , (       d  f       g = f)Nr  c                     g r   r   os    r   infinite_cache3TestLRU.test_lru_type_error.<locals>.infinite_cache  r  r   rB   c                     g r   r   r  s    r   limited_cache2TestLRU.test_lru_type_error.<locals>.limited_cache  r  r   )r   r  rc   rd   )r5   r  r  s      r   test_lru_type_errorTestLRU.test_lru_type_error  s    
 
		t		,	 
-	 
		r		*	 
+	 y)2 * y)" *) *) *)s   	B:	B
B
B+c           
        ^ U R                   R                  S S9U4S j5       mU R                  [        S5       Vs/ s H  nT" U5      PM     sn/ SQ5        U R                  TR	                  5       U R                   R                  SSS SS95        TR                  5         U R                  TR	                  5       U R                   R                  SSS SS95        g s  snf )Nr  c                 B   > U S:  a  U $ T" U S-
  5      T" U S-
  5      -   $ r  r   r  s    r   r  /TestLRU.test_lru_with_maxsize_none.<locals>.fib$  r  r   r   r  r  r  r   r   r  rW   r   r  r  r  r  s     @r   test_lru_with_maxsize_none"TestLRU.test_lru_with_maxsize_none#  s    			t		,	' 
-	' 	%)4)Q#a&)4I	K)KK""2tb"Q	S)KK""!TA"N	P 5s   Cc           
      X   U R                   R                  SS9S 5       nS HF  nU R                  [        S5       Vs/ s H
  o1" U5      PM     sn[	        [        S5      5      5        MH     U R                  UR                  5       U R                   R                  SSSSS95        g s  snf )	Nir  c                     U $ r   r   r_  s    r   eq2TestLRU.test_lru_with_maxsize_negative.<locals>.eq2      Hr   r      r   i,  r  )r   r  rW   r   r3   r  r  )r5   r&  r=  r>  s       r   test_lru_with_maxsize_negative&TestLRU.test_lru_with_maxsize_negative1  s    			s		+	 
,	AU3Z8ZbeZ8$uSz:JK KK""#q1"M	O 9s   B'
c                    S H  nU R                   R                  U5      S 5       nU R                  U" S5      S5        U R                  [        5       nU" S5        S S S 5        U R                  WR                  R                  5        U R                  [        5         U" S5        S S S 5        M     g ! , (       d  f       N^= f! , (       d  f       M  = f)NNr  c                     SU    $ )Nr  r   r=  s    r   r    .TestLRU.test_lru_with_exceptions.<locals>.func?  s    Qxr   r   rE   r  )r   r  rW   rc   r   assertIsNone	exception__context__)r5   r  r    cms       r   test_lru_with_exceptions TestLRU.test_lru_with_exceptions:  s     #G[[""7+  , T!Wc*"":."R /bll667"":.R /. #
 /. /.s   	B5	C5
C	
C	c           	         S GHx  nU R                   R                  USS9S 5       nU R                  U" S5      S5        U R                  [        U" S5      5      [        S5      5        U R                  U" S5      S5        U R                  [        U" S5      5      [        S5      5        U R                  U" SS	9S5        U R                  [        U" SS	95      [        S5      5        U R                  U" SS	9S5        U R                  [        U" SS	95      [        S5      5        U R                  UR	                  5       R
                  S
5        U R                  UR	                  5       R                  S
5        GM{     g )Nr-  Tr  typedc                 
    X -  $ r   r   rP   s    r   r  +TestLRU.test_lru_with_types.<locals>.squareL  s	    ur   rG   rk  g      @g      "@rP   rH   )r   r  rW   r  r  r  r  )r5   r  r  s      r   test_lru_with_typesTestLRU.test_lru_with_typesJ  s4   "G[[""7$"? @VAY*T&)_d1g6VC[#.T&+.S	:Va[!,T&1+.Q8Vc]C0T&3-0$s)<V..055q9V..077; #r   c                    U R                   R                  SS9" [        5      nU R                  U" S5      S5        U R                  U" S5      S5        U R                  U" S5      S5        U R                  U" S5      S	5        U R                  U" S
5      S5        U R                  U" S5      S5        U R                  U" S5      S5        U R                  U" S5      S5        U R                  U" S5      S5        U R                  U" S5      S5        U R                  U" S5      S5        U R                  U" S5      S5         " S S[        5      nU R                  U" U" S5      5      S5        U R                  U" U" S5      5      S5        U R                  U" U" S5      5      S5        U R                  U" U" S5      5      S5        U R                  U" U" S5      5      S5        U R                  U" U" S5      5      S5        g )NT)r9  r@   rH  True      ?z1.0r   r  FFalse        z0.0r  z(1,)T)r@  r~   z(0,))F)rB  c                       \ rS rSrSrg)8TestLRU.test_lru_cache_typed_is_not_recursive.<locals>.Tik  r   Nr(   r   r   r   r  rE  k  r  r   r  )r   r  r   rW   r  )r5   cachedr  s      r   %test_lru_cache_typed_is_not_recursive-TestLRU.test_lru_cache_typed_is_not_recursiveZ  s   &&T&248C(v.e,C(0e,v.&10v.)620	 	 	$&1'
+V4&	*F3$&1(,f5&	*F3r   c           
        ^ U R                   R                  5       U4S j5       mU R                  [        S5       Vs/ s H	  nT" US9PM     sn/ SQ5        U R                  TR	                  5       U R                   R                  SSSSS95        TR                  5         U R                  TR	                  5       U R                   R                  SSSSS95        g s  snf )	Nc                 :   > U S:  a  U $ T" U S-
  S9T" U S-
  S9-   $ NrA   r@   r_  r   r  s    r   r  /TestLRU.test_lru_with_keyword_args.<locals>.fibv  *    1u1:ac
**r   r   r_  r  r  r  r  r   r!  r5   numberr  s     @r   test_lru_with_keyword_args"TestLRU.test_lru_with_keyword_argsu  s    				 	+ 
!	+ 	).r3vS6]3I	
 	)KK""2sR"P	R)KK""!S1"M	O 4s   Cc           
        ^ U R                   R                  S S9U4S j5       mU R                  [        S5       Vs/ s H	  nT" US9PM     sn/ SQ5        U R                  TR	                  5       U R                   R                  SSS SS95        TR                  5         U R                  TR	                  5       U R                   R                  SSS SS95        g s  snf )	Nr  c                 :   > U S:  a  U $ T" U S-
  S9T" U S-
  S9-   $ rK  r   r  s    r   r  <TestLRU.test_lru_with_keyword_args_maxsize_none.<locals>.fib  rM  r   r   r_  r  r  r  r   r!  rN  s     @r   'test_lru_with_keyword_args_maxsize_none/TestLRU.test_lru_with_keyword_args_maxsize_none  s    			t		,	+ 
-	+ 	eBi@iF#-i@I	K)KK""2tb"Q	S)KK""!TA"N	P As   Cc           
         U R                   R                  SS9S 5       nU R                  U" SSS9SS/5        U R                  U" SSS	9SS/5        U R                  UR                  5       U R                   R	                  S
SSSS95        g )NrB   r  c                  4    [        U R                  5       5      $ r   )r3   items)r   s    r   r   $TestLRU.test_kwargs_order.<locals>.f  s    ''r   r@   rA   rD   )rE   r@   )rF   rA   )rF   rE   r   r  )r   r  rW   r  r  r   s     r   test_kwargs_orderTestLRU.test_kwargs_order  s    			r		*	( 
+	(Q!x&:;Q!x&:;KK""!R!"L	Nr   c                     SS jnU R                   R                  5       " U5      nU R                   R                   H'  nU R                  [	        X#5      [	        X5      5        M)     g )Nc                     g)NrG  r   )zomgs    r   r   ,TestLRU.test_lru_cache_decoration.<locals>.f  s    r   )r_  zomg_annotation)r   r  r
  rW   r   )r5   r   gr   s       r   test_lru_cache_decoration!TestLRU.test_lru_cache_decoration  sN    	 KK!!#A&KK33DWQ-wq/?@ 4r   c           	        ^ ^^^^ Su  nmS mT R                   R                  UT-  S9" T5      mTR                  5       u  p#pET R                  US5        [        R
                  " 5       mUUUU U4S jnUUU4S jn[        R                  " 5       n[        R                  " S5         [        U5       V	s/ s H  n	[        R                  " Xi/S9PM     n
n	[        R                  " U
5         TR                  5         S S S 5        TR                  5       u  p#pET R                   [        L a*  T R!                  X15        T R!                  UTU-  U-
  5        O)T R                  X15        T R                  UTU-  U-
  5        T R                  XQ5        [        R                  " US	9/n
U
[        U5       V	s/ s H  n	[        R                  " Xi/S9PM     sn	-  n
TR#                  5         [        R                  " U
5         TR                  5         S S S 5        [        R                  " U5        g s  sn	f ! , (       d  f       GN;= fs  sn	f ! , (       d  f       NA= f! [        R                  " U5        f = f)
N)rl      c                     SU -  U-   $ r  r   r   s     r   r  -TestLRU.test_lru_cache_threaded.<locals>.orig  r  r   r  r   c                    > TR                  S5        [        T5       H#  nTR                  T" U S5      T" U S5      5        M%     g )NrB   r   )waitr   rW   )r  r  r   r   r  r5   starts     r   full-TestLRU.test_lru_cache_threaded.<locals>.full  s8    JJrN1X  1a$q!*5 r   c                  r   > TR                  S5        [        ST-  5       H  n TR                  5         M     g )NrB   rA   )rj  r   r  )r  r   r   rk  s    r   clear.TestLRU.test_lru_cache_threaded.<locals>.clear  s)    JJrN1Q3Z  r   gư>targetr   rr  )r   r  r  rW   	threadingEventr   getswitchintervalr   setswitchintervalr   Threadr	   start_threadssetrZ  r  ro  )r5   r>  r  r  r  r  rl  ro  orig_sir  threadsr   r   r  rk  s   `          @@@@r   test_lru_cache_threadedTestLRU.test_lru_cache_threaded  s    1	KK!!!A#!.t4*+,,.'g1%!	6 	6
	 
 '')!!$'	+ !&a* (1 !''t#> (  *!//8		 9 /0lln+D'{{l*$$V/$$T1Q3<8  +  qsV|4X) !''u56G!&q+!)A "((3?!)+ +GKKM!//8		 9 !!'*/*88+ 98 !!'*s[   (I 5H,I ,H1=B5I 2I+I <II ,I 1
I ;I 
II I1c           
      j  ^ ^^^^	^
 Su  nm[         R                  " US-   5      m	[         R                  " US-   5      m[         R                  " US-   5      m
T R                  R                  TU-  S9U4S j5       mT R	                  TR                  5       SSTU-  S45        UUU U	U
4S jn[        U5       Vs/ s H  n[         R                  " US9PM     nn[        R                  " U5         [        T5       H  nT	R                  S5        T
R                  5         TR                  S5        T	R                  5         T
R                  S5        TR                  5         T R	                  TR                  5       SUS-   U-  TU-  US-   45        M     S S S 5        g s  snf ! , (       d  f       g = f)	N)rl   rn   r@   r  c                 0   > TR                  S5        SU -  $ NrB   rG   )rj  )rQ   pauses    r   r   +TestLRU.test_lru_cache_threaded2.<locals>.f  s    JJrNq5Lr   r   c                     > [        T5       H@  n TR                  S5        TR                  T" U 5      SU -  5        TR                  S5        MB     g r  )r   rj  rW   )r=  r   r   r5   rk  stops    r   test.TestLRU.test_lru_cache_threaded2.<locals>.test  s?    1X

2  1q1u-		" r   rs  rB   )rt  Barrierr   r  rW   r  r   rx  r	   ry  rj  reset)r5   r>  r  r  r|  r=  r   r   r  rk  r  s   `     @@@@@r   test_lru_cache_threaded2 TestLRU.test_lru_cache_threaded2  sb    1!!!A#&!!!A#&  1%			qs		+	 
,	 	!Q!Q8	 	
 ;@(C(Q9##40(C++G41X

2



2		"  !ac1Wac1Q31GH  54 D44s   :F0B&F$$
F2c           	      ,  ^ ^ T R                   R                  SS9S 5       mUU 4S jn[        / SQ5       VVs/ s H  u  p#[        R                  " XU4S9PM     nnn[
        R                  " U5          S S S 5        g s  snnf ! , (       d  f       g = f)NrA   r  c                 8    [         R                  " S5        SU -  $ )Ng{Gz?rG   )timesleeprP   s    r   r   +TestLRU.test_lru_cache_threaded3.<locals>.f  s    JJsOq5Lr   c                 >   > TR                  T" U5      SU-  U 5        g r  )rW   )r=  rQ   r   r5   s     r   r  .TestLRU.test_lru_cache_threaded3.<locals>.test  s    QqT1q5!,r   )r@   rA   rA   rG   rA   rq  )r   r  	enumeratert  rx  r	   ry  )r5   r  r=  vr|  r   s   `    @r   test_lru_cache_threaded3 TestLRU.test_lru_cache_threaded3  s    			q		)	 
*		-  )9;9tq ##4!f=9 	 ;++G4 54;44s   "A?4B
Bc                    ^^ U R                   R                  SS9S 5       m " UU4S jS5      mT" T" S5      5        T" T" S5      5        U R                  T" T" S5      5      T" S5      5        g )NrB   r  c                     U $ r   r   rP   s    r   	test_func.TestLRU.test_need_for_rlock.<locals>.test_func  s	     Hr   c                   0   > \ rS rSrS rS rU U4S jrSrg)-TestLRU.test_need_for_rlock.<locals>.DoubleEqi  c                     Xl         g r   rP   r5   rQ   s     r   r6  6TestLRU.test_need_for_rlock.<locals>.DoubleEq.__init__	  ra  r   c                     U R                   $ r   rP   rf   s    r   r  6TestLRU.test_need_for_rlock.<locals>.DoubleEq.__hash__  s    vvr   c                 r   > U R                   S:X  a  T" T" S5      5        U R                   UR                   :H  $ r  rP   )r5   r6   DoubleEqr  s     r   r  4TestLRU.test_need_for_rlock.<locals>.DoubleEq.__eq__  s-    66Q;hqk*vv((r   rP   N)r)   r*   r+   r,   r6  r  r  r-   )r  r  s   r   r  r    s    ) )r   r  r@   rA   r  )r5   r  r  s    @@r   test_need_for_rlockTestLRU.test_need_for_rlock  sm     
		r		*	 
+			) 		) 	(1+(1+8A;/!!	&r   c                   ^   " U 4S jS[         5      nU" S5      nU" S5      nU" S5      nT R                  UR                  R                  5       S5        S H*  nT R                  UR                  U5      US-  S-   5        M,     T R                  UR                  UR                  UR                  4S5        T R                  UR                  R                  5       S	5        S
 H*  nT R                  UR                  U5      US-  S-   5        M,     T R                  UR                  UR                  UR                  4S5        T R                  UR                  R                  5       S5        S H*  nT R                  UR                  U5      US-  S-   5        M,     T R                  UR                  UR                  UR                  4S5        T R                  UR                  R                  5       S5        T R                  UR                  R                  5       UR                  R                  5       5        T R                  UR                  R                  5       UR                  R                  5       5        T R                  UR                  R                  5       UR                  R                  5       5        g )Nc                   ^   > \ rS rSrSr Y R
                  R                  S5      S 5       rSrg)"TestLRU.test_lru_method.<locals>.Xi  r   rA   c                 <    U =R                   S-  sl         US-  U -   $ r  r  r  s     r   r   $TestLRU.test_lru_method.<locals>.X.f  s    

a
tDy r   r   N)	r)   r*   r+   r,   r  r   r  r   r-   rf   s   r   Xr    s)    E[[""1%! &!r   r  rl   rn   )r   r   rA   r   )
r@   rA   rA   rG   r@   r@   r@   rA   rG   rG   rB   )rh  r   r   )rH   rh  rA   rA   )
r@   rA   r@   r@   r@   r@   rG   rA   rA   rA   )rh  rH   r   )rB   rB   rA   rA   )
rA   r@   r@   r@   r@   rA   r@   rG   rA   r@   )rh  rH   rl   )r  r  rA   rA   )r   rW   r   r  r  )r5   r  rE   rF   rL   rQ   s   `     r   test_lru_methodTestLRU.test_lru_method  s   	! 	! aDaDaD)<8-AQSSVQrTAX. .!''177AGG4i@)<8-AQSSVQrTAX. .!''177AGG4i@)>:-AQSSVQrTAX. .!''177AGG4i@)>:)133>>+;<)133>>+;<)133>>+;<r   c           	         U R                   nUR                  S   UR                  UR                  4 Hy  n[	        [
        R                  S-   5       HV  nU R                  X2S9   [
        R                  " [
        R                  " X#5      5      nU R                  XB5        S S S 5        MX     M{     g ! , (       d  f       Mn  = f)Nr   r@   )r   r    )r  cached_funccached_methcached_staticmethr   r   r   r  r   r   r   )r5   rt  r   r   r   s        r   r   TestLRU.test_pickle6  s    nn#S__c6K6KKAv66:;\\\6#\\&,,q*@AFMM&, 76 < L66s   $<B11
C c                    U R                   nS nU R                  R                  US5      nUR                  S   UR                  UR
                  U R                  R                  S5      " U5      4nU HB  nU R                  US9   [        R                  " U5      nU R                  Xe5        S S S 5        MD     g ! , (       d  f       MV  = f)Nc                     SU -  U-   $ r  r   r   s     r   r  TestLRU.test_copy.<locals>.orig@  r  r   rA   r   r    )
r  r   rT   r  r  r  r  r  r   r   r5   rt  r  r#   funcsr   r   s          r   r   TestLRU.test_copy>  s    nn	{{""4+#S__c6K6K&&q)$/1A1%1f( &% %%   (B;;
C
	c                    U R                   nS nU R                  R                  US5      nUR                  S   UR                  UR
                  U R                  R                  S5      " U5      4nU HB  nU R                  US9   [        R                  " U5      nU R                  Xe5        S S S 5        MD     g ! , (       d  f       MV  = f)Nc                     SU -  U-   $ r  r   r   s     r   r  #TestLRU.test_deepcopy.<locals>.origL  r  r   rA   r   r  )r  r   rT   r  r  r  r  r  r   r   r   r  s          r   r   TestLRU.test_deepcopyJ  s    nn	{{""4+#S__c6K6K&&q)$/1A1%q)f( &% %%r  c                    U R                   R                  SS9S 5       nU R                  UR                  5       SSS.5        U R                   R                  SSS9S 5       nU R                  UR                  5       SSS.5        g )	NrA   r  c                      gNr@   r   r   r   r   r   ,TestLRU.test_lru_cache_parameters.<locals>.fW      r   Fr8  r  Tc                      gr  r   r   r   r   r   r  \  r  r   )r   r  rW   cache_parametersr   s     r   test_lru_cache_parameters!TestLRU.test_lru_cache_parametersV  s    			q		)	 
*	++-1u/MN			t4		8	 
9	++-4$/OPr   c                   ^  T R                   R                  S 5       n " U 4S jS5      n[        R                  " U5      [        R                  " UR                  5      [        R                  " UR
                  5      /nU H  nT R                  U" 5       5        M     AA[        R                  " 5         U H  nT R                  U" 5       5        M     g )Nc                     U $ r   r   rP   s    r   test_function9TestLRU.test_lru_cache_weakrefable.<locals>.test_functionc  r(  r   c                      > \ rS rSr Y R                  R
                  S 5       r\ Y R                  R
                  U 4S j5       5       rSr	g)-TestLRU.test_lru_cache_weakrefable.<locals>.Aig  c                     X4$ r   r   r  s     r   test_method9TestLRU.test_lru_cache_weakrefable.<locals>.A.test_methodh  s
    y r   c                    > TU 4$ r   r   )rQ   r5   s    r   test_staticmethod?TestLRU.test_lru_cache_weakrefable.<locals>.A.test_staticmethodl  s     ay r   r   N)
r)   r*   r+   r,   r   r  r  r-  r  r-   rf   s   r   r/  r  g  sE    [[""! #! [[""! # !r   r/  )
r   r  weakrefrefr  r  assertIsNotNonegccollectr1  )r5   r  r/  refsr  s   `    r   test_lru_cache_weakrefable"TestLRU.test_lru_cache_weakrefablea  s    				 
		! 	! M*AMM*A//02 C  '  


Cce$ r   c                    SS jnU R                   R                  S5      " U5      nU R                  [        [        R
                  " U5      5      S5        U R                  [        [        R
                  " UR                  5      5      S5        U R                  [        [        R
                  " UR                  5      5      S5        g )Nc                    g r   r   rN   s      r   r  ,TestLRU.test_common_signatures.<locals>.orig  s    3r   r@   z(a, /, b, c=True)z()rC  )r   r  rW   r   r   r  r  r  )r5   r  lrus      r   test_common_signaturesTestLRU.test_common_signatures  s    &kk##A&t,Y44S9:<OPY44S^^DEtLY44S__EFMr   zWASI has limited C stackc                 (  ^ U R                   R                  U4S j5       m[        R                  (       dA  [        R                  " 5       S-  S-  n[        R
                  " 5          T" U5        S S S 5        U R                   [        :X  aU  TR                  5         [        R
                  " 5          U R                  [        5         T" S5        S S S 5        S S S 5        g g ! , (       d  f       Nx= f! , (       d  f       N)= f! , (       d  f       g = f)Nc                 B   > U S::  a  U $ T" U S-
  5      T" U S-
  5      -   $ )Nr@   rA   r   r  s    r   r  'TestLRU.test_lru_recursion.<locals>.fib  s*    Avqs8c!A#h&&r   rA   rn   i'  )
r   r  r   Py_DEBUGget_c_recursion_limitr  rW  r  rc   r  )r5   depthr  s     @r   test_lru_recursionTestLRU.test_lru_recursion  s     
			' 
	'
 113A5q8E++-E
 .;;+%OO++-&&~6J 7 .- & .-
 76 .-s0   &	C!0D	C2D!
C/2
D 	<D
Dr   N)*r)   r*   r+   r,   r  r  r  r  r  r  r  r  r"  r*  r5  r<  rG  rP  rU  r[  rc  r	   requires_working_threadingr}  r  r  r  r  r   r   r   r  r   suppress_immortalizationr  r  skip_on_s390xr  r  is_wasir  r-   r   r   r   r  r  H  s/   W&r
:661!7F
#/&PO < 46O PNA 002.+ 3.+` 002I 3I6 002
 3
&0=>-
)
)	Q %%'% (%:N __W__&@A B r   r  c                     SU -  U-   $ r  r   r   s     r   py_cached_funcr    s    q519r   c                     SU -  U-   $ r  r   r   s     r   c_cached_funcr        1uqyr   c                       \ rS rSr\r\4r\R                  5       S 5       r	\
\R                  5       S 5       5       rSrg)	TestLRUPyi  c                     SU-  U-   $ r  r   r  s      r   r  TestLRUPy.cached_meth  r  r   c                     SU -  U-   $ r  r   r   s     r   r  TestLRUPy.cached_staticmeth  s     1uqyr   r   N)r)   r*   r+   r,   rZ  r   r  r  r  r  r-  r  r-   r   r   r   r  r    sN    F /K    r   r  c                       \ rS rSr\(       a9  \r\4r\R                  5       S 5       r	\
\R                  5       S 5       5       rSrgSrg)TestLRUCi  c                     SU-  U-   $ r  r   r  s      r   r  TestLRUC.cached_meth  r  r   c                     SU -  U-   $ r  r   r   s     r   r  TestLRUC.cached_staticmeth  s     q519r   r   N)r)   r*   r+   r,   rW  r   r  r  r  r  r-  r  r-   r   r   r   r  r    sV    #n					 
	 
					 
 
	 r   r  c                   N   \ rS rSrS rS rS rS r\R                  " \
S5      \R                  S 5       5       rS rS	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r S r!S r"S r#S r$S r%S  r&S! r'S" r(S# r)S$ r*S% r+S& r,S' r-S( r.S) r/S* r0S+r1g,)-TestSingleDispatchi  c                     [         R                  S 5       nS nUR                  [        U5        U R	                  U" S5      S5        U R	                  U" S5      S5        U R	                  U" / SQ5      S5        g )Nc                     gNr   r   r  s    r   rb  3TestSingleDispatch.test_simple_overloads.<locals>.g      r   c                     g)Nintegerr   r/  s    r   g_int7TestSingleDispatch.test_simple_overloads.<locals>.g_int  s    r   r   r   r@   r  r@   rA   rG   )r
   singledispatchregisterr   rW   r5   rb  r	  s      r   test_simple_overloads(TestSingleDispatch.test_simple_overloads  si    		!	!	 
"			

356*1y)7V,r   c                    [         R                  S 5       n " S S5      n " S SU5      n " S SU5      n " S S	X45      nS
 nS nUR                  X&5        UR                  XG5        U R                  U" U" 5       5      S5        U R                  U" U" 5       5      S5        U R                  U" U" 5       5      S5        U R                  U" U" 5       5      S5        g )Nc                     gr  r   r  s    r   rb  &TestSingleDispatch.test_mro.<locals>.g  r  r   c                       \ rS rSrSrg)&TestSingleDispatch.test_mro.<locals>.Ai  r   Nr(   r   r   r   r/  r    r  r   r/  c                       \ rS rSrSrg)&TestSingleDispatch.test_mro.<locals>.Ci  r   Nr(   r   r   r   Cr    r  r   r  c                       \ rS rSrSrg)&TestSingleDispatch.test_mro.<locals>.Bi  r   Nr(   r   r   r   r   r    r  r   r   c                       \ rS rSrSrg)&TestSingleDispatch.test_mro.<locals>.Di  r   Nr(   r   r   r   Dr    r  r   r  c                     g)Nr/  r   rm   s    r   g_A(TestSingleDispatch.test_mro.<locals>.g_A      r   c                     g)Nr   r   ro   s    r   g_B(TestSingleDispatch.test_mro.<locals>.g_B  r!  r   )r
   r  r  rW   )r5   rb  r/  r  r   r  r  r#  s           r   test_mroTestSingleDispatch.test_mro  s    		!	!	 
"		 		 		 		 				

1	

113%13%13%13%r   c                    [         R                  S 5       nUR                  [        5      S 5       nU R	                  U" S5      S5        U R	                  U" S5      S5        U R                  UR                  [        5      U5        U R                  UR                  [        5      UR                  [        5      5        g )Nc                     gr  r   r  s    r   rb  5TestSingleDispatch.test_register_decorator.<locals>.g  r  r   c                     SU < 3$ )Nzint r   r/  s    r   r	  9TestSingleDispatch.test_register_decorator.<locals>.g_int  s
     ?"r   r   r   r  zint 12)	r
   r  r  r   rW   r   dispatchr   r   r  s      r   test_register_decorator*TestSingleDispatch.test_register_decorator  s    		!	!	 
"		
C	# 
	#2'2)ajjou-ajj(!**S/:r   c                     [         R                  S 5       nU R                  UR                  S5        [        R
                  R                  S:  a  U R                  UR                  S5        g g )Nc                     g)NTestr   r  s    r   rb  6TestSingleDispatch.test_wrapping_attributes.<locals>.g  s     r   rb  rA   zSimple test)r
   r  rW   r)   r   r  r  r  )r5   rb  s     r   test_wrapping_attributes+TestSingleDispatch.test_wrapping_attributes  s[    		!	!	 
"	 	S)99!QYY6 "r   zrequires _decimalc                    [         R                  S 5       nUR                  [        R                  5      S 5       n[        R                  S5      n[        R                  S5      nU R                  U" U5      S5        U R                  U" U5      S5        UR                  [        R
                  5      S 5       nU R                  U" U5      S5        U R                  U" U5      S5        g )	Nc                     gr  r   r  s    r   rb  ,TestSingleDispatch.test_c_classes.<locals>.g  r  r   c                     U R                   $ r   r  r  s    r   r  ,TestSingleDispatch.test_c_classes.<locals>._  s    88Or   Exponent < EminNumber got rounded)r:  )r;  c                     g)NToo small to care.r   r  s    r   r  r9    s    'r   r=  )r
   r  r  r   DecimalException	SubnormalRoundedrW   )r5   rb  r  subnrnds        r   test_c_classes!TestSingleDispatch.test_c_classes  s     
	!	!	 
"		
G,,	-	 
.	  !23oo234"673!89	
G%%	&	( 
'	(4"673!89r   c                    [         R                  n[        R                  nUR                  UR
                  UR                  UR                  /n[        U5       Hn  nU" [        U5      nU R                  U[        UR
                  UR                  UR                  UR                  UR                  UR                  [        /5        Mp     UR                  UR                  UR
                  [         R                   /n[        U5       H  nU" [         R"                  U5      nU R                  U[         R"                  UR
                  UR                  UR                  UR                  UR                  UR                  [        /5        M     UR                  UR                  [$        /n[        U5       Hv  nU" [         R&                  UR                  UR                  [$        /5      nU R                  U[         R&                  [        UR                  UR                  [        /5        Mx      " S S[         R&                  5      nUR(                  R+                  U5        UR(                  UR
                  /n[        U5       H  nU" Xd5      nU R                  XVUR(                  UR                  UR,                  [         R&                  [        UR
                  UR                  UR                  UR                  UR                  UR                  [        /5        M      " S S[         R&                  5      nUR                  UR.                  UR                  UR                  /n[        U5       Hx  nU" Xt5      nU R                  XWUR.                  [         R&                  [        UR                  UR                  UR                  UR                  UR                  [        /
5        Mz     g )Nc                       \ rS rSrSrg).TestSingleDispatch.test_compose_mro.<locals>.Di/  r   Nr(   r   r   r   r  rG  /  r  r   r  c                       \ rS rSrS rSrg).TestSingleDispatch.test_compose_mro.<locals>.Ci=  c                     g r   r   rf   s    r   r   7TestSingleDispatch.test_compose_mro.<locals>.C.__call__>      r   r   Nr)   r*   r+   r,   r   r-   r   r   r   r  rI  =      r   r  )r  r  r
   _compose_mroSequenceMutableMappingMappingSetr   rX   rW   
CollectionSizedIterable	Containerr   OrderedDictChainMapr   defaultdictMutableSequencer  
ReversibleCallable)r5   rL   mror  haystackr   r  r  s           r   test_compose_mro#TestSingleDispatch.test_compose_mro  s   OO$$Q--qyy!%%@$U+HD(#AQq'7'7!"qww

!"f!6 7 ,
 aii)9)9;;R;RS$U+HK(((3AQ!5!5q7G7G!"qww

!"f!6 7 , aggs+$U+HK++aggq{{C-HIAQ!8!8$!"f!6 7 ,	'' 		""1%""A$4$45$U+HA AQA$5$5qzz1<<!,!8!8$@P@PRSR[R[!"qww

AKK!'!) * ,	'' 	 !**akk199=$U+HA AQAJJ0G0Gqyy!"qww

!"f!6 7 ,r   c                 p   [         R                  nSS0n/ SQn[        5       S 1n[        U5      nSn[        R
                  S 5       nU R                  U" U5      S5        U R                  U" U5      S5        U R                  U" U5      S5        U R                  U" U5      S5        U R                  U" U5      S5        UR                  UR                  S 5        U R                  U" U5      S5        U R                  U" U5      S5        U R                  U" U5      S5        U R                  U" U5      S5        U R                  U" U5      S5        UR                  UR                  S 5        U R                  U" U5      S	5        U R                  U" U5      S5        U R                  U" U5      S5        U R                  U" U5      S5        U R                  U" U5      S5        UR                  [         R                  S
 5        U R                  U" U5      S	5        U R                  U" U5      S5        U R                  U" U5      S5        U R                  U" U5      S5        U R                  U" U5      S5        UR                  UR                  S 5        U R                  U" U5      S	5        U R                  U" U5      S5        U R                  U" U5      S5        U R                  U" U5      S5        U R                  U" U5      S5        UR                  UR                  S 5        U R                  U" U5      S	5        U R                  U" U5      S5        U R                  U" U5      S5        U R                  U" U5      S5        U R                  U" U5      S5        UR                  UR                  S 5        U R                  U" U5      S	5        U R                  U" U5      S5        U R                  U" U5      S5        U R                  U" U5      S5        U R                  U" U5      S5        UR                  UR                  S 5        U R                  U" U5      S	5        U R                  U" U5      S5        U R                  U" U5      S5        U R                  U" U5      S5        U R                  U" U5      S5        UR                  UR                  S 5        U R                  U" U5      S	5        U R                  U" U5      S5        U R                  U" U5      S5        U R                  U" U5      S5        U R                  U" U5      S5        UR                  [         S 5        U R                  U" U5      S5        U R                  U" U5      S5        U R                  U" U5      S5        U R                  U" U5      S5        U R                  U" U5      S5        UR                  ["        S 5        U R                  U" U5      S5        U R                  U" U5      S5        U R                  U" U5      S5        U R                  U" U5      S5        U R                  U" U5      S5        UR                  [$        S 5        U R                  U" U5      S5        U R                  U" U5      S5        U R                  U" U5      S5        U R                  U" U5      S5        U R                  U" U5      S5        UR                  [        S 5        U R                  U" U5      S5        U R                  U" U5      S5        U R                  U" U5      S5        U R                  U" U5      S5        U R                  U" U5      S5        UR                  [&        S 5        U R                  U" U5      S5        U R                  U" U5      S5        U R                  U" U5      S5        U R                  U" U5      S5        U R                  U" U5      S5        g )NrE   rF   r  c                     gr  r   r  s    r   rb  /TestSingleDispatch.test_register_abc.<locals>.gN  r  r   r   c                     gNsizedr   r  s    r   rR   6TestSingleDispatch.test_register_abc.<locals>.<lambda>V      r   rg  c                     gNmutablemappingr   r  s    r   rR   rh  \  s    1Ar   rl  c                     g)Nchainmapr   r  s    r   rR   rh  b  s    Zr   c                     g)Nmutablesequencer   r  s    r   rR   rh  h  s    2Cr   rp  c                     g)N
mutablesetr   r  s    r   rR   rh  n  s    \r   rr  c                     gNmappingr   r  s    r   rR   rh  t  s    )r   c                     gNsequencer   r  s    r   rR   rh  z      :r   rx  c                     gNrz  r   r  s    r   rR   rh        er   rz  c                     gNrX   r   r  s    r   rR   rh        Vr   rX   c                     gNr3   r   r  s    r   rR   rh    r  r   r3   c                     g)Nconcrete-setr   r  s    r   rR   rh    s    Nr   r  c                     g)N
frozen-setr   r  s    r   rR   rh    s    ,r   r  c                     g)Nr  r   r  s    r   rR   rh    s    gr   r  )r  r  r   	frozensetr
   r  rW   r  rU  rQ  rY  r[  
MutableSetrR  rP  rS  rX   r3   rz  r  )r5   rL   rp   lr  r   trb  s           r   test_register_abc$TestSingleDispatch.test_register_abcG  s   OO#JXtaL		!	!	 
"	1v&1v&1v&1v&1v&	

177/01w'1w'1w'1w'1w'	

1##%AB1/01w'1w'1w'1w'	

;'')?@1/01w'1w'1w'1w'	

1$$&CD1/01011w'1w'1w'	

1<<!9:1/01011|,1w'1w'	

199341/01011|,1w'1w'	

1::561/01011|,1w'1z*	

155+,1/01011|,1u%1z*	

4+,1v&1011|,1u%1z*	

4+,1v&1v&1|,1u%1z*	

3231v&1v&1~.1u%1z*	

9671v&1v&1~.1|,1z*	

5-.1v&1v&1~.1|,1w'r   c           	         [         R                  n[        R                  n " S S[        5      n " S SU5      nUR
                  R                   " S S[        5      5       n " S S[        5      n " S	 S
XeU5      nXqR                  XeUR
                  XAR                  U[        /	n[        UR                  UR                  UR
                  /5       H  n	U R                  U" XyS9U5        M     UR                  UR                  UR                  UR
                  UR                  /n
U R                  U" XzS9U5        g )Nc                       \ rS rSrSrg))TestSingleDispatch.test_c3_abc.<locals>.Ai  r   Nr(   r   r   r   r/  r    r  r   r/  c                       \ rS rSrS rSrg))TestSingleDispatch.test_c3_abc.<locals>.Bi  c                     grc  r   rf   s    r   r  1TestSingleDispatch.test_c3_abc.<locals>.B.__len__  r  r   r   Nr)   r*   r+   r,   r  r-   r   r   r   r   r        r   r   c                       \ rS rSrSrg))TestSingleDispatch.test_c3_abc.<locals>.Ci  r   Nr(   r   r   r   r  r    r  r   r  c                       \ rS rSrSrg))TestSingleDispatch.test_c3_abc.<locals>.Di  r   Nr(   r   r   r   r  r    r  r   r  c                       \ rS rSrS rSrg))TestSingleDispatch.test_c3_abc.<locals>.Xi  c                     g r   r   rf   s    r   r   2TestSingleDispatch.test_c3_abc.<locals>.X.__call__  rL  r   r   NrM  r   r   r   r  r    rN  r   r  )abcs)r  r  r
   _c3_mror   rW  r  r]  rU  r   rW   rR  rV  )r5   rL   r^  r/  r   r  r  r  r   r  	many_abcss              r   test_c3_abcTestSingleDispatch.test_c3_abc  s    OO	 		 	 
			 	 
		 		a 	 zz1a!VL !''1::q{{!CDDS.9 E YYQ[[!**M	Q/:r   c                      " S S[         5      n " S SUS9n " S SU5      n[        R                  S 5       nUR                  U5      S	 5       nU" 5       nU R	                  U" U5      S
5        g )Nc                       \ rS rSrS rSrg)1TestSingleDispatch.test_false_meta.<locals>.MetaAi  c                     grc  r   rf   s    r   r  9TestSingleDispatch.test_false_meta.<locals>.MetaA.__len__  r  r   r   Nr  r   r   r   MetaAr    r  r   r  c                       \ rS rSrSrg)-TestSingleDispatch.test_false_meta.<locals>.Ai  r   Nr(   r   r   r   r/  r    r  r   r/  r  c                       \ rS rSrSrg).TestSingleDispatch.test_false_meta.<locals>.AAi  r   Nr(   r   r   r   AAr    r  r   r  c                     g)Nzbase Ar   rm   s    r   fun/TestSingleDispatch.test_false_meta.<locals>.fun  s    r   c                     g)Nfun Ar   rm   s    r   r  -TestSingleDispatch.test_false_meta.<locals>._      r   r  )r  r
   r  r  rW   )r5   r  r/  r  r  r  aas          r   test_false_meta"TestSingleDispatch.test_false_meta  ss    	D 		% 		 			!	!	 
"		a	 
	TR'*r   c                 Z   [         R                  n[        R                  S 5       n " S SUR                  5      nU" 5       nU R                  U" U5      S5        UR                  UR                  S 5        UR                  UR                  S 5        UR                  UR                  S 5        UR                  UR                  S 5        U R                  U" U5      S	5        UR                  R                  U5        U R                  U" U5      S	5        UR                  R                  U5        U R                  U" U5      S	5        UR                  R                  U5        U R                  U" U5      S
5         " S S5      nU" 5       nU R                  U" U5      S5        UR                  R                  U5        U R                  U" U5      S5        UR                  R                  U5        U R                  [        5       nU" U5        S S S 5        U R                  [        WR                  5      S5         " S SUR                  5      nU" 5       n	U R                  U" U	5      S	5        UR                  R                  U5        U R                  U" U	5      S	5        UR                  R                  U5        U R                  U" U	5      S
5        [        R                  S 5       n
U
R                  UR                  5      S 5       nU
R                  UR                  5      S 5       nU R                  [        5       nU
" [         R                  " S 5      5        S S S 5        U R                  [        WR                  5      S5         " S S[         R                  5      nUR                   R                  U5        [        R                  S 5       nUR                  UR"                  5      S 5       nUR                  UR                   5      S 5       nU" 5       nU R                  U" U5      S5         " S S5      n " S SUUR                  5      nU" 5       nU R                  U
" U5      S	5        UR                  R                  U5        U R                  U
" U5      S	5         " S  S!5      nU" 5       nU R                  U
" U5      S	5        UR                  R                  U5        U R                  [        5       nU
" U5        S S S 5        U R                  [        WR                  5      S5         " S" S#UR                  U5      n[        R                  S$ 5       nUR                  U5      S% 5       nUR                  UR                  5      S& 5       nU" 5       nU R                  U" U5      S'5        UR                  R                  U5        U R                  U" U5      S(5        g ! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f))Nc                     gr  r   args    r   rb  0TestSingleDispatch.test_mro_conflicts.<locals>.g  r  r   c                       \ rS rSrS rSrg)0TestSingleDispatch.test_mro_conflicts.<locals>.Oi  c                     grc  r   rf   s    r   r  8TestSingleDispatch.test_mro_conflicts.<locals>.O.__len__  r  r   r   Nr  r   r   r   Or    r  r   r  r   c                     g)Niterabler   r  s    r   rR   7TestSingleDispatch.test_mro_conflicts.<locals>.<lambda>  ry  r   c                     gN	containerr   r  s    r   rR   r    s    Kr   c                     grf  r   r  s    r   rR   r    ri  r   c                     gr{  r   r  s    r   rR   r    r|  r   rg  rz  c                       \ rS rSrSrg)0TestSingleDispatch.test_mro_conflicts.<locals>.Pi  r   Nr(   r   r   r   Pr    r  r   r  r  )z]Ambiguous dispatch: <class 'collections.abc.Container'> or <class 'collections.abc.Iterable'>z]Ambiguous dispatch: <class 'collections.abc.Iterable'> or <class 'collections.abc.Container'>c                       \ rS rSrS rSrg)0TestSingleDispatch.test_mro_conflicts.<locals>.Qi  c                     grc  r   rf   s    r   r  8TestSingleDispatch.test_mro_conflicts.<locals>.Q.__len__  r  r   r   Nr  r   r   r   Qr    r  r   r  c                     gr  r   r  s    r   h0TestSingleDispatch.test_mro_conflicts.<locals>.h  r  r   c                     grf  r   r  s    r   r  0TestSingleDispatch.test_mro_conflicts.<locals>._	  r  r   c                     gr  r   r  s    r   r  r  	      r   c                      grc  r   r   r   r   rR   r  	  s    ar   )zZAmbiguous dispatch: <class 'collections.abc.Container'> or <class 'collections.abc.Sized'>zZAmbiguous dispatch: <class 'collections.abc.Sized'> or <class 'collections.abc.Container'>c                       \ rS rSrSrg)0TestSingleDispatch.test_mro_conflicts.<locals>.Ri	  r   Nr(   r   r   r   Rr  	  r  r   r  c                     gr  r   r  s    r   r=  0TestSingleDispatch.test_mro_conflicts.<locals>.i	  r  r   c                     grt  r   r  s    r   r  r  	      r   c                     grw  r   r  s    r   r  r  	      r   rx  c                       \ rS rSrSrg)0TestSingleDispatch.test_mro_conflicts.<locals>.Si"	  r   Nr(   r   r   r   Sr  "	  r  r   r  c                       \ rS rSrS rSrg)0TestSingleDispatch.test_mro_conflicts.<locals>.Ti$	  c                     grc  r   rf   s    r   r  8TestSingleDispatch.test_mro_conflicts.<locals>.T.__len__%	  r  r   r   Nr  r   r   r   r  r  $	  r  r   r  c                       \ rS rSrS rSrg)0TestSingleDispatch.test_mro_conflicts.<locals>.Ui+	  c                     grc  r   rf   s    r   r  8TestSingleDispatch.test_mro_conflicts.<locals>.U.__len__,	  r  r   r   Nr  r   r   r   Ur  +	  r  r   r  c                       \ rS rSrS rSrg)0TestSingleDispatch.test_mro_conflicts.<locals>.Vi<	  c                     grc  r   rf   s    r   r  8TestSingleDispatch.test_mro_conflicts.<locals>.V.__len__=	  r  r   r   Nr  r   r   r   Vr  <	  r  r   r  c                     gr  r   r  s    r   j0TestSingleDispatch.test_mro_conflicts.<locals>.j?	  r  r   c                     g)Nr  r   r  s    r   r  r  B	  s    r   c                     gr  r   r  s    r   r  r  E	  r  r   r  r  )r  r  r
   r  rU  rW   r  rV  rW  rS  rc   rM  r   r   r2  rZ  r[  rQ  )r5   rL   rb  r  r  r  r[   re_oner  qr  r  re_twor  r=  r  r  r  r  r  ure_threer  r  r  s                            r   test_mro_conflicts%TestSingleDispatch.test_mro_conflicts  s    OO		!	!	 
"		 	 C1v&	

1::56	

1;; 78	

177/0	

155+,1w'	

A1w'	Q1w'	q1u%	 	C1v&	

A1z*	Q|,aD -  !9	
	 	 C1w'	

A1w'	q1u%		!	!	 
"		
AGG		 
		
AKK	 	 
!	 |,k%%i01 -  !9	
	'' 		""1%		!	!	 
"		
A$$	%	 
&		
A%%	&	 
'	C1z*	 		177 	 C1w'	Q1w'	 	 C1w'	Q|,aD -""#9	
	 	 
	!	!	 
"		
A	 
		
AKK	 	 
!	C1s#	Q1{+A -,@ -,P -,s$   	W7	X	
	X7
X	
X
X*c                 N  ^^	 SSK Jn  SS Kn " U4S jSU5      mT" 5       m	[        R                  " USU	4S j5         [         R
                  n[        R                  S 5       n0 n/ nU R                  [        T	5      S5        U R                  U" U5      S5        U R                  [        T	5      S	5        U R                  T	R                  / 5        U R                  T	R                  [        /5        U R                  T	R                  [           UR                  [           5        U R                  U" U5      S5        U R                  [        T	5      S
5        U R                  T	R                  / 5        U R                  T	R                  [        [         /5        U R                  T	R                  [           UR                  [           5        U R                  T	R                  [            UR                  [           5        U R                  T	R                  [           T	R                  [            5        U R                  U" U5      S5        U R                  U" U5      S5        U R                  T	R                  [         [        /5        U R                  T	R                  [        [         /5        UR#                  [         S 5        U R                  T	R                  [         [        /5        U R                  [        T	5      S5        U R                  U" U5      S5        U R                  [        T	5      S	5        U R                  T	R                  [         [        /5        U R                  T	R                  [        [         [        /5        U R                  T	R                  [           [        R$                  " [        UR                  5      5        U R                  U" U5      S5        U R                  [        T	5      S
5        U R                  T	R                  [         [        /5        U R                  T	R                  [        [         [        [         /5        U R                  T	R                  [            [        R$                  " [         UR                  5      5         " S S5      nUR&                  R#                  U5        U R                  U" U5      S5        U R                  U" U5      S5        U R                  T	R                  [         [        [        [         /5        U R                  T	R                  [        [         [        [         /5        UR#                  UR(                  S 5        U R                  [        T	5      S5        U R                  U" U5      S5        U R                  [        T	5      S	5        U R                  T	R                  [         [        [        [         /5        U R                  T	R                  [        [         [        [         [        /5        U R                  U" U5      S5        U R                  [        T	5      S
5        U R                  T	R                  [         [        [        [         /5        U R                  T	R                  [        [         [        [         [        [         /5        U R                  U" U5      S5        U R                  U" U5      S5        U R                  T	R                  [         [        [        [         [         [        /5        U R                  T	R                  [        [         [        [         [        [         /5        UR+                  [         5        UR+                  [        5        U R                  T	R                  [         [        [        [         [         [        [         [        /5        U R                  T	R                  [        [         [        [         [        [         /5        UR,                  R#                  U5        U R                  [        T	5      S
5        U R                  U" U5      S5        U R                  [        T	5      S	5        UR#                  UR&                  S 5        U R                  [        T	5      S5        U R                  U" U5      S5        U R                  [        T	5      S	5        U R                  U" U5      S5        U R                  [        T	5      S
5        UR#                  [        S 5        U R                  U" U5      S5        U R                  U" U5      S5        UR/                  5         U R                  [        T	5      S5        S S S 5        g ! , (       d  f       g = f)Nr   )UserDictc                   >   >^  \ rS rSrUU 4S jrS rS rS rSrU =r	$ )?TestSingleDispatch.test_cache_invalidation.<locals>.TracingDictiR	  c                 B   > [         TU ]  " U0 UD6  / U l        / U l        g r   )r  r6  set_opsget_ops)r5   r   r   TracingDictr  s      r   r6  HTestSingleDispatch.test_cache_invalidation.<locals>.TracingDict.__init__S	  s%    k414B6B!!r   c                 Z    U R                   U   nU R                  R                  U5        U$ r   )r   r  r<  )r5   r!  results      r   r"  KTestSingleDispatch.test_cache_invalidation.<locals>.TracingDict.__getitem__W	  s&    3##C(r   c                 V    U R                   R                  U5        X R                  U'   g r   )r  r<  r   )r5   r!  rG  s      r   __setitem__KTestSingleDispatch.test_cache_invalidation.<locals>.TracingDict.__setitem__[	  s    ##C(!&		#r   c                 8    U R                   R                  5         g r   )r   ro  rf   s    r   ro  ETestSingleDispatch.test_cache_invalidation.<locals>.TracingDict.clear^	  s    		!r   )r  r  )
r)   r*   r+   r,   r6  r"  r  ro  r-   r  )r  r  s   @r   r  r  R	  s    "'" "r   r  WeakKeyDictionaryc                     > T $ r   r   )tds   r   rR   <TestSingleDispatch.test_cache_invalidation.<locals>.<lambda>b	  s    Rr   c                     gr  r   r  s    r   rb  5TestSingleDispatch.test_cache_invalidation.<locals>.gd	      r   r   r@   rA   c                     gr  r   r  s    r   rR   r  z	      r   r3   c                       \ rS rSrSrg)5TestSingleDispatch.test_cache_invalidation.<locals>.Xi	  r   Nr(   r   r   r   r  r  	  s    r   r  c                     grf  r   r  s    r   rR   r  	  s    Gr   rg  c                     grk  r   r  s    r   rR   r  	  s    5Er   rl  c                     gr~  r   r  s    r   rR   r  	  r  r   rX   )r  r  r  r   	swap_attrr  r
   r  rW   r9  r  r  rX   r   registryr   r3   r  
_find_implrQ  rU  r,  r  _clear_cache)
r5   r  r  rL   rb  rp   r  r  r  r  s
           @@r   test_cache_invalidation*TestSingleDispatch.test_cache_invalidationN	  s   (	"( 	" ]w(;ZHA%% &AASWa(QqT6*SWa(RZZ,RZZ$0RWWT]AJJv,>?QqT6*SWa(RZZ,RZZ$6RWWT]AJJv,>?RWWT]AJJv,>?RWWT]BGGDM:QqT6*QqT6*RZZ$6RZZ$6JJt/0RZZ$6SWa(QqT6*SWa(RZZ$6RZZ$d);<RWWT]&11$

CEQqT6*SWa(RZZ$6RZZ$dD)ABRWWT]&11$

CE %%a(QqT6*QqT6*RZZ$dD)ABRZZ$dD)ABJJqww 34SWa(QqT7+SWa(RZZ$dD)ABRZZ$dD$)GHQqT6*SWa(RZZ$dD)ABRZZ$dD$)MNQqT6*QqT7+RZZ$dD$)MNRZZ$dD$)MNJJtJJtRZZ$dD$*.*6 7RZZ$dD$)MNLL!!!$SWa(QqT6*SWa(JJq'')EFSWa(QqT#34SWa(QqT6*SWa(JJt/0QqT6*QqT6*NNSWa(a IHHs   ef
f$c                     [         R                  S 5       nUR                  S[        R                  R
                  4S j5       nUR                  SS j5       nU R                  U" S 5      S5        U R                  U" SS05      S5        U R                  U" / S	Q5      S
5        U R                  U" S	5      S
5        U R                  U" S5      S
5        UR                  [        5       " S S5      5       nU R                  U" S5      S5        g )Nc                     gr  r   r  s    r   r=  .TestSingleDispatch.test_annotations.<locals>.i	  r  r   r  c                     grt  r   r  s    r   r  .TestSingleDispatch.test_annotations.<locals>._	  r  r   c                     grw  r   r  s    r   r  r)  	  r  r   r   rE   r@   ru  r  rx  r   c                        \ rS rSrS rS rSrg)z.TestSingleDispatch.test_annotations.<locals>._i	  c                     Xl         g r   r  r5   r  s     r   r6  7TestSingleDispatch.test_annotations.<locals>._.__init__	      r   c                      U R                   U:H  $ r   r  r4   s     r   r  5TestSingleDispatch.test_annotations.<locals>._.__eq__	  s    xx5((r   r  N)r)   r*   r+   r,   r6  r  r-   r   r   r   r  r)  	  s    )r   r  )r  zcollections.abc.Sequence)r
   r  r  r  r  rR  rW   r   )r5   r=  r  s      r   test_annotations#TestSingleDispatch.test_annotations	  s    		!	!	 
"		
	;??** 	 
		
	 
	4&)C8i09z29z25:. 
C	) 	) 
	) 	55)r   c                      " S S5      nU" 5       nUR                  S5        U R                  UR                  S5        U" 5       nU R                  [	        US5      5        UR                  S5        U R                  UR                  S5        U" 5       nU R                  [	        US5      5        UR                  S5        U R                  UR                  S	5        U" 5       nU R                  [	        US5      5        g )
Nc                       \ rS rSr\R
                  S 5       r\R                  \5      S 5       r	\R                  \
5      S 5       r	Srg)2TestSingleDispatch.test_method_register.<locals>.Ai	  c                     SU l         g r  r  r-  s     r   r  4TestSingleDispatch.test_method_register.<locals>.A.t	  s	    !r   c                     SU l         g Nr   r  r-  s     r   r  4TestSingleDispatch.test_method_register.<locals>.A._	  	     r   c                     SU l         g Nr   r  r-  s     r   r  r;  	  r<  r   r  Nr)   r*   r+   r,   r
   singledispatchmethodr  r  r   r  r   r-   r   r   r   r/  r6  	  sN    ++" ,"ZZ_! !ZZ_! !r   r/  r   r   r  r   r   rB  r   )r  rW   r  r  r  )r5   r/  rE   r  s       r   test_method_register'TestSingleDispatch.test_method_register	  s    		! 		! C	A&SU+,	B&SU+,	C'SU+,r   c                      " S S5      nU" 5       nU R                  UR                  S5      5        U R                  UR                  S5      5        U R                  UR                  S5      S5        g )Nc                       \ rS rSr\R
                  \S 5       5       r\R                  \	5      \S 5       5       r
\R                  \5      \S 5       5       r
Srg)8TestSingleDispatch.test_staticmethod_register.<locals>.Ai	  c                     U $ r   r   r  s    r   r  :TestSingleDispatch.test_staticmethod_register.<locals>.A.t	  	     
r   c                 "    [        U [        5      $ r   r  r   r  s    r   r  :TestSingleDispatch.test_staticmethod_register.<locals>.A._	       "#s++r   c                 "    [        U [        5      $ r   r  r   r  s    r   r  rK  	  rL  r   r   Nr)   r*   r+   r,   r
   r@  r-  r  r  r   r  r   r-   r   r   r   r/  rE  	  sf    ++  ,ZZ_,  ,ZZ_,  ,r   r/  r   r   rB  rU   r  rW   r5   r/  rE   s      r   test_staticmethod_register-TestSingleDispatch.test_staticmethod_register	  U    	, 	, CAB S3'r   c                 j     " S S5      nU" 5       nU R                  UR                  SS5      S5        g )Nc                   h    \ rS rSrSr\R                  S 5       r\R                  S\	4S j5       r
Srg)3TestSingleDispatch.test_slotted_class.<locals>.Sloti	  rD   c                     g r   r   r5   itemr  s      r   go6TestSingleDispatch.test_slotted_class.<locals>.Slot.go 
  r  r   rZ  c                 
    X-   $ r   r   rY  s      r   r  5TestSingleDispatch.test_slotted_class.<locals>.Slot._
  s
    z!r   r   N)r)   r*   r+   r,   	__slots__r
   r@  r[  r  r   r  r-   r   r   r   SlotrW  	  s>    "I++ , [["c " "r   r`  r@   rA   rW   r[  r5   r`  r  s      r   test_slotted_class%TestSingleDispatch.test_slotted_class	  s/    	" 	" FaQ'r   c                      " S S5      nU" 5       nU R                  UR                  SS5      S5        U R                  UR                  SS5      S5        g )Nc                   |    \ rS rSrSr\R                  \S 5       5       r\R                  \S\
4S j5       5       rSrg)?TestSingleDispatch.test_classmethod_slotted_class.<locals>.Sloti
  rD   c                     g r   r   rt  rZ  r  s      r   r[  BTestSingleDispatch.test_classmethod_slotted_class.<locals>.Slot.go
       r   rZ  c                 
    X-   $ r   r   ri  s      r   r  ATestSingleDispatch.test_classmethod_slotted_class.<locals>.Slot._
  s     z!r   r   N)r)   r*   r+   r,   r_  r
   r@  r+  r[  r  r   r  r-   r   r   r   r`  rg  
  sN    "I++  , [["S "  "r   r`  r@   rA   ra  rb  s      r   test_classmethod_slotted_class1TestSingleDispatch.test_classmethod_slotted_class
  sI    
	" 
	" FaQ'A*r   c                     " S S5      nU" 5       nU R                  UR                  S5      5        U R                  UR                  S5      5        U R                  UR                  S5      S5        U R                  UR                  S5      5        U R                  UR                  S5      5        U R                  UR                  S5      S5        g )Nc                       \ rS rSrS/r\R                  \S 5       5       r\R                  \
5      \S 5       5       r\R                  \5      \S 5       5       rSrg)=TestSingleDispatch.test_staticmethod_slotted_class.<locals>.Ai
  rE   c                     U $ r   r   r  s    r   r  ?TestSingleDispatch.test_staticmethod_slotted_class.<locals>.A.t
  rH  r   c                 "    [        U [        5      $ r   rJ  r  s    r   r  ?TestSingleDispatch.test_staticmethod_slotted_class.<locals>.A._#
  rL  r   c                 "    [        U [        5      $ r   rN  r  s    r   r  rv  '
  rL  r   r   N)r)   r*   r+   r,   r_  r
   r@  r-  r  r  r   r  r   r-   r   r   r   r/  rr  
  sm    I++  ,ZZ_,  ,ZZ_,  ,r   r/  r   r   rB  rP  rQ  s      r   test_staticmethod_slotted_class2TestSingleDispatch.test_staticmethod_slotted_class
  s    	, 	, CAB S3'AB S3'r   c                      " S S5      nU" 5       nSUR                   l        U" 5       nU R                  [        5         UR                   R                    S S S 5        g ! , (       d  f       g = f)Nc                   8    \ rS rSr\R
                  S 5       rSrg)6TestSingleDispatch.test_assignment_behavior.<locals>.Ai6
  c                     U $ r   r   r  s    r   r  8TestSingleDispatch.test_assignment_behavior.<locals>.A.t7
  s    
r   r   Nr)   r*   r+   r,   r
   r@  r  r-   r   r   r   r/  r|  6
  s    ++ ,r   r/  r   )r  r   rc   rA  )r5   r/  rE   a2s       r   test_assignment_behavior+TestSingleDispatch.test_assignment_behavior4
  sL    	 	
 CS~.DDHH /..s   A
A-c                     " S S5      nU R                  UR                  S5      R                  S5        U R                  UR                  S5      R                  S5        U R                  UR                  S5      R                  S5        g )	Nc                       \ rS rSrS r\R                  \S 5       5       r\R                  \
5      \S 5       5       r\R                  \5      \S 5       5       rSrg)7TestSingleDispatch.test_classmethod_register.<locals>.AiB
  c                     Xl         g r   r  r-  s     r   r6  @TestSingleDispatch.test_classmethod_register.<locals>.A.__init__C
  r/  r   c                     U " S5      $ r  r   rt  r  s     r   r  9TestSingleDispatch.test_classmethod_register.<locals>.A.tF
       6{"r   c                     U " S5      $ r:  r   r  s     r   r  9TestSingleDispatch.test_classmethod_register.<locals>.A._J
       5z!r   c                     U " S5      $ r>  r   r  s     r   r  r  N
  r  r   r  Nr)   r*   r+   r,   r6  r
   r@  r+  r  r  r   r  r   r-   r   r   r   r/  r  B
  sm     ++#  ,#ZZ_"  "ZZ_"  "r   r/  r   r   r   r   rB  r   rW   r  r  r  s     r   test_classmethod_register,TestSingleDispatch.test_classmethod_registerA
  b    	" 	"" 	QU+Re,Sv.r   c                     " S S5      nUR                   R                  [        5      [        S 5       5       nUR                   R                  [        5      [        S 5       5       nU R                  UR                  S5      R                  S5        U R                  UR                  S5      R                  S5        U R                  UR                  S	5      R                  S
5        g )Nc                   H    \ rS rSrS r\R                  \S 5       5       rSr	g)4TestSingleDispatch.test_callable_register.<locals>.AiX
  c                     Xl         g r   r  r-  s     r   r6  =TestSingleDispatch.test_callable_register.<locals>.A.__init__Y
  r/  r   c                     U " S5      $ r  r   r  s     r   r  6TestSingleDispatch.test_callable_register.<locals>.A.t\
  r  r   r  N)
r)   r*   r+   r,   r6  r
   r@  r+  r  r-   r   r   r   r/  r  X
  s)     ++#  ,#r   r/  c                     U " S5      $ r:  r   r  s     r   r  4TestSingleDispatch.test_callable_register.<locals>._a
       u:r   c                     U " S5      $ r>  r   r  s     r   r  r  e
  r  r   r   r   r   r   rB  r   )r  r  r   r+  r   rW   r  )r5   r/  r  s      r   test_callable_register)TestSingleDispatch.test_callable_registerW
  s    	# 	# 
c			 
 
		
c			 
 
	 	QU+Re,Sv.r   c                 8    " S S[         R                  S9nU R                  UR                  R                  5        U R                  UR
                  S   R                  5        U R                  [        5         U" 5         S S S 5        g ! , (       d  f       g = f)Nc                   V    \ rS rSr\R
                  \R                  S 5       5       rSr	g)ATestSingleDispatch.test_abstractmethod_register.<locals>.Abstractio
  c                     g r   r   r  s      r   r  ETestSingleDispatch.test_abstractmethod_register.<locals>.Abstract.addq
  rk  r   r   N)
r)   r*   r+   r,   r
   r@  r  r  r  r-   r   r   r   r  r  o
  s(    ++   ,r   r  r  r  )r  r  rU   r  r  r"   rc   rd   )r5   r  s     r   test_abstractmethod_register/TestSingleDispatch.test_abstractmethod_registern
  sf    	 	 	99:))%0EEFy)J *))s   :B
Bc                      " S S5      nU" 5       nU R                  UR                  S5      S5        U R                  UR                  S5      S5        U R                  UR                  S5      S5        g )	Nc                       \ rS rSr\R
                  S 5       r\R                  S\4S j5       r	\R                  S\
4S j5       r	Srg)4TestSingleDispatch.test_type_ann_register.<locals>.Ai}
  c                     gr  r   r-  s     r   r  6TestSingleDispatch.test_type_ann_register.<locals>.A.t~
  r  r   r  c                     gr:  r   r-  s     r   r  6TestSingleDispatch.test_type_ann_register.<locals>.A._
      r   c                     gr>  r   r-  s     r   r  r  
  r  r   r   Nr?  r   r   r   r/  r  }
  sT    ++ ,ZZS  ZZS  r   r/  r   r   r   r   rB  r   )rW   r  rQ  s      r   test_type_ann_register)TestSingleDispatch.test_type_ann_register|
  s]    		 		 CQ'R%(S6*r   c                      " S S5      nU" 5       nU R                  UR                  S5      5        U R                  UR                  S5      5        U R                  UR                  S5      S5        g )Nc                       \ rS rSr\R
                  \S 5       5       r\R                  \S\	4S j5       5       r
\R                  \S\4S j5       5       r
Srg)ATestSingleDispatch.test_staticmethod_type_ann_register.<locals>.Ai
  c                     U $ r   r   r  s    r   r  CTestSingleDispatch.test_staticmethod_type_ann_register.<locals>.A.t
  rH  r   r  c                 "    [        U [        5      $ r   rJ  r  s    r   r  CTestSingleDispatch.test_staticmethod_type_ann_register.<locals>.A._
  rL  r   c                 "    [        U [        5      $ r   rN  r  s    r   r  r  
  rL  r   r   NrO  r   r   r   r/  r  
  sl    ++  ,ZZ,s ,  ,ZZ,s ,  ,r   r/  r   r   rB  rP  rQ  s      r   #test_staticmethod_type_ann_register6TestSingleDispatch.test_staticmethod_type_ann_register
  rT  r   c                     " S S5      nU R                  UR                  S5      R                  S5        U R                  UR                  S5      R                  S5        U R                  UR                  S5      R                  S5        g )	Nc                       \ rS rSrS r\R                  \S 5       5       r\R                  \S\
4S j5       5       r\R                  \S\4S j5       5       rSrg)	@TestSingleDispatch.test_classmethod_type_ann_register.<locals>.Ai
  c                     Xl         g r   r  r-  s     r   r6  ITestSingleDispatch.test_classmethod_type_ann_register.<locals>.A.__init__
  r/  r   c                     U " S5      $ r  r   r  s     r   r  BTestSingleDispatch.test_classmethod_type_ann_register.<locals>.A.t
  r  r   r  c                     U " S5      $ r:  r   r  s     r   r  BTestSingleDispatch.test_classmethod_type_ann_register.<locals>.A._
  r  r   c                     U " S5      $ r>  r   r  s     r   r  r  
  r  r   r  Nr  r   r   r   r/  r  
  ss     ++#  ,#ZZ"C "  "ZZ"C "  "r   r/  r   r   r   r   rB  r   r  r  s     r   "test_classmethod_type_ann_register5TestSingleDispatch.test_classmethod_type_ann_register
  r  r   c                 "    " S S5      nUR                   S-   nUR                  U" 5       R                  UR                  U" 5       R                  UR                  U" 5       R                  4 H  nU R	                  US9   U R                  UR                   X#R                  -   5        U R                  UR                  [        R                  (       a  SOS 5        U R                  UR                  S   [        5        S S S 5        M     U R                  UR                  R                  S5        U R                  U" 5       R                  R                  S5        U R                  UR                  R                  S5        U R                  U" 5       R                  R                  S5        U R                  UR                  R                  S	5        U R                  U" 5       R                  R                  S	5        g ! , (       d  f       GM  = f)
Nc                       \ rS rSr\R
                  S\S\4S j5       r\R
                  \	S\S\4S j5       5       r
\R
                  \S\S\4S j5       5       rSrg)	=TestSingleDispatch.test_method_wrapping_attributes.<locals>.Ai
  r  returnc                     [        U5      $ r   r   r-  s     r   r    BTestSingleDispatch.test_method_wrapping_attributes.<locals>.A.func
       3xr   c                     [        U5      $ r   r  r  s     r   cls_funcFTestSingleDispatch.test_method_wrapping_attributes.<locals>.A.cls_func
       3xr   c                     [        U 5      $ r   r  r  s    r   static_funcITestSingleDispatch.test_method_wrapping_attributes.<locals>.A.static_func
  r  r   r   N)r)   r*   r+   r,   r
   r@  r   r   r    r+  r  r-  r  r-   r   r   r   r/  r  
  s    ++      ,  ++ 3  3    ,  ++       , r   r/  r   r*  My function docstringr  r    r  r  )r+   r    r  r  r  rW   r)   r  r   HAVE_PY_DOCSTRINGSr  r   )r5   r/  prefixr*  s       r   test_method_wrapping_attributes2TestSingleDispatch.test_method_wrapping_attributes
  sz   	  	   #%FFCHHJJCLLMMCOO
D 4(  !2!2F]]4JK  %,%?%? #:'+.   !5!5e!<cB )(
  	&1**F3,,j9..
;//?11=A )(s   ?A?G>>
H	c           	        ^ S m " U4S jS5      n " U4S jS5      nUR                  S5       nUnS S S 5        UR                  S5       nUnS S S 5        U R                  WW5        U R                  US5        U R                  UR                  S5      UR                  S5      5        U R                  UR                  S5      S5        S H  nU R                  US	9   U R                  [	        X&5      R
                  [	        X5      R
                  5        U R                  [	        U" 5       U5      R
                  [	        U" 5       U5      R
                  5        S S S 5        M     UR                   U" 5       R                   UR                  U" 5       R                  4 Hq  nU R                  US
9   U R                  UR                  [        R                  (       a  SOS 5        U R                  UR                  S   [        5        S S S 5        Ms     U R                  UR                   R
                  S5        U R                  U" 5       R                   R
                  S5        U R                  UR                  R
                  S5        U R                  U" 5       R                  R
                  S5        g ! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GM  = f! , (       d  f       GM_  = f)Nc                 p   ^ U R                   m[        [        R                  " T5      U4S j5       5       nU$ )Nc                     > T" U 0 UD6$ r   r   )r   r   r  s     r   r  gTestSingleDispatch.test_double_wrapped_methods.<locals>.classmethod_friendly_decorator.<locals>.wrapper
  s     ///r   )__func__r+  r
   r  )r    r  r  s     @r   classmethod_friendly_decoratorVTestSingleDispatch.test_double_wrapped_methods.<locals>.classmethod_friendly_decorator
  s4    mmG__W%0 & 0Nr   c                   x   > \ rS rSr\\R                  S\S\4S j5       5       r	 Y \S\S\4S j5       5       r
Srg)MTestSingleDispatch.test_double_wrapped_methods.<locals>.WithoutSingleDispatchi
  r  r  c              3   6   #     [        U5      v   g!    g= f7fNDoner  r  s     r   cls_context_manageraTestSingleDispatch.test_double_wrapped_methods.<locals>.WithoutSingleDispatch.cls_context_manager
  s     "c(N!6    c                     [        U5      $ r   r  r  s     r   decorated_classmethodcTestSingleDispatch.test_double_wrapped_methods.<locals>.WithoutSingleDispatch.decorated_classmethod
  r  r   r   N)r)   r*   r+   r,   r+  
contextlibcontextmanagerr   r   r  r  r-   r  s   r   WithoutSingleDispatchr  
  s[    &&"c "c " ' " ,       , r   r  c                      > \ rS rSr\R
                  \\R                  S\	S\
4S j5       5       5       r\R
                   Y \S\	S\
4S j5       5       5       rSrg)JTestSingleDispatch.test_double_wrapped_methods.<locals>.WithSingleDispatchi
  r  r  c              3   6   #     [        U5      v   g!    g= f7fr  r  r  s     r   r  ^TestSingleDispatch.test_double_wrapped_methods.<locals>.WithSingleDispatch.cls_context_manager
  s     
"c(N!6r  c                     [        U5      $ r   r  r  s     r   r  `TestSingleDispatch.test_double_wrapped_methods.<locals>.WithSingleDispatch.decorated_classmethod  s    
 3xr   r   N)r)   r*   r+   r,   r
   r@  r+  r  r  r   r   r  r  r-   r  s   r   WithSingleDispatchr  
  sw    ++&&"c "c " '  ," +++       , , r   r  rl   5)r  r  )r  r  r  r  r  r  )r  rW   r  r  r   r)   r  r   r  r  r   )	r5   r  r  r   without_single_dispatch_foosingle_dispatch_foomethod_namer*  r  s	           @r   test_double_wrapped_methods.TestSingleDispatch.test_double_wrapped_methods
  s   		  	 	  	 ( #66q9S*-' :  33A6#"% 7 	46IJ,c2!77:44Q7	

 	+AA!DcJ LK[1  .<EE1?HH
   .0+>GG13[AJJ 21 L 22 4444 66	
D 4(  %,%?%? #:'+.   !5!5e!<cB )(
 	22;;!	
 	 44==!	
 	44==#	
 	 66??#	
m :9 76 21" )(s1   J9K A=K3AK09
K
K
K-	0
L 	c                    SnSn[         R                  S 5       nU R                  [        5       nUR	                  S5      S 5       nS S S 5        U R                  [        WR                  5      R                  US-   5      5        U R                  [        UR                  5      R                  U5      5        U R                  [        5       nUR                  S 5       nS S S 5        U R                  [        UR                  5      R                  US-   5      5        U R                  [        UR                  5      R                  U5      5        U R                  [        5       nUR                  S	[        R                  [           4S
 j5       nS S S 5        U R                  [        UR                  5      R                  S5      5        U R                  [        UR                  5      R                  S5      5        U R                  [        5       nUR                  S	[        R                  [        [        R                  [           4   4S j5       nS S S 5        U R                  [        UR                  5      R                  S5      5        U R                  [        UR                  5      R                  S5      5        g ! , (       d  f       GN= f! , (       d  f       GN = f! , (       d  f       GN`= f! , (       d  f       N= f)Nz(Invalid first argument to `register()`: zS. Use either `@register(some_class)` or plain `@register` on an annotated function.c                     gr  r   r  s    r   r=  8TestSingleDispatch.test_invalid_registrations.<locals>.iL  r  r   rG  c                     g)NzI annotated with a non-typer   r  s    r   r  8TestSingleDispatch.test_invalid_registrations.<locals>._P  s    4r   42c                     g)NzI forgot to annotater   r  s    r   r  r  V  s    -r   zB<function TestSingleDispatch.test_invalid_registrations.<locals>._r  c                     g)Nz%I annotated with a generic collectionr   r  s    r   r  r  _  s     ?r   zInvalid annotation for 'arg'.z$typing.Iterable[str] is not a class.c                     g)NzInvalid Unionr   r  s    r   r  r  n  s    &r   zFtyping.Union[int, typing.Iterable[str]] not all arguments are classes.)r
   r  rc   rd   r  rU   r   r2  r   endswithtypingrV  Unionr   )r5   
msg_prefix
msg_suffixr=  excr  s         r   test_invalid_registrations-TestSingleDispatch.test_invalid_registrationsF  sd   ?
" 	 
	!	!	 
"	y)SZZ^5 5 * 	CMM*55j46GHICMM*33J?@y)SZZ. . * 	CMM*55jP7Q 
 	 	CMM*33J?@y)SZZ?vs+ ? ? * 	CMM*55+
 	 	CMM*332
 	 y)SZZ'v||C)=$=> ' ' * 	CMM*55+
 	 	CMM*33T
 	K *) *) *) *)s0   KK',K,AK>
K
K),
K;>
Lc                    [         R                  S 5       nSnU R                  [        U5         U" 5         S S S 5        SnU R                  [        U5         U" SS9  S S S 5        g ! , (       d  f       N6= f! , (       d  f       g = f)Nc                      g r   r   )r   r   s     r   r   >TestSingleDispatch.test_invalid_positional_argument.<locals>.fy  r  r   z)f requires at least 1 positional argumentr@   rm   )r
   r  assertRaisesRegexrd   )r5   r   msgs      r    test_invalid_positional_argument3TestSingleDispatch.test_invalid_positional_argumentx  so    		!	!	 
"	9##Is3C 49##Is3F 43 43 43s   A'A8'
A58
Bc                 2    " S S5      nSnU R                  [        U5         U" 5       R                  5         S S S 5        SnU R                  [        U5         U" 5       R                  SS9  S S S 5        g ! , (       d  f       ND= f! , (       d  f       g = f)Nc                   8    \ rS rSr\R
                  S 5       rSrg)STestSingleDispatch.test_invalid_positional_argument_singledispatchmethod.<locals>.Ai  c                     g r   r   )r5   r   r   s      r   r  UTestSingleDispatch.test_invalid_positional_argument_singledispatchmethod.<locals>.A.t  r  r   r   Nr  r   r   r   r/  r    s    ++ ,r   r/  z)t requires at least 1 positional argumentr@   rm   )r  rd   r  )r5   r/  r  s      r   5test_invalid_positional_argument_singledispatchmethodHTestSingleDispatch.test_invalid_positional_argument_singledispatchmethod  sq    	 	 :##Is3CEEG 49##Is3CEEAEJ 43 43 43s   A7B7
B
Bc                    [         R                  S 5       nUR                  S[        R                  [
        [        4   4S j5       nUR                  S[        [        -  4S j5       nU R                  U" / 5      S5        U R                  U" S5      S5        U R                  U" S5      S5        U R                  U" S	5      S
5        U R                  U" S5      S
5        g )Nc                     gNdefaultr   r  s    r   r   (TestSingleDispatch.test_union.<locals>.f  r  r   r  c                     gNtyping.Unionr   r  s    r   r  (TestSingleDispatch.test_union.<locals>._      !r   c                     gNtypes.UnionTyper   r  s    r   r  r)        $r   r$  r   r(  r   r@   r-  r@  )
r
   r  r  r  r  r   bytesr   floatrW   r5   r   r  s      r   
test_unionTestSingleDispatch.test_union  s    		!	!	 
"	 
	"6<<U
+ 	" 
	" 
	%3; 	% 
	% 	2	*2/301013!23r   c                    [         R                  S 5       nUR                  S[        R                  [
        [        4   4S j5       nUR                  S[        [
        -  4S j5       nU R                  U" / 5      S5        U R                  U" S5      S5        U R                  U" S5      S	5        U R                  U" S
5      S5        g )Nc                     gr#  r   r  s    r   r   1TestSingleDispatch.test_union_conflict.<locals>.f  r  r   r  c                     gr'  r   r  s    r   r  1TestSingleDispatch.test_union_conflict.<locals>._  r*  r   c                     gr,  r   r  s    r   r  r8    r.  r   r$  r   r-  r   r(  r@   )	r
   r  r  r  r  r   r/  r   rW   r1  s      r   test_union_conflict&TestSingleDispatch.test_union_conflict  s    		!	!	 
"	 
	"6<<U
+ 	" 
	" 
	%39 	% 
	% 	2	*2 1230101r   c                    [         R                  S 5       nUR                  S[        R                  [
        S 4   4S j5       nU R                  U" S5      S5        U R                  U" S5      S5        U R                  U" S 5      S5        [         R                  S 5       nUR                  S[        S -  4S	 j5       nU R                  U" S5      S5        U R                  U" S5      S
5        U R                  U" S 5      S
5        g )Nc                     gr#  r   r  s    r   typing_union8TestSingleDispatch.test_union_None.<locals>.typing_union  r  r   r  c                     gr'  r   r  s    r   r  -TestSingleDispatch.test_union_None.<locals>._  r*  r   r@   r$  r   r(  c                     gr#  r   r  s    r   types_union7TestSingleDispatch.test_union_None.<locals>.types_union  r  r   c                     gr,  r   r  s    r   r  rA    r.  r   r-  )r
   r  r  r  r  r   rW   r   )r5   r>  r  rC  s       r   test_union_None"TestSingleDispatch.test_union_None  s   		!	!	 
"	 
			"6<<T	* 	" 
	" 	a)4b)>:d+^<		!	!	 
"	 
			%3: 	% 
	% 	R)4Q):;T*,=>r   c                    [         R                  S 5       nU R                  [        S5         UR	                  [
        [           S 5        S S S 5        U R                  [        S5         UR	                  [        R                  [           S 5        S S S 5        U R                  [        S5         UR	                  [
        [           [        -  S 5        S S S 5        U R                  [        S5         UR	                  [        R                  [           [        -  S 5        S S S 5        U R                  U" S/5      S5        U R                  U" S	/5      S5        U R                  U" S
5      S5        U R                  U" S5      S5        g ! , (       d  f       GNK= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f)Nc                     gr#  r   r  s    r   r   8TestSingleDispatch.test_register_genericalias.<locals>.f  r  r   Invalid first argument to c                     gNztypes.GenericAliasr   r  s    r   rR   ?TestSingleDispatch.test_register_genericalias.<locals>.<lambda>  s    .Br   c                     gNztyping.GenericAliasr   r  s    r   rR   rN    s    5Jr   c                     g)Nz$types.UnionTypes(types.GenericAlias)r   r  s    r   rR   rN    s    4Zr   c                     gNz!typing.Union[typing.GenericAlias]r   r  s    r   rR   rN    s    ?br   r@   r$  r@  r   r   )r
   r  r  rd   r  r3   r   r  Listr   r0  r/  rW   r   s     r   test_register_genericalias-TestSingleDispatch.test_register_genericalias  sL   		!	!	 
"	 ##I/KLJJtCy"BC M##I/KLJJv{{3')JK M##I/KLJJtCy3(Z[ M##I/KLJJv{{5)E13bc M 	A3+C59-2	*3+ MLLLLLLLs/   F*)F"1&F450G
F"
F14
G
Gc                    [         R                  S 5       nU R                  [        S5         UR	                  [
        [           5        S S S 5        U R                  [        S5         UR	                  [        R                  [           5        S S S 5        U R                  [        S5         UR	                  [
        [           [        -  5        S S S 5        U R                  [        S5         UR	                  [        R                  [           [        -  5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N}= f! , (       d  f       g = f)Nc                     gr#  r   r  s    r   r   BTestSingleDispatch.test_register_genericalias_decorator.<locals>.f  r  r   rK  )
r
   r  r  rd   r  r3   r   r  rT  r   r   s     r   $test_register_genericalias_decorator7TestSingleDispatch.test_register_genericalias_decorator  s    		!	!	 
"	 ##I/KLJJtCy! M##I/KLJJv{{3'( M##I/KLJJtCy3' M##I/KLJJv{{3'#-. ML MLLLLLLLs/   D&('D7-$E/.E&
D47
E
E
E'c                    [         R                  S 5       nU R                  [        S5         UR                  S[
        [           4S j5       nS S S 5        U R                  [        S5         UR                  S[        R                  [           4S j5       nS S S 5        U R                  [        S5         UR                  S[
        [           [        -  4S j5       nS S S 5        U R                  [        S5         UR                  S[        R                  [           [        -  4S j5       nS S S 5        U R                  U" S/5      S	5        U R                  U" S
/5      S	5        U R                  U" S5      S	5        U R                  U" S5      S	5        g ! , (       d  f       GNT= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f)Nc                     gr#  r   r  s    r   r   CTestSingleDispatch.test_register_genericalias_annotation.<locals>.f  r  r   zInvalid annotation for 'arg'r  c                     grM  r   r  s    r   r  CTestSingleDispatch.test_register_genericalias_annotation.<locals>._  s    +r   c                     grP  r   r  s    r   r  r`    s    ,r   c                     g)Nz#types.UnionType(types.GenericAlias)r   r  s    r   r  r`    s    <r   c                     grS  r   r  s    r   r  r`     s    :r   r@   r$  r@  r   r   )r
   r  r  rd   r  r3   r   r  rT  r0  r   r/  rW   r1  s      r   %test_register_genericalias_annotation8TestSingleDispatch.test_register_genericalias_annotation  s   		!	!	 
"	 ##I/MNZZ,tCy , , O ##I/MNZZ-v{{5) - - O ##I/MNZZ=tCy3 = = O ##I/MNZZ;v{{5)E1 ; ; O
 	A3+C59-2	*3+) ON ON ON ONs/   "F-,F.7)G >3G
F+.
F= 
G
Gc                      " S S5      nU" 5       nU" 5       nU R                  UR                  S5      U5        U R                  UR                  S5      U5        g )Nc                   D    \ rS rSrS rS r\R                  S 5       rSr	g)9TestSingleDispatch.test_method_equal_instances.<locals>.Ai  c                     gNTr   r4   s     r   r  @TestSingleDispatch.test_method_equal_instances.<locals>.A.__eq__  s    r   c                     gr  r   rf   s    r   r  BTestSingleDispatch.test_method_equal_instances.<locals>.A.__hash__  r  r   c                     U $ r   r   r-  s     r   r  ;TestSingleDispatch.test_method_equal_instances.<locals>.A.t  s    r   r   N
r)   r*   r+   r,   r  r  r
   r@  r  r-   r   r   r   r/  rh    s$    ++ ,r   r/  r@   rA   )r   r  )r5   r/  rE   rF   s       r   test_method_equal_instances.TestSingleDispatch.test_method_equal_instances	  sH    	 	 CCacc!fa acc!fa r   c                      " S S5      nU" 5       R                  S5        [        U" 5       R                   5        U" 5       R                   U" 5       R                   :H    g )Nc                   D    \ rS rSrS rS r\R                  S 5       rSr	g)2TestSingleDispatch.test_method_bad_hash.<locals>.Ai  c                     [         er   AssertionErrorr4   s     r   r  9TestSingleDispatch.test_method_bad_hash.<locals>.A.__eq__      $$r   c                     [         er   rw  rf   s    r   r  ;TestSingleDispatch.test_method_bad_hash.<locals>.A.__hash__  rz  r   c                     g r   r   r-  s     r   r  4TestSingleDispatch.test_method_bad_hash.<locals>.A.t  r  r   r   Nrp  r   r   r   r/  ru    s$    %%++ ,r   r/  r@   )r  r  r  s     r   test_method_bad_hash'TestSingleDispatch.test_method_bad_hash  s;    	 	 	
aQSUU	r   c                     " S S5      nU" 5       nUR                  S5      nU R                  U" 5       5        A[        R                  " SS9(       d  [        R                  " 5         U R                  U" 5       5        U" 5       nUR                   nA[        R                  " 5         U" S5      nU R                  U" 5       5        A[        R                  " SS9(       d  [        R                  " 5         U R                  U" 5       5        g )Nc                   8    \ rS rSr\R
                  S 5       rSrg)<TestSingleDispatch.test_method_no_reference_loops.<locals>.Ai*  c                 .    [         R                  " U 5      $ r   )r  r  r-  s     r   r  >TestSingleDispatch.test_method_no_reference_loops.<locals>.A.t+  s    {{4((r   r   Nr  r   r   r   r/  r  *  s    ++) ,)r   r/  r@   T)cpython)r  r  r   check_impl_detailr   r1  )r5   r/  rE   r  r  s        r   test_method_no_reference_loops1TestSingleDispatch.test_method_no_reference_loops(  s    	) 	)
 CCCFQS!((6 !#CCCaDQS!((6 !#r   c                     [         R                  S[        S[        4S j5       nUR                  S[        S[
        S[        4S j5       nU R                  [        [        R                  " U5      5      S5        g )Nr  r  c                     [        U 5      $ r   r  rZ  r  s     r   r    0TestSingleDispatch.test_signatures.<locals>.funcC      t9r   rZ  c                     [        U 5      $ r   r  r  s     r   r  -TestSingleDispatch.test_signatures.<locals>._F  r  r   (item, arg: int) -> str)	r
   r  r   r   r  r/  rW   r   r  )r5   r    r  s      r   test_signatures"TestSingleDispatch.test_signaturesB  sx    		!	!	C 	C 	 
"			C 	e 	 	 
	 	Y44T:;2	4r   c                     " S S5      nU R                  [        [        R                  " UR                  5      5      S5        U R                  [        [        R                  " U" 5       R                  5      5      S5        U R                  [        [        R                  " UR
                  5      5      S5        U R                  [        [        R                  " UR                  5      5      S5        g )Nc                      \ rS rSrS\S\4S jr\S\S\4S j5       r\	R                  S\S\4S j5       r\R                  S\S\4S j5       r\	R                  \S\S\4S j5       5       r\R                  \S\S\4S	 j5       5       r\	R                  \S\S\4S
 j5       5       r\R                  \S\S\4S j5       5       rSrg)4TestSingleDispatch.test_method_signatures.<locals>.AiN  r  r  c                     [        U5      $ r   r  rY  s      r   r   6TestSingleDispatch.test_method_signatures.<locals>.A.mO  s    4y r   c                     [        U5      $ r   r  ri  s      r   r4  7TestSingleDispatch.test_method_signatures.<locals>.A.cmQ      4y r   c                     [        U5      $ r   r  rY  s      r   r    9TestSingleDispatch.test_method_signatures.<locals>.A.funcT  r  r   c                     [        U5      $ r   r  rY  s      r   r  6TestSingleDispatch.test_method_signatures.<locals>.A._W  r  r   c                     [        U5      $ r   r  ri  s      r   r  =TestSingleDispatch.test_method_signatures.<locals>.A.cls_func[  r  r   c                     [        U5      $ r   r  ri  s      r   r  r  _       4y r   c                     [        U5      $ r   r  r  s     r   r  @TestSingleDispatch.test_method_signatures.<locals>.A.static_funcd  r  r   c                     [        U 5      $ r   r  r  s     r   r  r  h  r  r   r   N)r)   r*   r+   r,   r   r   r   r+  r4  r
   r@  r    r  r/  r  r  r-  r  r-   r   r   r   r/  r  N  s7   !3 !3 !!3 !3 ! !++!c !c ! ,!]]!5 !S ! ! ++       , ]]!% !C !  ! ++ s  s    , ]]!U !s !  !r   r/  z(self, item, arg: int) -> strz(cls, item, arg: int) -> strr  )rW   r   r   r  r    r  r  r  s     r   test_method_signatures)TestSingleDispatch.test_method_signaturesM  s    	! 	!> 	Y44QVV<=8	:Y44QSXX>?8	:Y44QZZ@A7	9Y44Q]]CD2	4r   r   N)2r)   r*   r+   r,   r  r%  r-  r3  r  
skipUnlessr   r   r  rC  r`  r  r  r  r  r#  r2  rA  rR  rc  rn  rx  r  r  r  r  r  r  r  r  r   r  r  r  r2  r:  rF  rU  rZ  rd  rq  r  r  r  r  r-   r   r   r   r  r    s   	-&.
;7 "56:  7:"47l\(|;.+$},@d)L*6-4(((+"(0/,/.+"((/,'BRd
L0d	
4&2$?2,&/,6! 4	4'4r   r  c                   B    \ rS rSrSrS r\R                  S 5       rSr	g)CachedCostItemiw  r@   c                 6    [         R                  5       U l        g r   )rZ  RLocklockrf   s    r   r6  CachedCostItem.__init__z  s     &&(	r   c                     U R                      U =R                  S-  sl        S S S 5        U R                  $ ! , (       d  f       U R                  $ = fr  )r  _costrf   s    r   costCachedCostItem.cost}  s9     YYJJ!OJ zz Yzzs	   7
A)r  N)
r)   r*   r+   r,   r  r6  rZ  cached_propertyr  r-   r   r   r   r  r  w  s&    E) !! "r   r  c                   @    \ rS rSrSrS r\R                  \5      rSr	g)OptionallyCachedCostItemi  r@   c                 D    U =R                   S-  sl         U R                   $ r  r  rf   s    r   get_cost!OptionallyCachedCostItem.get_cost  s    

a
zzr   r   N)
r)   r*   r+   r,   r  r  rZ  r  cached_costr-   r   r   r   r  r    s    E
 ..x8Kr   r  c                   B    \ rS rSrSrS r\R                  S 5       rSr	g)CachedCostItemWithSlotsi  r  c                     SU l         g r  r  rf   s    r   r6   CachedCostItemWithSlots.__init__  s	    
r   c                     [        S5      e)Nz!never called, slots not supportedrL  rf   s    r   r  CachedCostItemWithSlots.cost  s    >??r   r  N)
r)   r*   r+   r,   r_  r6  rZ  r  r  r-   r   r   r   r  r    s(    I !!@ "@r   r  c                   V    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rSrg)TestCachedPropertyi  c                     [        5       nU R                  UR                  S5        U R                  UR                  S5        g r  )r  rW   r  r5   rZ  s     r   test_cachedTestCachedProperty.test_cached  s2    A&A&r   c                    [        5       nU R                  UR                  5       S5        U R                  UR                  S5        U R                  UR                  5       S5        U R                  UR                  S5        g )NrA   rG   rH   )r  rW   r  r  r  s     r   1test_cached_attribute_name_differs_from_func_nameDTestCachedProperty.test_cached_attribute_name_differs_from_func_name  sb    ')!,))1-!,))1-r   c                     [        5       nU R                  [        S5         UR                    S S S 5        g ! , (       d  f       g = f)NzWNo '__dict__' attribute on 'CachedCostItemWithSlots' instance to cache 'cost' property.)r  r  rd   r  r  s     r   test_object_with_slots)TestCachedProperty.test_object_with_slots  s7    &(##i
 II	
 
 
s	   7
Ac                      " S S[         5      n " S SUS9nU R                  [        S5         UR                    S S S 5        g ! , (       d  f       g = f)Nc                   8    \ rS rSr\R
                  S 5       rSrg)6TestCachedProperty.test_immutable_dict.<locals>.MyMetai  c                     grj  r   rf   s    r   prop;TestCachedProperty.test_immutable_dict.<locals>.MyMeta.prop  s    r   r   N)r)   r*   r+   r,   rZ  r  r  r-   r   r   r   MyMetar    s    )) *r   r  c                       \ rS rSrSrg)7TestCachedProperty.test_immutable_dict.<locals>.MyClassi  r   Nr(   r   r   r   MyClassr    r  r   r  r  zkThe '__dict__' attribute on 'MyMeta' instance does not support item assignment for caching 'prop' property.)r  r  rd   r  )r5   r  r  s      r   test_immutable_dict&TestCachedProperty.test_immutable_dict  sI    	T 	
	 	 ##y
 LL	
 
 
s   A
Ac                     U R                  [        5       n " S S5      nS S S 5        U R                  [        WR                  5      [        [        S5      5      5        g ! , (       d  f       NF= f)Nc                   <    \ rS rSr\R
                  S 5       r\rSrg)KTestCachedProperty.test_reuse_different_names.<locals>.ReusedCachedPropertyi  c                     g r   r   rf   s    r   rE   MTestCachedProperty.test_reuse_different_names.<locals>.ReusedCachedProperty.a  s    r   r   N)	r)   r*   r+   r,   rZ  r  rE   rF   r-   r   r   r   ReusedCachedPropertyr    s!    -- . r   r  zLCannot assign the same cached_property to two different names ('a' and 'b').)rc   rd   rW   r   r2  )r5   ctxr  s      r   test_reuse_different_names-TestCachedProperty.test_reuse_different_names  sT    y)S  * 		hij	
 *)s   A!!
A/c                 6  ^^ Sm[         R                  U4S j5       m " U4S jS5      n " U4S jS5      nU" 5       nU" 5       nU R                  UR                  S5        U R                  UR                  S5        U R                  UR                  S5        g )	Nr   c                    > TS-  mT$ r  r   )_selfcounters    r   _cp4TestCachedProperty.test_reuse_same_name.<locals>._cp  s     qLGNr   c                      > \ rS rSr Y rSrg)2TestCachedProperty.test_reuse_same_name.<locals>.Ai  r   Nr)   r*   r+   r,   cpr-   r  s   r   r/  r        Br   r/  c                      > \ rS rSr Y rSrg)2TestCachedProperty.test_reuse_same_name.<locals>.Bi  r   Nr  r  s   r   r   r    r  r   r   r@   rA   )rZ  r  rW   r  )r5   r/  r   rE   rF   r  r  s        @@r   test_reuse_same_name'TestCachedProperty.test_reuse_same_name  s    		%	%	 
&	
	 		 	 CCq!q!q!r   c                     [         R                  S 5      n " S S5      nXl        U R                  [        S5         U" 5       R                    S S S 5        g ! , (       d  f       g = f)Nc                     g r   r   )r  s    r   rR   =TestCachedProperty.test_set_name_not_called.<locals>.<lambda>  s    Dr   c                       \ rS rSrSrg)8TestCachedProperty.test_set_name_not_called.<locals>.Fooi  r   Nr(   r   r   r   Foor    r  r   r  zGCannot use cached_property instance without calling __set_name__ on it.)rZ  r  r  r  rd   )r5   r  r  s      r   test_set_name_not_called+TestCachedProperty.test_set_name_not_called  sR    )).9	 	 ##Y
 EHH	
 
 
s   A
A&c                 `    U R                  [        R                  [        R                  5        g r   )assertIsInstancer  r  rZ  r  rf   s    r   test_access_from_class)TestCachedProperty.test_access_from_class  s    n11<3O3OPr   c                     U R                  [        R                  R                  [        R
                  (       a  S5        g S 5        g )NzThe cost of the item.)rW   r  r  r  r   r  rf   s    r   test_docTestCachedProperty.test_doc  s6    ,,44$77 2	&  $	&r   c                 t    U R                  [        R                  R                  [        R                  5        g r   )rW   r  r  r*   rf   s    r   test_moduleTestCachedProperty.test_module  s$    ,,779R9RSr   c                    ^  " S S[         R                  5      m " U4S jS5      nU" S5      nU R                  UR                  S5        SUl        U R                  UR                  S5        g )Nc                       \ rS rSrS rSrg)OTestCachedProperty.test_subclass_with___set__.<locals>.readonly_cached_propertyi   c                     [        S5      e)Nzread only property)rA  )r5   r  rG  s      r   __set__WTestCachedProperty.test_subclass_with___set__.<locals>.readonly_cached_property.__set__  s    $%9::r   r   N)r)   r*   r+   r,   r	  r-   r   r   r   readonly_cached_propertyr     s    ;r   r  c                   .   > \ rS rSrS r Y S 5       rSrg);TestCachedProperty.test_subclass_with___set__.<locals>.Testi  c                     Xl         g r   _prop)r5   r  s     r   r6  DTestCachedProperty.test_subclass_with___set__.<locals>.Test.__init__  s    !
r   c                     U R                   $ r   r  rf   s    r   r  @TestCachedProperty.test_subclass_with___set__.<locals>.Test.prop  s    zz!r   r  N)r)   r*   r+   r,   r6  r  r-   )r  s   r   r1  r    s    " &" &"r   r1  r@   r  )rZ  r  rW   r  r  )r5   r1  r  r  s      @r   test_subclass_with___set__-TestCachedProperty.test_subclass_with___set__  sY    	;|'C'C 	;	" 	" G##r   r   N)r)   r*   r+   r,   r  r  r  r  r  r  r  r  r   r  r  r-   r   r   r   r  r    s;    '
.
".Q&T$r   r  __main__)Or  r	  r  collections.abcr   	itertoolsr   r   randomr   r   r  r   rt  r  r  r  unittest.mockr  r  r   r  inspectr   test.supportr   r	   r
   import_fresh_modulerZ  rW  r   r  r   r   r$   r  r&   r0   rX   r:   r=   r  TestCaser?  rY  rT   r\  r^  r`  rb  rd  r  r  r/  ro  rq  rs  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r)   mainr   r   r   <module>r      s   
     "   
        	    & ) 00:FI//7CnF 
+
+Ij\
J , ,
@	e 	(u (	T 	b3 b3J 
["DE+$; 1 1 +$ F+$\#K!2!2 #
 ;.. 	,, 	 
["DE$< $ F$ M  G()) G(Ty6)) y6x;9! ;9|LA LA^ 
["DE$*h// $ F$
/:x00 /Z, Z,| 
["DE	
L("3"3 	
 F	
7\8#4#4 7g )) g T	 ) ) )P P&)X..  
["DEH--  F
Q	 Q	h    **  
["DEw))  Fp4** p4f% 9 9@ @t$** t$n zMMO r   