a 5êdg8—ã@s&ddlZddlZe ¡&e dde¡ddlZWdƒn1sD0YddlZddlZddlZddl Z ddl m Z ddl m Z ddl mZGdd„dejƒZGd d „d ejƒZGd d „d ejƒZGd d„dejƒZGdd„dejƒZGdd„dejƒZGdd„dejƒZedkr"e ¡dS)éNÚignorezThe parser module is deprecated)Úsupport)Úassert_python_failure)Úassert_python_okc@seZdZdd„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+d,„Zd-d.„Zd/d0„Zd1d2„Zd3d4„Zd5d6„Zd7d8„Zd9d:„Zd;d<„Z d=d>„Z!d?d@„Z"dAdB„Z#dCdD„Z$dES)FÚRoundtripLegalSyntaxTestCasec Csn||ƒ}| ¡}zt |¡}Wn8tjyV}z| d||f¡WYd}~n d}~00| || ¡d¡dS)Nzcould not roundtrip %r: %sz!could not re-generate syntax tree)ÚtotupleÚparserÚ sequence2stÚ ParserErrorÚfailÚ assertEqual)ÚselfÚfÚsÚst1ÚtÚst2Úwhy©rú,/usr/local/lib/python3.9/test/test_parser.pyÚ roundtrips( ÿz&RoundtripLegalSyntaxTestCase.roundtripcCs| tj|¡dS©N)rrÚexpr©r rrrrÚ check_expr"sz'RoundtripLegalSyntaxTestCase.check_exprcCs6t d¡}| ¡}i}t|i|ƒ| |dt¡dS)Nz/from __future__ import unicode_literals; x = ''Úx)rÚsuiteÚcompileÚexecZassertIsInstanceÚstr)r rÚcodeZscoperrrÚtest_flags_passed%s   z.RoundtripLegalSyntaxTestCase.test_flags_passedcCs| tj|¡dSr)rrrrrrrÚ check_suite.sz(RoundtripLegalSyntaxTestCase.check_suitecCs®| d¡| d¡| d¡| d¡| d¡| d¡| d¡| d¡| d ¡| d ¡| d ¡| d ¡| d ¡| d¡| d¡| d¡| d¡dS)Nzdef f(): yield 1zdef f(): yieldzdef f(): x += yieldzdef f(): x = yield 1zdef f(): x = y = yield 1zdef f(): x = yieldzdef f(): x = y = yieldzdef f(): 1 + (yield)*2zdef f(): (yield 1)*2zdef f(): return; yield 1zdef f(): yield 1; returnzdef f(): yield from 1zdef f(): x = yield from 1zdef f(): f((yield from 1))zdef f(): yield 1; return 1z1def f(): for x in range(30): yield x z)def f(): if (yield): yield x ©r"©r rrrÚtest_yield_statement1s"                z1RoundtripLegalSyntaxTestCase.test_yield_statementcCs@| d¡| d¡| d¡| d¡| d¡| d¡dS)Nzasync def f(): await smth()z"async def f(): foo = await smth()z'async def f(): foo, bar = await smth()zasync def f(): (await smth())z#async def f(): foo((await smth()))z&async def f(): await foo(); return 42r#r$rrrÚtest_await_statementHs      z1RoundtripLegalSyntaxTestCase.test_await_statementcCs| d¡| d¡dS)Nz"async def f(): async with 1: passz/async def f(): async with a as b, c as d: passr#r$rrrÚtest_async_with_statementPs z6RoundtripLegalSyntaxTestCase.test_async_with_statementcCs| d¡| d¡dS)Nz'async def f(): async for i in (): passz*async def f(): async for i, b in (): passr#r$rrrÚtest_async_for_statementTs z5RoundtripLegalSyntaxTestCase.test_async_for_statementcCs| d¡| d¡dS)Nz3def f(): x = 0 def g(): nonlocal x z:def f(): x = y = 0 def g(): nonlocal x, y r#r$rrrÚtest_nonlocal_statementXs z4RoundtripLegalSyntaxTestCase.test_nonlocal_statementcCsž| d¡| d¡| d¡| d¡| d¡| d¡| d¡| d¡| d ¡| d ¡| d ¡| d ¡| d ¡| d¡| d¡| d¡| d¡| d¡| d¡| d¡| d¡| d¡| d¡| d¡| d¡| d¡| d¡| d¡| d¡| d¡| d¡| d ¡| d!¡| d"¡| d#¡| d$¡| d%¡| d&¡| d'¡| d(¡| d)¡dS)*Nzfoo(1)z [1, 2, 3]z[x**3 for x in range(20)]z"[x**3 for x in range(20) if x % 3]z+[x**3 for x in range(20) if x % 2 if x % 3]úlist(x**3 for x in range(20))z&list(x**3 for x in range(20) if x % 3)z/list(x**3 for x in range(20) if x % 2 if x % 3)z foo(*args)zfoo(*args, **kw)z foo(**kw)zfoo(key=value)zfoo(key=value, *args)zfoo(key=value, *args, **kw)zfoo(key=value, **kw)zfoo(a, b, c, *args)zfoo(a, b, c, *args, **kw)zfoo(a, b, c, **kw)zfoo(a, *args, keyword=23)z foo + barz foo - barz foo * barz foo / barz foo // barz (foo := 1)z lambda: 0z lambda x: 0z lambda *y: 0zlambda *y, **z: 0z lambda **z: 0zlambda x, y: 0zlambda foo=bar: 0z"lambda foo=bar, spaz=nifty+spit: 0zlambda foo=bar, **z: 0z#lambda foo=bar, blaz=blat+2, **z: 0z'lambda foo=bar, blaz=blat+2, *y, **z: 0zlambda x, *y, **z: 0z(x for x in range(10))zfoo(x for x in range(10))z...za[...]©rr$rrrÚtest_expressionsbsR                                        z-RoundtripLegalSyntaxTestCase.test_expressionscCs| d¡dS)NÚar#r$rrrÚtest_simple_expressionsz3RoundtripLegalSyntaxTestCase.test_simple_expressioncCs| d¡| d¡dS)Nza = bza = b = c = d = er#r$rrrÚtest_simple_assignments‘s z4RoundtripLegalSyntaxTestCase.test_simple_assignmentscCs’| d¡| d¡| d¡| d¡| d¡| d¡| d¡| d¡| d ¡| d ¡| t¡td iiƒWdƒn1s0Y| t¡td iiƒWdƒn1sÆ0Y| t¡td iiƒWdƒn1sü0Y| t¡tdiiƒWdƒn1s40Y| t¡tdiiƒWdƒn1sl0Y| t¡tdiiƒWdƒn1s¤0Y| t¡tdiiƒWdƒn1sÜ0Y| t¡tdiiƒWdƒn1s0Y| t¡tdiiƒWdƒn1sL0Y| t¡tdiiƒWdƒn1s„0YdS)Nz x: int = 5z"y: List[T] = []; z: [list] = fun()zx: tuple = (1, 2)zd[f()]: int = 42zf(d[x]): str = 'abc'zx.y.z.w: complex = 42jzx: intz#def f(): x: str y: int = 5 z#class C: x: str y: int = 5 zIclass C: def __init__(self, x: int) -> None: self.x: int = x z2+2: intz []: int = 5zx, *y, z: int = range(5)zx: int = 1, y = 2z u = v: intz False: intz x.False: intz x.y,: intz[0]: intzf(): int)r"Ú assertRaisesÚ SyntaxErrorrr$rrrÚtest_var_annot•s<           * * * , , , , , , z+RoundtripLegalSyntaxTestCase.test_var_annotcCs|| d¡| d¡| d¡| d¡| d¡| d¡| d¡| d¡| d ¡| d ¡| d ¡| d ¡dS) Nza += bza -= bza *= bza /= bza //= bza %= bza &= bza |= bza ^= bza <<= bza >>= bza **= br#r$rrrÚ!test_simple_augmented_assignments¼s           z>RoundtripLegalSyntaxTestCase.test_simple_augmented_assignmentscCs4| d¡| d¡| d¡| d¡| d¡| d¡| d¡| d¡| d ¡| d ¡| d ¡| d ¡| d ¡| d¡| d¡| d¡| d¡| d¡| d¡| d¡| d¡| d¡| d¡| d¡| d¡| d¡| d¡| d¡| d¡| d¡| d¡| d ¡| d!¡| d"¡| d#¡| d$¡| d%¡| d&¡| d'¡| d(¡| d)¡| d*¡| d+¡| d,¡| d-¡| d.¡| d/¡| d0¡| d1¡| d2¡| d3¡| d4¡| d5¡| d6¡| d7¡| d8¡dS)9Nz def f(): passzdef f(*args): passzdef f(*args, **kw): passzdef f(**kw): passzdef f(foo=bar): passzdef f(foo=bar, *args): passz!def f(foo=bar, *args, **kw): passzdef f(foo=bar, **kw): passzdef f(a, b): passzdef f(a, b, *args): passzdef f(a, b, *args, **kw): passzdef f(a, b, **kw): passzdef f(a, b, foo=bar): passz!def f(a, b, foo=bar, *args): passz'def f(a, b, foo=bar, *args, **kw): passz def f(a, b, foo=bar, **kw): passz@staticmethod def f(): passz,@staticmethod @funcattrs(x, y) def f(): passz@funcattrs() def f(): passz@False or x def f(): passz@d := x def f(): passz@lambda f: x(f) def f(): passz@[..., x, ...][1] def f(): passz@x(x)(x) def f(): passz@(x, x) def f(): passz@... def f(): passz@None def f(): passz@w @(x @y) @(z) def f(): passz@w[x].y.z def f(): passzdef f(*, a): passzdef f(*, a = 5): passzdef f(*, a = 5, b): passzdef f(*, a, b = 5): passz def f(*, a, b = 5, **kwds): passzdef f(*args, a): passzdef f(*args, a = 5): passzdef f(*args, a = 5, b): passzdef f(*args, a, b = 5): passz$def f(*args, a, b = 5, **kwds): passzdef f(a, /): passzdef f(a, /,): passzdef f(a, b, /): passzdef f(a, b, /, c): passzdef f(a, b, /, c = 6): passzdef f(a, b, /, c, *, d): passz!def f(a, b, /, c = 1, *, d): passz!def f(a, b, /, c, *, d = 1): passz%def f(a, b=1, /, c=2, *, d = 3): passz'def f(a=0, b=1, /, c=2, *, d = 3): passzdef f(a: int): passzdef f(a: int = 5): passzdef f(*args: list): passzdef f(**kwds: dict): passzdef f(*, a: int): passzdef f(*, a: int = 5): passzdef f() -> int: passr#r$rrrÚtest_function_defsÊsp                                                       z/RoundtripLegalSyntaxTestCase.test_function_defscCsš| d¡| d¡| d¡| d¡| d¡| d¡| d¡| d¡| d ¡| d ¡| d ¡| d ¡| d ¡| d¡| d¡dS)Nzclass foo():passzclass foo(object):passz!@class_decorator class foo():passz&@class_decorator(arg) class foo():passz(@decorator1 @decorator2 class foo():passz@False or x class C: passz@d := x class C: passz@lambda f: x(f) class C: passz@[..., x, ...][1] class C: passz@x(x)(x) class C: passz@(x, x) class C: passz@... class C: passz@None class C: passz@w @(x @y) @(z) class C: passz@w[x].y.z class C: passr#r$rrrÚtest_class_defss              z,RoundtripLegalSyntaxTestCase.test_class_defscCs®| d¡| d¡| d¡| d¡| d¡| d¡| d¡| d¡| d ¡| d ¡| d ¡| d ¡| d ¡| d¡| d¡| d¡| d¡dS)Nzfrom sys.path import *zfrom sys.path import dirnamezfrom sys.path import (dirname)zfrom sys.path import (dirname,)z*from sys.path import dirname as my_dirnamez,from sys.path import (dirname as my_dirname)z-from sys.path import (dirname as my_dirname,)z&from sys.path import dirname, basenamez(from sys.path import (dirname, basename)z)from sys.path import (dirname, basename,)z4from sys.path import dirname as my_dirname, basenamez6from sys.path import (dirname as my_dirname, basename)z7from sys.path import (dirname as my_dirname, basename,)z5from sys.path import dirname, basename as my_basenamez7from sys.path import (dirname, basename as my_basename)z8from sys.path import (dirname, basename as my_basename,)zfrom .bogus import xr#r$rrrÚtest_import_from_statement;s:          ÿÿÿÿÿÿz7RoundtripLegalSyntaxTestCase.test_import_from_statementcCs6| d¡| d¡| d¡| d¡| d¡dS)Nz import syszimport sys as systemzimport sys, mathzimport sys as system, mathzimport sys, math as my_mathr#r$rrrÚtest_basic_import_statementTs     z8RoundtripLegalSyntaxTestCase.test_basic_import_statementcCsT| d¡| d¡| d¡| d¡| d¡| d¡| d¡| d¡dS) Nzfrom . import namezfrom .. import namezfrom ... import namezfrom .... import namezfrom .pkg import namezfrom ..pkg import namezfrom ...pkg import namezfrom ....pkg import namer#r$rrrÚtest_relative_imports[s       z2RoundtripLegalSyntaxTestCase.test_relative_importscCs| d¡dS)Nz"# -*- coding: iso-8859-1 -*- pass r#r$rrrÚ test_pep263gsz(RoundtripLegalSyntaxTestCase.test_pep263cCs| d¡dS)Nzassert alo < ahi and blo < bhi r#r$rrrÚ test_assertksz(RoundtripLegalSyntaxTestCase.test_assertcCs"| d¡| d¡| d¡dS)Nzwith open('x'): pass zwith open('x') as f: pass z*with open('x') as f, open('y') as g: pass r#r$rrrÚ test_withns  z&RoundtripLegalSyntaxTestCase.test_withcCs@| d¡| d¡| d¡| d¡| d¡| d¡dS)Nztry: pass except: pass ztry: pass finally: pass z'try: pass except A: pass finally: pass z4try: pass except A: pass except: pass finally: pass z"try: pass except: pass else: pass z0try: pass except: pass else: pass finally: pass r#r$rrrÚ test_try_stmtss      z*RoundtripLegalSyntaxTestCase.test_try_stmtcCs| d¡| d¡dS)Nzif True: pass else: pass z/if True: pass elif True: pass else: pass r#r$rrrÚ test_if_stmt}s z)RoundtripLegalSyntaxTestCase.test_if_stmtc s$d}t |¡}‡fdd„‰gd¢}| tˆ|jdddƒƒ|¡| tˆ| ¡ƒƒdd„|Dƒ¡| tˆ|jdd ƒƒd d„|Dƒ¡| tˆ|jdd ƒƒd d„|Dƒ¡| tˆ|jdddƒƒd d„|Dƒ¡| tˆtj|dddƒƒ|¡| tˆtj|dddƒƒdd„|Dƒ¡dS)Nzdef f(x): return x + 1c3sP|d}|d}t|ttfƒrF|dd…D]}ˆ|ƒD] }|Vq6q*n|VdS)Nré)Ú isinstanceÚtupleÚlist)ÚtreeZ node_typeÚnextÚeltr©ÚwalkrrrF‡s  z8RoundtripLegalSyntaxTestCase.test_position..walk))r>Údefr>r)r>rr>é)éú(r>é)r>rr>é)éú)r>rI)é ú:r>rM)rHÚr>é )rKrQééÿÿÿÿ)r>ÚreturnrSrH)r>rrSrO)éú+rSé )rSÚ1rSé)rHrQrSé)rLrQrSrT)rHrQrSrT)rrQrSrTT)Ú line_infoÚcol_infocSsg|]\}}}}||f‘qSrr©Ú.0rÚnÚlÚcrrrÚ §óz>RoundtripLegalSyntaxTestCase.test_position..)r\cSsg|]\}}}}|||f‘qSrrr^rrrrc©rd)r]cSsg|]\}}}}|||f‘qSrrr^rrrrc«rdcSsg|] }t|ƒ‘qSr©rA©r_rrrrrc­rdcSsg|] }t|ƒ‘qSrrerfrrrrc³rd)rrr rArÚtolistZst2tupleZst2list)r r ÚstZexpectedrrErÚ test_positions:  ÿ ÿ ÿ ÿ ÿÿþÿ þz*RoundtripLegalSyntaxTestCase.test_positioncCs,| d¡| d¡| d¡| d¡dS)Nz*a = yz x, *b, = mz [*a, *b] = yzfor [*x, b] in x: passr#r$rrrÚtest_extended_unpackingµs   z4RoundtripLegalSyntaxTestCase.test_extended_unpackingcCs"| d¡| d¡| d¡dS)Nzraise zraise e zBtry: suite except Exception as e: raise ValueError from e r#r$rrrÚtest_raise_statement»s  z1RoundtripLegalSyntaxTestCase.test_raise_statementcCs| d¡| d¡dS)Nz[]z[*{2}, 3, *[4]]r+r$rrrÚtest_list_displaysÃs z/RoundtripLegalSyntaxTestCase.test_list_displayscCs6| d¡| d¡| d¡| d¡| d¡dS)Nz{*{2}, 3, *[4]}z{2}z{2,}z{2, 3}z{2, 3,}r+r$rrrÚtest_set_displaysÇs     z.RoundtripLegalSyntaxTestCase.test_set_displayscCsJ| d¡| d¡| d¡| d¡| d¡| d¡| d¡dS)Nz{}z{a:b}z{a:b,}z {a:b, c:d}z {a:b, c:d,}z{**{}}z{**{}, 3:4, **{5:6, 7:8}}r+r$rrrÚtest_dict_displaysÎs      z/RoundtripLegalSyntaxTestCase.test_dict_displayscCs6| d¡| d¡| d¡| d¡| d¡dS)Nz f(*a, **b)zf(a, *b, *c, *d)z f(**a, **b)zf(2, *a, *b, **b, **c, **d)z0f(*b, *() or () and (), **{} and {}, **() or {})r+r$rrrÚtest_argument_unpacking×s     z4RoundtripLegalSyntaxTestCase.test_argument_unpackingcCs"| d¡| d¡| d¡dS)Nz{x for x in seq}z{f(x) for x in seq}z#{f(x) for x in seq if condition(x)}r+r$rrrÚtest_set_comprehensionsÞs  z4RoundtripLegalSyntaxTestCase.test_set_comprehensionscCs"| d¡| d¡| d¡dS)Nz{x:x for x in seq}z({x**2:x[3] for x in seq if condition(x)}z4{x:x for x in seq1 for y in seq2 if condition(x, y)}r+r$rrrÚtest_dict_comprehensionsãs  z5RoundtripLegalSyntaxTestCase.test_dict_comprehensionscCs:| d¡| d¡| d¡| d¡| d¡| d¡| d¡| d¡| d ¡| d ¡| d ¡| d ¡| d ¡| d¡| d¡| d¡| d¡| d¡| d¡| d¡| d¡| d¡| d¡| d¡| d¡| d¡| d¡| d¡| d¡| d¡| d¡dS)Nz(a := 1)z(a := a)z0if (match := pattern.search(data)) is None: passz-while match := pattern.search(f.read()): passz[y := f(x), y**2, y**3]z8filtered_data = [y for x in data if (y := f(x)) is None]z (y := f(x))zy0 = (y1 := f(x))zfoo(x=(y := f(x)))zdef foo(answer=(p := 42)): passz$def foo(answer: (p := 42) = 5): passzlambda: (x := 1)z(x := lambda: 1)z(x := lambda: (y := 1))z:lambda line: (m := re.match(pattern, line)) and m.group(1)z x = (y := 0)z(z:=(y:=(x:=0)))z(info := (name, phone, *rest))z(x:=1,2)z(total := total + tax)zlen(lines := f.readlines())zfoo(x := 3, cat='vector')zfoo(cat=(category := 'vector'))zAif any(len(longline := l) >= 100 for l in lines): print(longline)zFif env_base := os.environ.get('PYTHONUSERBASE', None): return env_basezNif self._is_special and (ans := self._check_nans(context=context)): return anszfoo(b := 2, a=1)zfoo((b := 2), a=1)zfoo(c=(b := 2), a=1)z{(x := C(i)).q: x for i in y}r#r$rrrÚtest_named_expressionsèsF                        ÿÿ    z3RoundtripLegalSyntaxTestCase.test_named_expressionsN)%Ú__name__Ú __module__Ú __qualname__rrr!r"r%r&r'r(r)r,r.r/r2r3r4r5r6r7r8r9r:r;r<r=rirjrkrlrmrnrorprqrrrrrrrsD   +'Q   4 rc@sleZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dd„Z dd„ZdS)ÚIllegalSyntaxTestCasecCs6zt |¡Wntjy"Yn0| d|¡dS)Nz"did not detect invalid tree for %r)rr r r )r rBZlabelrrrÚcheck_bad_trees z$IllegalSyntaxTestCase.check_bad_treecCs| dd¡dS)N)r>rSéz©rwr$rrrÚ test_junkszIllegalSyntaxTestCase.test_junkcCsDd}| |d¡d}| |d¡d}| |d¡d}| |d¡dS) N)é)é )é)é)é)r>©rHrQr€©rrQz too small items in terminal node)r{)r|)r})r~)r)r>spassr€r€rz'non-string second item in terminal node)r{)r|)r})r~)r)r>ÚpassÚ0rr€r€rz'non-integer third item in terminal node)r{)r|)r})r~)r)r>r‚rrr€r€rztoo many items in terminal nodery©r rBrrrÚtest_illegal_terminal!sÿ ÿ ÿ ÿ z+IllegalSyntaxTestCase.test_illegal_terminalcCsd}| |d¡dS)N)r{©é)é)i)r>rG)r>r)i)rIrJ)rMrN)rOrP)é#r€)rKrQ)r‡)é )é )é)i)r>rU©i9)é$)é%)é&)é')é))é*)é+)é,)é-)é.)é/)é0)i1)rSrY)r‡)rŠ)r‹)rŒ)i)r>Úyieldrr€)rLrQr€rúdef f(): return 1 yield 1ryr„rrrÚtest_illegal_yield_1Osÿ3z*IllegalSyntaxTestCase.test_illegal_yield_1cCsd}| |d¡dS)N)r{)r‡)rŠ)r‹)i©r>Úfrom)i)r>Z __future__©r>Úimport)i)r>Ú generatorsr€r†r›ryr„rrrÚtest_illegal_yield_2†sÿr-©é ú,r¦)r£)r‰)rŽ)r)r‘)r¤)r’)r“)r”)r•)r–)r—)r˜)r>rbr€rza,,cryr„rrrÚtest_a_comma_comma_cÆsÿz*IllegalSyntaxTestCase.test_a_comma_comma_ccCsd}| |d¡dS)N)r{)r‡)rŠ)r‹)i )é8)r‰)rŽ)r)r)r¤)r’)r“)r”)r•)r–)r—)r˜)r™r¥)é )é%z$=)rª)r‰)rŽ)r)r)r¤)r’)r“)r”)r•)r–)r—)r˜)r™)r>Úbr€rza $= bryr„rrrÚtest_illegal_operatorásÿz+IllegalSyntaxTestCase.test_illegal_operatorcCsd}| |d¡dS)N)r{)r‡)rŠ)r‹)é)r>Zfoor€r€rzmalformed global astryr„rrrÚtest_malformed_globalsz+IllegalSyntaxTestCase.test_malformed_globalcCsd}| |d¡dS)N)r{)r«)r|)r})r¯)irrŸ)i)rˆ)r>Zfredr€r€rzfrom import fredryr„rrrÚtest_missing_import_source sÿ z0IllegalSyntaxTestCase.test_missing_import_sourcecCs\d}| |d¡d}| |d¡d}| t¡t |¡Wdƒn1sN0YdS)N)éU©r{rzmissed encoding)r²r³s iso-8859-1znon-string encoding)r²r³uí³¿)rwr0ÚUnicodeEncodeErrorrr r„rrrÚtest_illegal_encodingsÿ ÿ ÿ z+IllegalSyntaxTestCase.test_illegal_encodingcCs4d}| |d¡d}| |d¡d}| |d¡dS)N)r{)r|)iùÿÿÿrQznegative node id)r{)r|)écrQzinvalid token id)r{)r|)i'rzinvalid symbol idryr„rrrÚtest_invalid_node_id-s   z*IllegalSyntaxTestCase.test_invalid_node_idc CsZzt d¡WnFtjyT}z,| dt|ƒ¡| dt|ƒ¡WYd}~n d}~00dS)N)r{)r|r³Z compound_stmtZ file_input)rr r ÚassertInr)r rrrrÚtest_ParserError_message5s z.IllegalSyntaxTestCase.test_ParserError_messageN)rsrtrurwrzr…rœr¢r©r®r°r±rµr·r¹rrrrrvs.7@! rvc@s<eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd S)ÚCompileTestCasecCs(t d¡}t |¡}| t|ƒd¡dS)Nú2 + 3rK©rrÚ compilestr Úeval)r rhr rrrÚtest_compile_exprBs  z!CompileTestCase.test_compile_exprcCs6t d¡}t |¡}i}t||ƒ| |dd¡dS)Núx = 2; y = x + 3ÚyrK)rrr½rr )r rhr ZglobsrrrÚtest_compile_suiteGs    z"CompileTestCase.test_compile_suitecCst d¡}| ttj|¡dS)Nz 1 = 3 + 4©rrr0r1r½©r rhrrrÚtest_compile_errorNs z"CompileTestCase.test_compile_errorcCs8t d¡}| ttj|¡t d¡}| ttj|¡dS)Nza = "\U12345678"z a = "\u1"rÃrÄrrrÚtest_compile_badunicodeRs  z'CompileTestCase.test_compile_badunicodecCsBt d¡}t |¡}| t|ƒd¡t |¡}| t|ƒd¡dS)Nz-3éýÿÿÿr¼)r rhÚcode1Úcode2rrrÚtest_issue_9011Xs    zCompileTestCase.test_issue_9011c Cs>t d¡}t |¡}| |jd¡| ¡}| |jd¡dD]6}t ||¡}| |jd¡| |¡}| |jd¡q)úfile.pyófile.pyrËrÌ) rrr½r Ú co_filenamerÚ bytearrayÚ memoryviewZ assertWarnsÚDeprecationWarningr0Ú TypeErrorrA)r rhr ÚfilenamerrrÚtest_compile_filenamebs&     * (z%CompileTestCase.test_compile_filenameN) rsrtrur¿rÂrÅrÆrÊrÓrrrrrº>s  rºc@s(eZdZdZdd„Zdd„Zdd„ZdS) ÚParserStackLimitTestCasezitry to push the parser to/over its limits. see http://bugs.python.org/issue1881 for a discussion cCsd|d|S)Nú[ú]r)r ÚlevelrrrÚ_nested_expression|sz+ParserStackLimitTestCase._nested_expressioncCs | d¡}t |¡}| ¡dS)Nr¶)rØrrr)r ÚerhrrrÚtest_deeply_nested_lists  z0ParserStackLimitTestCase.test_deeply_nested_listcCs8| d¡}tdd|ƒ\}}}| d|¡| d|¡dS)Nédz -Xoldparserú-css_push: parser stack overflows MemoryError)rØrr¸)r rÙÚrcÚoutÚerrrrrÚtest_trigger_memory_error†s  z2ParserStackLimitTestCase.test_trigger_memory_errorN)rsrtruÚ__doc__rØrÚràrrrrrÔxsrÔc@s4eZdZdZdd„Zdd„ZejZejdd„ƒZ dS) ÚSTObjectTestCasez(Test operations on ST objects themselvesc Cst d¡}t d¡}t d¡}t d¡}t d¡}t d¡}| ||kd¡| ||kd¡| ||kd¡| ||¡| ||¡| ||¡| ||kd¡| ||kd¡| ||kd¡| ||kd¡| ||kd¡| ||kd¡| ||kd¡| ||kd¡| ||kd¡| ||kd¡| ||kd¡| ||kd¡| ||k||k ¡| ||k||k ¡| ||k||k ¡| ||k||k¡| ||k||k¡| ||k||k¡| ||k||k¡| ||k||k¡| ||k||k¡t|||ƒ}t|||ƒ}t|||gƒd} | || k¡| ||k¡| | |k¡| || k¡| ||k¡| | |k¡| ||k¡| | | k¡| ||k¡| |dkd¡| d|kd¡| t t j |d¡| t t j d|¡| t t j |d ¡| t t jd |¡dS) Nr»rÀr*TFr>g¹ëhÒ˜@zspanish armadaiswaterloo)rrrr ÚminÚmaxÚsortedZ assertTruer0rÑÚoperatorÚgeÚleÚltÚgt) r rrZst3Zst1_copyZst2_copyZst3_copyZbottomÚtopZmidrrrÚtest_comparisons‘sf           z!STObjectTestCase.test_comparisonscCs t d¡t d¡t d¡g}|D]z}t |¡}| | ¡| ¡¡t |¡}| | ¡| ¡¡ttj dƒD]*}t  t  ||¡¡}| | ¡| ¡¡qnq dS)Nr»rÀr*r>) rrrÚcopyr rÚdeepcopyÚrangeÚpickleÚHIGHEST_PROTOCOLÚloadsÚdumps)r ÚstsrhZst_copyÚprotorrrÚtest_copy_pickleÎsý  z!STObjectTestCase.test_copy_picklecs–dd„‰t d¡‰t d¡‰‡‡‡fdd„‰‡‡‡‡fdd„}|t d ¡ƒ|t d ¡ƒ|t d ¡ƒ|t d ¡ƒ|t d ¡ƒ|t d¡ƒdS)NcSs0|dkr |S|dkr |dd@Sd|d ¡>S)Nr>é€rxéüÿÿÿ)Ú bit_length)r`rrrÚ XXXROUNDUPás  z0STObjectTestCase.test_sizeof..XXXROUNDUPZPiiiZ hP3iP0h2ics|dur dSd}t|ƒdko(t|dtƒ}|rB|t|dƒd7}|rR|dd…n |dd…}|rŒ|ˆt|ƒƒˆ7}|D]}|ˆ|ƒ7}qz|S)Nrr>rT)Úlenr?r)ZnodeÚresÚhasstrZchildrenÚchild)rúÚnodesizeÚsizeofchildrenrrrêsz4STObjectTestCase.test_sizeof..sizeofchildrencs ˆ |ˆˆˆ| ¡ƒ¡dSr)Ú check_sizeofr)rh)Úbasesizerÿr rrrÚcheck_st_sizeoføs  ÿz5STObjectTestCase.test_sizeof..check_st_sizeofr»z 2 + 3 + 4z x = 2 + 3rQz# -*- coding: utf-8 -*-aÒ[2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,])rZ calcobjsizeÚstructÚcalcsizerrr)r rr)rúrrÿr rrÚ test_sizeofßs  zSTObjectTestCase.test_sizeofN) rsrtrurárìrörrZ cpython_onlyrrrrrrâŽs =râc@seZdZdd„ZdS)ÚOtherParserCasecCs:| t¡t dd¡Wdƒn1s,0YdS)Nr-r­)r0rÑrrr$rrrÚtest_two_args_to_exprs z%OtherParserCase.test_two_args_to_exprN)rsrtrurrrrrrsrc@seZdZdd„ZdS)ÚTestDeprecationcCs$d}td|ƒ\}}}| d|¡dS)Nzdef f(): import parser f()rÜs:2: DeprecationWarning)rr¸)r r rÝrÞrßrrrÚtest_deprecation_messagesz(TestDeprecation.test_deprecation_messageN)rsrtrur rrrrr sr Ú__main__)ríÚwarningsÚcatch_warningsÚfilterwarningsrÐrrðZunittestrærÚtestrZtest.support.script_helperrrZTestCaserrvrºrÔrârr rsÚmainrrrrÚs8 ÿ&   -:x