python (3.11.7)

(root)/
lib/
python3.11/
test/
__pycache__/
test_tokenize.cpython-311.opt-1.pyc

e'RddlmZddlmZddlmZmZmZmZmZm	Z	m
Z
mZmZm
Z
mZmZmZmZmZmZmZddlmZmZddlZddlmZddlmZmZddlmZm Z ddlmZdd	l!m"Z"m#Z#ddl$Z$ddl%Z%d
Z&GddeZ'Gd
de'Z(dZ)GddeZ*GddeZ+GddeZ,GddeZ-GddeZ.GddeZ/GddeZ0GddeZ1Gd d!ejZ2e3d"krej4dSdS)#)support)	os_helper)tokenize	_tokenize
untokenizeNUMBERNAMEOPSTRING	ENDMARKERENCODINGtok_namedetect_encodingopenUntokenizergenerate_tokensNEWLINE!_generate_tokens_from_c_tokenizerDEDENT)BytesIOStringION)dedent)TestCasemock)VALID_UNDERSCORE_LITERALSINVALID_UNDERSCORE_LITERALS)run_test_scriptmake_scriptc$g}t|}|ddv}|D]_\}}}}}	|tkrnK|r|tkr
|d|kr/t|}|d|dd|dd|d|`|S)Nz
r    10 13)len
splitlinesrrrappend)
token_generator
source_stringresult	num_linesmissing_trailing_nltypetokenstartendlines
          F/BuggyBox/python/3.11.7/bootstrap/lib/python3.11/test/test_tokenize.pystringify_tokens_from_sourcer3s
FM,,..//I'+69)8CC%eUC9E	47??s1v7J7J~

ATAAAuAAAEAACAABBBBMceZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZdZdZdZdZdZdZdZdS)TokenizeTestc
t|d}tt|j|}||dg|zdS)Nutf-8z*    ENCODING   'utf-8'       (0, 0) (0, 0))rencoder3rreadlineassertEqualrstripr&selfsexpectedfr*s     r2check_tokenizezTokenizeTest.check_tokenize-s~
AHHW%%&&-hqz.B.BAFFFG!**55778	9	9	9	9	9r4c$tdd}tt|j}||djt||djtdS)Nxr8r )	rr9listrr:r;r-rr)r>rAtokenss   r2test_implicit_newlinez"TokenizeTest.test_implicit_newline6sr
CJJw''((hqz**++'222)44444r4c|dd|ddd}t|j}|td5t|D]}	ddddS#1swxYwYdS)Nz1 + 1z    NUMBER     '1'           (1, 0) (1, 1)
    OP         '+'           (1, 2) (1, 3)
    NUMBER     '1'           (1, 4) (1, 5)
    z3if False:
    # NL
    
    True = False # NEWLINE
af    NAME       'if'          (1, 0) (1, 2)
    NAME       'False'       (1, 3) (1, 8)
    OP         ':'           (1, 8) (1, 9)
    NEWLINE    '\n'          (1, 9) (1, 10)
    COMMENT    '# NL'        (2, 4) (2, 8)
    NL         '\n'          (2, 8) (2, 9)
    NL         '\n'          (3, 4) (3, 5)
    INDENT     '    '        (4, 0) (4, 4)
    NAME       'True'        (4, 4) (4, 8)
    OP         '='           (4, 9) (4, 10)
    NAME       'False'       (4, 11) (4, 16)
    COMMENT    '# NEWLINE'   (4, 17) (4, 26)
    NEWLINE    '\n'          (4, 26) (4, 27)
    DEDENT     ''            (5, 0) (5, 0)
    sdef k(x):
    x += 2
  x += 5
z3unindent does not match any outer indentation level)rBrr:assertRaisesRegexIndentationErrorr)r>indent_error_filer:toks    r2
test_basiczTokenizeTest.test_basic>sG&						
	
;=						&
,--6

#
#$4%>??		 ))


																		sA??BBc|dd|dd|dd|dd|d	d
|dd|d
d|dd|dddS)N0xff <= 255z    NUMBER     '0xff'        (1, 0) (1, 4)
    OP         '<='          (1, 5) (1, 7)
    NUMBER     '255'         (1, 8) (1, 11)
    0b10 <= 255z    NUMBER     '0b10'        (1, 0) (1, 4)
    OP         '<='          (1, 5) (1, 7)
    NUMBER     '255'         (1, 8) (1, 11)
    0o123 <= 0O123z    NUMBER     '0o123'       (1, 0) (1, 5)
    OP         '<='          (1, 6) (1, 8)
    NUMBER     '0O123'       (1, 9) (1, 14)
    1234567 > ~0x15z    NUMBER     '1234567'     (1, 0) (1, 7)
    OP         '>'           (1, 8) (1, 9)
    OP         '~'           (1, 10) (1, 11)
    NUMBER     '0x15'        (1, 11) (1, 15)
    2134568 != 1231515z    NUMBER     '2134568'     (1, 0) (1, 7)
    OP         '!='          (1, 8) (1, 10)
    NUMBER     '1231515'     (1, 11) (1, 18)
    (-124561-1) & 200000000ac    OP         '('           (1, 0) (1, 1)
    OP         '-'           (1, 1) (1, 2)
    NUMBER     '124561'      (1, 2) (1, 8)
    OP         '-'           (1, 8) (1, 9)
    NUMBER     '1'           (1, 9) (1, 10)
    OP         ')'           (1, 10) (1, 11)
    OP         '&'           (1, 12) (1, 13)
    NUMBER     '200000000'   (1, 14) (1, 23)
    0xdeadbeef != -1z    NUMBER     '0xdeadbeef'  (1, 0) (1, 10)
    OP         '!='          (1, 11) (1, 13)
    OP         '-'           (1, 14) (1, 15)
    NUMBER     '1'           (1, 15) (1, 16)
    0xdeadc0de & 12345z    NUMBER     '0xdeadc0de'  (1, 0) (1, 10)
    OP         '&'           (1, 11) (1, 12)
    NUMBER     '12345'       (1, 13) (1, 18)
    0xFF & 0x15 | 1234z    NUMBER     '0xFF'        (1, 0) (1, 4)
    OP         '&'           (1, 5) (1, 6)
    NUMBER     '0x15'        (1, 7) (1, 11)
    OP         '|'           (1, 12) (1, 13)
    NUMBER     '1234'        (1, 14) (1, 18)
    rBr>s r2test_intzTokenizeTest.test_intcs:M,						
	
M,						
	
,/						
	
-0							
03						
	
5	8										
.1							
03						
	
03										r4c|dd|dd|dd|dddS)	Nzx = 0z    NAME       'x'           (1, 0) (1, 1)
    OP         '='           (1, 2) (1, 3)
    NUMBER     '0'           (1, 4) (1, 5)
    zx = 0xfffffffffffz    NAME       'x'           (1, 0) (1, 1)
    OP         '='           (1, 2) (1, 3)
    NUMBER     '0xfffffffffff' (1, 4) (1, 17)
    zx = 123141242151251616110z    NAME       'x'           (1, 0) (1, 1)
    OP         '='           (1, 2) (1, 3)
    NUMBER     '123141242151251616110' (1, 4) (1, 25)
    zx = -15921590215012591z    NAME       'x'           (1, 0) (1, 1)
    OP         '='           (1, 2) (1, 3)
    OP         '-'           (1, 4) (1, 5)
    NUMBER     '15921590215012591' (1, 5) (1, 22)
    rYrZs r2	test_longzTokenizeTest.test_longsG&						
	
/2						
	
7:						
	
47										r4c:|dd|dd|dd|dd|d	d
|dd|d
ddS)Nx = 3.14159z    NAME       'x'           (1, 0) (1, 1)
    OP         '='           (1, 2) (1, 3)
    NUMBER     '3.14159'     (1, 4) (1, 11)
    x = 314159.z    NAME       'x'           (1, 0) (1, 1)
    OP         '='           (1, 2) (1, 3)
    NUMBER     '314159.'     (1, 4) (1, 11)
    x = .314159z    NAME       'x'           (1, 0) (1, 1)
    OP         '='           (1, 2) (1, 3)
    NUMBER     '.314159'     (1, 4) (1, 11)
    x = 3e14159z    NAME       'x'           (1, 0) (1, 1)
    OP         '='           (1, 2) (1, 3)
    NUMBER     '3e14159'     (1, 4) (1, 11)
    	x = 3E123z    NAME       'x'           (1, 0) (1, 1)
    OP         '='           (1, 2) (1, 3)
    NUMBER     '3E123'       (1, 4) (1, 9)
    
x+y = 3e-1230z    NAME       'x'           (1, 0) (1, 1)
    OP         '+'           (1, 1) (1, 2)
    NAME       'y'           (1, 2) (1, 3)
    OP         '='           (1, 4) (1, 5)
    NUMBER     '3e-1230'     (1, 6) (1, 13)
    x = 3.14e159z    NAME       'x'           (1, 0) (1, 1)
    OP         '='           (1, 2) (1, 3)
    NUMBER     '3.14e159'    (1, 4) (1, 12)
    rYrZs r2
test_floatzTokenizeTest.test_floatsM,						
	
M,						
	
M,						
	
M,						
	
K*						
	
O.							
N-										r4cd}tD]&}d|vr||||'tD]!}||||"dS)Nct|d}t|jD]\}}}}}|tkr|cSdS)Nr8z
invalid token)rr9rr:r)r?rAtoktyper.r/r0r1s       r2number_tokenz;TokenizeTest.test_underscore_literals.<locals>.number_tokens]))**A4<QZ4H4H
!
!0sDf$$ LLL%"?r4()rr;rassertNotEqual)r>rjlits   r2test_underscore_literalsz%TokenizeTest.test_underscore_literalss	#	#	#-	5	5Cczz\\#..4444.	8	8CS 1 137777	8	8r4c~|dd|dd|dd|dd|d	d
|dd|d
d|dd|dd|dd|dd|dd|dd|dd|dd|dd |d!d"|d#d$|d%d&|d'd(|d)d*|d+d,|d-d.|d/d0|d1d2|d3d4dS)5Nx = ''; y = ""a5    NAME       'x'           (1, 0) (1, 1)
    OP         '='           (1, 2) (1, 3)
    STRING     "''"          (1, 4) (1, 6)
    OP         ';'           (1, 6) (1, 7)
    NAME       'y'           (1, 8) (1, 9)
    OP         '='           (1, 10) (1, 11)
    STRING     '""'          (1, 12) (1, 14)
    x = '"'; y = "'"a6    NAME       'x'           (1, 0) (1, 1)
    OP         '='           (1, 2) (1, 3)
    STRING     '\'"\''       (1, 4) (1, 7)
    OP         ';'           (1, 7) (1, 8)
    NAME       'y'           (1, 9) (1, 10)
    OP         '='           (1, 11) (1, 12)
    STRING     '"\'"'        (1, 13) (1, 16)
    x = "doesn't "shrink", does it"z    NAME       'x'           (1, 0) (1, 1)
    OP         '='           (1, 2) (1, 3)
    STRING     '"doesn\'t "' (1, 4) (1, 14)
    NAME       'shrink'      (1, 14) (1, 20)
    STRING     '", does it"' (1, 20) (1, 31)
    x = 'abc' + 'ABC'z    NAME       'x'           (1, 0) (1, 1)
    OP         '='           (1, 2) (1, 3)
    STRING     "'abc'"       (1, 4) (1, 9)
    OP         '+'           (1, 10) (1, 11)
    STRING     "'ABC'"       (1, 12) (1, 17)
    y = "ABC" + "ABC"z    NAME       'y'           (1, 0) (1, 1)
    OP         '='           (1, 2) (1, 3)
    STRING     '"ABC"'       (1, 4) (1, 9)
    OP         '+'           (1, 10) (1, 11)
    STRING     '"ABC"'       (1, 12) (1, 17)
    %x = r'abc' + r'ABC' + R'ABC' + R'ABC'a    NAME       'x'           (1, 0) (1, 1)
    OP         '='           (1, 2) (1, 3)
    STRING     "r'abc'"      (1, 4) (1, 10)
    OP         '+'           (1, 11) (1, 12)
    STRING     "r'ABC'"      (1, 13) (1, 19)
    OP         '+'           (1, 20) (1, 21)
    STRING     "R'ABC'"      (1, 22) (1, 28)
    OP         '+'           (1, 29) (1, 30)
    STRING     "R'ABC'"      (1, 31) (1, 37)
    %y = r"abc" + r"ABC" + R"ABC" + R"ABC"a    NAME       'y'           (1, 0) (1, 1)
    OP         '='           (1, 2) (1, 3)
    STRING     'r"abc"'      (1, 4) (1, 10)
    OP         '+'           (1, 11) (1, 12)
    STRING     'r"ABC"'      (1, 13) (1, 19)
    OP         '+'           (1, 20) (1, 21)
    STRING     'R"ABC"'      (1, 22) (1, 28)
    OP         '+'           (1, 29) (1, 30)
    STRING     'R"ABC"'      (1, 31) (1, 37)
    u'abc' + U'abc'z    STRING     "u'abc'"      (1, 0) (1, 6)
    OP         '+'           (1, 7) (1, 8)
    STRING     "U'abc'"      (1, 9) (1, 15)
    u"abc" + U"abc"z    STRING     'u"abc"'      (1, 0) (1, 6)
    OP         '+'           (1, 7) (1, 8)
    STRING     'U"abc"'      (1, 9) (1, 15)
    b'abc' + B'abc'z    STRING     "b'abc'"      (1, 0) (1, 6)
    OP         '+'           (1, 7) (1, 8)
    STRING     "B'abc'"      (1, 9) (1, 15)
    b"abc" + B"abc"z    STRING     'b"abc"'      (1, 0) (1, 6)
    OP         '+'           (1, 7) (1, 8)
    STRING     'B"abc"'      (1, 9) (1, 15)
    %br'abc' + bR'abc' + Br'abc' + BR'abc'a;    STRING     "br'abc'"     (1, 0) (1, 7)
    OP         '+'           (1, 8) (1, 9)
    STRING     "bR'abc'"     (1, 10) (1, 17)
    OP         '+'           (1, 18) (1, 19)
    STRING     "Br'abc'"     (1, 20) (1, 27)
    OP         '+'           (1, 28) (1, 29)
    STRING     "BR'abc'"     (1, 30) (1, 37)
    %br"abc" + bR"abc" + Br"abc" + BR"abc"a;    STRING     'br"abc"'     (1, 0) (1, 7)
    OP         '+'           (1, 8) (1, 9)
    STRING     'bR"abc"'     (1, 10) (1, 17)
    OP         '+'           (1, 18) (1, 19)
    STRING     'Br"abc"'     (1, 20) (1, 27)
    OP         '+'           (1, 28) (1, 29)
    STRING     'BR"abc"'     (1, 30) (1, 37)
    %rb'abc' + rB'abc' + Rb'abc' + RB'abc'a;    STRING     "rb'abc'"     (1, 0) (1, 7)
    OP         '+'           (1, 8) (1, 9)
    STRING     "rB'abc'"     (1, 10) (1, 17)
    OP         '+'           (1, 18) (1, 19)
    STRING     "Rb'abc'"     (1, 20) (1, 27)
    OP         '+'           (1, 28) (1, 29)
    STRING     "RB'abc'"     (1, 30) (1, 37)
    %rb"abc" + rB"abc" + Rb"abc" + RB"abc"a;    STRING     'rb"abc"'     (1, 0) (1, 7)
    OP         '+'           (1, 8) (1, 9)
    STRING     'rB"abc"'     (1, 10) (1, 17)
    OP         '+'           (1, 18) (1, 19)
    STRING     'Rb"abc"'     (1, 20) (1, 27)
    OP         '+'           (1, 28) (1, 29)
    STRING     'RB"abc"'     (1, 30) (1, 37)
    "a\
de\
fg"3    STRING     '"a\\\nde\\\nfg"' (1, 0) (3, 3)
    u"a\
de"/    STRING     'u"a\\\nde"'  (1, 0) (2, 3)
    rb"a\
d"/    STRING     'rb"a\\\nd"'  (1, 0) (2, 2)
    
"""a\
b"""0    STRING     '"""a\\\nb"""' (1, 0) (2, 4)
    u"""a\
b"""1    STRING     'u"""a\\\nb"""' (1, 0) (2, 4)
    rb"""a\
b\
c"""7    STRING     'rb"""a\\\nb\\\nc"""' (1, 0) (3, 4)
    f"abc"/    STRING     'f"abc"'      (1, 0) (1, 6)
    	fR"a{b}c"/    STRING     'fR"a{b}c"'   (1, 0) (1, 9)
    
f"""abc"""0    STRING     'f"""abc"""'  (1, 0) (1, 10)
    f"abc\
def"1    STRING     'f"abc\\\ndef"' (1, 0) (2, 4)
    Rf"abc\
def"2    STRING     'Rf"abc\\\ndef"' (1, 0) (2, 4)
    rYrZs r2test_stringzTokenizeTest.test_strings.1							
14							
AD							
/2							
/2							
C
F
		
		
			
C
F
		
		
			
-0						
	
-0							
-0						
	
-0						
	
CF							
CF							
CF							
CF							
						
	
							
							
							
							
						
	
H'							
K*							
L+							
							
										r4c|dd|dd|dddS)N!def d22(a, b, c=2, d=2, *k): passa    NAME       'def'         (1, 0) (1, 3)
    NAME       'd22'         (1, 4) (1, 7)
    OP         '('           (1, 7) (1, 8)
    NAME       'a'           (1, 8) (1, 9)
    OP         ','           (1, 9) (1, 10)
    NAME       'b'           (1, 11) (1, 12)
    OP         ','           (1, 12) (1, 13)
    NAME       'c'           (1, 14) (1, 15)
    OP         '='           (1, 15) (1, 16)
    NUMBER     '2'           (1, 16) (1, 17)
    OP         ','           (1, 17) (1, 18)
    NAME       'd'           (1, 19) (1, 20)
    OP         '='           (1, 20) (1, 21)
    NUMBER     '2'           (1, 21) (1, 22)
    OP         ','           (1, 22) (1, 23)
    OP         '*'           (1, 24) (1, 25)
    NAME       'k'           (1, 25) (1, 26)
    OP         ')'           (1, 26) (1, 27)
    OP         ':'           (1, 27) (1, 28)
    NAME       'pass'        (1, 29) (1, 33)
    def d01v_(a=1, *k, **w): passa    NAME       'def'         (1, 0) (1, 3)
    NAME       'd01v_'       (1, 4) (1, 9)
    OP         '('           (1, 9) (1, 10)
    NAME       'a'           (1, 10) (1, 11)
    OP         '='           (1, 11) (1, 12)
    NUMBER     '1'           (1, 12) (1, 13)
    OP         ','           (1, 13) (1, 14)
    OP         '*'           (1, 15) (1, 16)
    NAME       'k'           (1, 16) (1, 17)
    OP         ','           (1, 17) (1, 18)
    OP         '**'          (1, 19) (1, 21)
    NAME       'w'           (1, 21) (1, 22)
    OP         ')'           (1, 22) (1, 23)
    OP         ':'           (1, 23) (1, 24)
    NAME       'pass'        (1, 25) (1, 29)
    &def d23(a: str, b: int=3) -> int: passa    NAME       'def'         (1, 0) (1, 3)
    NAME       'd23'         (1, 4) (1, 7)
    OP         '('           (1, 7) (1, 8)
    NAME       'a'           (1, 8) (1, 9)
    OP         ':'           (1, 9) (1, 10)
    NAME       'str'         (1, 11) (1, 14)
    OP         ','           (1, 14) (1, 15)
    NAME       'b'           (1, 16) (1, 17)
    OP         ':'           (1, 17) (1, 18)
    NAME       'int'         (1, 19) (1, 22)
    OP         '='           (1, 22) (1, 23)
    NUMBER     '3'           (1, 23) (1, 24)
    OP         ')'           (1, 24) (1, 25)
    OP         '->'          (1, 26) (1, 28)
    NAME       'int'         (1, 29) (1, 32)
    OP         ':'           (1, 32) (1, 33)
    NAME       'pass'        (1, 34) (1, 38)
    rYrZs r2
test_functionzTokenizeTest.test_functionsr?B						,	
;>						"	
DG										r4c2|dddS)NXif 1 < 1 > 1 == 1 >= 5 <= 0x15 <= 0x12 != 1 and 5 in 1 not in 1 is 1 or 5 is not 1: passa    NAME       'if'          (1, 0) (1, 2)
    NUMBER     '1'           (1, 3) (1, 4)
    OP         '<'           (1, 5) (1, 6)
    NUMBER     '1'           (1, 7) (1, 8)
    OP         '>'           (1, 9) (1, 10)
    NUMBER     '1'           (1, 11) (1, 12)
    OP         '=='          (1, 13) (1, 15)
    NUMBER     '1'           (1, 16) (1, 17)
    OP         '>='          (1, 18) (1, 20)
    NUMBER     '5'           (1, 21) (1, 22)
    OP         '<='          (1, 23) (1, 25)
    NUMBER     '0x15'        (1, 26) (1, 30)
    OP         '<='          (1, 31) (1, 33)
    NUMBER     '0x12'        (1, 34) (1, 38)
    OP         '!='          (1, 39) (1, 41)
    NUMBER     '1'           (1, 42) (1, 43)
    NAME       'and'         (1, 44) (1, 47)
    NUMBER     '5'           (1, 48) (1, 49)
    NAME       'in'          (1, 50) (1, 52)
    NUMBER     '1'           (1, 53) (1, 54)
    NAME       'not'         (1, 55) (1, 58)
    NAME       'in'          (1, 59) (1, 61)
    NUMBER     '1'           (1, 62) (1, 63)
    NAME       'is'          (1, 64) (1, 66)
    NUMBER     '1'           (1, 67) (1, 68)
    NAME       'or'          (1, 69) (1, 71)
    NUMBER     '5'           (1, 72) (1, 73)
    NAME       'is'          (1, 74) (1, 76)
    NAME       'not'         (1, 77) (1, 80)
    NUMBER     '1'           (1, 81) (1, 82)
    OP         ':'           (1, 82) (1, 83)
    NAME       'pass'        (1, 84) (1, 88)
    rYrZs r2test_comparisonzTokenizeTest.test_comparison0M!O"		"		"		"		"		r4c2|dddS)Nzx = 1 << 1 >> 5a6    NAME       'x'           (1, 0) (1, 1)
    OP         '='           (1, 2) (1, 3)
    NUMBER     '1'           (1, 4) (1, 5)
    OP         '<<'          (1, 6) (1, 8)
    NUMBER     '1'           (1, 9) (1, 10)
    OP         '>>'          (1, 11) (1, 13)
    NUMBER     '5'           (1, 14) (1, 15)
    rYrZs r2
test_shiftzTokenizeTest.test_shifts,-0										r4c2|dddS)N%x = 1 - y + 15 - 1 + 0x124 + z + a[5]a$    NAME       'x'           (1, 0) (1, 1)
    OP         '='           (1, 2) (1, 3)
    NUMBER     '1'           (1, 4) (1, 5)
    OP         '-'           (1, 6) (1, 7)
    NAME       'y'           (1, 8) (1, 9)
    OP         '+'           (1, 10) (1, 11)
    NUMBER     '15'          (1, 12) (1, 14)
    OP         '-'           (1, 15) (1, 16)
    NUMBER     '1'           (1, 17) (1, 18)
    OP         '+'           (1, 19) (1, 20)
    NUMBER     '0x124'       (1, 21) (1, 26)
    OP         '+'           (1, 27) (1, 28)
    NAME       'z'           (1, 29) (1, 30)
    OP         '+'           (1, 31) (1, 32)
    NAME       'a'           (1, 33) (1, 34)
    OP         '['           (1, 34) (1, 35)
    NUMBER     '5'           (1, 35) (1, 36)
    OP         ']'           (1, 36) (1, 37)
    rYrZs r2
test_additivezTokenizeTest.test_additive-CF										r4c2|dddS)Nx = 1//1*1/5*12%0x12@42a    NAME       'x'           (1, 0) (1, 1)
    OP         '='           (1, 2) (1, 3)
    NUMBER     '1'           (1, 4) (1, 5)
    OP         '//'          (1, 5) (1, 7)
    NUMBER     '1'           (1, 7) (1, 8)
    OP         '*'           (1, 8) (1, 9)
    NUMBER     '1'           (1, 9) (1, 10)
    OP         '/'           (1, 10) (1, 11)
    NUMBER     '5'           (1, 11) (1, 12)
    OP         '*'           (1, 12) (1, 13)
    NUMBER     '12'          (1, 13) (1, 15)
    OP         '%'           (1, 15) (1, 16)
    NUMBER     '0x12'        (1, 16) (1, 20)
    OP         '@'           (1, 20) (1, 21)
    NUMBER     '42'          (1, 21) (1, 23)
    rYrZs r2test_multiplicativez TokenizeTest.test_multiplicative,58										r4c^|dd|dddS)N~1 ^ 1 & 1 |1 ^ -1a    OP         '~'           (1, 0) (1, 1)
    NUMBER     '1'           (1, 1) (1, 2)
    OP         '^'           (1, 3) (1, 4)
    NUMBER     '1'           (1, 5) (1, 6)
    OP         '&'           (1, 7) (1, 8)
    NUMBER     '1'           (1, 9) (1, 10)
    OP         '|'           (1, 11) (1, 12)
    NUMBER     '1'           (1, 12) (1, 13)
    OP         '^'           (1, 14) (1, 15)
    OP         '-'           (1, 16) (1, 17)
    NUMBER     '1'           (1, 17) (1, 18)
    -1*1/1+1*1//1 - ---1**1aH    OP         '-'           (1, 0) (1, 1)
    NUMBER     '1'           (1, 1) (1, 2)
    OP         '*'           (1, 2) (1, 3)
    NUMBER     '1'           (1, 3) (1, 4)
    OP         '/'           (1, 4) (1, 5)
    NUMBER     '1'           (1, 5) (1, 6)
    OP         '+'           (1, 6) (1, 7)
    NUMBER     '1'           (1, 7) (1, 8)
    OP         '*'           (1, 8) (1, 9)
    NUMBER     '1'           (1, 9) (1, 10)
    OP         '//'          (1, 10) (1, 12)
    NUMBER     '1'           (1, 12) (1, 13)
    OP         '-'           (1, 14) (1, 15)
    OP         '-'           (1, 16) (1, 17)
    OP         '-'           (1, 17) (1, 18)
    OP         '-'           (1, 18) (1, 19)
    NUMBER     '1'           (1, 19) (1, 20)
    OP         '**'          (1, 20) (1, 22)
    NUMBER     '1'           (1, 22) (1, 23)
    rYrZs r2
test_unaryzTokenizeTest.test_unary*sN03							
58										r4c2|dddS)N/import sys, time
x = sys.modules['time'].time()a    NAME       'import'      (1, 0) (1, 6)
    NAME       'sys'         (1, 7) (1, 10)
    OP         ','           (1, 10) (1, 11)
    NAME       'time'        (1, 12) (1, 16)
    NEWLINE    '\n'          (1, 16) (1, 17)
    NAME       'x'           (2, 0) (2, 1)
    OP         '='           (2, 2) (2, 3)
    NAME       'sys'         (2, 4) (2, 7)
    OP         '.'           (2, 7) (2, 8)
    NAME       'modules'     (2, 8) (2, 15)
    OP         '['           (2, 15) (2, 16)
    STRING     "'time'"      (2, 16) (2, 22)
    OP         ']'           (2, 22) (2, 23)
    OP         '.'           (2, 23) (2, 24)
    NAME       'time'        (2, 24) (2, 28)
    OP         '('           (2, 28) (2, 29)
    OP         ')'           (2, 29) (2, 30)
    rYrZs r2
test_selectorzTokenizeTest.test_selectorO-NQ										r4c2|dddS)N @staticmethod
def foo(x,y): passa    OP         '@'           (1, 0) (1, 1)
    NAME       'staticmethod' (1, 1) (1, 13)
    NEWLINE    '\n'          (1, 13) (1, 14)
    NAME       'def'         (2, 0) (2, 3)
    NAME       'foo'         (2, 4) (2, 7)
    OP         '('           (2, 7) (2, 8)
    NAME       'x'           (2, 8) (2, 9)
    OP         ','           (2, 9) (2, 10)
    NAME       'y'           (2, 10) (2, 11)
    OP         ')'           (2, 11) (2, 12)
    OP         ':'           (2, 12) (2, 13)
    NAME       'pass'        (2, 14) (2, 18)
    rYrZs r2test_methodzTokenizeTest.test_methode-?
B
		
		
		
		
		r4c2|dddS)Nzdef f():
	if x
        	passa_    NAME       'def'         (1, 0) (1, 3)
    NAME       'f'           (1, 4) (1, 5)
    OP         '('           (1, 5) (1, 6)
    OP         ')'           (1, 6) (1, 7)
    OP         ':'           (1, 7) (1, 8)
    NEWLINE    '\n'          (1, 8) (1, 9)
    INDENT     '\t'          (2, 0) (2, 1)
    NAME       'if'          (2, 1) (2, 3)
    NAME       'x'           (2, 4) (2, 5)
    NEWLINE    '\n'          (2, 5) (2, 6)
    INDENT     '        \t'  (3, 0) (3, 9)
    NAME       'pass'        (3, 9) (3, 13)
    DEDENT     ''            (4, 0) (4, 0)
    DEDENT     ''            (4, 0) (4, 0)
    rYrZs r2	test_tabszTokenizeTest.test_tabsvs.-/										r4c2|dddS)Nu!Örter = 'places'
grün = 'green'u7    NAME       'Örter'       (1, 0) (1, 5)
    OP         '='           (1, 6) (1, 7)
    STRING     "'places'"    (1, 8) (1, 16)
    NEWLINE    '\n'          (1, 16) (1, 17)
    NAME       'grün'        (2, 0) (2, 4)
    OP         '='           (2, 5) (2, 6)
    STRING     "'green'"     (2, 7) (2, 14)
    rYrZs r2test_non_ascii_identifiersz'TokenizeTest.test_non_ascii_identifierss-@C										r4c2|dddS)N#Örter = u'places'
grün = U'green'u7    NAME       'Örter'       (1, 0) (1, 5)
    OP         '='           (1, 6) (1, 7)
    STRING     "u'places'"   (1, 8) (1, 17)
    NEWLINE    '\n'          (1, 17) (1, 18)
    NAME       'grün'        (2, 0) (2, 4)
    OP         '='           (2, 5) (2, 6)
    STRING     "U'green'"    (2, 7) (2, 15)
    rYrZs r2test_unicodezTokenizeTest.test_unicode-BE										r4c|dd|dd|dd|dd|d	d
|dd|d
d|dd|dd|dd|dd|dd|dd|dd|dd|dd |d!d"|d#d$|d%d&|d'd(|d)d*dS)+N	async = 1z    NAME       'async'       (1, 0) (1, 5)
    OP         '='           (1, 6) (1, 7)
    NUMBER     '1'           (1, 8) (1, 9)
    a = (async = 1)a8    NAME       'a'           (1, 0) (1, 1)
    OP         '='           (1, 2) (1, 3)
    OP         '('           (1, 4) (1, 5)
    NAME       'async'       (1, 5) (1, 10)
    OP         '='           (1, 11) (1, 12)
    NUMBER     '1'           (1, 13) (1, 14)
    OP         ')'           (1, 14) (1, 15)
    async()z    NAME       'async'       (1, 0) (1, 5)
    OP         '('           (1, 5) (1, 6)
    OP         ')'           (1, 6) (1, 7)
    class async(Bar):passa<    NAME       'class'       (1, 0) (1, 5)
    NAME       'async'       (1, 6) (1, 11)
    OP         '('           (1, 11) (1, 12)
    NAME       'Bar'         (1, 12) (1, 15)
    OP         ')'           (1, 15) (1, 16)
    OP         ':'           (1, 16) (1, 17)
    NAME       'pass'        (1, 17) (1, 21)
    class async:passz    NAME       'class'       (1, 0) (1, 5)
    NAME       'async'       (1, 6) (1, 11)
    OP         ':'           (1, 11) (1, 12)
    NAME       'pass'        (1, 12) (1, 16)
    	await = 1z    NAME       'await'       (1, 0) (1, 5)
    OP         '='           (1, 6) (1, 7)
    NUMBER     '1'           (1, 8) (1, 9)
    	foo.asyncz    NAME       'foo'         (1, 0) (1, 3)
    OP         '.'           (1, 3) (1, 4)
    NAME       'async'       (1, 4) (1, 9)
    async for a in b: passa;    NAME       'async'       (1, 0) (1, 5)
    NAME       'for'         (1, 6) (1, 9)
    NAME       'a'           (1, 10) (1, 11)
    NAME       'in'          (1, 12) (1, 14)
    NAME       'b'           (1, 15) (1, 16)
    OP         ':'           (1, 16) (1, 17)
    NAME       'pass'        (1, 18) (1, 22)
    async with a as b: passa<    NAME       'async'       (1, 0) (1, 5)
    NAME       'with'        (1, 6) (1, 10)
    NAME       'a'           (1, 11) (1, 12)
    NAME       'as'          (1, 13) (1, 15)
    NAME       'b'           (1, 16) (1, 17)
    OP         ':'           (1, 17) (1, 18)
    NAME       'pass'        (1, 19) (1, 23)
    	async.fooz    NAME       'async'       (1, 0) (1, 5)
    OP         '.'           (1, 5) (1, 6)
    NAME       'foo'         (1, 6) (1, 9)
    asyncz/    NAME       'async'       (1, 0) (1, 5)
    async
#comment
awaitz    NAME       'async'       (1, 0) (1, 5)
    NEWLINE    '\n'          (1, 5) (1, 6)
    COMMENT    '#comment'    (2, 0) (2, 8)
    NL         '\n'          (2, 8) (2, 9)
    NAME       'await'       (3, 0) (3, 5)
    async
...
awaitz    NAME       'async'       (1, 0) (1, 5)
    NEWLINE    '\n'          (1, 5) (1, 6)
    OP         '...'         (2, 0) (2, 3)
    NEWLINE    '\n'          (2, 3) (2, 4)
    NAME       'await'       (3, 0) (3, 5)
    async
awaitz    NAME       'async'       (1, 0) (1, 5)
    NEWLINE    '\n'          (1, 5) (1, 6)
    NAME       'await'       (2, 0) (2, 5)
    
foo.async + 1z    NAME       'foo'         (1, 0) (1, 3)
    OP         '.'           (1, 3) (1, 4)
    NAME       'async'       (1, 4) (1, 9)
    OP         '+'           (1, 10) (1, 11)
    NUMBER     '1'           (1, 12) (1, 13)
    async def foo(): passa;    NAME       'async'       (1, 0) (1, 5)
    NAME       'def'         (1, 6) (1, 9)
    NAME       'foo'         (1, 10) (1, 13)
    OP         '('           (1, 13) (1, 14)
    OP         ')'           (1, 14) (1, 15)
    OP         ':'           (1, 15) (1, 16)
    NAME       'pass'        (1, 17) (1, 21)
    Nasync def foo():
  def foo(await):
    await = 1
  if 1:
    await
async += 1
a    NAME       'async'       (1, 0) (1, 5)
    NAME       'def'         (1, 6) (1, 9)
    NAME       'foo'         (1, 10) (1, 13)
    OP         '('           (1, 13) (1, 14)
    OP         ')'           (1, 14) (1, 15)
    OP         ':'           (1, 15) (1, 16)
    NEWLINE    '\n'          (1, 16) (1, 17)
    INDENT     '  '          (2, 0) (2, 2)
    NAME       'def'         (2, 2) (2, 5)
    NAME       'foo'         (2, 6) (2, 9)
    OP         '('           (2, 9) (2, 10)
    NAME       'await'       (2, 10) (2, 15)
    OP         ')'           (2, 15) (2, 16)
    OP         ':'           (2, 16) (2, 17)
    NEWLINE    '\n'          (2, 17) (2, 18)
    INDENT     '    '        (3, 0) (3, 4)
    NAME       'await'       (3, 4) (3, 9)
    OP         '='           (3, 10) (3, 11)
    NUMBER     '1'           (3, 12) (3, 13)
    NEWLINE    '\n'          (3, 13) (3, 14)
    DEDENT     ''            (4, 2) (4, 2)
    NAME       'if'          (4, 2) (4, 4)
    NUMBER     '1'           (4, 5) (4, 6)
    OP         ':'           (4, 6) (4, 7)
    NEWLINE    '\n'          (4, 7) (4, 8)
    INDENT     '    '        (5, 0) (5, 4)
    NAME       'await'       (5, 4) (5, 9)
    NEWLINE    '\n'          (5, 9) (5, 10)
    DEDENT     ''            (6, 0) (6, 0)
    DEDENT     ''            (6, 0) (6, 0)
    NAME       'async'       (6, 0) (6, 5)
    OP         '+='          (6, 6) (6, 8)
    NUMBER     '1'           (6, 9) (6, 10)
    NEWLINE    '\n'          (6, 10) (6, 11)
    )async def foo():
  async for i in 1: passa    NAME       'async'       (1, 0) (1, 5)
    NAME       'def'         (1, 6) (1, 9)
    NAME       'foo'         (1, 10) (1, 13)
    OP         '('           (1, 13) (1, 14)
    OP         ')'           (1, 14) (1, 15)
    OP         ':'           (1, 15) (1, 16)
    NEWLINE    '\n'          (1, 16) (1, 17)
    INDENT     '  '          (2, 0) (2, 2)
    NAME       'async'       (2, 2) (2, 7)
    NAME       'for'         (2, 8) (2, 11)
    NAME       'i'           (2, 12) (2, 13)
    NAME       'in'          (2, 14) (2, 16)
    NUMBER     '1'           (2, 17) (2, 18)
    OP         ':'           (2, 18) (2, 19)
    NAME       'pass'        (2, 20) (2, 24)
    DEDENT     ''            (3, 0) (3, 0)
    async def foo(async): awaitah    NAME       'async'       (1, 0) (1, 5)
    NAME       'def'         (1, 6) (1, 9)
    NAME       'foo'         (1, 10) (1, 13)
    OP         '('           (1, 13) (1, 14)
    NAME       'async'       (1, 14) (1, 19)
    OP         ')'           (1, 19) (1, 20)
    OP         ':'           (1, 20) (1, 21)
    NAME       'await'       (1, 22) (1, 27)
    @def f():

  def baz(): pass
  async def bar(): pass

  await = 2a    NAME       'def'         (1, 0) (1, 3)
    NAME       'f'           (1, 4) (1, 5)
    OP         '('           (1, 5) (1, 6)
    OP         ')'           (1, 6) (1, 7)
    OP         ':'           (1, 7) (1, 8)
    NEWLINE    '\n'          (1, 8) (1, 9)
    NL         '\n'          (2, 0) (2, 1)
    INDENT     '  '          (3, 0) (3, 2)
    NAME       'def'         (3, 2) (3, 5)
    NAME       'baz'         (3, 6) (3, 9)
    OP         '('           (3, 9) (3, 10)
    OP         ')'           (3, 10) (3, 11)
    OP         ':'           (3, 11) (3, 12)
    NAME       'pass'        (3, 13) (3, 17)
    NEWLINE    '\n'          (3, 17) (3, 18)
    NAME       'async'       (4, 2) (4, 7)
    NAME       'def'         (4, 8) (4, 11)
    NAME       'bar'         (4, 12) (4, 15)
    OP         '('           (4, 15) (4, 16)
    OP         ')'           (4, 16) (4, 17)
    OP         ':'           (4, 17) (4, 18)
    NAME       'pass'        (4, 19) (4, 23)
    NEWLINE    '\n'          (4, 23) (4, 24)
    NL         '\n'          (5, 0) (5, 1)
    NAME       'await'       (6, 2) (6, 7)
    OP         '='           (6, 8) (6, 9)
    NUMBER     '2'           (6, 10) (6, 11)
    DEDENT     ''            (7, 0) (7, 0)
    Fasync def f():

  def baz(): pass
  async def bar(): pass

  await = 2a    NAME       'async'       (1, 0) (1, 5)
    NAME       'def'         (1, 6) (1, 9)
    NAME       'f'           (1, 10) (1, 11)
    OP         '('           (1, 11) (1, 12)
    OP         ')'           (1, 12) (1, 13)
    OP         ':'           (1, 13) (1, 14)
    NEWLINE    '\n'          (1, 14) (1, 15)
    NL         '\n'          (2, 0) (2, 1)
    INDENT     '  '          (3, 0) (3, 2)
    NAME       'def'         (3, 2) (3, 5)
    NAME       'baz'         (3, 6) (3, 9)
    OP         '('           (3, 9) (3, 10)
    OP         ')'           (3, 10) (3, 11)
    OP         ':'           (3, 11) (3, 12)
    NAME       'pass'        (3, 13) (3, 17)
    NEWLINE    '\n'          (3, 17) (3, 18)
    NAME       'async'       (4, 2) (4, 7)
    NAME       'def'         (4, 8) (4, 11)
    NAME       'bar'         (4, 12) (4, 15)
    OP         '('           (4, 15) (4, 16)
    OP         ')'           (4, 16) (4, 17)
    OP         ':'           (4, 17) (4, 18)
    NAME       'pass'        (4, 19) (4, 23)
    NEWLINE    '\n'          (4, 23) (4, 24)
    NL         '\n'          (5, 0) (5, 1)
    NAME       'await'       (6, 2) (6, 7)
    OP         '='           (6, 8) (6, 9)
    NUMBER     '2'           (6, 10) (6, 11)
    DEDENT     ''            (7, 0) (7, 0)
    rYrZs r2
test_asynczTokenizeTest.test_asyncsK*							
-0							
I(							
36							
.1							
K*							
K*							
47							
58							
K*							
G&							
47							
/2							
N-							
O.							
36							
#*		*		*		X	
						*	
=	@										

#		#		#		J	

$		$		$		$		$		r4N)__name__
__module____qualname__rBrHrNr[r]rfrnrrrrrrrrrrrrrr4r2r6r6&sO999555###J7	7	7	r			0&	&	&	P
8
8
8d	d	d	L:	:	:	x$	$	$	L
	
	
				.			(#	#	#	J			,			"			*
	
	
	
	
	
	P	P	P	P	P	r4r6ceZdZdZdS)GenerateTokensTestct|}tt|j|}|||dSN)rr3rr:r;r<r&r=s     r2rBz!GenerateTokensTest.check_tokenizesZ
QKK-oaj.I.I1MM!2!2!=!=!?!?@@@@@r4N)rrrrBrr4r2rrs(AAAAAr4rc	g}tt|dj}|D]q\}}}}}|tkrGd|vrC|tdftdftt|ftdfgZ|
||frt|dS)Nr8.Decimalrk))
rrr9r:rextendr	r
rreprr'rdecode)r?r*gtoknumtokval_s      r2decistmtrs
F'**++455A$%	,	,1aVv

MMy!S	f&S		




MM66*++++f$$W---r4ceZdZdZdS)TestMiscc.ddlm}d}|t|d|tt
|d|t
t||ddS)Nr)rz+21.3e-5*-.1234/81.7z8+Decimal ('21.3e-5')*-Decimal ('.1234')/Decimal ('81.7')z-3.2171603427[0-9]*e-0+7z!-3.217160342717258261933904529E-7)decimalrr;rassertRegexreval)r>rr?s   r2
test_decistmtzTestMisc.test_decistmts	$#####"!S	U	U	U	
d1gg(BCCC	
hqkk** !DEE	G	G	G	G	Gr4N)rrrrrr4r2rrs(GGGGGr4rc6eZdZdZdZdZdZdZdZdZ	dS)	TestTokenizerAdheresToPep0263zU
    Test that tokenizer adheres to the coding behaviour stipulated in PEP 0263.
    ctjtjtd|}t
|t|ddS)Ntokenizedatarb)ospathjoindirname__file__
TestRoundtripcheck_roundtripr)r>filenamers   r2	_testFilez'TestTokenizerAdheresToPep0263._testFilesMw||BGOOH55~xPP%%dDt,<,<=====r4c4d}||dS)Nz9tokenize_tests-utf8-coding-cookie-and-no-utf8-bom-sig.txtrr>rAs  r2'test_utf8_coding_cookie_and_no_utf8_bomzETestTokenizerAdheresToPep0263.test_utf8_coding_cookie_and_no_utf8_bomGqr4cLd}|t|j|dS)a
        As per PEP 0263, if a file starts with a utf-8 BOM signature, the only
        allowed encoding for the comment is 'utf-8'.  The text file used in
        this test starts with a BOM signature, but specifies latin1 as the
        coding, so verify that a SyntaxError is raised, which matches the
        behaviour of the interpreter when it encounters a similar condition.
        z8tokenize_tests-latin1-coding-cookie-and-utf8-bom-sig.txtNassertRaisesSyntaxErrorrrs  r2&test_latin1_coding_cookie_and_utf8_bomzDTestTokenizerAdheresToPep0263.test_latin1_coding_cookie_and_utf8_boms*
G+t~q99999r4c4d}||dS)Nz9tokenize_tests-no-coding-cookie-and-utf8-bom-sig-only.txtrrs  r2"test_no_coding_cookie_and_utf8_bomz@TestTokenizerAdheresToPep0263.test_no_coding_cookie_and_utf8_bomrr4c4d}||dS)Nz6tokenize_tests-utf8-coding-cookie-and-utf8-bom-sig.txtrrs  r2$test_utf8_coding_cookie_and_utf8_bomzBTestTokenizerAdheresToPep0263.test_utf8_coding_cookie_and_utf8_bomsDqr4c|t|jd|t|jddS)Nz
bad_coding.pyzbad_coding2.pyrrZs r2test_bad_coding_cookiez4TestTokenizerAdheresToPep0263.test_bad_coding_cookies=+t~GGG+t~7GHHHHHr4N)
rrr__doc__rrrrr
rrr4r2rrs}>>>	:	:	:IIIIIr4rceZdZdZdZdS)
Test_Tokenizecd}|ddfd}tt|ddd}dg}|||d	dS)
N"ЉЊЈЁЂ"r8FcsdSdSNTr4r)firstr1sr2r:zNTest_Tokenize.test__tokenize_decodes_with_specified_encoding.<locals>.readlines
sr4encodingrEr)rr)rrzbytes not decoded with encoding)r9rFrr;)r>literalr:rGexpected_tokensrr1s     @@r2.test__tokenize_decodes_with_specified_encodingz<Test_Tokenize.test__tokenize_decodes_with_specified_encodings ~~g&&						i7;;;<<QrTBNO:	<	<	<	<	<r4cddfd}tt|ddd}dg}|||ddS)NrFcsdSdSrr)rrsr2r:zQTest_Tokenize.test__tokenize_does_not_decode_with_encoding_none.<locals>.readline s
sr4rrErz*string not tokenized when encoding is None)rFrr;)r>r:rGrrrs    @@r21test__tokenize_does_not_decode_with_encoding_nonez?Test_Tokenize.test__tokenize_does_not_decode_with_encoding_nones 						i488899#2#>NOE	G	G	G	G	Gr4N)rrrrr rr4r2rr	s7<<<$GGGGGr4rceZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZdZdZdZdZdZdZdZdS)TestDetectEncodingcdfd}|S)NrcVtkrt}dz
|SNr)r%
StopIteration)r1indexliness r2r:z1TestDetectEncoding.get_readline.<locals>.readline3s1E

""##<DQJEKr4r)r>r(r:r's ` @r2get_readlinezTestDetectEncoding.get_readline1s.						r4cd}t||\}}||d||t|dddS)N)# something
print(something)
do_something(else)
r8)rr)r;rFr>r(rconsumed_liness    r2test_no_bom_no_encoding_cookiez1TestDetectEncoding.test_no_bom_no_encoding_cookie<sk

$343D3DU3K3K#L#L .7+++eBQBi99999r4cd}t||\}}||d||ddgdS)N)s# something
r,r-	utf-8-sigr+r,rr)r;r/s    r2test_bom_no_cookiez%TestDetectEncoding.test_bom_no_cookieFss

