a zei@sdZdZddlZddZddddZd d Zd d Zddd ddZddd ddZddddZ ddddZ GdddZ Gdddej Z edkredS)z Jiwon Seozseojiwon at gmail dot comNcOs|t|t|SNsumvalues)Zpos_arg1argkwargrL/opt/bitninja-python-dojo/embedded/lib/python3.9/test/test_keywordonlyarg.py posonly_sumsr k1cCs||Srrr k2rrr keywordonly_sum srcCs||Srrr rrr keywordonly_nodefaults_sum srcKs||t|Srr)r rrrrr keywordonly_and_kwarg_sumsrrcGs||||t|Sr)r)abr rrrrr mixedargs_sumsrcOs$||||t|t|Srr)rrr rrkwargsrrr mixedargs_sum2srFreversecGstt||dSNrsortedlist)rZnumsrrr sortnumsrcOstt||dSrr)rwordsrrrr sortwordssr c@s*eZdZddddZddZddZd S) FoorrcCs||_||_dSrr selfr rrrr __init__sz Foo.__init__cCs||_||_dSrr )r#p1r rrrr setszFoo.setcCs |j|jSrr r#rrr r"szFoo.sumN)__name__ __module__ __qualname__r$r&rrrrr r!sr!c@sleZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZdS)KeywordOnlyArgTestCasecCsdd}|t||dS)NcSst|dddS)Nsingle)compile)srrr shouldRaiseSyntaxError'szNKeywordOnlyArgTestCase.assertRaisesSyntaxError..shouldRaiseSyntaxError) assertRaises SyntaxError)r#Zcodestrr0rrr assertRaisesSyntaxError&sz.KeywordOnlyArgTestCase.assertRaisesSyntaxErrorcCsT|d|d|d|d|d|d|d|ddS) Nzdef f(p, *): pass zdef f(p1, *, p1=100): pass zdef f(p1, *k1, k1=100): pass z!def f(p1, *, k1, k1=100): pass zdef f(p1, *, **k1): pass zdef f(p1, *, k1, **k1): pass z!def f(p1, *, None, **k1): pass z$def f(p, *, (k1, k2), **kw): pass r3r'rrr $testSyntaxErrorForFunctionDefinition+s       z;KeywordOnlyArgTestCase.testSyntaxErrorForFunctionDefinitioncCsTddddtdD}t|ddddd dtdD}t|dddS) Nzdef f(%s): pass z, css|]}d|VqdSzi%dNr.0irrr 7zDKeywordOnlyArgTestCase.testSyntaxForManyArguments..i,r,r-zdef f(*, %s): pass css|]}d|VqdSr6rr7rrr r::r;)joinranger.)r#Zfundefrrr testSyntaxForManyArguments5s z1KeywordOnlyArgTestCase.testSyntaxForManyArgumentscCs`ddddd}|t}|dddWdn1s<0Yd}|t|j|dS) N)ccSsdSrrrrr?rrr f>szCKeywordOnlyArgTestCase.testTooManyPositionalErrorMessage..fz;f() takes from 1 to 2 positional arguments but 3 were given)N)r1 TypeError assertEqualstr exception)r#rAexcZexpectedrrr !testTooManyPositionalErrorMessage=s  *z8KeywordOnlyArgTestCase.testTooManyPositionalErrorMessagecCs|d|ddS)Nz f(p, k=1, p2)zf(p, k1=50, *(1,2), k1=100)r4r'rrr testSyntaxErrorForFunctionCallEs z5KeywordOnlyArgTestCase.testSyntaxErrorForFunctionCallcCs|ttd|ttd|ttdztddd|dWntyVYn0ztdd|dWntyYn0dS)Nrd)rZnon_existing_argzshould raise TypeErrorrCr)r1rErrr!failr'rrr 2testRaiseErrorFuncallWithUnexpectedKeywordArgumentIs    zIKeywordOnlyArgTestCase.testRaiseErrorFuncallWithUnexpectedKeywordArgumentc Cs|dtd|dtdiddi|dtdgdR|dtdgdRidd i|dtdd |dtddd |dtddd |dtdddd |dtfddd dd d |dtddd|dtdddd|dtdddd d |dtdddd dd |dtddd|dtdddd|dtdddd d |dtdddd dd |dtdddd ddd |dtddd iddd|dtdd|dtddd |gdtddd|gdtddddd|gdt ddd|gdt ddddd|gdt dddddddS) NrBrD2rC)rCrD 4rr )r rk3)rrr )rBrCrDr )rrU)rDrCrBTrr@rr?r)r?rrignore)rrY)rB) rFr rrrrr!rrr r'rrr testFunctionCallXsH"  z'KeywordOnlyArgTestCase.testFunctionCallcCsnd dddd}|d|jj|ddi|jddi|_z|dd d |d WntyhYn0dS) NrrcSs||||Srr)r%Zp2r rrrr foosz2KeywordOnlyArgTestCase.testKwDefaults..foorCrr rBrRr z&__kwdefaults__ is not properly changed)r)rF__code__co_kwonlyargcount__kwdefaults__rNrE)r#r[rrr testKwDefaultss   z%KeywordOnlyArgTestCase.testKwDefaultscCsXGddd}||jdddd||j|dddd|jt|jddddS)Nc@seZdZdddddZdS)z;KeywordOnlyArgTestCase.test_kwonly_methods..ExamplerBrCr cSs||fSrrr"rrr rAsz=KeywordOnlyArgTestCase.test_kwonly_methods..Example.fNr(r)r*rArrrr ExamplesrarBrCr )rBrC)rFrAr1rE)r#rarrr test_kwonly_methodssz*KeywordOnlyArgTestCase.test_kwonly_methodscCstddddS)Nr cSsdSrrr rrr r;z8KeywordOnlyArgTestCase.test_issue13343..)unittestr'rrr test_issue13343sz&KeywordOnlyArgTestCase.test_issue13343cCs$Gddd}||ddS)Nc@seZdZddddZdS)z/KeywordOnlyArgTestCase.test_mangling..X*)_X__acSs|Srr)r#rgrrr rAsz1KeywordOnlyArgTestCase.test_mangling..X.fNr`rrrr Xsrhrf)rFrA)r#rhrrr test_manglingsz$KeywordOnlyArgTestCase.test_manglingcCsd}|t&}|tfttddd}Wdn1s:0Y|t|jd|t&}|tfttddd}Wdn1s0Y|t|jddS)Nrf)yzcSsdSrrvxrjrkrrr rAsz?KeywordOnlyArgTestCase.test_default_evaluation_order..fzname 'b' is not definedcSsdSrrrlrrr rcr;zFKeywordOnlyArgTestCase.test_default_evaluation_order..)r1 NameErrorrr?drFrGrH)r#rerrrArrr test_default_evaluation_orders 4 4z4KeywordOnlyArgTestCase.test_default_evaluation_orderN)r(r)r*r3r5r>rJrKrOrZr_rbrerirrrrrr r+%s (  r+__main__)r)r) __author__Z __email__rdr rrrrrrr r!ZTestCaser+r(mainrrrr s