+
    Bi                         R t RtRt^ RItR tR^ /R ltR tR tRR	^ /R
 lltRR	^ /R llt	RR/R lt
RR/R lt ! R R4      t ! R R]P                  4      t]R8X  d   ]P                   ! 4        R# R# )z?Unit tests for the keyword only argument specified in PEP 3102.z	Jiwon Seozseojiwon at gmail dot comNc                 b    V \        V4      ,           \        VP                  4       4      ,           # Nsumvalues)pos_arg1argkwargs   &*,//usr/lib/python3.14/test/test_keywordonlyarg.pyposonly_sumr      s!    c#hU\\^!444    k1c                     W,           # r    r   k2s   $$r
   keywordonly_sumr   
   	    7Nr   c                     W,           # r   r   r   s   $$r
   keywordonly_nodefaults_sumr      r   r   c                 N    W,           \        VP                  4       4      ,           # r   r   )r   r   r	   s   $$,r
   keywordonly_and_kwarg_sumr      s    7S(((r   r   c                N    W,           V,           V,           \        V4      ,           # r   )r   )abr   r   r   s   &&$$*r
   mixedargs_sumr      s    52:?SX%%r   c                    W,           V,           V,           \        V4      ,           \        VP                  4       4      ,           # r   r   )r   r   r   r   r   kwargss   &&$$*,r
   mixedargs_sum2r      s+    52:?SX%FMMO(<<<r   reverseFc                 .    \        \        V4      V R 7      # r   sortedlist)r   numss   $*r
   sortnumr'      s    $t*g..r   c                 .    \        \        V4      V R 7      # r!   r#   )r   wordsr   s   $*,r
   	sortwordsr*      s    $u+w//r   c                   :   a  ] tR t^t o R^ /R ltR tR tRtV tR# )Foor   c                   Wn         W n        R # r   r   selfr   r   s   &$$r
   __init__Foo.__init__       r   c                   W n         W0n        R # r   r   )r/   p1r   r   s   &&$$r
   setFoo.set   r2   r   c                <    V P                   V P                  ,           # r   r   r/   s   &r
   r   Foo.sum"   s    ww  r   r   N)	__name__
__module____qualname____firstlineno__r0   r5   r   __static_attributes____classdictcell____classdict__s   @r
   r,   r,      s       ! !r   r,   c                   h   a  ] tR t^%t o R tR tR tR tR tR t	R t
R tR	 tR
 tR tR tRtV tR# )KeywordOnlyArgTestCasec                8    R  pV P                  \        W!4       R# )c                      \        V R R4       R# )<test>singleN)compile)ss   &r
   shouldRaiseSyntaxErrorNKeywordOnlyArgTestCase.assertRaisesSyntaxError.<locals>.shouldRaiseSyntaxError'   s    Ax*r   N)assertRaisesSyntaxError)r/   codestrrJ   s   && r
   assertRaisesSyntaxError.KeywordOnlyArgTestCase.assertRaisesSyntaxError&   s    	++'=Gr   c                   V P                  R 4       V P                  R4       V P                  R4       V P                  R4       V P                  R4       V P                  R4       V P                  R4       V P                  R4       R# )	z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
NrO   r8   s   &r
   $testSyntaxErrorForFunctionDefinition;KeywordOnlyArgTestCase.testSyntaxErrorForFunctionDefinition+   sz    $$%=>$$%FG$$%HI$$%JK$$%DE$$%HI$$%JK$$%MNr   c                    R RP                  R \        R4       4       4      ,          p\        VRR4       RRP                  R \        R4       4       4      ,          p\        VRR4       R# )	zdef f(%s):
  pass
z, c              3   4   "   T F  pR V,          x  K  	  R# 5izi%dNr   .0is   & r
   	<genexpr>DKeywordOnlyArgTestCase.testSyntaxForManyArguments.<locals>.<genexpr>7   s     3Rz!EAIIz   i,  rF   rG   zdef f(*, %s):
  pass
c              3   4   "   T F  pR V,          x  K  	  R# 5irW   r   rX   s   & r
   r[   r\   :   s     6U*Quqyy*r]   N)joinrangerH   )r/   fundefs   & r
   testSyntaxForManyArguments1KeywordOnlyArgTestCase.testSyntaxForManyArguments5   sU    '$))3RuSz3R*RR(+*TYY6U%PS*6U-UU(+r   c                   RRR /R llpV P                  \        4      ;_uu_ 4       pV! ^^^4       R R R 4       VP                   R2pV P                  \	        XP
                  4      V4       R #   + '       g   i     LF; i)Ncc                    R # r   r   r   r   re   s   &&$r
   fCKeywordOnlyArgTestCase.testTooManyPositionalErrorMessage.<locals>.f>   s    r   z:() takes from 1 to 2 positional arguments but 3 were givenr   )rL   	TypeErrorr<   assertEqualstr	exception)r/   rh   excexpecteds   &   r
   !testTooManyPositionalErrorMessage8KeywordOnlyArgTestCase.testTooManyPositionalErrorMessage=   si    	d 	y))SaAJ *~~& '< <S]]+X6	 *)s   A00B 	c                J    V P                  R 4       V P                  R4       R# )zf(p, k=1, p2)zf(p, k1=50, *(1,2), k1=100)NrR   r8   s   &r
   testSyntaxErrorForFunctionCall5KeywordOnlyArgTestCase.testSyntaxErrorForFunctionCallF   s    $$_5$$%BCr   c                h   V P                  \        \        R4       V P                  \        \        R4       V P                  \        \        R4        \        ^d^R7       V P                  R4        \        ^R7       V P                  R4       R#   \         d     L-i ; i  \         d     R# i ; i)d   )r   non_existing_argzshould raise TypeErrorr   Nr   )rL   rj   r   r   r,   failr8   s   &r
   2testRaiseErrorFuncallWithUnexpectedKeywordArgumentIKeywordOnlyArgTestCase.testRaiseErrorFuncallWithUnexpectedKeywordArgumentJ   s    )_b9)%?D)S"-	sS9II./	&!,II./	  		
  		s$   B 2B" BB"B10B1c                z   V P                  ^\        ^4      4       V P                  ^\        R/ R^/B 4       V P                  ^\        ^.RO5!  4       V P                  ^