$343D3DU3K3K#L#L .;///*,AB	D	D	D	D	Dr4cd}t||\}}||d||dgdS)N)# -*- coding: latin-1 -*-
r,r-
iso-8859-1r7r4r/s    r2test_cookie_first_line_no_bomz0TestDetectEncoding.test_cookie_first_line_no_bomQsa

$343D3DU3K3K#L#L .<000*H)IJJJJJr4cd}t||\}}||d||dgdS)N)s# coding=utf-8
r,r-r3s# coding=utf-8
r4r/s    r2&test_matched_bom_and_cookie_first_linez9TestDetectEncoding.test_matched_bom_and_cookie_first_line[sa

$343D3DU3K3K#L#L .;///*=)>?????r4cvd}||}|tt|dS)N)s## vim: set fileencoding=ascii :
r,r-r)rrrr>r(r:s   r2<test_mismatched_bom_and_cookie_first_line_raises_syntaxerrorzOTestDetectEncoding.test_mismatched_bom_and_cookie_first_line_raises_syntaxerrores<

$$U+++AAAAAr4cd}t||\}}||dddg}|||dS)N)
#! something
 # vim: set fileencoding=ascii :
r,r-asciirArBr4r>r(rr0r@s     r2test_cookie_second_line_no_bomz1TestDetectEncoding.test_cookie_second_line_no_bomnsh
$343D3DU3K3K#L#L .7+++%'KL22222r4cd}t||\}}||d||ddgdS)N)#! something
f# coding=utf-8
r,r-r3rArHr4r/s    r2'test_matched_bom_and_cookie_second_linez:TestDetectEncoding.test_matched_bom_and_cookie_second_linezss
$343D3DU3K3K#L#L .;///+-AB	D	D	D	D	Dr4cvd}||}|tt|dS)N)rGrBr,r-r=r>s   r2=test_mismatched_bom_and_cookie_second_line_raises_syntaxerrorzPTestDetectEncoding.test_mismatched_bom_and_cookie_second_line_raises_syntaxerrors<
$$U+++AAAAAr4cd}t||\}}||ddg}|||dS)N)print('£')
%# vim: set fileencoding=iso8859-15 :

