
    0hh                         S r SrSrSSKrS rSS.S jrS rS	 rSSS
.S jjrSSS
.S jjr	SS.S jr
SS.S jr " S S5      r " S S\R                  5      r\S:X  a  \R                   " 5         gg)z?Unit tests for the keyword only argument specified in PEP 3102.z	Jiwon Seozseojiwon at gmail dot com    Nc                 R    U [        U5      -   [        UR                  5       5      -   $ Nsumvalues)pos_arg1argkwargs      A/opt/python-3.13.8/usr/lib/python3.13/test/test_keywordonlyarg.pyposonly_sumr      s!    c#hU\\^!444    k1c                 
    X-   $ r    r   k2s     r   keywordonly_sumr   
   	    7Nr   c                 
    X-   $ r   r   r   s     r   keywordonly_nodefaults_sumr      r   r   c                 >    X-   [        UR                  5       5      -   $ r   r   )r   r   r
   s      r   keywordonly_and_kwarg_sumr      s    7S(((r   r   c                .    X-   U-   U-   [        U5      -   $ r   )r   )abr   r   r	   s        r   mixedargs_sumr      s    52:?SX%%r   c                b    X-   U-   U-   [        U5      -   [        UR                  5       5      -   $ r   r   )r   r   r   r   r	   kwargss         r   mixedargs_sum2r!      s+    52:?SX%FMMO(<<<r   Freversec                 (    [        [        U5      U S9$ Nr"   sortedlist)r#   numss     r   sortnumr*      s    $t*g..r   c                 (    [        [        U5      U S9$ r%   r&   )r#   wordsr    s      r   	sortwordsr-      s    $u+w//r   c                   .    \ rS rSrSS.S jrS rS rSrg)	Foo   r   r   c                    Xl         X l        g r   r   selfr   r   s      r   __init__Foo.__init__       r   c                    X l         X0l        g r   r   )r3   p1r   r   s       r   setFoo.set   r6   r   c                 4    U R                   U R                  -   $ r   r   r3   s    r   r   Foo.sum"   s    ww  r   r   N)__name__
__module____qualname____firstlineno__r4   r9   r   __static_attributes__r   r   r   r/   r/      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g)KeywordOnlyArgTestCase%   c                 6    S nU R                  [        X!5        g )Nc                     [        U SS5        g )N<test>single)compile)ss    r   shouldRaiseSyntaxErrorNKeywordOnlyArgTestCase.assertRaisesSyntaxError.<locals>.shouldRaiseSyntaxError'   s    Ax*r   )assertRaisesSyntaxError)r3   codestrrL   s      r   assertRaisesSyntaxError.KeywordOnlyArgTestCase.assertRaisesSyntaxError&   s    	++'=Gr   c                    U R                  S5        U R                  S5        U R                  S5        U R                  S5        U R                  S5        U R                  S5        U R                  S5        U R                  S5        g )	Nzdef f(p, *):
  pass
zdef f(p1, *, p1=100):
  pass
zdef f(p1, *k1, k1=100):
  pass
z!def f(p1, *, k1, k1=100):
  pass
zdef f(p1, *, **k1):
  pass
zdef f(p1, *, k1, **k1):
  pass
z!def f(p1, *, None, **k1):
  pass
z$def f(p, *, (k1, k2), **kw):
  pass
rQ   r<   s    r   $testSyntaxErrorForFunctionDefinition;KeywordOnlyArgTestCase.testSyntaxErrorForFunctionDefinition+   sz    $$%=>$$%FG$$%HI$$%JK$$%DE$$%HI$$%JK$$%MNr   c                     SSR                  S [        S5       5       5      -  n[        USS5        SSR                  S [        S5       5       5      -  n[        USS5        g )	Nzdef f(%s):
  pass
z, c              3   ,   #    U  H
  nS U-  v   M     g7fzi%dNr   .0is     r   	<genexpr>DKeywordOnlyArgTestCase.testSyntaxForManyArguments.<locals>.<genexpr>7   s     3Rz!EAIz   i,  rH   rI   zdef f(*, %s):
  pass
c              3   ,   #    U  H
  nS U-  v   M     g7frY   r   rZ   s     r   r]   r^   :   s     6U*Quqy*r_   )joinrangerJ   )r3   fundefs     r   testSyntaxForManyArguments1KeywordOnlyArgTestCase.testSyntaxForManyArguments5   sU    '$))3RuSz3R*RR(+*TYY6U%PS*6U-UU(+r   c                     SS S.S jjnU R                  [        5       nU" SSS5        S S S 5        UR                   S3nU R                  [	        WR
                  5      U5        g ! , (       d  f       NC= f)N)cc                    g r   r   r   r   rg   s      r   fCKeywordOnlyArgTestCase.testTooManyPositionalErrorMessage.<locals>.f>   s    r            z:() takes from 1 to 2 positional arguments but 3 were givenr   )rN   	TypeErrorr@   assertEqualstr	exception)r3   rj   excexpecteds       r   !testTooManyPositionalErrorMessage8KeywordOnlyArgTestCase.testTooManyPositionalErrorMessage=   sf    	d 	y)SaAJ *~~& '< <S]]+X6	 *)s   A''