\        ^.RO5/ R^/B 4       V P                  ^\        ^R7      4       V P                  ^\        ^^R7      4       V P                  ^\        ^^R7      4       V P                  ^\        ^^^R7      4       V P                  ^
\        RR^R^/R^R	^/B 4       V P                  ^\	        ^^R
7      4       V P                  ^\	        ^^^R
7      4       V P                  ^
\	        ^^^^R7      4       V P                  ^\	        ^^^^^R7      4       V P                  ^\        ^^R
7      4       V P                  ^\        ^^^R
7      4       V P                  ^
\        ^^^^R7      4       V P                  ^\        ^^^^^R7      4       V P                  ^\        ^^^^^^R7      4       V P                  ^\        RR^/R^R^/B 4       V P                  ^\        ^R
7      P                  4       4       V P                  ^\        ^^R7      P                  4       4       V P                  . RO\        ^^^4      4       V P                  . RO\        ^^^RR7      4       V P                  . RO\        RRR	4      4       V P                  . RO\        RRR	RR7      4       V P                  . RO\        RRR	RRR7      4       R# )   24rx   r   )r   r   k3r   r   r   r   r   r   Tr"   re   ignore)r   r   N)r}   )      r   )r}   r   r   )r   r   r}   rg   )re   r   r   )
rk   r   r   r   r   r   r,   r   r'   r*   r8   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a EA E7:1S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J$q$q9IJ	L 	C1IMMO,cQ!n0023'!Aa.1'!Aa">?	#c#(>?	#c#t(LM"3s3XN	Pr   c                   RR^ /R llpV P                  ^VP                  P                  4       V P                  R^ /VP                  4       R^ /Vn         V! ^^
R7       V P	                  R4       R#   \
         d     R# i ; i)    r   c                .    W,           V,           V,           # r   r   )r4   p2r   r   s   &&$$r
   foo2KeywordOnlyArgTestCase.testKwDefaults.<locals>.foo   s    7R<"$$r   r   r   z&__kwdefaults__ is not properly changedNr   )rk   __code__co_kwonlyargcount__kwdefaults__ry   rj   )r/   r   s   & r
   testKwDefaults%KeywordOnlyArgTestCase.testKwDefaults   s}    	%1 	% 	CLL::;$q3#5#56"1X	RLII>? 		s   A5 5BBc                    ! R  R4      pV P                  V! 4       P                  ^^R7      R4       V P                  VP                  V! 4       ^^R7      R4       V P                  \        VP                  ^^R7       R# )c                   2   a  ] tR t^t o R^R^/R ltRtV tR# );KeywordOnlyArgTestCase.test_kwonly_methods.<locals>.Exampler   r   c                   W3# r   r   r.   s   &$$r
   rh   =KeywordOnlyArgTestCase.test_kwonly_methods.<locals>.Example.f   s	    vr   r   Nr:   r;   r<   r=   rh   r>   r?   r@   s   @r
   Exampler      s     a A  r   r   r   N)r}   r   )rk   rh   rL   rj   )r/   r   s   & r
   test_kwonly_methods*KeywordOnlyArgTestCase.test_kwonly_methods   si    	 	 	a0&979q96B)WYY1;r   c                    R \         /R l R# )r   c                     R # r   r   r   s   $r
   <lambda>8KeywordOnlyArgTestCase.test_issue13343.<locals>.<lambda>   s    tr   N)unittestr8   s   &r
   test_issue13343&KeywordOnlyArgTestCase.test_issue13343   s     	$X#r   c                d     ! R  R4      pV P                  V! 4       P                  4       ^*4       R# )c                   .   a  ] tR t^t o R^*/R ltRtV tR# )/KeywordOnlyArgTestCase.test_mangling.<locals>.X_X__ac                   V# r   r   )r/   r   s   &$r
   rh   1KeywordOnlyArgTestCase.test_mangling.<locals>.X.f   s    