print('€')
r8rMr4rDs     r2/test_cookie_second_line_noncommented_first_linezBTestDetectEncoding.test_cookie_second_line_noncommented_first_linese

$343D3DU3K3K#L#L .7+++*+22222r4cd}t||\}}||dddg}|||dS)N)
#print('£')
rNrO
iso8859-15rRrNr4rDs     r2,test_cookie_second_line_commented_first_linez?TestDetectEncoding.test_cookie_second_line_commented_first_linesh

$343D3DU3K3K#L#L .<000+-VW22222r4cd}t||\}}||dddg}|||dS)N)
rNrOrSrVrNr4rDs     r2(test_cookie_second_line_empty_first_linez;TestDetectEncoding.test_cookie_second_line_empty_first_linesh

$343D3DU3K3K#L#L .<000DE22222r4cd}|D]y}dD]t}|d|}dd|dzdzdd	f}||}t|\}}||d
uzdS)N)zlatin-1r8ziso-latin-1zlatin-1-unixziso-8859-1-unixziso-latin-1-mac-rrZ#!/usr/bin/python

# coding: rCrVsprint(things)
sdo_something += 4
r8replacer9r)rr;	r>	encodingsrrepencr(rlfoundr0s	         r2test_latin1_normalizationz,TestDetectEncoding.test_latin1_normalizations;	!		6		6H!
6
6&&sC00/&G)<)<<uD+/1&&u--(7(;(;%~  5555
6		6		6r4cvd}||}|tt|dS)Ns
print("")r=r>s   r2test_syntaxerror_latin1z*TestDetectEncoding.test_syntaxerror_latin1s<$$U+++AAAAAr4cd}|D]x}dD]s}|d|}dd|dzdzdf}||}t|\}}||d	tydS)
N)r8z	utf-8-macz
utf-8-unixrYrZr[r\rCrVs1 + 3
r8r]r_s	         r2test_utf8_normalizationz*TestDetectEncoding.test_utf8_normalizations8	!	1	1H!
1
1&&sC00/&G)<)<<uD#%&&u--(7(;(;%~  0000
1	1	1r4c
|d}t|\}}||d||dgt|d\}}||d||g|d}t|\}}||d||dg|d}t|\}}||d||g|d}|tt|dS)	N)r,r8r,r)sprint(something)
r3)s)s# coding: bad
)r)rr;rrr>r:rr0s    r2test_short_filesz#TestDetectEncoding.test_short_filess~$$%=>>#28#<#< .7+++*?)@AAA#243D3DR3H3H#I#I .7+++,,,$$%IJJ#28#<#< .;///*?)@AAA$$%788#28#<#< .;///,,,$$%:;;+AAAAAr4c|d}t|\}}||d||dgdS)N)print("#coding=fake")r8ro)r)rr;rls    r2test_false_encodingz&TestDetectEncoding.test_false_encodings^$$%@AA#28#<#< .7+++*B)CDDDDDr4ctjdz}|tj|dD]}t	|d|5}td|z|td|dddn#1swxYwYt
|5}||j|||j	ddddn#1swxYwYt	|dd	5}td|dddn#1swxYwYt
|5}||jd	||j	dddddS#1swxYwYdS)
Nz.py)ziso-8859-15r8wrz# coding: %sfileuprint('euro:€')rr3)
rTESTFN
addCleanupunlinkrprint
tokenize_openr;rmode)r>rrfps    r2	test_openzTestDetectEncoding.test_opensy#e+	((3331	/	/Hhh777
72nx/b9999,26666
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7x((
/B  h777  #...
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
(C+
6
6
6	3"(r2222	3	3	3	3	3	3	3	3	3	3	3	3	3	3	3
8
$
$	+R[+666RWc***	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+sH&A88A<	?A<	7CC	C	3DDD+7E//E36E3cd}dGfdd}|t5||}|`t|jdddn#1swxYwY|td|5||}t|jddddS#1swxYwYdS)Nsome_file_pathrgc eZdZdZfdZdS);TestDetectEncoding.test_filename_in_exception.<locals>.Bunkc0||_||_d|_dS)Nr)name_lines_index)r>r(rs   r2__init__zDTestDetectEncoding.test_filename_in_exception.<locals>.Bunk.__init__s 	#r4c|jtkrt|j}|xjdz
c_|Sr%)rr%r&)r>r1r(s  r2r:zDTestDetectEncoding.test_filename_in_exception.<locals>.Bunk.readlines=;#e**,,''T[)q r4N)rrrrr:)r(sr2Bunkrs=
 
 
 







r4rz.*{})rrrrr:rJformat)r>rrinsr(s    @r2test_filename_in_exceptionz-TestDetectEncoding.test_filename_in_exception	s{										

{
+
+	*	*$ud##CCL)))		*	*	*	*	*	*	*	*	*	*	*	*	*	*	*

#
#Kt1D1D
E
E	*	*$ud##CCL)))	*	*	*	*	*	*	*	*	*	*	*	*	*	*	*	*	*	*s##AA"%A"!CC	C	ctd}tjd|5|tt
ddddn#1swxYwY||jdS)Ns#coding:xxxztokenize._builtin_open)return_valuefoobar)rrpatchrrrz
assertTrueclosed)r>ms  r2test_open_errorz"TestDetectEncoding.test_open_error%sN##
Z0q
A
A
A	D	Dk=(CCC	D	D	D	D	D	D	D	D	D	D	D	D	D	D	D!!!!!s"AAAN)rrrr)r1r5r9r;r?rErIrKrPrTrWrerhrjrmrpr}rrrr4r2r"r"/s[			:::	D	D	DKKK@@@BBB
3
3
3
D
D
DBBB	3	3	3	3	3	3	3	3	3
6
6
6BBB111BBB.EEE+++(***8"""""r4r"c2eZdZdZdZdZdZdZdZdS)TestTokenizech	
ddl}t	d
	fd}
fd}dfd}|j}|j}||_||_	t|}|t|gd||_||_n#||_||_wxYw|
	dS)NrcddgfS)Nfirstsecondr)r:rs r2mock_detect_encodingz8TestTokenize.test_tokenize.<locals>.mock_detect_encoding3sh	222r4cV|g}	|}|r||#|Sr)r')r:rout	next_line
encoding_useds    r2mock__tokenizez2TestTokenize.test_tokenize.<locals>.mock__tokenize6s?$MC
$HJJ	JJy)))
r4c`dz
dkrdStS)Nrr4)strr9)countersr2
mock_readlinez1TestTokenize.test_tokenize.<locals>.mock_readlineBs2qLG!||sw<<&&(((r4)rr1234)robjectrrr;rF)r>tokenize_modulerrrorig_detect_encodingorig__tokenizeresultsrrrs        @@@r2
test_tokenizezTestTokenize.test_tokenize/s$****88
	3	3	3	3	3											)	)	)	)	) />(2*>'$2!	7}--GT']]JJJ
L
L
L/CO+(6O%%/CO+(6O%666611111s4B		Bc	g}tdD]+}|d|,|dd|}t	tt
|dj}|	|dj
ddS)Nizdef i{i}(): return {i})iOK
r8)ranger'rrrFrrr9r:r;string)r>bufrtokss    r2test_oneline_defszTestTokenize.test_oneline_defsWss	=	=AJJ/666;;<<<<

4iinnHWSZZ%8%899BCCDDb$/////r4c	ttt|dj}t|}|t|d|z|t|djttt|D]B}|t||dzjt||C|t|d|zjttj|t|d|zjttj
dS)Nr8rrrr.)rFrrr9r:r%r;r
exact_typer
rr.rr)r>opstroptypesrGnum_optypesrs      r2assertExactTypeEqualz!TestTokenize.assertExactTypeEqualcsMhwu||G'<'<==FGGHH'llVa+o666&)"67!(+	-	-	-{##	3	3AXfQUm&>?%gaj1
3
3
3
3&["9"DE!%-0	2	2	2&["9"DE!%/2	4	4	4	4	4r4c
|dtjtj|dtjtj|dtj|dtj|dtj|dtj	|dtj
|dtj|d	tj|d
tj
|dtj|dtj|d
tj|dtj|dtj|dtj|dtjtj|dtj|dtj|dtj|dtj|dtj|dtj|dtj|dtj|dtj|dtj|dtj |dtj!|dtj"|dtj#|d tj$|d!tj%|d"tj&|d"tj&|d#tj'|d$tj(|d%tj)|d&tj*|d'tj+|d(tj,|d)tj-|d*tj.|d+tj/|d,tj0|d-tbtjtdtj	tbtjtdtjtbtjtd|d.tjtj2tjtj2tjtj2tj|d/tjtjtj1tjtj2tjdS)0Nz()z[]:,;+rZ*/|&<>=r%z{}z==z!=z<=z>=~^z<<z>>z**z+=z-=z*=z/=z%=z&=z|=z^=z<<=z>>=z**=z//z//=z:=z...z->@z@=za**2+b**2==c**2z	{1, 2, 3}z
^(x & 0x1))3rr.LPARRPARLSQBRSQBCOLONCOMMASEMIPLUSMINUSSTARSLASHVBARAMPERLESSGREATEREQUALDOTPERCENTLBRACERBRACEEQEQUALNOTEQUAL	LESSEQUALGREATEREQUALTILDE
CIRCUMFLEX	LEFTSHIFT
RIGHTSHIFT
DOUBLESTAR	PLUSEQUALMINEQUAL	STAREQUAL
SLASHEQUALPERCENTEQUAL
AMPEREQUAL	VBAREQUALCIRCUMFLEXEQUALLEFTSHIFTEQUALRIGHTSHIFTEQUALDOUBLESTAREQUALDOUBLESLASHDOUBLESLASHEQUAL
COLONEQUALELLIPSISRARROWATATEQUALr	rrZs r2test_exact_typezTestTokenize.test_exact_typeqs!!$
EJ???!!$
EJ???!!#u{333!!#u{333!!#uz222!!#uz222!!#u{333!!#uz222!!#u{333!!#uz222!!#u{333!!#uz222!!#u}555!!#u{333!!#uy111!!#u}555!!$elCCC!!$
666!!$777!!$888!!$(:;;;!!#u{333!!#u'7888!!$888!!$(8999!!$(8999!!$888!!$777!!$888!!$(8999!!$(:;;;!!$(8999!!$888!!$(=>>>!!$(=>>>!!%)=>>>!!%)>???!!%)>???!!$(9:::!!%)?@@@!!$(8999!!%888!!$555!!#ux000!!$
666!!"3"&(8&"'*"&(8&"'-"&(8&	B	B	B	
!!+"',"',"',"',"',	0	0	0	
!!,"'"2"'*"'*ek5<"'*		.	.	.	.	.r4cF|dtjdS)Nz@          )rr.rrZs r2%test_pathological_trailing_whitespacez2TestTokenize.test_pathological_trailing_whitespaces !!-:::::r4c	d}tjtjtjtjtjtjg}ttt|
dj}|t|djttt!dD]B}|t||dzjt||C|t|djttjdS)Nzb = 1

#testr8rrr )r.r	rrrNLCOMMENTrFrrr9r:r;rrr
rr)r>sourcerrGrs     r25test_comment_at_the_end_of_the_source_without_newlinezBTestTokenize.test_comment_at_the_end_of_the_source_without_newlines! :u{EL%-QVQY[`[hihwv}}W'='=>>GHHII&)"67(9KLLLq	_	_AXfQUm&>?/Z[J\A]^^^^&*"78(5?:STTTTTr4N)	rrrrrrrrrrr4r2rr-su&2&2&2P	0	0	0444?.?.?.B;;;	U	U	U	U	Ur4rc eZdZdZdZdZdS)UntokenizeTestcZt}d|_d|_|t5}|ddddn#1swxYwY||jjdd|t|jddS)Nr.)rrrz'start (1,3) precedes previous end (2,2))r.r)	rprev_rowprev_colr
ValueErroradd_whitespacer;	exceptionargs)r>ucms   r2test_bad_input_orderz#UntokenizeTest.test_bad_input_ordersMM




z
*
*	$b
U###	$	$	$	$	$	$	$	$	$	$	$	$	$	$	$*1-9	;	;	;	
*a&6>>>>>sAA AcVt}d|_d|_g|_|d||jdgd|_|d||jgdt|ddS)Nr)r.r\
r.)r)rz\
\
r!za
  b
    c
  \
  c
)rr
rrGr
r;rr)r>rs  r2test_backslash_continuationz*UntokenizeTest.test_backslash_continuationsMM

	   F8,,,
	   #?#?#?@@@%%d,HIIIIIr4cpt}tdf}tdf|g}||t	g||jdgt}||t	|gdt}||t	|d||jd|tt	|ddS)NHellor8zHello sHello )	rr	r
compatiterr;rGrr)r>rr.rGs    r2test_iter_compatzUntokenizeTest.test_iter_compatsMMwW%u-	R!!!H:...MMdE7mm44h???MMd6ll33X>>>W---DLL119=====r4N)rrrrrrrr4r2rrsD
?
?
?JJJ>>>>>r4rc>eZdZdZdZdZdZdZdZdZ	dZ
d	S)
rct|tr|d}n(|}|t|dj}tt|}d|D}t|}t|dj}dt|D}|||t|}	t|	dj}
dt|
D}|||dS)a)
        Test roundtrip for `untokenize`. `f` is an open file or a string.
        The source code in f is tokenized to both 5- and 2-tuples.
        Both sequences are converted back to source code via
        tokenize.untokenize(), and the latter tokenized again to 2-tuples.
        The test fails if the 3 pair tokenizations do not match.

        When untokenize bugs are fixed, untokenize with 5-tuples should
        reproduce code that does not contain a backslash continuation
        following spaces.  A proper test should test this.
        r8T)keependsc"g|]}|dd
SNr.r.0rMs  r2
<listcomp>z1TestRoundtrip.check_roundtrip.<locals>.<listcomp>s ...s3rr7...r4c"g|]}|dd
Sr rr!s  r2r#z1TestRoundtrip.check_roundtrip.<locals>.<listcomp> @@@SRaR@@@r4c"g|]}|dd
Sr rr!s  r2r#z1TestRoundtrip.check_roundtrip.<locals>.<listcomp>	r%r4N)
isinstancerr9readcloserr&__next__rFrrr;)r>rAcoder:tokens5tokens2bytes_from2	readline2
tokens2_from2bytes_from5	readline5
tokens2_from5s            r2rzTestRoundtrip.check_roundtripsMa	88G$$DD6688D
GGIII6677@x))**..g... ))///>>??H	@@HY,?,?@@@
000 ))///>>??H	@@HY,?,?@@@
00000r4c|d|d|dtjdd}t|d5}||dddn#1swxYwY|d|d	|d
|ddS)Nzif x == 1:
    print(x)
z # This is a comment
# This also
zif x == 1 : 
  print(x)
ztokenize_tests.txtr)subdirrzoif x == 1:
    # A comment by itself.
    print(x) # Comment here, too.
    # Another comment.
after_if = True
zPif (x # The comments need to go in the right place
    == 1):
    print('x==1')
zclass Test: # A comment here
  # A comment with weird indent
  after_com = 5
  def x(m): return m*5 # a one liner
  def y(m): # A whitespace after the colon
     return y*4 # 3-space indent
zttry: import somemodule
except ImportError: # comment
    print('Can not import' # comment2
)else:   print('Loaded')
)rrfindfiler)r>fnrAs   r2test_roundtripzTestRoundtrip.test_roundtripso	
.	/	/	/-	.	.	.	
,	-	-	-

2>
J
J
J
"d^^	$q  ###	$	$	$	$	$	$	$	$	$	$	$	$	$	$	$1	2	2	2
	
3	4	4	4	
B	C	C	C	
9	:	:	:	:	:s&BBBc0|ddS)Nzna = (3,4, 
5,6)
y = [3, 4,
5]
z = {'a': 5,
'b':15, 'c':True}
x = len(y) + 5 - a[
3] - a[2]
+ len(z) - z[
'b']
rrZs r2test_continuationzTestRoundtrip.test_continuation3s)	&		'		'		'		'		'r4cZ|d|ddS)Nz)x=1+\
1
# This is a comment\
# This also
z# Comment \
x = 0r:rZs r2rz)TestRoundtrip.test_backslash_continuation@sH-	.	.	.	
%	&	&	&	&	&r4c0|ddS)Nz'' ''r:rZs r2test_string_concatenationz'TestRoundtrip.test_string_concatenationIsW%%%%%r4cRddl}ddl}tjt
ptj}|tj||d}|	tj|ddD]8}|	tj|d|z9tjds||d}|D]}tj
dkrtd	|t|d
5}||5||dddn#1swxYwYdddn#1swxYwYdS)Nrztest*.pyztest_unicode_identifiers.py)bufferbuiltinfileiorplatformsysz
test_%s.pycpu
r.rrrs)globrandomrrrrcurdirrescaperemoveris_resource_enabledsampleverboseryrsubTestr)r>rGrHtempdir	testfilesrAtestfiles       r2test_random_fileszTestRoundtrip.test_random_filesMs	'//(++8ryIIbgll4;;w+?+?LLMM		g/LMMNNNI	F	FARW\\'<@@1DEEEE*511	5

i44I!	,	,H!##j(+++h%%
,\\x\00,,((+++,,,,,,,,,,,,,,,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,	,	,s6F"F8FFFFFF	"F	ct|tr|d}tt	t|jdS)Nr8)r'rr9rrrr:r)r>r+s  r2	roundtripzTestRoundtrip.roundtripisRdC  	(;;w''D(74==#9::;;BB7KKKr4cd}||d}||d|d||dS)z
        Ensure that although whitespace might be mutated in a roundtrip,
        the semantic meaning of the indentation remains consistent.
        zif False:
	x=3
	x=3
rrr.N)rUsplitr;r)r>r+	codeliness   r2#test_indentation_semantics_retainedz1TestRoundtrip.test_indentation_semantics_retainedns`
+NN4((..t44	1y|444T"""""r4N)rrrrr8r;rr>rSrUrYrr4r2rrs111@%:%:%:N'''&&&&&&,,,8LLL
#####r4rcteZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZdZdZdZdZdS)
CTokenizeTestc||5tt||}|||ddddS#1swxYwYdS)N)r)rOr3rr;r<r&)r>r?r@r*s    r2rBzCTokenizeTest.check_tokenizezs\\\
#
#	E	E11!44aF
VX__%6%6%A%A%C%CDDD		E	E	E	E	E	E	E	E	E	E	E	E	E	E	E	E	E	EsAA<<BBc|dd|dd|dd|dd|d	d
|dd|d
d|dd|dddS)NrPz    NUMBER     '0xff'        (1, 0) (1, 4)
    LESSEQUAL  '<='          (1, 5) (1, 7)
    NUMBER     '255'         (1, 8) (1, 11)
    rQz    NUMBER     '0b10'        (1, 0) (1, 4)
    LESSEQUAL  '<='          (1, 5) (1, 7)
    NUMBER     '255'         (1, 8) (1, 11)
    rRz    NUMBER     '0o123'       (1, 0) (1, 5)
    LESSEQUAL  '<='          (1, 6) (1, 8)
    NUMBER     '0O123'       (1, 9) (1, 14)
    rSz    NUMBER     '1234567'     (1, 0) (1, 7)
    GREATER    '>'           (1, 8) (1, 9)
    TILDE      '~'           (1, 10) (1, 11)
    NUMBER     '0x15'        (1, 11) (1, 15)
    rTz    NUMBER     '2134568'     (1, 0) (1, 7)
    NOTEQUAL   '!='          (1, 8) (1, 10)
    NUMBER     '1231515'     (1, 11) (1, 18)
    rUac    LPAR       '('           (1, 0) (1, 1)
    MINUS      '-'           (1, 1) (1, 2)
    NUMBER     '124561'      (1, 2) (1, 8)
    MINUS      '-'           (1, 8) (1, 9)
    NUMBER     '1'           (1, 9) (1, 10)
    RPAR       ')'           (1, 10) (1, 11)
    AMPER      '&'           (1, 12) (1, 13)
    NUMBER     '200000000'   (1, 14) (1, 23)
    rVz    NUMBER     '0xdeadbeef'  (1, 0) (1, 10)
    NOTEQUAL   '!='          (1, 11) (1, 13)
    MINUS      '-'           (1, 14) (1, 15)
    NUMBER     '1'           (1, 15) (1, 16)
    rWz    NUMBER     '0xdeadc0de'  (1, 0) (1, 10)
    AMPER      '&'           (1, 11) (1, 12)
    NUMBER     '12345'       (1, 13) (1, 18)
    rXz    NUMBER     '0xFF'        (1, 0) (1, 4)
    AMPER      '&'           (1, 5) (1, 6)
    NUMBER     '0x15'        (1, 7) (1, 11)
    VBAR       '|'           (1, 12) (1, 13)
    NUMBER     '1234'        (1, 14) (1, 18)
    rYrZs r2r[zCTokenizeTest.test_ints:M,							
M,							
,/							
-0							
03							
5	8										
.1							
03							
03										r4c:|dd|dd|dd|dd|d	d
|dd|d
ddS)Nr_z    NAME       'x'           (1, 0) (1, 1)
    EQUAL      '='           (1, 2) (1, 3)
    NUMBER     '3.14159'     (1, 4) (1, 11)
    r`z    NAME       'x'           (1, 0) (1, 1)
    EQUAL      '='           (1, 2) (1, 3)
    NUMBER     '314159.'     (1, 4) (1, 11)
    raz    NAME       'x'           (1, 0) (1, 1)
    EQUAL      '='           (1, 2) (1, 3)
    NUMBER     '.314159'     (1, 4) (1, 11)
    rbz    NAME       'x'           (1, 0) (1, 1)
    EQUAL      '='           (1, 2) (1, 3)
    NUMBER     '3e14159'     (1, 4) (1, 11)
    rcz    NAME       'x'           (1, 0) (1, 1)
    EQUAL      '='           (1, 2) (1, 3)
    NUMBER     '3E123'       (1, 4) (1, 9)
    rdz    NAME       'x'           (1, 0) (1, 1)
    PLUS       '+'           (1, 1) (1, 2)
    NAME       'y'           (1, 2) (1, 3)
    EQUAL      '='           (1, 4) (1, 5)
    NUMBER     '3e-1230'     (1, 6) (1, 13)
    rez    NAME       'x'           (1, 0) (1, 1)
    EQUAL      '='           (1, 2) (1, 3)
    NUMBER     '3.14e159'    (1, 4) (1, 12)
    rYrZs r2rfzCTokenizeTest.test_floatsM,							
M,							
M,							
M,							
K*							
O.							
N-										r4c~|dd|dd|dd|dd|d	d
|dd|d
d|dd|dd|dd|dd|dd|dd|dd|dd|dd |d!d"|d#d$|d%d&|d'd(|d)d*|d+d,|d-d.|d/d0|d1d2|d3d4dS)5Nrpa5    NAME       'x'           (1, 0) (1, 1)
    EQUAL      '='           (1, 2) (1, 3)
    STRING     "''"          (1, 4) (1, 6)
    SEMI       ';'           (1, 6) (1, 7)
    NAME       'y'           (1, 8) (1, 9)
    EQUAL      '='           (1, 10) (1, 11)
    STRING     '""'          (1, 12) (1, 14)
    rqa6    NAME       'x'           (1, 0) (1, 1)
    EQUAL      '='           (1, 2) (1, 3)
    STRING     '\'"\''       (1, 4) (1, 7)
    SEMI       ';'           (1, 7) (1, 8)
    NAME       'y'           (1, 9) (1, 10)
    EQUAL      '='           (1, 11) (1, 12)
    STRING     '"\'"'        (1, 13) (1, 16)
    rrz    NAME       'x'           (1, 0) (1, 1)
    EQUAL      '='           (1, 2) (1, 3)
    STRING     '"doesn\'t "' (1, 4) (1, 14)
    NAME       'shrink'      (1, 14) (1, 20)
    STRING     '", does it"' (1, 20) (1, 31)
    rsz    NAME       'x'           (1, 0) (1, 1)
    EQUAL      '='           (1, 2) (1, 3)
    STRING     "'abc'"       (1, 4) (1, 9)
    PLUS       '+'           (1, 10) (1, 11)
    STRING     "'ABC'"       (1, 12) (1, 17)
    rtz    NAME       'y'           (1, 0) (1, 1)
    EQUAL      '='           (1, 2) (1, 3)
    STRING     '"ABC"'       (1, 4) (1, 9)
    PLUS       '+'           (1, 10) (1, 11)
    STRING     '"ABC"'       (1, 12) (1, 17)
    rua    NAME       'x'           (1, 0) (1, 1)
    EQUAL      '='           (1, 2) (1, 3)
    STRING     "r'abc'"      (1, 4) (1, 10)
    PLUS       '+'           (1, 11) (1, 12)
    STRING     "r'ABC'"      (1, 13) (1, 19)
    PLUS       '+'           (1, 20) (1, 21)
    STRING     "R'ABC'"      (1, 22) (1, 28)
    PLUS       '+'           (1, 29) (1, 30)
    STRING     "R'ABC'"      (1, 31) (1, 37)
    rva    NAME       'y'           (1, 0) (1, 1)
    EQUAL      '='           (1, 2) (1, 3)
    STRING     'r"abc"'      (1, 4) (1, 10)
    PLUS       '+'           (1, 11) (1, 12)
    STRING     'r"ABC"'      (1, 13) (1, 19)
    PLUS       '+'           (1, 20) (1, 21)
    STRING     'R"ABC"'      (1, 22) (1, 28)
    PLUS       '+'           (1, 29) (1, 30)
    STRING     'R"ABC"'      (1, 31) (1, 37)
    rwz    STRING     "u'abc'"      (1, 0) (1, 6)
    PLUS       '+'           (1, 7) (1, 8)
    STRING     "U'abc'"      (1, 9) (1, 15)
    rxz    STRING     'u"abc"'      (1, 0) (1, 6)
    PLUS       '+'           (1, 7) (1, 8)
    STRING     'U"abc"'      (1, 9) (1, 15)
    ryz    STRING     "b'abc'"      (1, 0) (1, 6)
    PLUS       '+'           (1, 7) (1, 8)
    STRING     "B'abc'"      (1, 9) (1, 15)
    rzz    STRING     'b"abc"'      (1, 0) (1, 6)
    PLUS       '+'           (1, 7) (1, 8)
    STRING     'B"abc"'      (1, 9) (1, 15)
    r{a;    STRING     "br'abc'"     (1, 0) (1, 7)
    PLUS       '+'           (1, 8) (1, 9)
    STRING     "bR'abc'"     (1, 10) (1, 17)
    PLUS       '+'           (1, 18) (1, 19)
    STRING     "Br'abc'"     (1, 20) (1, 27)
    PLUS       '+'           (1, 28) (1, 29)
    STRING     "BR'abc'"     (1, 30) (1, 37)
    r|a;    STRING     'br"abc"'     (1, 0) (1, 7)
    PLUS       '+'           (1, 8) (1, 9)
    STRING     'bR"abc"'     (1, 10) (1, 17)
    PLUS       '+'           (1, 18) (1, 19)
    STRING     'Br"abc"'     (1, 20) (1, 27)
    PLUS       '+'           (1, 28) (1, 29)
    STRING     'BR"abc"'     (1, 30) (1, 37)
    r}a;    STRING     "rb'abc'"     (1, 0) (1, 7)
    PLUS       '+'           (1, 8) (1, 9)
    STRING     "rB'abc'"     (1, 10) (1, 17)
    PLUS       '+'           (1, 18) (1, 19)
    STRING     "Rb'abc'"     (1, 20) (1, 27)
    PLUS       '+'           (1, 28) (1, 29)
    STRING     "RB'abc'"     (1, 30) (1, 37)
    r~a;    STRING     'rb"abc"'     (1, 0) (1, 7)
    PLUS       '+'           (1, 8) (1, 9)
    STRING     'rB"abc"'     (1, 10) (1, 17)
    PLUS       '+'           (1, 18) (1, 19)
    STRING     'Rb"abc"'     (1, 20) (1, 27)
    PLUS       '+'           (1, 28) (1, 29)
    STRING     'RB"abc"'     (1, 30) (1, 37)
    rrrrrrrrrrrrrrrrrrrrrrrYrZs r2rzCTokenizeTest.test_strings.1							
14							
>A							
/2							
/2							
C
F
		
		
			
C
F
		
		
			
-0							
-0							
-0							
-0							
CF							
CF							
CF							
CF							
-0							
L+							
L+							
							
							
							
H'							
K*							
L+							
						
	
										r4c|dd|dd|dddS)Nra    NAME       'def'         (1, 0) (1, 3)
    NAME       'd22'         (1, 4) (1, 7)
    LPAR       '('           (1, 7) (1, 8)
    NAME       'a'           (1, 8) (1, 9)
    COMMA      ','           (1, 9) (1, 10)
    NAME       'b'           (1, 11) (1, 12)
    COMMA      ','           (1, 12) (1, 13)
    NAME       'c'           (1, 14) (1, 15)
    EQUAL      '='           (1, 15) (1, 16)
    NUMBER     '2'           (1, 16) (1, 17)
    COMMA      ','           (1, 17) (1, 18)
    NAME       'd'           (1, 19) (1, 20)
    EQUAL      '='           (1, 20) (1, 21)
    NUMBER     '2'           (1, 21) (1, 22)
    COMMA      ','           (1, 22) (1, 23)
    STAR       '*'           (1, 24) (1, 25)
    NAME       'k'           (1, 25) (1, 26)
    RPAR       ')'           (1, 26) (1, 27)
    COLON      ':'           (1, 27) (1, 28)
    NAME       'pass'        (1, 29) (1, 33)
    ra    NAME       'def'         (1, 0) (1, 3)
    NAME       'd01v_'       (1, 4) (1, 9)
    LPAR       '('           (1, 9) (1, 10)
    NAME       'a'           (1, 10) (1, 11)
    EQUAL      '='           (1, 11) (1, 12)
    NUMBER     '1'           (1, 12) (1, 13)
    COMMA      ','           (1, 13) (1, 14)
    STAR       '*'           (1, 15) (1, 16)
    NAME       'k'           (1, 16) (1, 17)
    COMMA      ','           (1, 17) (1, 18)
    DOUBLESTAR '**'          (1, 19) (1, 21)
    NAME       'w'           (1, 21) (1, 22)
    RPAR       ')'           (1, 22) (1, 23)
    COLON      ':'           (1, 23) (1, 24)
    NAME       'pass'        (1, 25) (1, 29)
    ra    NAME       'def'         (1, 0) (1, 3)
    NAME       'd23'         (1, 4) (1, 7)
    LPAR       '('           (1, 7) (1, 8)
    NAME       'a'           (1, 8) (1, 9)
    COLON      ':'           (1, 9) (1, 10)
    NAME       'str'         (1, 11) (1, 14)
    COMMA      ','           (1, 14) (1, 15)
    NAME       'b'           (1, 16) (1, 17)
    COLON      ':'           (1, 17) (1, 18)
    NAME       'int'         (1, 19) (1, 22)
    EQUAL      '='           (1, 22) (1, 23)
    NUMBER     '3'           (1, 23) (1, 24)
    RPAR       ')'           (1, 24) (1, 25)
    RARROW     '->'          (1, 26) (1, 28)
    NAME       'int'         (1, 29) (1, 32)
    COLON      ':'           (1, 32) (1, 33)
    NAME       'pass'        (1, 34) (1, 38)
    rYrZs r2rzCTokenizeTest.test_functionsr?B						.	
;>						$	
DG										r4c2|dddS)Nra    NAME       'if'          (1, 0) (1, 2)
    NUMBER     '1'           (1, 3) (1, 4)
    LESS       '<'           (1, 5) (1, 6)
    NUMBER     '1'           (1, 7) (1, 8)
    GREATER    '>'           (1, 9) (1, 10)
    NUMBER     '1'           (1, 11) (1, 12)
    EQEQUAL    '=='          (1, 13) (1, 15)
    NUMBER     '1'           (1, 16) (1, 17)
    GREATEREQUAL '>='          (1, 18) (1, 20)
    NUMBER     '5'           (1, 21) (1, 22)
    LESSEQUAL  '<='          (1, 23) (1, 25)
    NUMBER     '0x15'        (1, 26) (1, 30)
    LESSEQUAL  '<='          (1, 31) (1, 33)
    NUMBER     '0x12'        (1, 34) (1, 38)
    NOTEQUAL   '!='          (1, 39) (1, 41)
    NUMBER     '1'           (1, 42) (1, 43)
    NAME       'and'         (1, 44) (1, 47)
    NUMBER     '5'           (1, 48) (1, 49)
    NAME       'in'          (1, 50) (1, 52)
    NUMBER     '1'           (1, 53) (1, 54)
    NAME       'not'         (1, 55) (1, 58)
    NAME       'in'          (1, 59) (1, 61)
    NUMBER     '1'           (1, 62) (1, 63)
    NAME       'is'          (1, 64) (1, 66)
    NUMBER     '1'           (1, 67) (1, 68)
    NAME       'or'          (1, 69) (1, 71)
    NUMBER     '5'           (1, 72) (1, 73)
    NAME       'is'          (1, 74) (1, 76)
    NAME       'not'         (1, 77) (1, 80)
    NUMBER     '1'           (1, 81) (1, 82)
    COLON      ':'           (1, 82) (1, 83)
    NAME       'pass'        (1, 84) (1, 88)
    rYrZs r2rzCTokenizeTest.test_comparisonrr4c2|dddS)Nra$    NAME       'x'           (1, 0) (1, 1)
    EQUAL      '='           (1, 2) (1, 3)
    NUMBER     '1'           (1, 4) (1, 5)
    MINUS      '-'           (1, 6) (1, 7)
    NAME       'y'           (1, 8) (1, 9)
    PLUS       '+'           (1, 10) (1, 11)
    NUMBER     '15'          (1, 12) (1, 14)
    MINUS      '-'           (1, 15) (1, 16)
    NUMBER     '1'           (1, 17) (1, 18)
    PLUS       '+'           (1, 19) (1, 20)
    NUMBER     '0x124'       (1, 21) (1, 26)
    PLUS       '+'           (1, 27) (1, 28)
    NAME       'z'           (1, 29) (1, 30)
    PLUS       '+'           (1, 31) (1, 32)
    NAME       'a'           (1, 33) (1, 34)
    LSQB       '['           (1, 34) (1, 35)
    NUMBER     '5'           (1, 35) (1, 36)
    RSQB       ']'           (1, 36) (1, 37)
    rYrZs r2rzCTokenizeTest.test_additive
rr4c2|dddS)Nra    NAME       'x'           (1, 0) (1, 1)
    EQUAL      '='           (1, 2) (1, 3)
    NUMBER     '1'           (1, 4) (1, 5)
    DOUBLESLASH '//'          (1, 5) (1, 7)
    NUMBER     '1'           (1, 7) (1, 8)
    STAR       '*'           (1, 8) (1, 9)
    NUMBER     '1'           (1, 9) (1, 10)
    SLASH      '/'           (1, 10) (1, 11)
    NUMBER     '5'           (1, 11) (1, 12)
    STAR       '*'           (1, 12) (1, 13)
    NUMBER     '12'          (1, 13) (1, 15)
    PERCENT    '%'           (1, 15) (1, 16)
    NUMBER     '0x12'        (1, 16) (1, 20)
    AT         '@'           (1, 20) (1, 21)
    NUMBER     '42'          (1, 21) (1, 23)
    rYrZs r2rz!CTokenizeTest.test_multiplicative$rr4c^|dd|dddS)Nra    TILDE      '~'           (1, 0) (1, 1)
    NUMBER     '1'           (1, 1) (1, 2)
    CIRCUMFLEX '^'           (1, 3) (1, 4)
    NUMBER     '1'           (1, 5) (1, 6)
    AMPER      '&'           (1, 7) (1, 8)
    NUMBER     '1'           (1, 9) (1, 10)
    VBAR       '|'           (1, 11) (1, 12)
    NUMBER     '1'           (1, 12) (1, 13)
    CIRCUMFLEX '^'           (1, 14) (1, 15)
    MINUS      '-'           (1, 16) (1, 17)
    NUMBER     '1'           (1, 17) (1, 18)
    raI    MINUS      '-'           (1, 0) (1, 1)
    NUMBER     '1'           (1, 1) (1, 2)
    STAR       '*'           (1, 2) (1, 3)
    NUMBER     '1'           (1, 3) (1, 4)
    SLASH      '/'           (1, 4) (1, 5)
    NUMBER     '1'           (1, 5) (1, 6)
    PLUS       '+'           (1, 6) (1, 7)
    NUMBER     '1'           (1, 7) (1, 8)
    STAR       '*'           (1, 8) (1, 9)
    NUMBER     '1'           (1, 9) (1, 10)
    DOUBLESLASH '//'          (1, 10) (1, 12)
    NUMBER     '1'           (1, 12) (1, 13)
    MINUS      '-'           (1, 14) (1, 15)
    MINUS      '-'           (1, 16) (1, 17)
    MINUS      '-'           (1, 17) (1, 18)
    MINUS      '-'           (1, 18) (1, 19)
    NUMBER     '1'           (1, 19) (1, 20)
    DOUBLESTAR '**'          (1, 20) (1, 22)
    NUMBER     '1'           (1, 22) (1, 23)
    rYrZs r2rzCTokenizeTest.test_unary8sN03							
58										r4c2|dddS)Nra    NAME       'import'      (1, 0) (1, 6)
    NAME       'sys'         (1, 7) (1, 10)
    COMMA      ','           (1, 10) (1, 11)
    NAME       'time'        (1, 12) (1, 16)
    NEWLINE    ''            (1, 16) (1, 16)
    NAME       'x'           (2, 0) (2, 1)
    EQUAL      '='           (2, 2) (2, 3)
    NAME       'sys'         (2, 4) (2, 7)
    DOT        '.'           (2, 7) (2, 8)
    NAME       'modules'     (2, 8) (2, 15)
    LSQB       '['           (2, 15) (2, 16)
    STRING     "'time'"      (2, 16) (2, 22)
    RSQB       ']'           (2, 22) (2, 23)
    DOT        '.'           (2, 23) (2, 24)
    NAME       'time'        (2, 24) (2, 28)
    LPAR       '('           (2, 28) (2, 29)
    RPAR       ')'           (2, 29) (2, 30)
    rYrZs r2rzCTokenizeTest.test_selector^rr4c2|dddSNra    AT         '@'           (1, 0) (1, 1)
    NAME       'staticmethod' (1, 1) (1, 13)
    NEWLINE    ''            (1, 13) (1, 13)
    NAME       'def'         (2, 0) (2, 3)
    NAME       'foo'         (2, 4) (2, 7)
    LPAR       '('           (2, 7) (2, 8)
    NAME       'x'           (2, 8) (2, 9)
    COMMA      ','           (2, 9) (2, 10)
    NAME       'y'           (2, 10) (2, 11)
    RPAR       ')'           (2, 11) (2, 12)
    COLON      ':'           (2, 12) (2, 13)
    NAME       'pass'        (2, 14) (2, 18)
    rYrZs r2rzCTokenizeTest.test_methodtrr4c2|dddSrgrYrZs r2rzCTokenizeTest.test_tabsrr4c|dd|dd|dd|dd|d	d
|dd|d
d|dd|dd|dd|dd|dd|dd|dd|dd|dd |d!d"|d#d$|d%d&|d'd(|d)d*dS)+Nrz    ASYNC      'async'       (1, 0) (1, 5)
    EQUAL      '='           (1, 6) (1, 7)
    NUMBER     '1'           (1, 8) (1, 9)
    ra8    NAME       'a'           (1, 0) (1, 1)
    EQUAL      '='           (1, 2) (1, 3)
    LPAR       '('           (1, 4) (1, 5)
    ASYNC      'async'       (1, 5) (1, 10)
    EQUAL      '='           (1, 11) (1, 12)
    NUMBER     '1'           (1, 13) (1, 14)
    RPAR       ')'           (1, 14) (1, 15)
    rz    ASYNC      'async'       (1, 0) (1, 5)
    LPAR       '('           (1, 5) (1, 6)
    RPAR       ')'           (1, 6) (1, 7)
    ra<    NAME       'class'       (1, 0) (1, 5)
    ASYNC      'async'       (1, 6) (1, 11)
    LPAR       '('           (1, 11) (1, 12)
    NAME       'Bar'         (1, 12) (1, 15)
    RPAR       ')'           (1, 15) (1, 16)
    COLON      ':'           (1, 16) (1, 17)
    NAME       'pass'        (1, 17) (1, 21)
    rz    NAME       'class'       (1, 0) (1, 5)
    ASYNC      'async'       (1, 6) (1, 11)
    COLON      ':'           (1, 11) (1, 12)
    NAME       'pass'        (1, 12) (1, 16)
    rz    AWAIT      'await'       (1, 0) (1, 5)
    EQUAL      '='           (1, 6) (1, 7)
    NUMBER     '1'           (1, 8) (1, 9)
    rz    NAME       'foo'         (1, 0) (1, 3)
    DOT        '.'           (1, 3) (1, 4)
    ASYNC      'async'       (1, 4) (1, 9)
    ra;    ASYNC      'async'       (1, 0) (1, 5)
    NAME       'for'         (1, 6) (1, 9)
    NAME       'a'           (1, 10) (1, 11)
    NAME       'in'          (1, 12) (1, 14)
    NAME       'b'           (1, 15) (1, 16)
    COLON      ':'           (1, 16) (1, 17)
    NAME       'pass'        (1, 18) (1, 22)
    ra<    ASYNC      'async'       (1, 0) (1, 5)
    NAME       'with'        (1, 6) (1, 10)
    NAME       'a'           (1, 11) (1, 12)
    NAME       'as'          (1, 13) (1, 15)
    NAME       'b'           (1, 16) (1, 17)
    COLON      ':'           (1, 17) (1, 18)
    NAME       'pass'        (1, 19) (1, 23)
    rz    ASYNC      'async'       (1, 0) (1, 5)
    DOT        '.'           (1, 5) (1, 6)
    NAME       'foo'         (1, 6) (1, 9)
    rz/    ASYNC      'async'       (1, 0) (1, 5)
    rz    ASYNC      'async'       (1, 0) (1, 5)
    NEWLINE    ''            (1, 5) (1, 5)
    AWAIT      'await'       (3, 0) (3, 5)
    rz    ASYNC      'async'       (1, 0) (1, 5)
    NEWLINE    ''            (1, 5) (1, 5)
    ELLIPSIS   '...'         (2, 0) (2, 3)
    NEWLINE    ''            (2, 3) (2, 3)
    AWAIT      'await'       (3, 0) (3, 5)
    rz    ASYNC      'async'       (1, 0) (1, 5)
    NEWLINE    ''            (1, 5) (1, 5)
    AWAIT      'await'       (2, 0) (2, 5)
    rz    NAME       'foo'         (1, 0) (1, 3)
    DOT        '.'           (1, 3) (1, 4)
    ASYNC      'async'       (1, 4) (1, 9)
    PLUS       '+'           (1, 10) (1, 11)
    NUMBER     '1'           (1, 12) (1, 13)
    ra;    ASYNC      'async'       (1, 0) (1, 5)
    NAME       'def'         (1, 6) (1, 9)
    NAME       'foo'         (1, 10) (1, 13)
    LPAR       '('           (1, 13) (1, 14)
    RPAR       ')'           (1, 14) (1, 15)
    COLON      ':'           (1, 15) (1, 16)
    NAME       'pass'        (1, 17) (1, 21)
    ra    ASYNC      'async'       (1, 0) (1, 5)
    NAME       'def'         (1, 6) (1, 9)
    NAME       'foo'         (1, 10) (1, 13)
    LPAR       '('           (1, 13) (1, 14)
    RPAR       ')'           (1, 14) (1, 15)
    COLON      ':'           (1, 15) (1, 16)
    NEWLINE    ''            (1, 16) (1, 16)
    INDENT     ''            (2, -1) (2, -1)
    NAME       'def'         (2, 2) (2, 5)
    NAME       'foo'         (2, 6) (2, 9)
    LPAR       '('           (2, 9) (2, 10)
    AWAIT      'await'       (2, 10) (2, 15)
    RPAR       ')'           (2, 15) (2, 16)
    COLON      ':'           (2, 16) (2, 17)
    NEWLINE    ''            (2, 17) (2, 17)
    INDENT     ''            (3, -1) (3, -1)
    AWAIT      'await'       (3, 4) (3, 9)
    EQUAL      '='           (3, 10) (3, 11)
    NUMBER     '1'           (3, 12) (3, 13)
    NEWLINE    ''            (3, 13) (3, 13)
    DEDENT     ''            (4, -1) (4, -1)
    NAME       'if'          (4, 2) (4, 4)
    NUMBER     '1'           (4, 5) (4, 6)
    COLON      ':'           (4, 6) (4, 7)
    NEWLINE    ''            (4, 7) (4, 7)
    INDENT     ''            (5, -1) (5, -1)
    AWAIT      'await'       (5, 4) (5, 9)
    NEWLINE    ''            (5, 9) (5, 9)
    DEDENT     ''            (6, -1) (6, -1)
    DEDENT     ''            (6, -1) (6, -1)
    ASYNC      'async'       (6, 0) (6, 5)
    PLUSEQUAL  '+='          (6, 6) (6, 8)
    NUMBER     '1'           (6, 9) (6, 10)
    NEWLINE    ''            (6, 10) (6, 10)
    ra    ASYNC      'async'       (1, 0) (1, 5)
    NAME       'def'         (1, 6) (1, 9)
    NAME       'foo'         (1, 10) (1, 13)
    LPAR       '('           (1, 13) (1, 14)
    RPAR       ')'           (1, 14) (1, 15)
    COLON      ':'           (1, 15) (1, 16)
    NEWLINE    ''            (1, 16) (1, 16)
    INDENT     ''            (2, -1) (2, -1)
    ASYNC      'async'       (2, 2) (2, 7)
    NAME       'for'         (2, 8) (2, 11)
    NAME       'i'           (2, 12) (2, 13)
    NAME       'in'          (2, 14) (2, 16)
    NUMBER     '1'           (2, 17) (2, 18)
    COLON      ':'           (2, 18) (2, 19)
    NAME       'pass'        (2, 20) (2, 24)
    DEDENT     ''            (2, -1) (2, -1)
    rah    ASYNC      'async'       (1, 0) (1, 5)
    NAME       'def'         (1, 6) (1, 9)
    NAME       'foo'         (1, 10) (1, 13)
    LPAR       '('           (1, 13) (1, 14)
    ASYNC      'async'       (1, 14) (1, 19)
    RPAR       ')'           (1, 19) (1, 20)
    COLON      ':'           (1, 20) (1, 21)
    AWAIT      'await'       (1, 22) (1, 27)
    ra~    NAME       'def'         (1, 0) (1, 3)
    NAME       'f'           (1, 4) (1, 5)
    LPAR       '('           (1, 5) (1, 6)
    RPAR       ')'           (1, 6) (1, 7)
    COLON      ':'           (1, 7) (1, 8)
    NEWLINE    ''            (1, 8) (1, 8)
    INDENT     ''            (3, -1) (3, -1)
    NAME       'def'         (3, 2) (3, 5)
    NAME       'baz'         (3, 6) (3, 9)
    LPAR       '('           (3, 9) (3, 10)
    RPAR       ')'           (3, 10) (3, 11)
    COLON      ':'           (3, 11) (3, 12)
    NAME       'pass'        (3, 13) (3, 17)
    NEWLINE    ''            (3, 17) (3, 17)
    ASYNC      'async'       (4, 2) (4, 7)
    NAME       'def'         (4, 8) (4, 11)
    NAME       'bar'         (4, 12) (4, 15)
    LPAR       '('           (4, 15) (4, 16)
    RPAR       ')'           (4, 16) (4, 17)
    COLON      ':'           (4, 17) (4, 18)
    NAME       'pass'        (4, 19) (4, 23)
    NEWLINE    ''            (4, 23) (4, 23)
    AWAIT      'await'       (6, 2) (6, 7)
    EQUAL      '='           (6, 8) (6, 9)
    NUMBER     '2'           (6, 10) (6, 11)
    DEDENT     ''            (6, -1) (6, -1)
    ra    ASYNC      'async'       (1, 0) (1, 5)
    NAME       'def'         (1, 6) (1, 9)
    NAME       'f'           (1, 10) (1, 11)
    LPAR       '('           (1, 11) (1, 12)
    RPAR       ')'           (1, 12) (1, 13)
    COLON      ':'           (1, 13) (1, 14)
    NEWLINE    ''            (1, 14) (1, 14)
    INDENT     ''            (3, -1) (3, -1)
    NAME       'def'         (3, 2) (3, 5)
    NAME       'baz'         (3, 6) (3, 9)
    LPAR       '('           (3, 9) (3, 10)
    RPAR       ')'           (3, 10) (3, 11)
    COLON      ':'           (3, 11) (3, 12)
    NAME       'pass'        (3, 13) (3, 17)
    NEWLINE    ''            (3, 17) (3, 17)
    ASYNC      'async'       (4, 2) (4, 7)
    NAME       'def'         (4, 8) (4, 11)
    NAME       'bar'         (4, 12) (4, 15)
    LPAR       '('           (4, 15) (4, 16)
    RPAR       ')'           (4, 16) (4, 17)
    COLON      ':'           (4, 17) (4, 18)
    NAME       'pass'        (4, 19) (4, 23)
    NEWLINE    ''            (4, 23) (4, 23)
    AWAIT      'await'       (6, 2) (6, 7)
    EQUAL      '='           (6, 8) (6, 9)
    NUMBER     '2'           (6, 10) (6, 11)
    DEDENT     ''            (6, -1) (6, -1)
    rYrZs r2rzCTokenizeTest.test_asyncsK*							
-0							
I(							
36							
.1							
K*							
K*							
47							
58							
K*							
G&							
47							
/2							
N-							
O.							
36							
#*		*		*		X	
HK						&	
9	<										

!		!		!		F	

"		"		"		"		"		r4c2|dddS)Nru7    NAME       'Örter'       (1, 0) (1, 6)
    EQUAL      '='           (1, 7) (1, 8)
    STRING     "u'places'"   (1, 9) (1, 18)
    NEWLINE    ''            (1, 18) (1, 18)
    NAME       'grün'        (2, 0) (2, 5)
    EQUAL      '='           (2, 6) (2, 7)
    STRING     "U'green'"    (2, 8) (2, 16)
    rYrZs r2rzCTokenizeTest.test_unicode	rr4cd}|t|d|t|d|t|d|t|d|t|d|t|d|t|d|t|d	|t|d
|t|d|t|d|t|d
|t|d|t|d|t|d|t|d|t|d|t|d|t|d|t|d|t|d|t|d|t|d|t|d|t|d|t|d|t|d|t|d|t|d|t|ddS)Nc:tt|Sr)rFrrs r2
get_tokensz5CTokenizeTest.test_invalid_syntax.<locals>.get_tokens	s9&AABBBr4z(1+2]z(1+2}z{1+2]1_z1.2_1e2_z1e+ u€0b120b1_20b20b1_0b0o180o1_80o80o1_0o0x1_0x012z'sdfsdfz'''sdfsdf''a((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((a))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))])rr)r>rns  r2test_invalid_syntaxz!CTokenizeTest.test_invalid_syntax	s	C	C	C	
+z7;;;+z7;;;+z7;;;+z4888+z6:::+z6:::+z5999+z6:::+z5999+z6:::+z7;;;+z5999+z6:::+z4888+z6:::+z7;;;+z5999+z6:::+z4888+z6:::+z4888+z4888+z5999+z6:::+z6:::+z5999+z9===+z=AAA+z3HIII+z377777r4cd}d}||dz
}tt|}||djtt|dd||}tt|}||djt|tt
|dddS)Ndctddt|D}|d|zdzz
}|S)Nc3&K|]}d|zdzV
dS)  z	if True:
Nr)r"rDs  r2	<genexpr>zICTokenizeTest.test_max_indent.<locals>.generate_source.<locals>.<genexpr>	s+OO1dQh,6OOOOOOr4rzpass
)rr)indentsrs  r2generate_sourcez6CTokenizeTest.test_max_indent.<locals>.generate_source	s@WWOOgOOOOOFdWnx//FMr4rr z<string>exec)	rFrr;r-rcompilerrrK)r>	MAXINDENTrvalidrGinvalids      r2test_max_indentzCTokenizeTest.test_max_indent	s				
 	A