A5c                 H    U R                  S5        U R                  S5        g )Nzf(p, k=1, p2)zf(p, k1=50, *(1,2), k1=100)rT   r<   s    r   testSyntaxErrorForFunctionCall5KeywordOnlyArgTestCase.testSyntaxErrorForFunctionCallF   s    $$_5$$%BCr   c                 T   U R                  [        [        S5        U R                  [        [        S5        U R                  [        [        S5         [        SSS9  U R                  S5         [        SS9  U R                  S5        g ! [         a     N(f = f! [         a     g f = f)Nr   d      )r   non_existing_argzshould raise TypeErrorrm   r   )rN   ro   r   r   r/   failr<   s    r   2testRaiseErrorFuncallWithUnexpectedKeywordArgumentIKeywordOnlyArgTestCase.testRaiseErrorFuncallWithUnexpectedKeywordArgumentJ   s    )_b9)%?D)S"-	sS9II./	&!,II./	  		
  		s$   B
 /B 

BB
B'&B'c                    U R                  S[        S5      5        U R                  S[        S0 SS0D65        U R                  S[        S/SQ76 5        U R                  S[        S/SQ70 SS	0D65        U R                  S[        SS
95        U R                  S[        SSS95        U R                  S[        SSS95        U R                  S[        SSSS95        U R                  S[        S SSS.SS	S.D65        U R                  S[	        SSS95        U R                  S[	        SSSS95        U R                  S[	        SSSS	S95        U R                  S[	        SSSS	SS95        U R                  S[        SSS95        U R                  S[        SSSS95        U R                  S[        SSSS	S95        U R                  S[        SSSS	SS95        U R                  S[        SSSS	SSS95        U R                  S[        SSS	0SSS.D65        U R                  S[        SS9R                  5       5        U R                  S[        SSS9R                  5       5        U R                  / SQ[        SSS5      5        U R                  / SQ[        SSSSS95        U R                  / SQ[        SSS5      5        U R                  / SQ[        SSSSS95        U R                  / SQ[        SSSSSS95        g )!Nrl   rn   2rm      )rm   rn   
   4   r   r   )r   r   k3)r   r   r            )rl   rm   rn   r   )r   r   )rn   rm   rl   Tr"   ri   r   rg   r   )rg   r   r   ignore)r#   r   )rl   r   )
rp   r   r   r   r   r!   r/   r   r*   r-   r<   s    r   testFunctionCall'KeywordOnlyArgTestCase.testFunctionCallY   s   KN+k6s1g67A 5u 56+a"A"A#a"ABOq12oq9:71CD 9Q1 KL2 EaA E;<mE	F 	mA!45aq 9:-1q"ABM!QaA$FGnQ156q! :;.A!"BCN1aqQ$GH'1aA!B	D'JAJqq9IJ	L 	C1IMMO,cQ!n0023'!Aa.1'!Aa">?	#c#(>?	#c#t(LM"3s3XN	Pr   c                    SSS.S jjnU R                  SUR                  R                  5        U R                  SS0UR                  5        SS0Ul         U" SSS	9  U R	                  S
5        g ! [
         a     g f = f)Nr   r   c                    X-   U-   U-   $ r   r   )r8   p2r   r   s       r   foo2KeywordOnlyArgTestCase.testKwDefaults.<locals>.foo   s    7R<"$$r   rm   r   r   rl   r   r   z&__kwdefaults__ is not properly changedr   )rp   __code__co_kwonlyargcount__kwdefaults__r~   ro   )r3   r   s     r   testKwDefaults%KeywordOnlyArgTestCase.testKwDefaults   s}    	%1 	% 	CLL::;$q3#5#56"1X	RLII>? 		s   A1 1
A>=A>c                      " S S5      nU R                  U" 5       R                  SSS9S5        U R                  UR                  U" 5       SSS9S5        U R                  [        UR                  SSS9  g )Nc                   $    \ rS rSrSSS.S jrSrg);KeywordOnlyArgTestCase.test_kwonly_methods.<locals>.Example   rl   rm   r   c                    X4$ r   r   r2   s      r   rj   =KeywordOnlyArgTestCase.test_kwonly_methods.<locals>.Example.f   s	    vr   r   Nr>   r?   r@   rA   rj   rB   r   r   r   Exampler      s    A  r   r   rl   rm   r   )rl   rm   )rp   rj   rN   ro   )r3   r   s     r   test_kwonly_methods*KeywordOnlyArgTestCase.test_kwonly_methods   si    	 	 	a0&979q96B)WYY1;r   c                     [         S.S j  g )Nr   c                     g r   r   r   s    r   <lambda>8KeywordOnlyArgTestCase.test_issue13343.<locals>.<lambda>   s    tr   )unittestr<   s    r   test_issue13343&KeywordOnlyArgTestCase.test_issue13343   s
     #r   c                 b     " S S5      nU R                  U" 5       R                  5       S5        g )Nc                   "    \ rS rSrSS.S jrSrg)/KeywordOnlyArgTestCase.test_mangling.<locals>.X   *   )_X__ac                    U$ r   r   )r3   r   s     r   rj   1KeywordOnlyArgTestCase.test_mangling.<locals>.X.f   s    
r   r   Nr   r   r   r   Xr      s    !  r   r   r   )rp   rj   )r3   r   s     r   test_mangling$KeywordOnlyArgTestCase.test_mangling   s&    	 	 	"%r   c                    SnU R                  [        5       nU[        4[        [        S.S jjnS S S 5        U R                  [        WR                  5      S5        U R                  [        5       nU[        4[        [        S.S jjnS S S 5        U R                  [        UR                  5      S5        g ! , (       d  f       N= f! , (       d  f       NE= f)Nr   )yzc                    g r   r   vxr   r   s       r   rj   ?KeywordOnlyArgTestCase.test_default_evaluation_order.<locals>.f   s    r   zname 'b' is not definedc                    g r   r   r   s       r   r   FKeywordOnlyArgTestCase.test_default_evaluation_order.<locals>.<lambda>   s    dr   )rN   	NameErrorr   rg   drp   rq   rr   )r3   r   errrj   gs        r   test_default_evaluation_order4KeywordOnlyArgTestCase.test_default_evaluation_order   s    y)S a  * 	S]]+-FGy)Sa2a12A *S]]+-FG *) *)s   B:3C:
C
Cr   N)r>   r?   r@   rA   rQ   rU   rd   ru   rx   r   r   r   r   r   r   r   rB   r   r   r   rD   rD   %   sD    H
O,7D&PP<$&	Hr   rD   __main__r   )__doc__
__author__	__email__r   r   r   r   r   r   r!   r*   r-   r/   TestCaserD   r>   mainr   r   r   <module>r      s    E
'	 5 )&q &= = ! / $ 0! !IHX.. IHX zMMO r   