
    daf                         d Z dZdZddlZd ZdddZd Zd	 Zddd
dZddd
dZ	dddZ
dddZ G d d      Z G d dej                        Zedk(  r ej                           yy)z?Unit tests for the keyword only argument specified in PEP 3102.z	Jiwon Seozseojiwon at gmail dot com    Nc                 R    | t        |      z   t        |j                               z   S Nsumvalues)pos_arg1argkwargs      3/root/Python-3.12.4/Lib/test/test_keywordonlyarg.pyposonly_sumr      s!    c#hU\\^!444    k1c                     | |z   S r    r   k2s     r   keywordonly_sumr   
       7Nr   c                     | |z   S r   r   r   s     r   keywordonly_nodefaults_sumr      r   r   c                 @    | |z   t        |j                               z   S r   r   )r   r   r
   s      r   keywordonly_and_kwarg_sumr      s    7S(((r   r   c                0    | |z   |z   |z   t        |      z   S r   )r   )abr   r   r	   s        r   mixedargs_sumr      s    q52:?SX%%r   c                d    | |z   |z   |z   t        |      z   t        |j                               z   S r   r   )r   r   r   r   r	   kwargss         r   mixedargs_sum2r!      s-    q52:?SX%FMMO(<<<r   Freversec                 .    t        t        |      |       S Nr"   sortedlist)r#   numss     r   sortnumr*      s    $t*g..r   c                 .    t        t        |      |       S r%   r&   )r#   wordsr    s      r   	sortwordsr-      s    $u+w//r   c                   $    e Zd ZdddZd Zd Zy)Foor   r   c                     || _         || _        y r   r   selfr   r   s      r   __init__zFoo.__init__       r   c                     || _         || _        y r   r   )r2   p1r   r   s       r   setzFoo.set   r4   r   c                 4    | j                   | j                  z   S r   r   r2   s    r   r   zFoo.sum"   s    ww  r   N)__name__
__module____qualname__r3   r7   r   r   r   r   r/   r/      s    !" !r   r/   c                   T    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zy)KeywordOnlyArgTestCasec                 8    d }| j                  t        ||       y )Nc                     t        | dd       y )N<test>single)compile)ss    r   shouldRaiseSyntaxErrorzNKeywordOnlyArgTestCase.assertRaisesSyntaxError.<locals>.shouldRaiseSyntaxError'   s    Ax*r   )assertRaisesSyntaxError)r2   codestrrE   s      r   assertRaisesSyntaxErrorz.KeywordOnlyArgTestCase.assertRaisesSyntaxError&   s    	++'=wGr   c                    | j                  d       | j                  d       | j                  d       | j                  d       | j                  d       | j                  d       | j                  d       | j                  d       y )	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
rI   r9   s    r   $testSyntaxErrorForFunctionDefinitionz;KeywordOnlyArgTestCase.testSyntaxErrorForFunctionDefinition+   sz    $$%=>$$%FG$$%HI$$%JK$$%DE$$%HI$$%JK$$%MNr   c                     ddj                  d t        d      D              z  }t        |dd       ddj                  d t        d      D              z  }t        |dd       y )	Nzdef f(%s):
  pass
z, c              3   &   K   | ]	  }d |z    ywzi%dNr   .0is     r   	<genexpr>zDKeywordOnlyArgTestCase.testSyntaxForManyArguments.<locals>.<genexpr>7   s     3R!EAI3R   i,  rA   rB   zdef f(*, %s):
  pass
c              3   &   K   | ]	  }d |z    ywrO   r   rP   s     r   rS   zDKeywordOnlyArgTestCase.testSyntaxForManyArguments.<locals>.<genexpr>:   s     6UQuqy6UrT   )joinrangerC   )r2   fundefs     r   testSyntaxForManyArgumentsz1KeywordOnlyArgTestCase.testSyntaxForManyArguments5   sU    '$))3RuSz3R*RR(+*TYY6U%PS*6U-UU(+r   c                     dd dd}| j                  t              5 } |ddd       d d d        |j                   d}| j                  t	        j
                        |       y # 1 sw Y   >xY w)N)cc                     y r   r   r   r   r[   s      r   fzCKeywordOnlyArgTestCase.testTooManyPositionalErrorMessage.<locals>.f>   s    r            z:() takes from 1 to 2 positional arguments but 3 were givenr   )rF   	TypeErrorr<   assertEqualstr	exception)r2   r^   excexpecteds       r   !testTooManyPositionalErrorMessagez8KeywordOnlyArgTestCase.testTooManyPositionalErrorMessage=   sm    	d 	y) 	SaAJ	~~& '< <S]]+X6		 	s   A%%A.c                 H    | j                  d       | j                  d       y )Nzf(p, k=1, p2)zf(p, k1=50, *(1,2), k1=100)rK   r9   s    r   testSyntaxErrorForFunctionCallz5KeywordOnlyArgTestCase.testSyntaxErrorForFunctionCallF   s    $$_5$$%BCr   c                 \   | j                  t        t        d       | j                  t        t        d       | j                  t        t        d       	 t        dd       | j                  d       	 t        d       | j                  d       y # t        $ r Y *w xY w# t        $ r Y y w xY w)Nr   d      )r   non_existing_argzshould raise TypeErrorr`   r   )rF   rb   r   r   r/   failr9   s    r   2testRaiseErrorFuncallWithUnexpectedKeywordArgumentzIKeywordOnlyArgTestCase.testRaiseErrorFuncallWithUnexpectedKeywordArgumentJ   s    )_b9)%?D)S"-	sS9II./	&!,II./	  		
  		s$   B 2B 	BB	B+*B+c                 p   | j                  dt        d             | j                  dt        di ddi       | j                  dt        dgd        | j                  dt        dgdi dd	i       | j                  dt        d
             | j                  dt        dd             | j                  dt        dd             | j                  dt        ddd             | j                  dt        d ddddd	d       | j                  dt	        dd             | j                  dt	        ddd             | j                  dt	        dddd	             | j                  dt	        dddd	d             | j                  dt        dd             | j                  dt        ddd             | j                  dt        dddd	             | j                  dt        dddd	d             | j                  dt        dddd	dd             | j                  dt        ddd	iddd       | j                  dt        d      j                                | j                  dt        dd      j                                | j                  g dt        ddd             | j                  g dt        dddd             | j                  g dt        ddd             | j                  g dt        dddd             | j                  g dt        ddddd             y )!Nr_   ra   2r`      )r`   ra   
   4   r   r   )r   r   k3)r   r   r            )r_   r`   ra   r   )r   rw   )ra   r`   r_   Tr"   r]   r   r[   r   )r[   r   r   ignore)r#   r{   )r_   r   )
