a 9êdgMZã@sdZddlmZddlmZmZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlZddlmZddlmZdd lmZdd lmZGd d „d ejƒZGd d„dejƒZGdd„dejƒZGdd„deƒZGdd„deƒZGdd„deƒZGdd„deƒZGdd„deƒZGdd„deƒZ Gdd„deƒZ!Gdd „d eƒZ"Gd!d"„d"eƒZ#Gd#d$„d$eƒZ$Gd%d&„d&eƒZ%Gd'd(„d(eƒZ&Gd)d*„d*eƒZ'Gd+d,„d,ejƒZ(Gd-d.„d.eƒZ)Gd/d0„d0eƒZ*Gd1d2„d2eƒZ+Gd3d4„d4ejƒZ,d5d6„Z-e.d7kre /¡dS)8aFTest suite for 2to3's parser and grammar files. This is the place to add tests for changes to 2to3's grammar, such as those merging the grammars for Python 2 and 3. In addition to specific tests for parts of the grammar we've changed, we also make sure we can parse the test_grammar.py files from both Python 2 and Python 3. é)Úsupport)ÚdriverÚdriver_no_print_statementéN)r)Útokenizeé)Ú ParseError)Úpython_symbolsc@seZdZdd„ZdS)Ú TestDrivercCsJd}t |¡}| |jdjdjtj¡| |jdjdjtj¡dS)Nzprint 1 print 2 rr)rÚ parse_stringÚ assertEqualZchildrenÚtypeÚsymsZ print_stmt)ÚselfÚsÚt©rú5/usr/local/lib/python3.9/lib2to3/tests/test_parser.pyÚ test_formfeed"s zTestDriver.test_formfeedN)Ú__name__Ú __module__Ú __qualname__rrrrrr sr c@s>eZdZdd„Zdd„Ze ejdud¡dd„ƒZ d d „Z dS) ÚTestPgen2CachingcCstjtjddddS)NFT©ÚsaveÚforce)Ú pgen2_driverÚ load_grammarrÚ grammar_path©rrrrÚtest_load_grammar_from_txt_file*sz0TestPgen2Caching.test_load_grammar_from_txt_filec Cs”t ¡}zztj |tj tj¡¡}t  tj|¡t   |¡}t j |ddd|  tj |¡¡t |¡t j |dddWt |¡n t |¡0dS)NTrF)ÚtempfileÚmkdtempÚosÚpathÚjoinÚbasenamerrÚshutilÚcopyrÚ_generate_pickle_namerÚ assertTrueÚexistsÚunlinkÚrmtree)rÚtmpdirÚ grammar_copyÚ pickle_namerrrÚtest_load_grammar_from_pickle-sÿ  z.TestPgen2Caching.test_load_grammar_from_pickleNzsys.executable requiredc Cszt ¡}tj |d¡}zPt |¡tj tj¡}tj ||¡}tj ||¡}t   tj|¡t   tj|¡t   |¡}t   |¡}|  ||¡t j|ddd| tj |¡¡ttjƒ}d|d<tjtjdd|fg|d| tj |¡¡t|d ƒT} t|d ƒ(} |j|  ¡|  ¡d d Wdƒn1s20YWdƒn1sR0YWt  |¡n t  |¡0dS) NZsubdirTrÚrandomZPYTHONHASHSEEDz-cz{ from lib2to3.pgen2 import driver as pgen2_driver pgen2_driver.load_grammar(%r, save=True, force=True) )ÚenvÚrbzGGrammar caches generated using different hash seeds were not identical.)Úmsg)r!r"r#r$r%Úmkdirr&rrr'r(rr)ZassertNotEqualrr*r+ÚdictÚenvironÚ subprocessÚ check_callÚsysÚ executableÚopenr Úreadr-) rr.Z tmpsubdirZ grammar_baser/Zgrammar_sub_copyr0Zpickle_sub_nameZsub_envZ pickle_f_1Z pickle_f_2rrrÚ!test_load_grammar_from_subprocess?sD  ÿ  ýû ÿ þHz2TestPgen2Caching.test_load_grammar_from_subprocesscsftd‰Gdd„dƒ‰G‡‡fdd„dƒ}|ƒtjˆ<| tjtjˆ¡t ˆd¡}| |j d¡dS)Nz .load_testc@seZdZdd„ZdS)z=TestPgen2Caching.test_load_packaged_grammar..MyLoadercSst ddi¡S)NÚelephanté)ÚpickleÚdumps)rÚwhererrrÚget_datakszFTestPgen2Caching.test_load_packaged_grammar..MyLoader.get_dataN)rrrrErrrrÚMyLoaderjsrFcs eZdZdZej ””ƒ¡ZdS)z=TestPgen2Caching.test_load_packaged_grammar..MyModuleZparsertestmoduleN)rrrÚ__file__Ú importlibÚutilÚspec_from_loaderÚ__spec__r©rFÚmodnamerrÚMyModulemsrNz Grammar.txtrA) rr;ÚmodulesZ addCleanupÚoperatorÚdelitemrZload_packaged_grammarr r@)rrNÚgrrLrÚtest_load_packaged_grammarhs  z+TestPgen2Caching.test_load_packaged_grammar) rrrr r1ÚunittestZskipIfr;r<r?rSrrrrr)s  (rc@seZdZdd„Zdd„ZdS)Ú GrammarTestcCst |¡dS)N)rr ©rÚcoderrrÚvalidatewszGrammarTest.validatecCs.z| |¡Wnty Yn 0tdƒ‚dS)Nz Syntax shouldn't have been valid)rXrÚAssertionErrorrVrrrÚinvalid_syntaxzs  zGrammarTest.invalid_syntaxN)rrrrXrZrrrrrUvsrUc@seZdZdd„ZdS)ÚTestMatrixMultiplicationcCs| d¡| d¡dS)Nza @ bza @= b©rXrrrrÚ#test_matrix_multiplication_operator„s z„Z!d?d@„Z"dAS)BÚTestUnpackingGeneralizationscCs| d¡dS)Nzfunc(1, *(2, 3), 4)r\rrrrÚtest_mid_positional_star÷sz5TestUnpackingGeneralizations.test_mid_positional_starcCs| d¡dS)Nz,func(**{'eggs':'scrambled', 'spam':'fried'})r\rrrrÚtest_double_star_dict_literalúsz:TestUnpackingGeneralizations.test_double_star_dict_literalcCs| d¡dS)Nz*func(spam='fried', **{'eggs':'scrambled'})r\rrrrÚ,test_double_star_dict_literal_after_keywordsýszITestUnpackingGeneralizations.test_double_star_dict_literal_after_keywordscCs| d¡| d¡dS)Nzfunc(**{'a':2} or {})zfunc(**() or {})r\rrrrÚtest_double_star_expressions z8TestUnpackingGeneralizations.test_double_star_expressioncCs| d¡dS)Nzfunc(*[] or [2])r\rrrrÚtest_star_expressionsz1TestUnpackingGeneralizations.test_star_expressioncCs| d¡dS)Nz[*{2}, 3, *[4]]r\rrrrÚtest_list_displaysz.TestUnpackingGeneralizations.test_list_displaycCs| d¡dS)Nz{*{2}, 3, *[4]}r\rrrrÚtest_set_display sz-TestUnpackingGeneralizations.test_set_displaycCs| d¡dS)Nz{**{}}r\rrrrÚtest_dict_display_1 sz0TestUnpackingGeneralizations.test_dict_display_1cCs| d¡dS)Nz{**{}, 3:4, **{5:6, 7:8}}r\rrrrÚtest_dict_display_2sz0TestUnpackingGeneralizations.test_dict_display_2cCs| d¡dS)Nzfunc(* [] or [1])r\rrrrÚtest_complex_star_expressionsz9TestUnpackingGeneralizations.test_complex_star_expressioncCs| d¡dS)Nz5func(**{1: 3} if False else {x: x for x in range(3)})r\rrrrÚ#test_complex_double_star_expressionsz@TestUnpackingGeneralizations.test_complex_double_star_expressioncCs| d¡dS)Nzf(a, *b, *c, d)r\rrrrÚtest_argument_unpacking_1sz6TestUnpackingGeneralizations.test_argument_unpacking_1cCs| d¡dS)Nz f(**a, **b)r\rrrrÚtest_argument_unpacking_2sz6TestUnpackingGeneralizations.test_argument_unpacking_2cCs| d¡dS)Nzf(2, *a, *b, **b, **c, **d)r\rrrrÚtest_argument_unpacking_3sz6TestUnpackingGeneralizations.test_argument_unpacking_3cCs| d¡| d¡dS)Nzdef f(a, b): call(a, b)zdef f(a, b,): call(a, b,)r\rrrrÚtest_trailing_commas_1"s z3TestUnpackingGeneralizations.test_trailing_commas_1cCs| d¡| d¡dS)Nzdef f(a, *b): call(a, *b)zdef f(a, *b,): call(a, *b,)r\rrrrÚtest_trailing_commas_2&s z3TestUnpackingGeneralizations.test_trailing_commas_2cCs| d¡| d¡dS)Nzdef f(a, b=1): call(a, b=1)zdef f(a, b=1,): call(a, b=1,)r\rrrrÚtest_trailing_commas_3*s z3TestUnpackingGeneralizations.test_trailing_commas_3cCs| d¡| d¡dS)Nzdef f(a, **b): call(a, **b)zdef f(a, **b,): call(a, **b,)r\rrrrÚtest_trailing_commas_4.s z3TestUnpackingGeneralizations.test_trailing_commas_4cCs| d¡| d¡dS)Nzdef f(*a, b=1): call(*a, b=1)zdef f(*a, b=1,): call(*a, b=1,)r\rrrrÚtest_trailing_commas_52s z3TestUnpackingGeneralizations.test_trailing_commas_5cCs| d¡| d¡dS)Nzdef f(*a, **b): call(*a, **b)zdef f(*a, **b,): call(*a, **b,)r\rrrrÚtest_trailing_commas_66s z3TestUnpackingGeneralizations.test_trailing_commas_6cCs| d¡| d¡dS)Nzdef f(*, b=1): call(*b)zdef f(*, b=1,): call(*b,)r\rrrrÚtest_trailing_commas_7:s z3TestUnpackingGeneralizations.test_trailing_commas_7cCs| d¡| d¡dS)Nzdef f(a=1, b=2): call(a=1, b=2)z!def f(a=1, b=2,): call(a=1, b=2,)r\rrrrÚtest_trailing_commas_8>s z3TestUnpackingGeneralizations.test_trailing_commas_8cCs| d¡| d¡dS)Nzdef f(a=1, **b): call(a=1, **b)z!def f(a=1, **b,): call(a=1, **b,)r\rrrrÚtest_trailing_commas_9Bs z3TestUnpackingGeneralizations.test_trailing_commas_9cCs| d¡| d¡dS)Nzf = lambda a, b: call(a, b)zf = lambda a, b,: call(a, b,)r\rrrrÚtest_trailing_commas_lambda_1Fs z:TestUnpackingGeneralizations.test_trailing_commas_lambda_1cCs| d¡| d¡dS)Nzf = lambda a, *b: call(a, *b)zf = lambda a, *b,: call(a, *b,)r\rrrrÚtest_trailing_commas_lambda_2Js z:TestUnpackingGeneralizations.test_trailing_commas_lambda_2cCs| d¡| d¡dS)Nzf = lambda a, b=1: call(a, b=1)z!f = lambda a, b=1,: call(a, b=1,)r\rrrrÚtest_trailing_commas_lambda_3Ns z:TestUnpackingGeneralizations.test_trailing_commas_lambda_3cCs| d¡| d¡dS)Nzf = lambda a, **b: call(a, **b)z!f = lambda a, **b,: call(a, **b,)r\rrrrÚtest_trailing_commas_lambda_4Rs z:TestUnpackingGeneralizations.test_trailing_commas_lambda_4cCs| d¡| d¡dS)Nz!f = lambda *a, b=1: call(*a, b=1)z#f = lambda *a, b=1,: call(*a, b=1,)r\rrrrÚtest_trailing_commas_lambda_5Vs z:TestUnpackingGeneralizations.test_trailing_commas_lambda_5cCs| d¡| d¡dS)Nz!f = lambda *a, **b: call(*a, **b)z#f = lambda *a, **b,: call(*a, **b,)r\rrrrÚtest_trailing_commas_lambda_6Zs z:TestUnpackingGeneralizations.test_trailing_commas_lambda_6cCs| d¡| d¡dS)Nzf = lambda *, b=1: call(*b)zf = lambda *, b=1,: call(*b,)r\rrrrÚtest_trailing_commas_lambda_7^s z:TestUnpackingGeneralizations.test_trailing_commas_lambda_7cCs| d¡| d¡dS)Nz#f = lambda a=1, b=2: call(a=1, b=2)z%f = lambda a=1, b=2,: call(a=1, b=2,)r\rrrrÚtest_trailing_commas_lambda_8bs z:TestUnpackingGeneralizations.test_trailing_commas_lambda_8cCs| d¡| d¡dS)Nz#f = lambda a=1, **b: call(a=1, **b)z%f = lambda a=1, **b,: call(a=1, **b,)r\rrrrÚtest_trailing_commas_lambda_9fs z:TestUnpackingGeneralizations.test_trailing_commas_lambda_9N)#rrrrsrtrurvrwrxryrzr{r|r}r~rr€rr‚rƒr„r…r†r‡rˆr‰rŠr‹rŒrrŽrrr‘r’rrrrrrös@rrc@s´eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zdd „Zd!d"„Zd#d$„Zd%d&„Zd'd(„Zd)d*„Zd+S),ÚTestFunctionAnnotationscCs| d¡dS)Nzdef f(x) -> list: passr\rrrrÚtest_1mszTestFunctionAnnotations.test_1cCs| d¡dS)Nzdef f(x:int): passr\rrrrÚtest_2pszTestFunctionAnnotations.test_2cCs| d¡dS)Nzdef f(*x:str): passr\rrrrÚtest_3sszTestFunctionAnnotations.test_3cCs| d¡dS)Nzdef f(**x:float): passr\rrrrÚtest_4vszTestFunctionAnnotations.test_4cCs| d¡dS)Nzdef f(x, y:1+2): passr\rrrrÚtest_5yszTestFunctionAnnotations.test_5cCs| d¡dS)Nzdef f(a, (b:1, c:2, d)): passr\rrrrÚtest_6|szTestFunctionAnnotations.test_6cCs| d¡dS)Nz/def f(a, (b:1, c:2, d), e:3=4, f=5, *g:6): passr\rrrrÚtest_7szTestFunctionAnnotations.test_7cCsd}| |¡dS)Nzgdef f(a, (b:1, c:2, d), e:3=4, f=5, *g:6, h:7, i=8, j:9=10, **k:11) -> 12: passr\©rrrrrÚtest_8‚szTestFunctionAnnotations.test_8cCsd}| |¡dS)Nzšdef f( a: str, b: int, *, c: bool = False, **kwargs, ) -> None: call(c=c, **kwargs,)r\r›rrrÚtest_9‡szTestFunctionAnnotations.test_9cCsd}| |¡dS)Nz@def f( a: str, ) -> None: call(a,)r\r›rrrÚtest_10’szTestFunctionAnnotations.test_10cCsd}| |¡dS)NzGdef f( a: str = '', ) -> None: call(a=a,)r\r›rrrÚtest_11™szTestFunctionAnnotations.test_11cCsd}| |¡dS)NzHdef f( *args: str, ) -> None: call(*args,)r\r›rrrÚtest_12 szTestFunctionAnnotations.test_12cCs| d¡| d¡dS)Nz)def f(a: str, b: int) -> None: call(a, b)z+def f(a: str, b: int,) -> None: call(a, b,)r\rrrrÚtest_13§s zTestFunctionAnnotations.test_13cCs| d¡| d¡dS)Nz+def f(a: str, *b: int) -> None: call(a, *b)z-def f(a: str, *b: int,) -> None: call(a, *b,)r\rrrrÚtest_14«s zTestFunctionAnnotations.test_14cCs| d¡| d¡dS)Nz-def f(a: str, b: int=1) -> None: call(a, b=1)z/def f(a: str, b: int=1,) -> None: call(a, b=1,)r\rrrrÚtest_15¯s zTestFunctionAnnotations.test_15cCs| d¡| d¡dS)Nz-def f(a: str, **b: int) -> None: call(a, **b)z/def f(a: str, **b: int,) -> None: call(a, **b,)r\rrrrÚtest_16³s zTestFunctionAnnotations.test_16cCs| d¡| d¡dS)Nz/def f(*a: str, b: int=1) -> None: call(*a, b=1)z1def f(*a: str, b: int=1,) -> None: call(*a, b=1,)r\rrrrÚtest_17·s zTestFunctionAnnotations.test_17cCs| d¡| d¡dS)Nz/def f(*a: str, **b: int) -> None: call(*a, **b)z1def f(*a: str, **b: int,) -> None: call(*a, **b,)r\rrrrÚtest_18»s zTestFunctionAnnotations.test_18cCs| d¡| d¡dS)Nz$def f(*, b: int=1) -> None: call(*b)z&def f(*, b: int=1,) -> None: call(*b,)r\rrrrÚtest_19¿s zTestFunctionAnnotations.test_19cCs| d¡| d¡dS)Nz2def f(a: str='', b: int=2) -> None: call(a=a, b=2)z4def f(a: str='', b: int=2,) -> None: call(a=a, b=2,)r\rrrrÚtest_20Ãs zTestFunctionAnnotations.test_20cCs| d¡| d¡dS)Nz2def f(a: str='', **b: int) -> None: call(a=a, **b)z4def f(a: str='', **b: int,) -> None: call(a=a, **b,)r\rrrrÚtest_21Çs zTestFunctionAnnotations.test_21N)rrrr”r•r–r—r˜r™ršrœrržrŸr r¡r¢r£r¤r¥r¦r§r¨r©rrrrr“ls* r“c@s<eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd S)ÚTestVarAnnotationscCs| d¡dS)Nz var1: int = 5r\rrrrr”ÎszTestVarAnnotations.test_1cCs| d¡dS)Nzvar2: [int, str]r\rrrrr•ÑszTestVarAnnotations.test_2cCs| d¡dS)NzCdef f(): st: str = 'Hello' a.b: int = (1, 2) return st r\rrrrr–ÔszTestVarAnnotations.test_3cCs| d¡dS)Nz$def fbad(): x: int print(x) r\rrrrr—ÚszTestVarAnnotations.test_4cCs| d¡dS)Nzeclass C: x: int s: str = 'attr' z = 2 def __init__(self, x): self.x: int = x r\rrrrr˜ßszTestVarAnnotations.test_5cCs| d¡dS)Nzlst: List[int] = []r\rrrrr™çszTestVarAnnotations.test_6N) rrrr”r•r–r—r˜r™rrrrrªÍs rªc@seZdZdd„Zdd„ZdS)Ú TestExceptcCsd}| |¡dS)NzP try: x except E as N: yr\r›rrrÚtest_newìszTestExcept.test_newcCsd}| |¡dS)NzN try: x except E, N: yr\r›rrrÚtest_oldôszTestExcept.test_oldN)rrrr¬r­rrrrr«ësr«c@seZdZdZdd„ZdS)ÚTestStringLiterals)*ú'ú"zr'zr"zR'zR"zu'zu"zU'zU"zb'zb"zB'zB"zf'zf"zF'zF"zur'zur"zUr'zUr"zuR'zuR"zUR'zUR"zbr'zbr"zBr'zBr"zbR'zbR"zBR'zBR"zrb'zrb"zRb'zRb"zrB'zrB"zRB'zRB"cCsH|jD]<}dj||dd}| |¡dj||dd}| |¡qdS)Nz{p}spamspamspam{s}éÿÿÿÿ)Úprz{p}{s}{s}eggs{s}{s}{s})ÚprefixesÚformatrX)rÚpreZsingleZtriplerrrÚtest_lit s   zTestStringLiterals.test_litN)rrrr³r¶rrrrr®ýs r®c@s,eZdZdd„Zdd„Zdd„Zdd„Zd S) ÚTestSetLiteralcCs| d¡dS)Nz x = {'one'}r\rrrrr”szTestSetLiteral.test_1cCs| d¡dS)Nzx = {'one', 1,}r\rrrrr•szTestSetLiteral.test_2cCs| d¡dS)Nzx = {'one', 'two', 'three'}r\rrrrr–szTestSetLiteral.test_3cCs| d¡dS)Nzx = {2, 3, 4,}r\rrrrr—szTestSetLiteral.test_4N)rrrr”r•r–r—rrrrr·sr·c@seZdZdd„ZdS)ÚTestIdentifiercCs,| d¡| d¡| d¡| d¡dS)Nu!Örter = 'places' grün = 'green'u蟒 = a蟒 = 锦蛇 = 1uµ = aµ = µµ = 1uAð”˜ð”«ð”¦ð” ð”¬ð”¡ð”¢ = a_ð”˜ð”«ð”¦ð” ð”¬ð”¡ð”¢ = 1r\rrrrÚtest_non_ascii_identifiers$s   z)TestIdentifier.test_non_ascii_identifiersN)rrrr¹rrrrr¸#sr¸c@seZdZdd„Zdd„ZdS)ÚTestNumericLiteralscCs| d¡| d¡dS)NZ0o7777777777777Z 0o7324528887r_rrrrÚtest_new_octal_notation,s z+TestNumericLiterals.test_new_octal_notationcCs| d¡| d¡dS)NZ0b101010Z 0b0101021r_rrrrÚtest_new_binary_notation0s z,TestNumericLiterals.test_new_binary_notationN)rrrr»r¼rrrrrº+srºc@seZdZdd„ZdS)Ú TestClassDefcCs6| d¡| d¡| d¡| d¡| d¡dS)Nzclass B(t=7): passzclass B(t, *args): passzclass B(t, **kwargs): passz!class B(t, *args, **kwargs): passz'class B(t, y=9, *args, **kwargs,): passr\rrrrÚtest_new_syntax6s     zTestClassDef.test_new_syntaxN)rrrr¾rrrrr½5sr½c@s eZdZdZdd„Zdd„ZdS)ÚTestParserIdempotencyz,A cut-down version of pytree_idempotency.py.cCs*t ¡D]}t|dƒ }t |j¡d}Wdƒn1s>0Y| |d|¡t|d|d}| ¡}Wdƒn1s„0Yzt  |¡}WnXt yôzt   |¡}Wn6t yî}z|  d||f¡WYd}~n d}~00Yn0t |ƒ}||krtt|||ƒƒ|  d|¡qdS)Nr4rzcan't detect encoding for %sÚr)ÚencodingzParseError on file %s (%s)zIdempotency failed: %s)rZall_project_filesr=rÚdetect_encodingÚreadlineZassertIsNotNoner>rr rrZfailÚstrÚprintÚ diff_texts)rÚfilepathÚfprÁÚsourceZtreeÚerrÚnewrrrÚtest_all_project_filesBs& .ÿ& .z,TestParserIdempotency.test_all_project_filescCs,t d¡t d¡t d¡t d¡dS)Nz a, *b, c = x z [*a, b] = x z(z, *y, w) = m zfor *z, m in d: pass ©rr rrrrÚtest_extended_unpackingVs   z-TestParserIdempotency.test_extended_unpackingN)rrrÚ__doc__rÌrÎrrrrr¿>sr¿c@s,eZdZdd„Zdd„Zdd„Zdd„Zd S) Ú TestLiteralscCst t |¡d¡dS)Nz )rr rÚdedentr›rrrrX_szTestLiterals.validatecCsd}| |¡dS)Nuâ md5test(b"ª" * 80, (b"Test Using Larger Than Block-Size Key " b"and Larger Than One Block-Size Data"), "6f630fad67cda0ee1fb1f562db3aa53e") r\r›rrrÚtest_multiline_bytes_literalsbsz*TestLiterals.test_multiline_bytes_literalscCsd}| |¡dS)Nz¬ b""" """ r\r›rrrÚ'test_multiline_bytes_tripquote_literalsksz4TestLiterals.test_multiline_bytes_tripquote_literalscCsd}| |¡dS)Nuß md5test("ª" * 80, ("Test Using Larger Than Block-Size Key " "and Larger Than One Block-Size Data"), "6f630fad67cda0ee1fb1f562db3aa53e") r\r›rrrÚtest_multiline_str_literalstsz(TestLiterals.test_multiline_str_literalsN)rrrrXrÒrÓrÔrrrrrÐ]s  rÐc@s0eZdZdZdd„Zdd„Zdd„Zdd „Zd S) ÚTestNamedAssignmentsz"Also known as the walrus operator.cCst d¡dS)Nzif f := x(): pass rÍrrrrÚtest_named_assignment_ifsz-TestNamedAssignments.test_named_assignment_ifcCst d¡dS)Nzwhile f := x(): pass rÍrrrrÚtest_named_assignment_while„sz0TestNamedAssignments.test_named_assignment_whilecCst d¡dS)Nz0any((lastNum := num) == 1 for num in [1, 2, 3]) rÍrrrrÚtest_named_assignment_generator‡sz4TestNamedAssignments.test_named_assignment_generatorcCst d¡dS)Nz-[(lastNum := num) == 1 for num in [1, 2, 3]] rÍrrrrÚtest_named_assignment_listcompŠsz3TestNamedAssignments.test_named_assignment_listcompN)rrrrÏrÖr×rØrÙrrrrrÕ~s rÕc@s4eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd S) ÚTestPositionalOnlyArgscCst d¡dS)Nz!def one_pos_only_arg(a, /): pass rÍrrrrÚtest_one_pos_only_argsz,TestPositionalOnlyArgs.test_one_pos_only_argcCst d¡dS)Nz4def all_markers(a, b=2, /, c, d=4, *, e=5, f): pass rÍrrrrÚtest_all_markers“sÿz'TestPositionalOnlyArgs.test_all_markerscCst d¡dS)Nzždef all_markers_with_args_and_kwargs( aa, b, /, _cc, d, *args, e, f_f, **kwargs, ): pass rÍrrrrÚtest_all_with_args_and_kwargs—sÿz4TestPositionalOnlyArgs.test_all_with_args_and_kwargscCst d¡dS)Nz,lambda a, b, /, c, d, *args, e, f, **kw: kw rÍrrrrÚtest_lambda_soupžsÿz'TestPositionalOnlyArgs.test_lambda_soupcCst d¡dS)Nzdef func(a,b,/,*,g,e=3): pass rÍrrrrÚtest_only_positional_or_keyword¢sz6TestPositionalOnlyArgs.test_only_positional_or_keywordN)rrrrÛrÜrÝrÞrßrrrrrÚŽs rÚc@seZdZdd„ZdS)ÚTestPickleableExceptioncCsŠtddddƒ}ttjdƒD]h}t tj||d¡}| |j|j¡| |j|j¡| |j |j ¡| |j |j ¡| |j |j ¡qdS)Nr5r)rÚcontextr)Úprotocol) rÚrangerBÚHIGHEST_PROTOCOLÚloadsrCr Úargsr5r Úvaluerá)rrÊÚprotoZerr2rrrÚtest_ParseError§sz'TestPickleableException.test_ParseErrorN)rrrrérrrrrà¦sràc Cs(| ¡}| ¡}tj||||ddddS)Nz (original)z(reserialized)Ú)Zlineterm)Ú splitlinesÚdifflibZ unified_diff)ÚaÚbÚfilenamerrrrƲs  þrÆÚ__main__)0rÏrêrrrrìrHrPr#rBr'r9r;r!rTZ lib2to3.pgen2rrZ pgen2.parserZlib2to3.pygramr rZTestCaser rrUr[r^rarfrrr“rªr«r®r·r¸rºr½r¿rÐrÕrÚràrÆrÚmainrrrrÚsP      M F va  !