r   r   Nr   r@   s   @r
   Xr      s     r  r   r   N)rk   rh   )r/   r   s   & r
   test_mangling$KeywordOnlyArgTestCase.test_mangling   s&    	 	 	"%r   c                   ^*pV P                  \        4      ;_uu_ 4       pV\        3R\        R\        /R llpRRR4       V P                  \        XP                  4      R4       V P                  \        4      ;_uu_ 4       pV\        3R\        R\        /R llpRRR4       V P                  \        VP                  4      R4       R#   + '       g   i     L; i  + '       g   i     LJ; i)*   yzc                    R # r   r   vxr   r   s   &&$$r
   rh   ?KeywordOnlyArgTestCase.test_default_evaluation_order.<locals>.f   s    r   Nzname 'b' is not definedc                    R # r   r   r   s   &&$$r
   r   FKeywordOnlyArgTestCase.test_default_evaluation_order.<locals>.<lambda>   s    dr   )rL   	NameErrorr   re   drk   rl   rm   )r/   r   errrh   gs   &    r
   test_default_evaluation_order4KeywordOnlyArgTestCase.test_default_evaluation_order   s    y))S  a  * 	S]]+-FGy))Sa2a212A *S]]+-FG *) *)s   CC C	 C0	r   N)r:   r;   r<   r=   rO   rS   rb   rp   rs   rz   r   r   r   r   r   r   r>   r?   r@   s   @r
   rC   rC   %   sM     H
O,7D&PP<$&	H 	Hr   rC   __main__r   )__doc__
__author__	__email__r   r   r   r   r   r   r   r'   r*   r,   TestCaserC   r:   mainr   r   r
   <module>r      s    E
'	 5! )&q &= =/5 /0e 0! !IHX.. IHX zMMO r   