rc   r   r   r   r   r!   r/   r   r*   r-   r9   s    r   testFunctionCallz'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                    dddd}| j                  d|j                  j                         | j                  ddi|j                         ddi|_        	  |dd	       | j	                  d
       y # t
        $ r Y y w xY w)Nr   r   c                    | |z   |z   |z   S r   r   )r6   p2r   r   s       r   fooz2KeywordOnlyArgTestCase.testKwDefaults.<locals>.foo   s    7R<"$$r   r`   r   r   r_   rt   r   z&__kwdefaults__ is not properly changedr   )rc   __code__co_kwonlyargcount__kwdefaults__ro   rb   )r2   r   s     r   testKwDefaultsz%KeywordOnlyArgTestCase.testKwDefaults   s}    	%1 	% 	CLL::;$q3#5#56"1X	RLII>? 		s   A2 2	A>=A>c                      G d d      }| j                   |       j                  dd      d       | j                  |j                   |       dd      d       | j                  t        |j                  dd       y )Nc                       e Zd ZddddZy);KeywordOnlyArgTestCase.test_kwonly_methods.<locals>.Exampler_   r`   r   c                
    ||fS r   r   r1   s      r   r^   z=KeywordOnlyArgTestCase.test_kwonly_methods.<locals>.Example.f   s    2vr   Nr:   r;   r<   r^   r   r   r   Exampler      s    A r   r   r_   r`   r   )r_   r`   )rc   r^   rF   rb   )r2   r   s     r   test_kwonly_methodsz*KeywordOnlyArgTestCase.test_kwonly_methods   si    	 	 	a0&979q96B)WYY1;r   c                     t         dd y )Nr   c                      y r   r   r   s    r   <lambda>z8KeywordOnlyArgTestCase.test_issue13343.<locals>.<lambda>       r   )unittestr9   s    r   test_issue13343z&KeywordOnlyArgTestCase.test_issue13343   s
     #r   c                 b     G d d      }| j                   |       j                         d       y )Nc                       e Zd ZdddZy)/KeywordOnlyArgTestCase.test_mangling.<locals>.X*   )_X__ac                    |S r   r   )r2   r   s     r   r^   z1KeywordOnlyArgTestCase.test_mangling.<locals>.X.f   s    
r   Nr   r   r   r   Xr      s
    ! r   r   r   )rc   r^   )r2   r   s     r   test_manglingz$KeywordOnlyArgTestCase.test_mangling   s&    	 	 	"%r   c                    d}| j                  t              5 }|t        ft        t        dd}d d d        | j                  t        j                        d       | j                  t              5 }|t        ft        t        dd}d d d        | j                  t        |j                        d       y # 1 sw Y   xY w# 1 sw Y   ;xY w)Nr   )yzc                     y r   r   vxr   r   s       r   r^   z?KeywordOnlyArgTestCase.test_default_evaluation_order.<locals>.f   s    r   zname 'b' is not definedc                     y r   r   r   s       r   r   zFKeywordOnlyArgTestCase.test_default_evaluation_order.<locals>.<lambda>   r   r   )rF   	NameErrorr   r[   drc   rd   re   )r2   r   errr^   gs        r   test_default_evaluation_orderz4KeywordOnlyArgTestCase.test_default_evaluation_order   s    y) 	S a 	 	S]]+-FGy) 	3Sa2a12A	3S]]+-FG	 		3 	3s   B61C6B?CN)r:   r;   r<   rI   rL   rY   rh   rj   rp   r|   r   r   r   r   r   r   r   r   r>   r>   %   sD    H
O,7D&PP<$&	Hr   r>   __main__r   )__doc__
__author__	__email__r   r   r   r   r   r   r!   r*   r-   r/   TestCaser>   r:   mainr   r   r   <module>r      s    E
'	 5 )&q &= = ! / $ 0! !IHX.. IHX zHMMO r   