a zeG@shdZddlZddlZddlZddlmZddZddZdd d ZGd d d ej Z e dkrde dS)zHUnit tests for the positional only argument syntax specified in PEP 570.Ncheck_syntax_errorcCs||fSNabrrQ/opt/bitninja-python-dojo/embedded/lib/python3.9/test/test_positional_only_arg.pyglobal_pos_only_f sr cCs||fSrrrrrr global_pos_only_and_normal sr cCs||fSrrrrrr global_pos_only_defaultssrc@seZdZd=ddZddZddZdd Zd d Zd d ZddZ ddZ ddZ ddZ ddZ ddZddZddZddZd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd,d-Zd.d/Zd0d1Zd2d3Zd4d5Zd6d7Zd8d9Zd:d;ZdPositionalOnlyTestCaseinvalid syntaxcCs@|t| t|dddWdn1s20YdS)N single)assertRaisesRegex SyntaxErrorcompile)selfZcodestrZregexrrr assertRaisesSyntaxErrorsz.PositionalOnlyTestCase.assertRaisesSyntaxErrorcCst|ddt|ddt|ddt|ddt|dt|dt|dt|d t|d t|d t|d t|d t|ddt|ddt|dt|dt|dt|dt|ddS)Nzdef f(a, b = 5, /, c): pass-non-default argument follows default argumentzdef f(a = 5, b, /, c): passz%def f(a = 5, b=1, /, c, *, d=2): passzdef f(a = 5, b, /): passzdef f(*args, /): passzdef f(*args, a, /): passzdef f(**kwargs, /): passzdef f(/, a = 1): passzdef f(/, a): passzdef f(/): passzdef f(*, a, /): passzdef f(*, /, a): passzdef f(a, /, a): pass-duplicate argument 'a' in function definitionzdef f(a, /, *, a): passzdef f(a, b/2, c): passzdef f(a, /, c, /): passzdef f(a, /, c, /, d): passz def f(a, /, c, /, d, *, e): passzdef f(a, *, c, /, d, e): passrrrrr test_invalid_syntax_errorss&                  z1PositionalOnlyTestCase.test_invalid_syntax_errorscCst|ddt|ddt|ddt|ddt|dt|dt|dt|d t|d t|d t|d t|d t|ddt|ddt|dt|dt|dt|dt|ddS)Nz!async def f(a, b = 5, /, c): passrz!async def f(a = 5, b, /, c): passz(async def f(a = 5, b=1, /, c, d=2): passzasync def f(a = 5, b, /): passzasync def f(*args, /): passzasync def f(*args, a, /): passzasync def f(**kwargs, /): passzasync def f(/, a = 1): passzasync def f(/, a): passzasync def f(/): passzasync def f(*, a, /): passzasync def f(*, /, a): passzasync def f(a, /, a): passrzasync def f(a, /, *, a): passzasync def f(a, b/2, c): passzasync def f(a, /, c, /): passz async def f(a, /, c, /, d): passz&async def f(a, /, c, /, d, *, e): passz#async def f(a, *, c, /, d, e): passrrrrr test_invalid_syntax_errors_async.s&                  z7PositionalOnlyTestCase.test_invalid_syntax_errors_asynccCsddd}||dddd||dddd d|td |dddd Wdn1sd0Y||ddd |td |ddd Wdn1s0Y||ddd dddd}||dddd||dddd d|td |dddd Wdn1s20Y||ddd |td |ddd Wdn1s~0Y||ddd ddS)N dcSs |||Srrrrcrrr fDszDPositionalOnlyTestCase.test_optional_positional_only_args..fr r r!If\(\) got some positional-only arguments passed as keyword arguments: 'b'rr!gr cSs |||Srrr rrr r"Qs)rr)r rr assertEqualr TypeErrorrr"rrr "test_optional_positional_only_argsCs$ ,* .,z9PositionalOnlyTestCase.test_optional_positional_only_argscCs,ddddtdD}t|dddS)Ndef f(%s, /): pass , css|]}d|VqdSzi%dNr.0irrr `zNPositionalOnlyTestCase.test_syntax_for_many_positional_only..,rrjoinrangerrZfundefrrr $test_syntax_for_many_positional_only^sz;PositionalOnlyTestCase.test_syntax_for_many_positional_onlycCsd dddd}|d|jj|d|jj|d|jd d dd d}|d|jj|d|jj|d |jdS)Nr r )gcSsdSrrrrr!der"r>rrr r"dsz:PositionalOnlyTestCase.test_pos_only_definition..fr#)r cSsdSrrr?rrr r"ksr r r#)r )r r r#)r,__code__ co_argcountco_posonlyargcount __defaults__r.rrr test_pos_only_definitioncsz/PositionalOnlyTestCase.test_pos_only_definitioncCs dd}||ddgddS)NcSs||Srrrrrr r"sszBPositionalOnlyTestCase.test_pos_only_call_via_unpacking..fr r r#r,r.rrr test_pos_only_call_via_unpackingrsz7PositionalOnlyTestCase.test_pos_only_call_via_unpackingcCsdd}d}|t||ddWdn1s80Ydd}d}|t||dddWdn1s|0Yd d}d }|t||dddWdn1s0YdS) NcSsdSrrrrrr r"ysz@PositionalOnlyTestCase.test_use_positional_as_keyword..fIf\(\) got some positional-only arguments passed as keyword arguments: 'a'r rLcSsdSrrrrrr r"sr rcSsdSrrrrrr r"szLf\(\) got some positional-only arguments passed as keyword arguments: 'a, b'rr-)rr"expectedrrr test_use_positional_as_keywordxs(*z5PositionalOnlyTestCase.test_use_positional_as_keywordcCsdd}|td|ddWdn1s40Y|td|dWdn1sh0Y|td|Wdn1s0Y|td|ddd d Wdn1s0YdS) NcSsdSrrr rrr r"szLPositionalOnlyTestCase.test_positional_only_and_arg_invalid_calls..f1f\(\) missing 1 required positional argument: 'c'r r :f\(\) missing 2 required positional arguments: 'b' and 'c'z@f\(\) missing 3 required positional arguments: 'a', 'b', and 'c'z3f\(\) takes 3 positional arguments but 4 were givenr#rCrNr.rrr *test_positional_only_and_arg_invalid_callss(&$zAPositionalOnlyTestCase.test_positional_only_and_arg_invalid_callscCsd dd}|dd|td|dWdn1s>0Y|td|Wdn1sp0Y|td|dddd Wdn1s0YdS) Nr#cSsdSrrr rrr r"szUPositionalOnlyTestCase.test_positional_only_and_optional_arg_invalid_calls..fr r 1f\(\) missing 1 required positional argument: 'b':f\(\) missing 2 required positional arguments: 'a' and 'b'z=f\(\) takes from 2 to 3 positional arguments but 4 were givenrC)r#rNr.rrr 3test_positional_only_and_optional_arg_invalid_callss  &$zJPositionalOnlyTestCase.test_positional_only_and_optional_arg_invalid_callsc Csdd}|dddddd|td |dddddWdn1sL0Y|td |dddWdn1s0Y|td |ddWdn1s0Y|td |dWdn1s0Y|td |Wdn1s"0Y|td (|dddddddddWdn1sh0Y|td$|dddddddWdn1s0YdS)NcSsdSrr)rrr!r@rArrr r"szSPositionalOnlyTestCase.test_positional_only_and_kwonlyargs_invalid_calls..fr r r#)r@rAz-missing 1 required keyword-only argument: 'd')rAz6missing 2 required keyword-only arguments: 'd' and 'e'rQrRz; missing 3 required positional arguments: 'a', 'b', and 'c'zif\(\) takes 3 positional arguments but 6 positional arguments \(and 2 keyword-only arguments\) were givenrCrBr$z,f\(\) got an unexpected keyword argument 'f'8)r@rAr"rNr.rrr 1test_positional_only_and_kwonlyargs_invalid_callss .*(&&8zHPositionalOnlyTestCase.test_positional_only_and_kwonlyargs_invalid_callscCsdd}|dd|td|dWdn1s<0Y|td|Wdn1sn0Y|td|dddWdn1s0YdS) NcSsdSrrrrrr r"szDPositionalOnlyTestCase.test_positional_only_invalid_calls..fr r rTrUz3f\(\) takes 2 positional arguments but 3 were givenr#rNr.rrr "test_positional_only_invalid_callss &$z9PositionalOnlyTestCase.test_positional_only_invalid_callscCsddd}|d|td|Wdn1s:0Y|td|dddWdn1sr0YdS) Nr cSsdSrrrrrr r"szRPositionalOnlyTestCase.test_positional_only_with_optional_invalid_calls..fr z1f\(\) missing 1 required positional argument: 'a'z=f\(\) takes from 1 to 2 positional arguments but 3 were givenr#)r rNr.rrr 0test_positional_only_with_optional_invalid_callss  $zGPositionalOnlyTestCase.test_positional_only_with_optional_invalid_callscCsRdd}|dddd|t|ddddWdn1sD0YdS)NcSsdSrrr rrr r"sz=PositionalOnlyTestCase.test_no_standard_args_usage..fr r r#r%r') assertRaisesr-r.rrr test_no_standard_args_usages z2PositionalOnlyTestCase.test_no_standard_args_usagecCs6d dd}|d|jd|_||dddddS) Nr r#cSs |||Srrr rrr r"sz>PositionalOnlyTestCase.test_change_default_pos_only..f)r r#rDr r$)r r#)r,rHr.rrr test_change_default_pos_onlys z3PositionalOnlyTestCase.test_change_default_pos_onlycCsdd}||ddd||ddddd dd}||dddd}||dddd d}||ddddS) NcSs||Srrrrrr r7z5PositionalOnlyTestCase.test_lambdas..r r r#r)cSs||Srrrrrr r`r7cSs||Srrrrrr r`r7cSs||Srrrrrr r`r7)r rJ)rxrrr test_lambdass z#PositionalOnlyTestCase.test_lambdascCst|ddt|ddt|ddt|dt|dt|dt|dt|d t|d t|d t|d t|d dt|ddt|dt|dt|dt|ddS)Nzlambda a, b = 5, /, c: Nonerzlambda a = 5, b, /, c: Nonezlambda a = 5, b, /: Nonezlambda *args, /: Nonezlambda *args, a, /: Nonezlambda **kwargs, /: Nonezlambda /, a = 1: Nonezlambda /, a: Nonezlambda /: Nonezlambda *, a, /: Nonezlambda *, /, a: Nonezlambda a, /, a: Nonerzlambda a, /, *, a: Nonezlambda a, /, b, /: Nonezlambda a, /, b, /, c: Nonez lambda a, /, b, /, c, *, d: Nonezlambda a, *, b, /, c: Nonerrrrr test_invalid_syntax_lambdas"                z1PositionalOnlyTestCase.test_invalid_syntax_lambdacCsGddd}||ddd|||ddd|t|jddd}|t| |jdddWdn1s0YdS)Nc@seZdZddZdS)z.ExamplecSs||fSrr)rrrrrr r"sz>PositionalOnlyTestCase.test_posonly_methods..Example.fN)__name__ __module__ __qualname__r"rrrr Examplesrgr r r r r&r))r,r"r]r-r)rrgrOrrr test_posonly_methodssz+PositionalOnlyTestCase.test_posonly_methodscCs6|tdtWdn1s(0YdS)NrU)rr-r rrrr test_module_functionsz+PositionalOnlyTestCase.test_module_functioncCsXdd}||ddddd|td|dddWdn1sP0Y|td "|ddddd Wdn1s0Yd d}||dddddd d}||ddddd|td|dddWdn1s 0Y|td "|ddddd Wdn1sJ0YdS) Ncsfdd}|S)Ncs||SrrZx2Zy2rayrr r>s:PositionalOnlyTestCase.test_closures..f..grrarmr>rrlr r"sz/PositionalOnlyTestCase.test_closures..fr r r#rCrz2g\(\) missing 1 required positional argument: 'y2'z3g\(\) takes 2 positional arguments but 3 were givenrBcsfdd}|S)Ncs||Srrrkrlrr r>srnrrorrlr r"scsfdd}|S)Ncs||Srrrkrlrr r>!srnrrorrlr r" sr+r.rrr test_closures s,0.z$PositionalOnlyTestCase.test_closurescCs"dd}Gddd}dd}dS)NcSstddd}|S)NracSsdSrrrqrrr r".r7zZPositionalOnlyTestCase.test_annotations_in_closures..inner_has_pos_only..fintr"rrr inner_has_pos_only-szOPositionalOnlyTestCase.test_annotations_in_closures..inner_has_pos_onlyc@seZdZddZdS)zFPositionalOnlyTestCase.test_annotations_in_closures..SomethingcSstddd}|S)NrqcSsdSrrrqrrr r"5r7zXPositionalOnlyTestCase.test_annotations_in_closures..Something.method..frrr.rrr method4szMPositionalOnlyTestCase.test_annotations_in_closures..Something.methodNrdrerfrvrrrr Something3srxcSsdd}|S)NcSstddd}|S)NrqcSsdSrrrqrrr r"<r7zsPositionalOnlyTestCase.test_annotations_in_closures..multiple_levels..inner_has_pos_only..frrrtrrr ru;szhPositionalOnlyTestCase.test_annotations_in_closures..multiple_levels..inner_has_pos_onlyr)rurrr multiple_levels:szLPositionalOnlyTestCase.test_annotations_in_closures..multiple_levelsr)rrurxryrrr test_annotations_in_closures+sz3PositionalOnlyTestCase.test_annotations_in_closurescCsrdd}||ddddddif|td|ddWdn1sP0Y||ddifdS)Nc[s||fSrr) somethingkwargsrrr r"CszMPositionalOnlyTestCase.test_same_keyword_as_positional_with_kwargs..f*)r{r{z9f\(\) missing 1 required positional argument: 'something'r+r.rrr +test_same_keyword_as_positional_with_kwargsBs (zBPositionalOnlyTestCase.test_same_keyword_as_positional_with_kwargscCsHGddd}||d||d||ddS)Nc@s0eZdZd ddZd ddZdddd d Zd S)z/PositionalOnlyTestCase.test_mangling..Xr}cSs|Srr)r_X__arrr r"Osz1PositionalOnlyTestCase.test_mangling..X.f+cSs||fSrr)rr_X__brrr f2Rsz2PositionalOnlyTestCase.test_mangling..X.f2,)_X__ccSs |||fSrr)rrrrrrr f3Usz2PositionalOnlyTestCase.test_mangling..X.f3N)r})r}r)r}r)rdrerfr"rrrrrr XNs  rr})r}r)r}rr)r,r"rr)rrrrr test_manglingMs z$PositionalOnlyTestCase.test_manglingcCs,ddddtdD}t|dddS)Nr0r1css|]}d|VqdSr2rr3rrr r6^r7zAPositionalOnlyTestCase.test_too_many_arguments..r8rrr9r<rrr test_too_many_arguments\sz.PositionalOnlyTestCase.test_too_many_argumentscCs(tt}tt}tt}t|}t|}t|}||dddd}|t||dddWdn1s0Y||dddd}|t||dddWdn1s0Y||dd}|t||dddWdn1s0YdS)Nr r rhz\global_pos_only_f\(\) got some positional-only arguments passed as keyword arguments: 'a, b'rzbglobal_pos_only_and_normal\(\) got some positional-only arguments passed as keyword arguments: 'a'z`global_pos_only_defaults\(\) got some positional-only arguments passed as keyword arguments: 'a') pickledumpsr r rloadsr,rr-)rZpickled_posonlyZpickled_optionalZpickled_defaultsZunpickled_posonlyZunpickled_optionalZunpickled_defaultsrOrrr test_serializationas$      **z)PositionalOnlyTestCase.test_serializationcsxd ddtddddWdn1s80Yfdd}|dd|ddd |d|dS) Nr r cs||fSrrrrrr r"~sz,PositionalOnlyTestCase.test_async..frMrc sXz|i|}|dWn*tyF}z|j}WYd}~n d}~00|ddS)Nrh)send StopIterationvaluer,)argsr|cororAresultr"rrr _check_calls z6PositionalOnlyTestCase.test_async.._check_callr))r r rN)rrrrr test_async|s *  z!PositionalOnlyTestCase.test_asynccCsd dd}|td|dddWdn1s80Y|dd}|t|d|ddd}|t|d|d}|t|d|}|t|ddS) Nr r css||fVdSrrrrrr r"sz0PositionalOnlyTestCase.test_generator..frMrrhr))r r )rr-r,next)rr"genrrr test_generators *  z%PositionalOnlyTestCase.test_generatorcs>tGfddd}Gddd|}||dS)NcseZdZfddZdS)z,PositionalOnlyTestCase.test_super..AcsSrrrsentinelrr rvsz3PositionalOnlyTestCase.test_super..A.methodNrwrrrr AsrcseZdZfddZZS)z,PositionalOnlyTestCase.test_super..Ccs tSr)superrvr __class__rr rvsz3PositionalOnlyTestCase.test_super..C.method)rdrerfrv __classcell__rrrr Csr)objectr,rv)rrrrrr test_supersz!PositionalOnlyTestCase.test_supercCs8dd}ddt|D}|d||d|dS)NcSsttuddd}dS)NrqcSsdSrrrqrrr r"r7zKPositionalOnlyTestCase.test_annotations_constant_fold..g..frrrtrrr r>sz@PositionalOnlyTestCase.test_annotations_constant_fold..gcSsg|]}|j|jfqSr)opnameZargvalr3rrr r7zIPositionalOnlyTestCase.test_annotations_constant_fold..)Z UNARY_NOTN)ZIS_OPr )disZget_instructionsZ assertNotInZassertIn)rr>Zcodesrrr test_annotations_constant_folds z5PositionalOnlyTestCase.test_annotations_constant_foldN)r) rdrerfrrrr/r=rIrKrPrSrVrZr[r\r^r_rbrcrirjrprzr~rrrrrrrrrrr rs:       r__main__)r r ) __doc__rrZunittestZ test.supportrr r rZTestCaserrdmainrrrr s  ,