..7>>??&111z6***!/),,7@@AA'222gw
F	
	
	
	
	
r4c4d}td}||dtd}|||||td}||dtd}|||||td}||d	td
}|||||dS)Nc4dt|DS)Ncg|]	^}}}||f
Srr)r"kindrrs    r2r#zYCTokenizeTest.test_continuation_lines_indentation.<locals>.get_tokens.<locals>.<listcomp>	s#ggg'9fqT6Ngggr4)rrms r2rnzECTokenizeTest.test_continuation_lines_indentation.<locals>.get_tokens	s gg=^_e=f=fggggr4z
            def fib(n):
                \
            '''Print a Fibonacci series up to n.'''
                \
            a, b = 0, 1
        ae    NAME       'def'         (2, 0) (2, 3)
    NAME       'fib'         (2, 4) (2, 7)
    LPAR       '('           (2, 7) (2, 8)
    NAME       'n'           (2, 8) (2, 9)
    RPAR       ')'           (2, 9) (2, 10)
    COLON      ':'           (2, 10) (2, 11)
    NEWLINE    ''            (2, 11) (2, 11)
    INDENT     ''            (4, -1) (4, -1)
    STRING     "'''Print a Fibonacci series up to n.'''" (4, 0) (4, 39)
    NEWLINE    ''            (4, 39) (4, 39)
    NAME       'a'           (6, 0) (6, 1)
    COMMA      ','           (6, 1) (6, 2)
    NAME       'b'           (6, 3) (6, 4)
    EQUAL      '='           (6, 5) (6, 6)
    NUMBER     '0'           (6, 7) (6, 8)
    COMMA      ','           (6, 8) (6, 9)
    NUMBER     '1'           (6, 10) (6, 11)
    NEWLINE    ''            (6, 11) (6, 11)
    DEDENT     ''            (6, -1) (6, -1)
        zu
            def fib(n):
                '''Print a Fibonacci series up to n.'''
                a, b = 0, 1
        z>
            pass
                \

            pass
        z    NAME       'pass'        (2, 0) (2, 4)
    NEWLINE    ''            (2, 4) (2, 4)
    NAME       'pass'        (5, 0) (5, 4)
    NEWLINE    ''            (5, 4) (5, 4)
        z+
            pass
            pass
        z
            if x:
                y = 1
                \
                        \
                    \
                \
                foo = 1
        aj    NAME       'if'          (2, 0) (2, 2)
    NAME       'x'           (2, 3) (2, 4)
    COLON      ':'           (2, 4) (2, 5)
    NEWLINE    ''            (2, 5) (2, 5)
    INDENT     ''            (3, -1) (3, -1)
    NAME       'y'           (3, 4) (3, 5)
    EQUAL      '='           (3, 6) (3, 7)
    NUMBER     '1'           (3, 8) (3, 9)
    NEWLINE    ''            (3, 9) (3, 9)
    NAME       'foo'         (8, 4) (8, 7)
    EQUAL      '='           (8, 8) (8, 9)
    NUMBER     '1'           (8, 10) (8, 11)
    NEWLINE    ''            (8, 11) (8, 11)
    DEDENT     ''            (8, -1) (8, -1)
        zI
            if x:
                y = 1
                foo = 1
        )rrBr;)r>rnr+code_no_conts    r2#test_continuation_lines_indentationz1CTokenizeTest.test_continuation_lines_indentation	s	h	h	h

	
D#	
	
	
,

	
D))::l+C+CDDD

	
D#	
	
	



	
D))::l+C+CDDD

	
D#	
	
	
"

	
D))::l+C+CDDDDDr4N)rrrrBr[rfrrrrrrrrrrrrrrrr4r2r[r[ys.EEE?	?	?	B,	,	,	\t	t	t	l=	=	=	~$	$	$	L			.			($	$	$	L			,			"			"H	H	H	T
	
	
	&8&8&8P


(`E`E`E`E`Er4r[ceZdZdZdS)CTokenizerBufferTestscdddzdddz}tj5}t|d|}t|ddddS#1swxYwYdS)Nz"        #coding: latin-1
        #ai'z

        #i'foo)rtemp_dirrr)r>test_scriptr	file_names    r2!test_newline_at_the_end_of_bufferz7CTokenizerBufferTests.test_newline_at_the_end_of_bufferL
s

e)e)

!
!	'X#He[AAII&&&	'	'	'	'	'	'	'	'	'	'	'	'	'	'	'	'	'	's!AAAN)rrrrrr4r2rrK
s#
'
'
'
'
'r4r__main__)5testrtest.supportrrrrrr	r
rrr
rrrrzrrrrriorrunittesttextwraprrrtest.test_grammarrrtest.support.script_helperrrrr.r3r6rrrrrr"rrrr[rrmainrr4r2<module>rs3""""""IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII!       ########<<<<<<<<""""""CCCCCCCC				 M	M	M	M	M	8M	M	M	^AAAAAAAA
.
.
.GGGGGxGGG."I"I"I"I"IH"I"I"IJ#G#G#G#G#GH#G#G#GL{"{"{"{"{"{"{"{"|RURURURURU8RURURUh&>&>&>&>&>X&>&>&>RL#L#L#L#L#HL#L#L#^OEOEOEOEOEHOEOEOEd'''''H-'''zHMOOOOOr4