403Webshell
Server IP : 121.121.20.254  /  Your IP : 216.73.217.141
Web Server : Microsoft-IIS/10.0
System : Windows NT WEB-SERVER 10.0 build 20348 (Windows Server 2022) AMD64
User : IUSR ( 0)
PHP Version : 8.3.28
Disable Function : NONE
MySQL : ON  |  cURL : ON  |  WGET : OFF  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  C:/Python313/Lib/test/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : C:/Python313/Lib/test/__pycache__/test_tokenize.cpython-313.opt-1.pyc
�

��i������SSKrSSKrSSKrSSKrSSKrSSKJrJr SSKJ	r	 SSKJ
r
Jr SSKJ
r
 SSKJr SSKJrJrJr SSKJrJr S	r"S
S\
5r"SS
\5rSr"SS\
5r"SS\
5r"SS\
5r"SS\
5r"SS\
5r"SS\
5r Sr!"SS\
5r""SS\
5r#"S S!\
5r$"S"S#\R5r%\&S$:Xa\RN"5 gg)%�N)�BytesIO�StringIO)�dedent)�TestCase�mock)�support)�	os_helper)�run_test_script�make_script�run_python_until_end)�VALID_UNDERSCORE_LITERALS�INVALID_UNDERSCORE_LITERALSc�F�/n[UR55nUSS;nUHwupVpxn	U[R:Xa U$U(aU[R:XaUSU:XaMD[R
UnUR
SUSSU<SSUSU35 My U$)N���z
r�    �10� �13)�len�
splitlines�tokenize�	ENDMARKER�NEWLINE�tok_name�append)
�token_generator�
source_string�result�	num_lines�missing_trailing_nl�type�token�start�end�lines
          �'C:\Python313\\Lib\test\test_tokenize.py�stringify_tokens_from_sourcer's���
�F��M�,�,�.�/�I�'��+�6�9��)8�%��U���8�%�%�%���M��4�8�+;�+;�#;��A��)�@S��� � ��&���
�
��T�"�I�Q�u�l�r�l�!�E�7�!�C�5�A�B�*9��M�c��\rSrSrSrSrSrSrSrSr	Sr
S	rS
rSr
SrS
rSrSrSrSrSrSrSrSrSrSrSrSrSrSrg)�TokenizeTest�&c���[URS55n[[R"UR5U5nURUS/UR
5R5-5 g)N�utf-8z*    ENCODING   'utf-8'       (0, 0) (0, 0))r�encoder'r�readline�assertEqual�rstripr��self�s�expected�frs     r&�check_tokenize�TokenizeTest.check_tokenize-s`��
�A�H�H�W�%�&��-�h�.?�.?��
�
�.K�Q�O������F�G�!���*�5�5�7�8�	9r(c�D�SnUR[5 [[R"U"5R55 SSS5 SnUR[5 [[R
"U"5R55 SSS5 SnUR[5 [[R
"U"5R55 SSS5 g!,(df   N�=f!,(df   No=f!,(df   g=f)Nc3�# �Sv� Sv� g7f)N�sdfosdg�r<r(r&�gen�/TokenizeTest.test_invalid_readline.<locals>.gen7s����O��O���
c3�# �Sv� Sv� g7f)Nssdfosdgr<r<r(r&r=r>=s�������r?c3�# �Sv� SS- g7f)Nr;�rr<r<r(r&r=r>Cs����O�
�a�C�s�
)�assertRaises�	TypeError�listr�__next__�generate_tokens�ZeroDivisionError)r3r=s  r&�test_invalid_readline�"TokenizeTest.test_invalid_readline6s���	��
�
�y�
)���"�"�3�5�>�>�2�3�*�	��
�
�y�
)���)�)�#�%�.�.�9�:�*�	��
�
�0�
1���)�)�#�%�.�.�9�:�2�
1�*�
)��*�
)��2�
1�s#�/C/�(/D�7/D�/
C=�
D�
Dc�>�[SRS55n[[R"UR55nURUSR[R5 URUSR[R5 g)N�xr-���r)	rr.rErr/r0r!rr)r3r6�tokenss   r&�test_implicit_newline�"TokenizeTest.test_implicit_newlineIsl��
�C�J�J�w�'�(���h�'�'��
�
�3�4����������(�*:�*:�;���������(�*<�*<�=r(c�r�URSS5 URSS5 URSS5 URSS5 S	n[U5RnUR[S
5n[
R
"U5HnM SSS5 UR
WRRS5 UR
URRS5 UR
URRS5 UR
URRS5 UR
URRS
5 UR
URRS
5 UR
URRS5 g!,(df   GN=f)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)
    z%if True:
    # NL
    foo='bar'

a@    NAME       'if'          (1, 0) (1, 2)
    NAME       'True'        (1, 3) (1, 7)
    OP         ':'           (1, 7) (1, 8)
    NEWLINE    '\r\n'        (1, 8) (1, 10)
    COMMENT    '# NL'        (2, 4) (2, 8)
    NL         '\r\n'        (2, 8) (2, 10)
    INDENT     '    '        (3, 0) (3, 4)
    NAME       'foo'         (3, 4) (3, 7)
    OP         '='           (3, 7) (3, 8)
    STRING     "'bar'"       (3, 8) (3, 13)
    NEWLINE    '\r\n'        (3, 13) (3, 15)
    NL         '\r\n'        (4, 0) (4, 2)
    DEDENT     ''            (5, 0) (5, 0)
            zx = 1 + \
1
a    NAME       'x'           (1, 0) (1, 1)
    OP         '='           (1, 2) (1, 3)
    NUMBER     '1'           (1, 4) (1, 5)
    OP         '+'           (1, 6) (1, 7)
    NUMBER     '1'           (2, 0) (2, 1)
    NEWLINE    '\r\n'        (2, 1) (2, 3)
            sdef k(x):
    x += 2
  x += 5
z3unindent does not match any outer indentation level��<string>�	z  x += 5)r7rr/�assertRaisesRegex�IndentationErrorrr0�	exception�lineno�filename�
end_lineno�
end_offset�msg�offset�text)r3�indent_error_filer/�e�toks     r&�
test_basic�TokenizeTest.test_basicQs{�����G�&�		�
	
���;�=�		�(	
���K�N�	� 	
���1�4�	���
�,�-�6�6��
�
#�
#�$4�%>�?�BC��(�(��2���3�?�
	
������+�+�Q�/�������-�-�z�:�������/�/��6�������/�/��6����
�K�K�O�O�A�	C�	
������+�+�Q�/�������)�)�:�6�?�?�s�6F'�'
F6c�H�URSS5 URSS5 URSS5 URSS5 URS	S
5 URSS5 URS
S5 URSS5 URSS5 g)N�0xff <= 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)
    �r7�r3s r&�test_int�TokenizeTest.test_int�s������M�,�		�
	
���M�,�		�
	
���,�/�		�
	
���-�0�		�	
���0�3�		�
	
���5�	8�			�	
���.�1�		�	
���0�3�		�
	
���0�3�		r(c��URSS5 URSS5 URSS5 URSS5 g)	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)
    rnros r&�	test_long�TokenizeTest.test_long�s_�����G�&�		�
	
���/�2�		�
	
���7�:�		�
	
���4�7�		r(c��URSS5 URSS5 URSS5 URSS5 URS	S
5 URSS5 URS
S5 g)N�x = 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)
    rnros r&�
test_float�TokenizeTest.test_float�s������M�,�		�
	
���M�,�		�
	
���M�,�		�
	
���M�,�		�
	
���K�*�		�
	
���O�.�		�	
���N�-�		r(c��Sn[H#nSU;aMURU"U5U5 M% SS1n[H+nX#;aM
U"U5 URU"U5U5 M- g![Ra MGf=f)Nc��[URS55n[R"UR5Hup#pEnU[R:XdMUs $ g)Nr-z
invalid token)rr.rr/�NUMBER)r4r6�toktyper"r#r$r%s       r&�number_token�;TokenizeTest.test_underscore_literals.<locals>.number_tokensL�������)�*�A�4<�4E�4E�a�j�j�4Q�0���D��h�o�o�-� �L�5R�#r(�(�0_7�09_99)r
r0rr�
TokenError�assertNotEqual)r3r��lit�extra_valid_casess    r&�test_underscore_literals�%TokenizeTest.test_underscore_literalss���	#�-�C��c�z�����\�#�.��4�	-�#�G�,��.�C��'��
��S�!�
����S� 1�3�7�/��
�&�&�
��
�s�A+�+B�Bc��URSS5 URSS5 URSS5 URSS5 URS	S
5 URSS5 URS
S5 URSS5 URSS5 URSS5 URSS5 URSS5 URSS5 URSS5 URSS5 URSS 5 URS!S"5 URS#S$5 URS%S&5 URS'S(5 URS)S*5 URS+S,5 URS-S.5 URS/S05 URS1S25 URS3S45 URS5S65 URS7S85 URS9S:5 URS;S<5 URS=S>5 URS?S@5 URSASB5 URSCSD5 URSESF5 URSGSH5 g)IN�x = ''; 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"��    FSTRING_START 'f"'          (1, 0) (1, 2)
    FSTRING_MIDDLE 'abc'         (1, 2) (1, 5)
    FSTRING_END '"'           (1, 5) (1, 6)
    �	fR"a{b}c"a=    FSTRING_START 'fR"'         (1, 0) (1, 3)
    FSTRING_MIDDLE 'a'           (1, 3) (1, 4)
    OP         '{'           (1, 4) (1, 5)
    NAME       'b'           (1, 5) (1, 6)
    OP         '}'           (1, 6) (1, 7)
    FSTRING_MIDDLE 'c'           (1, 7) (1, 8)
    FSTRING_END '"'           (1, 8) (1, 9)
    zfR"a{{{b!r}}}c"a�    FSTRING_START 'fR"'         (1, 0) (1, 3)
    FSTRING_MIDDLE 'a{'          (1, 3) (1, 5)
    OP         '{'           (1, 6) (1, 7)
    NAME       'b'           (1, 7) (1, 8)
    OP         '!'           (1, 8) (1, 9)
    NAME       'r'           (1, 9) (1, 10)
    OP         '}'           (1, 10) (1, 11)
    FSTRING_MIDDLE '}'           (1, 11) (1, 12)
    FSTRING_MIDDLE 'c'           (1, 13) (1, 14)
    FSTRING_END '"'           (1, 14) (1, 15)
    zf"{{{1+1}}}"a�    FSTRING_START 'f"'          (1, 0) (1, 2)
    FSTRING_MIDDLE '{'           (1, 2) (1, 3)
    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)
    FSTRING_MIDDLE '}'           (1, 9) (1, 10)
    FSTRING_END '"'           (1, 11) (1, 12)
    zf"""{f'''{f'{f"{1+1}"}'}'''}"""ad    FSTRING_START 'f"""'        (1, 0) (1, 4)
    OP         '{'           (1, 4) (1, 5)
    FSTRING_START "f'''"        (1, 5) (1, 9)
    OP         '{'           (1, 9) (1, 10)
    FSTRING_START "f'"          (1, 10) (1, 12)
    OP         '{'           (1, 12) (1, 13)
    FSTRING_START 'f"'          (1, 13) (1, 15)
    OP         '{'           (1, 15) (1, 16)
    NUMBER     '1'           (1, 16) (1, 17)
    OP         '+'           (1, 17) (1, 18)
    NUMBER     '1'           (1, 18) (1, 19)
    OP         '}'           (1, 19) (1, 20)
    FSTRING_END '"'           (1, 20) (1, 21)
    OP         '}'           (1, 21) (1, 22)
    FSTRING_END "'"           (1, 22) (1, 23)
    OP         '}'           (1, 23) (1, 24)
    FSTRING_END "'''"         (1, 24) (1, 27)
    OP         '}'           (1, 27) (1, 28)
    FSTRING_END '"""'         (1, 28) (1, 31)
    z.f"""     x
str(data, encoding={invalid!r})
"""a�    FSTRING_START 'f"""'        (1, 0) (1, 4)
    FSTRING_MIDDLE '     x\nstr(data, encoding=' (1, 4) (2, 19)
    OP         '{'           (2, 19) (2, 20)
    NAME       'invalid'     (2, 20) (2, 27)
    OP         '!'           (2, 27) (2, 28)
    NAME       'r'           (2, 28) (2, 29)
    OP         '}'           (2, 29) (2, 30)
    FSTRING_MIDDLE ')\n'         (2, 30) (3, 0)
    FSTRING_END '"""'         (3, 0) (3, 3)
    z#f"""123456789
something{None}bad"""aO    FSTRING_START 'f"""'        (1, 0) (1, 4)
    FSTRING_MIDDLE '123456789\nsomething' (1, 4) (2, 9)
    OP         '{'           (2, 9) (2, 10)
    NAME       'None'        (2, 10) (2, 14)
    OP         '}'           (2, 14) (2, 15)
    FSTRING_MIDDLE 'bad'         (2, 15) (2, 18)
    FSTRING_END '"""'         (2, 18) (2, 21)
    �
f"""abc"""��    FSTRING_START 'f"""'        (1, 0) (1, 4)
    FSTRING_MIDDLE 'abc'         (1, 4) (1, 7)
    FSTRING_END '"""'         (1, 7) (1, 10)
    �f"abc\
def"��    FSTRING_START 'f"'          (1, 0) (1, 2)
    FSTRING_MIDDLE 'abc\\\ndef'  (1, 2) (2, 3)
    FSTRING_END '"'           (2, 3) (2, 4)
    �Rf"abc\
def"��    FSTRING_START 'Rf"'         (1, 0) (1, 3)
    FSTRING_MIDDLE 'abc\\\ndef'  (1, 3) (2, 3)
    FSTRING_END '"'           (2, 3) (2, 4)
    z5f'some words {a+b:.3f} more words {c+d=} final words'aA    FSTRING_START "f'"          (1, 0) (1, 2)
    FSTRING_MIDDLE 'some words ' (1, 2) (1, 13)
    OP         '{'           (1, 13) (1, 14)
    NAME       'a'           (1, 14) (1, 15)
    OP         '+'           (1, 15) (1, 16)
    NAME       'b'           (1, 16) (1, 17)
    OP         ':'           (1, 17) (1, 18)
    FSTRING_MIDDLE '.3f'         (1, 18) (1, 21)
    OP         '}'           (1, 21) (1, 22)
    FSTRING_MIDDLE ' more words ' (1, 22) (1, 34)
    OP         '{'           (1, 34) (1, 35)
    NAME       'c'           (1, 35) (1, 36)
    OP         '+'           (1, 36) (1, 37)
    NAME       'd'           (1, 37) (1, 38)
    OP         '='           (1, 38) (1, 39)
    OP         '}'           (1, 39) (1, 40)
    FSTRING_MIDDLE ' final words' (1, 40) (1, 52)
    FSTRING_END "'"           (1, 52) (1, 53)
    z
f'''{
3
=}'''a`    FSTRING_START "f'''"        (1, 0) (1, 4)
    OP         '{'           (1, 4) (1, 5)
    NL         '\n'          (1, 5) (1, 6)
    NUMBER     '3'           (2, 0) (2, 1)
    NL         '\n'          (2, 1) (2, 2)
    OP         '='           (3, 0) (3, 1)
    OP         '}'           (3, 1) (3, 2)
    FSTRING_END "'''"         (3, 2) (3, 5)
    �f'''__{
    x:a
}__'''a�    FSTRING_START "f'''"        (1, 0) (1, 4)
    FSTRING_MIDDLE '__'          (1, 4) (1, 6)
    OP         '{'           (1, 6) (1, 7)
    NL         '\n'          (1, 7) (1, 8)
    NAME       'x'           (2, 4) (2, 5)
    OP         ':'           (2, 5) (2, 6)
    FSTRING_MIDDLE 'a\n'         (2, 6) (3, 0)
    OP         '}'           (3, 0) (3, 1)
    FSTRING_MIDDLE '__'          (3, 1) (3, 3)
    FSTRING_END "'''"         (3, 3) (3, 6)
    �+f'''__{
    x:a
    b
     c
      d
}__'''a�    FSTRING_START "f'''"        (1, 0) (1, 4)
    FSTRING_MIDDLE '__'          (1, 4) (1, 6)
    OP         '{'           (1, 6) (1, 7)
    NL         '\n'          (1, 7) (1, 8)
    NAME       'x'           (2, 4) (2, 5)
    OP         ':'           (2, 5) (2, 6)
    FSTRING_MIDDLE 'a\n    b\n     c\n      d\n' (2, 6) (6, 0)
    OP         '}'           (6, 0) (6, 1)
    FSTRING_MIDDLE '__'          (6, 1) (6, 3)
    FSTRING_END "'''"         (6, 3) (6, 6)
    uz    '''Autorzy, którzy tą jednostkę mają wpisani jako AKTUALNA -- czyli
    aktualni pracownicy, obecni pracownicy'''
u    INDENT     '    '        (1, 0) (1, 4)
    STRING     "'''Autorzy, którzy tą jednostkę mają wpisani jako AKTUALNA -- czyli\n    aktualni pracownicy, obecni pracownicy'''" (1, 4) (2, 45)
    NEWLINE    '\n'          (2, 45) (2, 46)
    DEDENT     ''            (3, 0) (3, 0)
    rnros r&�test_string�TokenizeTest.test_string*s�����.�1�		�	
���1�4�		�	
���A�D�		�	
���/�2�		�	
���/�2�		�	
���C�
F�
		�	
���C�
F�
		�	
���-�0�		�
	
���-�0�		�	
���-�0�		�
	
���-�0�		�
	
���C�F�		�	
���C�F�		�	
���C�F�		�	
���C�F�		�	
�����		�
	
�����		�	
�����		�	
�����		�	
�����		�	
�����		�
	
���H�'�		�
	
���K�*�		�	
���-�0�		�	
���N�
-�
		�	
���E�H�		�*	
���N�
Q�
		�	
���B�E�		�	
���L�+�		�
	
�����		�	
�����		�	
���S�V�		�(	
���	�	�		�	
���
��		�	
���
��
		�&	
�����		r(c�p�URSS5 URSS5 URSS5 g)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)
    rnros r&�
test_function�TokenizeTest.test_functionjsJ�����?�B�		�,	
���;�>�		�"	
���D�G�		r(c�(�URSS5 g)N�Xif 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)
    rnros r&�test_comparison�TokenizeTest.test_comparison�������M�!O�"		r(c�(�URSS5 g)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)
    rnros r&�
test_shift�TokenizeTest.test_shift�s�����-�0�		r(c�(�URSS5 g)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)
    rnros r&�
test_additive�TokenizeTest.test_additive�������C�F�		r(c�(�URSS5 g)N�x = 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)
    rnros r&�test_multiplicative� TokenizeTest.test_multiplicative�������5�8�		r(c�L�URSS5 URSS5 g)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)
    rnros r&�
test_unary�TokenizeTest.test_unarys0�����0�3�		�	
���5�8�		r(c�(�URSS5 g)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)
    rnros r&�
test_selector�TokenizeTest.test_selector(������N�Q�		r(c�(�URSS5 g)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)
    rnros r&�test_method�TokenizeTest.test_method>������?�
B�
		r(c�(�URSS5 g)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)
    rnros r&�	test_tabs�TokenizeTest.test_tabsOs�����-�/�		r(c�(�URSS5 g)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)
    rnros r&�test_non_ascii_identifiers�'TokenizeTest.test_non_ascii_identifiersds�����@�C�		r(c�(�URSS5 g)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)
    rnros r&�test_unicode�TokenizeTest.test_unicodep������B�E�		r(c��URSS5 URSS5 URSS5 URSS5 URS	S
5 URSS5 URS
S5 URSS5 URSS5 URSS5 URSS5 URSS5 URSS5 URSS5 URSS5 URSS 5 URS!S"5 URS#S$5 URS%S&5 URS'S(5 URS)S*5 g)+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)
    �async�/    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)
    rnros r&�
test_async�TokenizeTest.test_async|s������K�*�		�	
���-�0�		�	
���I�(�		�	
���3�6�		�	
���.�1�		�	
���K�*�		�	
���K�*�		�	
���4�7�		�	
���5�8�		�	
���K�*�		�	
���G�&�		�	
���4�7�		�	
���/�2�		�	
���N�-�		�	
���O�.�		�	
���3�6�		�	
����#�*		�X	
�����		�*	
���=�	@�			�	
�����
#		�J	
�����
$		r(c�(�URSS5 g)Nz[
    # A comment here
    1
]
ad    OP         '['           (1, 0) (1, 1)
    NL         '\n'          (1, 1) (1, 2)
    COMMENT    '# A comment here' (2, 4) (2, 20)
    NL         '\n'          (2, 20) (2, 21)
    NUMBER     '1'           (3, 4) (3, 5)
    NL         '\n'          (3, 5) (3, 6)
    OP         ']'           (4, 0) (4, 1)
    NEWLINE    '\n'          (4, 1) (4, 2)
    rnros r&�3test_newline_after_parenthesized_block_with_comment�@TokenizeTest.test_newline_after_parenthesized_block_with_comment�s������
	�		r(c�(�URSS5 g)Nz); xz�    OP         ')'           (1, 0) (1, 1)
    OP         ';'           (1, 1) (1, 2)
    NAME       'x'           (1, 3) (1, 4)
    rnros r&�,test_closing_parenthesis_from_different_line�9TokenizeTest.test_closing_parenthesis_from_different_line�s�����F�%�		r(c�(�URSS5 g)NuTa = f'''
    Autorzy, którzy tą jednostkę mają wpisani jako AKTUALNA -- czyli'''u%    NAME       'a'           (1, 0) (1, 1)
    OP         '='           (1, 2) (1, 3)
    FSTRING_START "f'''"        (1, 4) (1, 8)
    FSTRING_MIDDLE '\n    Autorzy, którzy tą jednostkę mają wpisani jako AKTUALNA -- czyli' (1, 8) (2, 68)
    FSTRING_END "'''"         (2, 68) (2, 71)
    rnros r&� test_multiline_non_ascii_fstring�-TokenizeTest.test_multiline_non_ascii_fstring�s�����O�Q�		r(c�L�URSS5 URSS5 g)Nu4f'''
    🔗 This is a test {test_arg1}🔗
🔗'''uZ    FSTRING_START "f'''"        (1, 0) (1, 4)
    FSTRING_MIDDLE '\n    🔗 This is a test ' (1, 4) (2, 21)
    OP         '{'           (2, 21) (2, 22)
    NAME       'test_arg1'   (2, 22) (2, 31)
    OP         '}'           (2, 31) (2, 32)
    FSTRING_MIDDLE '🔗\n🔗'        (2, 32) (3, 1)
    FSTRING_END "'''"         (3, 1) (3, 4)
    uf"{f(a=lambda: 'à'
)}"u?    FSTRING_START 'f"'          (1, 0) (1, 2)
    OP         '{'           (1, 2) (1, 3)
    NAME       'f'           (1, 3) (1, 4)
    OP         '('           (1, 4) (1, 5)
    NAME       'a'           (1, 5) (1, 6)
    OP         '='           (1, 6) (1, 7)
    NAME       'lambda'      (1, 7) (1, 13)
    OP         ':'           (1, 13) (1, 14)
    STRING     "'à'"         (1, 15) (1, 18)
    NL         '\n'          (1, 18) (1, 19)
    OP         ')'           (2, 0) (2, 1)
    OP         '}'           (2, 1) (2, 2)
    FSTRING_END '"'           (2, 2) (2, 3)
    rnros r&�*test_multiline_non_ascii_fstring_with_expr�7TokenizeTest.test_multiline_non_ascii_fstring_with_expr�s2������
�		�	
���:�=�		r(r<N)�__name__�
__module__�__qualname__�__firstlineno__r7rIrOrbrprsr}r�r�r�r�r�r�r�r�r�r�r�r�r�rrrr	r�__static_attributes__r<r(r&r*r*&s���9�;�&>�F7�P7	�r	�0&	�P8�0~	�@
:	�x$	�L
	�	�.	�(#	�J	�,	�"	�*
	�
	�P	�d	�"	�		�	r(r*c��\rSrSrSrSrg)�GenerateTokensTesti�c���[U5n[[R"UR5U5nURXBR
5R55 g�N)rr'rrGr/r0r1rr2s     r&r7�!GenerateTokensTest.check_tokenize�sG��
�Q�K��-�h�.F�.F�q�z�z�.R�TU�V��������!2�!=�!=�!?�@r(r<N)rrrrr7rr<r(r&rr�s��Ar(rc	��/n[R"[URS55R5nUH�up4  nU[R:XafSU;a`UR[RS4[RS4[R[U54[RS4/5 M�URX445 M� [R"U5RS5R5$)Nr-�.�Decimalr��))rrr.r/r��extend�NAME�OP�STRING�reprr�
untokenize�decode�strip)r4r�g�toknum�tokval�_s      r&�decistmtr(�s���
�F����'�!�(�(�7�"3�4�=�=�>�A�$%����1�a��X�_�_�$�����M�M����	�*����c�"����$�v�,�/����c�"�	�
�
�M�M�6�*�+�%&����v�&�-�-�g�6�<�<�>�>r(c� �\rSrSrSrSrSrg)�TestMisci�c���SSKJn SnUR[U5S5 UR	[[
U55S5 UR[
[U55U"S55 g)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)�decimalrr0r(�assertRegexr �eval)r3rr4s   r&�
test_decistmt�TestMisc.test_decistmt�sd��	$�"������!��S�	U�	
����d�1�g��(B�C�	
����h�q�k�*� �!D�E�	Gr(c�n�[R/SQ-nUR[RU5 g)N)�	TokenInfor�rG�detect_encodingr!�openr)r"�__all__�assertCountEqualr)r3r5s  r&�test___all__�TestMisc.test___all__�s-���=�=�$
�
��	
���h�.�.��9r(r<N)rrrrr/r7rr<r(r&r*r*�s
��G�(:r(r*c�<�\rSrSrSrSrSrSrSrSr	Sr
S	rg
)�TestTokenizerAdheresToPep0263izM
Test that tokenizer adheres to the coding behaviour stipulated in PEP 0263.
c��[RR[RR[5SU5n[US5n[RX5 SSS5 g!,(df   g=f)N�tokenizedata�rb)�os�path�join�dirname�__file__r4�
TestRoundtrip�check_roundtrip)r3rYr?r6s    r&�	_testFile�'TestTokenizerAdheresToPep0263._testFilesK���w�w�|�|�B�G�G�O�O�H�5�~�x�P��
�$��
���)�)�$�2��
�
�s�A.�.
A<c�*�SnURU5 g)Nz9tokenize_tests-utf8-coding-cookie-and-no-utf8-bom-sig.txt�rE�r3r6s  r&�'test_utf8_coding_cookie_and_no_utf8_bom�ETestTokenizerAdheresToPep0263.test_utf8_coding_cookie_and_no_utf8_bom���G�����q�r(c�J�SnUR[URU5 g)aV
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�rC�SyntaxErrorrErIs  r&�&test_latin1_coding_cookie_and_utf8_bom�DTestTokenizerAdheresToPep0263.test_latin1_coding_cookie_and_utf8_boms ��
G�����+�t�~�~�q�9r(c�*�SnURU5 g)Nz9tokenize_tests-no-coding-cookie-and-utf8-bom-sig-only.txtrHrIs  r&�"test_no_coding_cookie_and_utf8_bom�@TestTokenizerAdheresToPep0263.test_no_coding_cookie_and_utf8_bomrLr(c�*�SnURU5 g)Nz6tokenize_tests-utf8-coding-cookie-and-utf8-bom-sig.txtrHrIs  r&�$test_utf8_coding_cookie_and_utf8_bom�BTestTokenizerAdheresToPep0263.test_utf8_coding_cookie_and_utf8_bom#s��D�����q�r(c��UR[URS5 UR[URS5 g)Nz
bad_coding.pyzbad_coding2.pyrNros r&�test_bad_coding_cookie�4TestTokenizerAdheresToPep0263.test_bad_coding_cookie's/�����+�t�~�~��G����+�t�~�~�7G�Hr(r<N)rrrr�__doc__rErJrPrSrVrYrr<r(r&r:r:s&���3�
�	:���Ir(r:c��\rSrSrSrSrg)�
Test_Tokenizei,c�^^�SnURS5mSmUU4Sjn[[R"U"5RSSS95SSn[R
"SSS	S
S5/nUR
X4S5 g)Nu"ЉЊЈЁЂ"r-Fc3�2># �T(dSmTv� gSv� g7f)NTr(r<)�firstr%s��r&r/�NTest_Tokenize.test__tokenize_decodes_with_specified_encoding.<locals>.readline2s��������
��	�s�T)�encoding�extra_tokensrMrR�rBr�rB�zbytes not decoded with encoding)r.rEr�!_generate_tokens_from_c_tokenizerrFr2r0)r3�literalr/rN�expected_tokensr`r%s     @@r&�.test__tokenize_decodes_with_specified_encoding�<Test_Tokenize.test__tokenize_decodes_with_specified_encoding.s���� ���~�~�g�&����	��h�@�@���AT�AT�JQ�NR�T�U�UX�VX�Z��$�-�-�a����Q_�`�a������:�	<r(r<N)rrrrrjrr<r(r&r]r],s��<r(r]c��\rSrSrSrSrSrSrSrSr	Sr
S	rS
rSr
SrS
rSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrg)�TestDetectEncodingiCc�^^�SmUU4SjnU$)Nrc�F>�T[T5:Xa[eTTnTS-
mU$�NrB)r�
StopIteration)r%�index�liness ��r&r/�1TestDetectEncoding.get_readline.<locals>.readlineGs,�����E�
�"�#�#���<�D��Q�J�E��Kr(r<)r3rsr/rrs ` @r&�get_readline�TestDetectEncoding.get_readlineEs�����	��r(c��Sn[R"URU55up#URUS5 URU[	USS55 g)N)�#!/home/ä/bin/python
s# something €
�print(something)
�do_something(else)
r-��rr3rur0rE�r3rsrb�consumed_liness    r&�test_no_bom_no_encoding_cookie�1TestDetectEncoding.test_no_bom_no_encoding_cookiePsS��
��$,�#;�#;�D�<M�<M�e�<T�#U� ������7�+������e�B�Q�i��9r(c��SnUR[5 [R"UR	U55 SSS5 g!,(df   g=f)N)s#!/home/�/bin/python

ryrz�rCrOrr3ru�r3rss  r&�/test_no_bom_no_encoding_cookie_first_line_error�BTestDetectEncoding.test_no_bom_no_encoding_cookie_first_line_error[�>��
��
�
�
�{�
+��$�$�T�%6�%6�u�%=�>�,�
+�
+���&A�
Ac��SnUR[5 [R"UR	U55 SSS5 g!,(df   g=f)N)�#!/usr/bin/python
�# something �
ryrzr�r�s  r&�0test_no_bom_no_encoding_cookie_second_line_error�CTestDetectEncoding.test_no_bom_no_encoding_cookie_second_line_errord�>��
���
�
�{�
+��$�$�T�%6�%6�u�%=�>�,�
+�
+�r�c��Sn[R"URU55up#URUS5 URUSS/5 g)N)s#!/home/ä/bin/python
ryrz�	utf-8-sigrxry�rr3rur0r}s    r&�test_bom_no_cookie�%TestDetectEncoding.test_bom_no_cookiensS��
��
$,�#;�#;�D�<M�<M�e�<T�#U� ������;�/�����:�<Q�R�	Tr(c��SnUR[5 [R"UR	U55 SSS5 g!,(df   g=f)N)s#!/home/�/bin/python
ryrzr�r�s  r&�#test_bom_no_cookie_first_line_error�6TestDetectEncoding.test_bom_no_cookie_first_line_erroryr�r�c��SnUR[5 [R"UR	U55 SSS5 g!,(df   g=f)N)s#!/usr/bin/python
r�ryrzr�r�s  r&�$test_bom_no_cookie_second_line_error�7TestDetectEncoding.test_bom_no_cookie_second_line_error�r�r�c��Sn[R"URU55up#URUS5 URUS/5 g)N)�# -*- coding: latin-1 -*-
ryrz�
iso-8859-1r�r�r}s    r&�test_cookie_first_line_no_bom�0TestDetectEncoding.test_cookie_first_line_no_bom�sM��
��
$,�#;�#;�D�<M�<M�e�<T�#U� ������<�0�����*H�)I�Jr(c��Sn[R"URU55up#URUS5 URUS/5 g)N)s# coding=utf-8
ryrzr�s# coding=utf-8
r�r}s    r&�&test_matched_bom_and_cookie_first_line�9TestDetectEncoding.test_matched_bom_and_cookie_first_line�sM��
��
$,�#;�#;�D�<M�<M�e�<T�#U� ������;�/�����*=�)>�?r(c�t�SnURU5nUR[[RU5 g)N)s## vim: set fileencoding=ascii :
ryrz�rurCrOrr3�r3rsr/s   r&�<test_mismatched_bom_and_cookie_first_line_raises_syntaxerror�OTestDetectEncoding.test_mismatched_bom_and_cookie_first_line_raises_syntaxerror�s3��
��
�$�$�U�+�����+�x�'?�'?��Jr(c��Sn[R"URU55up#URUS5 SS/nURX45 g)N)�
#! something
� # vim: set fileencoding=ascii :
ryrz�asciir�r�r��r3rsrbr~r5s     r&�test_cookie_second_line_no_bom�1TestDetectEncoding.test_cookie_second_line_no_bom�sR��
��$,�#;�#;�D�<M�<M�e�<T�#U� ������7�+�%�'K�L������2r(c��Sn[R"URU55up#URUS5 URUSS/5 g)N)�#! something
�f# coding=utf-8
ryrzr�r�r�r�r}s    r&�'test_matched_bom_and_cookie_second_line�:TestDetectEncoding.test_matched_bom_and_cookie_second_line�sS��
��$,�#;�#;�D�<M�<M�e�<T�#U� ������;�/�����+�-A�B�	Dr(c�t�SnURU5nUR[[RU5 g)N)r�r�ryrzr�r�s   r&�=test_mismatched_bom_and_cookie_second_line_raises_syntaxerror�PTestDetectEncoding.test_mismatched_bom_and_cookie_second_line_raises_syntaxerror�s3��
���$�$�U�+�����+�x�'?�'?��Jr(c��Sn[R"URU55up#URUS5 S/nURX45 g)N)�print('£')
�%# vim: set fileencoding=iso8859-15 :
�
print('€')
r-r�r�r�s     r&�/test_cookie_second_line_noncommented_first_line�BTestDetectEncoding.test_cookie_second_line_noncommented_first_line�sO��
��
$,�#;�#;�D�<M�<M�e�<T�#U� ������7�+�*�+������2r(c��Sn[R"URU55up#URUS5 SS/nURX45 g)N)�
r�r��
iso8859-15r�r�r�r�s     r&�(test_cookie_second_line_empty_first_line�;TestDetectEncoding.test_cookie_second_line_empty_first_line�sR��
��
$,�#;�#;�D�<M�<M�e�<T�#U� ������<�0��D�E������2r(c��Sn[R"URU55up#URUS5 URU[	USS55 g)N)rxs# something
r�ryrzr-r{r|r}s    r&�test_cookie_third_line�)TestDetectEncoding.test_cookie_third_line�sS��
��$,�#;�#;�D�<M�<M�e�<T�#U� ������7�+������e�B�Q�i��9r(c��Sn[R"URU55up#URUS5 URU[	USS55 g)N)s#coding:iso8859-15
�#coding:latin1
ryr�rBr|r}s    r&�test_double_coding_line�*TestDetectEncoding.test_double_coding_line�sS��
��
$,�#;�#;�D�<M�<M�e�<T�#U� ������<�0������e�B�Q�i��9r(c��Sn[R"URU55up#URUS5 URU[	USS55 g)N)s!#coding:iso8859-15 coding:latin1
ryr�rBr|r}s    r&�test_double_coding_same_line�/TestDetectEncoding.test_double_coding_same_line�sS��
��$,�#;�#;�D�<M�<M�e�<T�#U� ������<�0������e�B�Q�i��9r(c��Sn[R"URU55up#URUS5 URU[	USS55 g)N)s#coding:utf-8
r�ryr-rBr|r}s    r&�test_double_coding_utf8�*TestDetectEncoding.test_double_coding_utf8sS��
��
$,�#;�#;�D�<M�<M�e�<T�#U� ������7�+������e�B�Q�i��9r(c��SnUHtnSHknURSU5nSSURS5-S-SS	4nURU5n[R"U5upxURUS
5 Mm Mv g)N)�latin-1r�ziso-latin-1zlatin-1-unixziso-8859-1-unixziso-latin-1-mac��-r'r�r��
# coding: r�r�sprint(things)
sdo_something += 4
r���replacer.rurr3r0�	r3�	encodingsrb�rep�encrs�rl�foundr~s	         r&�test_latin1_normalization�,TestDetectEncoding.test_latin1_normalizations���;�	�!�H�!���&�&�s�C�0��/�&����G�)<�<�u�D�+�/�1���&�&�u�-��(0�(@�(@��(D�%��� � ���5�"�"r(c�t�SnURU5nUR[[RU5 g)N�s
print("�")r�r�s   r&�test_syntaxerror_latin1�*TestDetectEncoding.test_syntaxerror_latin1s3�����$�$�U�+�����+�x�'?�'?��Jr(c��SnUHsnSHjnURSU5nSSURS5-S-S4nURU5n[R"U5upxURUS	5 Ml Mu g)
N)r-z	utf-8-macz
utf-8-unixr�r�r�r�r�r�s1 + 3
r-r�r�s	         r&�test_utf8_normalization�*TestDetectEncoding.test_utf8_normalization#s���8�	�!�H�!���&�&�s�C�0��/�&����G�)<�<�u�D�#�%���&�&�u�-��(0�(@�(@��(D�%��� � ���0�"�"r(c���URS5n[R"U5up#URUS5 URUS/5 [R"URS55up#URUS5 URU/5 URS5n[R"U5up#URUS5 URUS/5 URS5n[R"U5up#URUS5 URU/5 URS5nUR	[
[RU5 g)	N)ryr-ryr<)sprint(something)
r�)�)s# coding: bad
)rurr3r0rCrO�r3r/rbr~s    r&�test_short_files�#TestDetectEncoding.test_short_files0s=���$�$�%=�>��#+�#;�#;�H�#E� ������7�+�����*?�)@�A�#+�#;�#;�D�<M�<M�b�<Q�#R� ������7�+������,��$�$�%I�J��#+�#;�#;�H�#E� ������;�/�����*?�)@�A��$�$�%7�8��#+�#;�#;�H�#E� ������;�/������,��$�$�%:�;�����+�x�'?�'?��Jr(c��URS5n[R"U5up#URUS5 URUS/5 g)N)�print("#coding=fake")r-r�)rurr3r0r�s    r&�test_false_encoding�&TestDetectEncoding.test_false_encodingGsJ���$�$�%@�A��#+�#;�#;�H�#E� ������7�+�����*B�)C�Dr(c��[RS-nUR[RU5 SH�n[	USUS9n[SU-US9 [SUS9 SSS5 [R"U5nURURU5 URURS5 SSS5 M� [	USS	S9n[SUS9 SSS5 [R"U5nURURS	5 URURS5 SSS5 g!,(df   N�=f!,(df   GM =f!,(df   N�=f!,(df   g=f)
Nz.py)ziso-8859-15r-�w�rbz# coding: %s��fileuprint('euro:€')�rr�)
r	�TESTFN�
addCleanup�unlinkr4�printrr0rb�mode)r3rYrb�fps    r&�	test_open�TestDetectEncoding.test_openNs���#�#�e�+�����	�(�(�(�3�1�H��h��h�7�2��n�x�/�b�9��,�2�6�8����x�(�B�� � ����h�7�� � ����#�.�)�(�	1��(�C�+�
6�"��(�r�2�7�
�]�]�8�
$�����R�[�[�+�6����R�W�W�c�*�%�
$�8�7��)�(��
7�
6��
$�
$�s0�D5�:9E�
E�39E*�5
E	�
E	�
E'�*
E8c�^�SnSm"U4SjS5nUR[5 U"TU5nU?[R"UR
5 SSS5 UR
[SRU55 U"TU5n[R"UR
5 SSS5 g!,(df   Nf=f!,(df   g=f)N�some_file_pathr�c�(>�\rSrSrSrU4SjrSrg)�;TestDetectEncoding.test_filename_in_exception.<locals>.Bunkihc�*�X lXlSUlg)Nr)�name�_lines�_index)r3rsr?s   r&�__init__�DTestDetectEncoding.test_filename_in_exception.<locals>.Bunk.__init__is�� �	�#����r(c�>�UR[T5:Xa[eTURnU=RS-
slU$rp)rrrq)r3r%rss  �r&r/�DTestDetectEncoding.test_filename_in_exception.<locals>.Bunk.readlinens:����;�;�#�e�*�,�'�'��T�[�[�)�����q� ���r()rrr�N)rrrrrr/r)rss�r&�Bunkr�hs���
 �

�
r(rz.*{})rCrOr�rr3r/rU�format)r3r?r�insrss    @r&�test_filename_in_exception�-TestDetectEncoding.test_filename_in_exceptionbs��������	�	��
�
�{�
+��u�d�#�C����$�$�S�\�\�2�	,�
�
#�
#�K����t�1D�
E��u�d�#�C��$�$�S�\�\�2�F�
E�,�
+��
F�
E�s�,B4�*C�4
C�
Cc��[S5n[R"SUS9 UR[[
RS5 SSS5 URUR5 g!,(df   N*=f)Ns#coding:xxxztokenize._builtin_open)�return_value�foobar)	rr�patchrCrOrr4�
assertTrue�closed)r3�ms  r&�test_open_error�"TestDetectEncoding.test_open_error~sQ���N�#��
�Z�Z�0�q�
A����k�8�=�=�(�C�B�������!�B�
A�s�&A+�+
A9r<N) rrrrrurr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r	rrr<r(r&rmrmCs���	�	:�?�?�	T�?�?�K�@�K�
3�
D�K�	3�	3�
:�	:�:�:�
6�K�1�K�.E�+�(3�8"r(rmc�D�\rSrSrSrSrSrSrSrSr	Sr
S	rS
rg)�TestTokenizei�c�V^^	^
�SSKnSm	Sm
U	4SjnU
4SjnSmU4SjnURnURnX!lX1l[R"U5nUR[	U5SS/SQ5 XQlXalURT
T	5 g!XQlXalf=f)Nrr-c�>�TSS/4$)N�first�secondr<)r/rbs �r&�mock_detect_encoding�8TestTokenize.test_tokenize.<locals>.mock_detect_encoding�s����h�	�2�2�2r(c�z>�Um/nU"5nU(aURU5 M#U$![a Us$f=fr)rqr)r/rb�kwargs�out�	next_line�
encoding_useds     �r&�mock__tokenize�2TestTokenize.test_tokenize.<locals>.mock__tokenize�sK���$�M��C��� (�
�I���J�J�y�)���
��%���J��s�+�:�:c�N>�TS-
mTS:Xag[T5R5$)NrB�r()�strr.)�counters�r&�
mock_readline�1TestTokenize.test_tokenize.<locals>.mock_readline�s)����q�L�G��!�|���w�<�&�&�(�(r(rB)rr�1�2�3�4)rr3rgr0rE)r3�tokenize_modulerr!r'�orig_detect_encoding�orig_c_token�resultsr&rbr s        @@@r&�
test_tokenize�TestTokenize.test_tokenize�s����*����
�	3�	���	)� /�>�>��&�H�H��*>�'�<J�9�	M��'�'�
�6�G����T�'�]�1�2�.�J�
L�/C�+�@L�=������1��/C�+�@L�=�s�6B�B(c	�l�/n[S5H!nURSRUS95 M# URS5 SRU5n[	[
R
"[
URS55R55nURUSRS5 g)Ni�zdef i{i}(): return {i})�i�OK�
r-���)�rangerrr@rErrr.r/r0�string)r3�bufr4�tokss    r&�test_oneline_defs�TestTokenize.test_oneline_defs�s������s��A��J�J�/�6�6��6�;�<���
�
�4���i�i��n���H�%�%�g�c�j�j��.A�&B�&K�&K�L�M������b����$�/r(c	�l�[[R"[URS55R55n[U5nUR
[U5SU-5 UR
[RUSR[R[R5 [U5HHnUR
[RX5S-R[RX%5 MJ UR
[RUSU-R[R[R5 UR
[RUSU-R[R[R5 g)Nr-rRrrBr{)rErrr.r/rr0r�
exact_type�ENCODINGr8r"rr)r3�opstr�optypesrN�num_optypesr4s      r&�assertExactTypeEqual�!TestTokenize.assertExactTypeEqual�sE���h�'�'�����W�0E�(F�(O�(O�P�Q���'�l������V��a�+�o�6�����*�*�6�!�9�+?�+?�@�!�*�*�8�+<�+<�=�	?��{�#�A����X�.�.�v�!�e�}�/G�/G�H�%�.�.�w�z�:�
<�$�	
����*�*�6�!�k�/�+B�+M�+M�N�!�*�*�5�=�=�9�	;�����*�*�6�!�k�/�+B�+M�+M�N�!�*�*�5�?�?�;�	=r(c���URS[R[R5 URS[R[R
5 URS[R5 URS[R5 URS[R5 URS[R5 URS[R5 URS[R5 URS	[R5 URS
[R5 URS[R5 URS[R5 URS
[R 5 URS[R"5 URS[R$5 URS[R&5 URS[R([R*5 URS[R,5 URS[R.5 URS[R05 URS[R25 URS[R45 URS[R65 URS[R85 URS[R:5 URS[R<5 URS[R>5 URS[R@5 URS[RB5 URS[RD5 URS[RF5 URS [RH5 URS![RJ5 URS"[RL5 URS"[RL5 URS#[RN5 URS$[RP5 URS%[RR5 URS&[RT5 URS'[RV5 URS([RX5 URS)[RZ5 URS*[R\5 URS+[R^5 URS,[R`5 URS-[bRd[R<[bRf[R[bRd[R<[bRf[R,[bRd[R<[bRf5 URS.[R([Rf[R[Rf[R[Rf[R*5 URS/[R6[R[Rd[R[Rf[R5 g)0Nz()z[]�:�,�;�+r��*�/�|�&�<�>�=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))4rDr"�LPAR�RPAR�LSQB�RSQB�COLON�COMMA�SEMI�PLUS�MINUS�STAR�SLASH�VBAR�AMPER�LESS�GREATER�EQUAL�DOT�PERCENT�LBRACE�RBRACE�EQEQUAL�NOTEQUAL�	LESSEQUAL�GREATEREQUAL�TILDE�
CIRCUMFLEX�	LEFTSHIFT�
RIGHTSHIFT�
DOUBLESTAR�	PLUSEQUAL�MINEQUAL�	STAREQUAL�
SLASHEQUAL�PERCENTEQUAL�
AMPEREQUAL�	VBAREQUAL�CIRCUMFLEXEQUAL�LEFTSHIFTEQUAL�RIGHTSHIFTEQUAL�DOUBLESTAREQUAL�DOUBLESLASH�DOUBLESLASHEQUAL�
COLONEQUAL�ELLIPSIS�RARROW�AT�ATEQUALrrr�ros r&�test_exact_type�TestTokenize.test_exact_type�s����!�!�$��
�
�E�J�J�?��!�!�$��
�
�E�J�J�?��!�!�#�u�{�{�3��!�!�#�u�{�{�3��!�!�#�u�z�z�2��!�!�#�u�z�z�2��!�!�#�u�{�{�3��!�!�#�u�z�z�2��!�!�#�u�{�{�3��!�!�#�u�z�z�2��!�!�#�u�{�{�3��!�!�#�u�z�z�2��!�!�#�u�}�}�5��!�!�#�u�{�{�3��!�!�#�u�y�y�1��!�!�#�u�}�}�5��!�!�$����e�l�l�C��!�!�$��
�
�6��!�!�$����7��!�!�$����8��!�!�$��(:�(:�;��!�!�#�u�{�{�3��!�!�#�u�'7�'7�8��!�!�$����8��!�!�$��(8�(8�9��!�!�$��(8�(8�9��!�!�$����8��!�!�$����7��!�!�$����8��!�!�$��(8�(8�9��!�!�$��(:�(:�;��!�!�$��(8�(8�9��!�!�$����8��!�!�$��(=�(=�>��!�!�$��(=�(=�>��!�!�%��)=�)=�>��!�!�%��)>�)>�?��!�!�%��)>�)>�?��!�!�$��(9�(9�:��!�!�%��)?�)?�@��!�!�$��(8�(8�9��!�!�%����8��!�!�$����5��!�!�#�u�x�x�0��!�!�$��
�
�6��!�!�"3�"*�-�-��1A�1A�8�?�?�"'�*�*�"*�-�-��1A�1A�8�?�?�"'�-�-�"*�-�-��1A�1A�8�?�?�	T�	
�!�!�+�"'�,�,�"'�,�,����"'�,�,����"'�,�,�"'�,�,�	0�	
�!�!�,�"'�"2�"2�"'�*�*�"'�*�*�e�k�k�5�<�<�"'�*�*�		.r(c�D�URS[R5 g)Nz@          )rDr"r�ros r&�%test_pathological_trailing_whitespace�2TestTokenize.test_pathological_trailing_whitespaces���!�!�-����:r(c�J�Sn[R"[RSSSSS9[R"[RSSSS	S9[R"[R
S
SSS	S9[R"[RS
SSS	S9[R"[RSSSS	S9[R"[RSSSSS9[R"[RSSSSS9[R"[RSSSSS9[R"[RSSSSS9/	n[[R"[URS55R55nURX25 g)Nzb = 1

#testr-�rr��r!r9r#r$r%�brd�rBrBzb = 1
rQ�rBr{�rBrR�1�rB��rBr$r6�rB��r{r�r{rBz#test�rRr)rRr$)rRr�)r�r)rr2r"r@rrr�r�NL�COMMENTrrErr.r/r0�r3�sourcerirNs    r&�5test_comment_at_the_end_of_the_source_without_newline�BTestTokenize.test_comment_at_the_end_of_the_source_without_newlines?��!�����E�N�N�7�&�V\�ce�f����E�J�J�s�&�f�[d�e����E�H�H�S��F�Yb�c����E�L�L��F�PV�]f�g����E�M�M�$�f�RX�_h�i����E�H�H�T��V�Z^�_����E�M�M�'��U[�bi�j����E�H�H�R�v�6�X_�`����E�O�O�B�f�RX�_a�b�

���h�'�'���
�
�g�0F�(G�(P�(P�Q�R������1r(c�"�Sn[R"[RSSSSS9[R"[RSSSS	S9[R"[R
S
SSS	S9[R"[RSSS
SS9[R"[RSSSSS9/n[[R"[URS55R55nURX25 g)Nza
 r-r�r�)r9r#r$r%�ardr�za
r6r�r�)r{r{rr�)
rr2r"r@rrr�rrErr.r/r0r�s    r&�?test_newline_and_space_at_the_end_of_the_source_without_newline�LTestTokenize.test_newline_and_space_at_the_end_of_the_source_without_newline$s��������u�~�~�g�V�QW�^`�a����u�z�z�#�V��V[�\����u�}�}�T��V�Z_�`����u�x�x��&�f�SV�W����u���r��V�Z\�]�
���h�'�'���
�
�g�0F�(G�(P�(P�Q�R������1r(c�f�Sn[R"5n[RR	US5n[US5nUR
U5 SSS5 [U5upVURSUR5 SSS5 g!,(df   N@=f!,(df   g=f)NsF"""
        �"""z	script.py�wbsSyntaxError)
r	�temp_dirr>r?r@r4�writer�assertIn�err)r3�scriptr�rYr��rsr's       r&�(test_invalid_character_in_fstring_middle�5TestTokenize.test_invalid_character_in_fstring_middle2s������
�
�
!�X��w�w�|�|�H�k�:�H��h��%���
�
�6�"�&�(��2�E�B��M�M�.�"�&�&�1�"�
!�%�%��"�
!�s#�-B"�B�1B"�
B	�B"�"
B0r<N)
rrrrr1r<rDr�r�r�r�r�rr<r(r&rr�s,��)2�V	0�=�?.�B;�2�$2�
2r(rc�&�\rSrSrSrSrSrSrg)�UntokenizeTesti?c�^�[R"5nSUlSUlUR	[
5nUR
S5 SSS5 URWRRSS5 UR	[
URS5 g!,(df   NY=f)Nr{r�rz'start (1,3) precedes previous end (2,2)r�)
r�Untokenizer�prev_row�prev_colrC�
ValueError�add_whitespacer0rW�args)r3�u�cms   r&�test_bad_input_order�#UntokenizeTest.test_bad_input_orderAs���� � �"����
���
�
�
�
�z�
*�b�
���U�#�+�������*�*�1�-�9�	;�	
���*�a�&6�&6��>�+�
*�s�B�
B,c�L�[R"5nSUlSUl/UlURS5 UR
URS/5 SUlURS5 UR
UR/SQ5 [RUS5 g)NrBr��\
r{)r�r�)r�z\
\
rza
  b
    c
  \
  c
)	rr�r�r�rNr�r0rCrD)r3r�s  r&�test_backslash_continuation�*UntokenizeTest.test_backslash_continuationMs���� � �"����
���
����	���� �������F�8�,���
�	���� �������#?�@��%�%�d�,H�Ir(c�~�[R"5n[RS4n[RS4U/nUR	U[/55 UR
URS/5 [R"5nUR
UR[U/55S5 [R"5nUR
UR[U55S5 UR
URS5 UR
[R"[U55S5 g)N�Hellor-zHello sHello )
rr�rr@�compat�iterr0rNr!rb)r3r�r"rNs    r&�test_iter_compat�UntokenizeTest.test_iter_compatZs���� � �"������(���$�$�g�.��6��	�����R��!�������H�:�.�� � �"��������d�E�7�m�4�h�?�� � �"��������d�6�l�3�X�>�������W�-�����,�,�T�&�\�:�I�Fr(r<N)rrrrr�r�r�rr<r(r&r�r�?s��
?�J�Gr(r�c�T�[R"S5nURU5SL$)aReturn `True` if the source contains a backslash on a
line by itself. For example:

a = (1
    \
)

Code like this cannot be untokenized exactly. This is because
the tokenizer does not produce any tokens for the line containing
the backslash and so there is no way to know its indent.
s\n\s*\\\r?\nN)�re�compile�search)r��patterns  r&�contains_ambiguous_backslashr�hs'���j�j�)�*�G��>�>�&�!��-�-r(c�J�\rSrSrSrSrSrSrSrSr	Sr
S	rS
rSr
g)
rCixc��[U[5(aURS5nOUR5n[	URSS95Rn[[R"U55nUVs/sHoUSSPM	 nn[R"U5n[	URSS95Rn[R"U5Vs/sHoUSSPM	 n	nURX�5 [R"U5n
[	U
RSS95Rn[R"U5Vs/sHoUSSPM	 nnURX�5 [U5(doURS5n
[	U
RSS95Rn[R"[R"U55nURX�5 ggs snfs snfs snf)aR
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.

If the source code can be untokenized unambiguously, the
untokenized code must match the original code exactly.

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.
r-T��keependsNr{r�)
�
isinstancer%r.�readr�rrFrErr!r0r��removeprefix)r3r6�coder/�tokens5ra�tokens2�bytes_from2�	readline2�
tokens2_from2�bytes_from5�	readline5�
tokens2_from5�code_without_bom�untokenized_codes               r&rD�TestRoundtrip.check_roundtripzs��� �a�����8�8�G�$�D��6�6�8�D�������6�7�@�@���x�(�(��2�3��&-�.�g�s�r��7�g��.��)�)�'�2����/�/��/�>�?�H�H�	�,4�,=�,=�i�,H�I�,H�S�R�a��,H�
�I�����0��)�)�'�2����/�/��/�>�?�H�H�	�,4�,=�,=�i�,H�I�,H�S�R�a��,H�
�I�����0�+�D�1�1�#�0�0��A���,�7�7��7�F�G�P�P�H�'�2�2�8�3D�3D�X�3N�O�����-�@�2��/��J��
Js�=G/�G4�G9c���[U[5(aURS5nOUR5n[	URSS95Rn[R"U5HvnUR[R[R1;aM3URURURURSURS5 Mx g)Nr-Tr�rB)r�r%r.r�r�rrFrr!r@rr0r9r%r#r$)r3r6r�r/ras     r&�check_line_extraction�#TestRoundtrip.check_line_extraction�s����a�����8�8�G�$�D��6�6�8�D�������6�7�@�@���$�$�X�.�C��x�x�X�.�.��0B�0B�C�C�����S�Z�Z����#�)�)�A�,�����
�)K�L�/r(c���URS5 URS5 URS5 [R"SSS9n[US5nURU5 SSS5 URS5 URS	5 URS
5 URS5 URS5 URS
5 URS5 URS5 URS5 URS5 URS5 URS5 URS5 URS5 URS5 URS5 URS5 URS5 URS5 URS5 URS5 URS5 URS5 URS5 URS 5 URS!5 URS"5 URS#5 URS$5 URS%5 URS&5 URS'5 URS(5 URS)5 URS*5 /S+QnUHnURU5 M g!,(df   GN�=f),Nzif x == 1:
    print(x)
z # This is a comment
# This also
zif x == 1 : 
  print(x)
ztokenize_tests.txtr<)�subdirr=zoif 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')
z�class 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')
zf'\N{EXCLAMATION MARK}'z
f'\\N{SNAKE}'zf'\\N{{SNAKE}}'zf'\N{SNAKE}'zf'\\\N{SNAKE}'zf'\\\\\N{SNAKE}'zf'\\\\\\\N{SNAKE}'z	f'\\N{1}'zf'\\\\N{2}'z
f'\\\\\\N{3}'zf'\\\\\\\\N{4}'zf'\\N{{'z
f'\\\\N{{'zf'\\\\\\N{{'zf'\\\\\\\\N{{'zf'\n{{foo}}'z
f'\\n{{foo}}'zf'\\\n{{foo}}'zf'\\\\n{{foo}}'zf'\t{{foo}}'z
f'\\t{{foo}}'zf'\\\t{{foo}}'zf'\\\\t{{foo}}'z
rf'\t{{foo}}'zrf'\\t{{foo}}'zrf'\\\t{{foo}}'zrf'\\\\t{{foo}}'zrf'\{{foo}}'zf'\\{{foo}}'zrf'\\\{{foo}}'zf'\\\\{{foo}}')z
if 1:
    "foo"
"bar"
z
if 1:
    ("foo"
     "bar")
z
if 1:
    "foo"
    "bar"
)rDr�findfiler4)r3�fnr6�cases�cases     r&�test_roundtrip�TestRoundtrip.test_roundtrip�s���	
���.�	/����-�	.�	
���,�	-�
�
�
�2�>�
J��
�"�d�^�q�� � ��#�����1�	2�
	
���3�	4�	
���B�	C�	
���9�	:�
	
���7�8����-�.����/�0����_�-����.�/����0�1����2�3����\�*����^�,����-�.����/�0����[�)����]�+����_�-����.�/����_�-����-�.����.�/����/�0����_�-����-�.����.�/����/�0����-�.����.�/����/�0����0�1����_�-����_�-����.�/����.�/��� �D�� � ��&��Y�^�s�K!�!
K0c�&�URS5 g)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']
�rDros r&�test_continuation�TestRoundtrip.test_continuations�����	&�		'r(c�H�URS5 URS5 g)Nz)x=1+\
1
# This is a comment\
# This also
z# Comment \
x = 0r�ros r&r��)TestRoundtrip.test_backslash_continuations*�����-�	.�	
���%�	&r(c�&�URS5 g)Nz'' ''r�ros r&�test_string_concatenation�'TestRoundtrip.test_string_concatenation$s�����W�%r(c��SSKnSSKn[RR	[
5=(d [RnUR[RRURU5S55n[R"S5(dURUS5nUHrn[RS:�a[SU5 [US5nURUS9 UR!U5 UR#U5 SSS5 SSS5 Mt g!,(df   N=f!,(df   M�=f)	Nrztest*.py�cpu�
r{rr=r�)�glob�randomr>r?rArB�curdirr@�escaper�is_resource_enabled�sample�verboser�r4�subTestrDr�)r3r�r��tempdir�	testfiles�testfiler6s       r&�test_random_files�TestRoundtrip.test_random_files(s���	��'�'�/�/�(�+�8�r�y�y���I�I�b�g�g�l�l�4�;�;�w�+?��L�M�	��*�*�5�1�1��
�
�i��4�I�!�H����!�#��j�(�+��h��%���\�\�x�\�0��(�(��+��.�.�q�1�1�&�%�"�1�0��&�%�s$�D8�/#D'�D8�'
D5�1D8�8
E	c���[U[5(aURS5n[R"[R"[U5R55RS5$)Nr-)r�r%r.rr!rr/r")r3r�s  r&�	roundtrip�TestRoundtrip.roundtrip<sO���d�C� � ��;�;�w�'�D��"�"�8�#4�#4�W�T�]�5K�5K�#L�M�T�T�U\�]�]r(c��SnURU5RS5nURUSUS5 URU5 g)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
r6rBr{N)r�splitr0rD)r3r��	codeliness   r&�#test_indentation_semantics_retained�1TestRoundtrip.test_indentation_semantics_retainedAsH��
+���N�N�4�(�.�.�t�4�	�����1��y��|�4����T�"r(r<N)rrrrrDr�r�r�r�r�rrr	rr<r(r&rCrCxs5��'A�R	M�]'�@'�&�&�2�(^�
#r(rCc� �\rSrSrSrSrSrg)�InvalidPythonTestsiLc��Sn[R"[RSSSSS9[R"[RSSSSS9[R"[R
SSS	SS9[R"[RS
S	SSS9[R"[R
SSS
SS9[R"[RSS
SSS9[R"[RSSSSS9/n[[R"[U5R55nURX25 g)Nz2sin(x)�2rdr�r��sinr�r�r�rLr�rrer�)rB�r�)
rr2r"r�rrrrrErGrr/r0r�s    r&�test_number_followed_by_name�/InvalidPythonTests.test_number_followed_by_nameMs��������E�L�L��F�PV�]f�g����E�J�J�u�F�PV�]f�g����E�H�H�S��F�Yb�c����E�J�J�s�&�f�[d�e����E�H�H�S��F�Yb�c����E�M�M�"�F�PV�]f�g����E�O�O�B�f�RX�_a�b�
���h�.�.�x��/?�/H�/H�I�J������1r(c
�p�Sn[R"[RSSSSS9[R"[RSSSSS9[R"[R
SSSSS9/n[
[R"[U5R55nURX25 g)N�01234rdr�r�r�r�r�)rr2r"r�rrrErGrr/r0r�s    r&�test_number_starting_with_zero�1InvalidPythonTests.test_number_starting_with_zero]s��������E�L�L���TZ�ah�i����E�M�M�"�F�PV�]d�e����E�O�O�B�f�RX�_a�b�
���h�.�.�x��/?�/H�/H�I�J������1r(r<N)rrrrrrrr<r(r&rrLs��2� 	2r(rc��\rSrSrSrSrSrSrSrSr	Sr
S	rS
rSr
SrS
rSrSrSrSrSrSrSrg)�
CTokenizeTestihc��[U5nURUS9 [[R"UR
5U5nUR
XBR5R55 SSS5 g!,(df   g=f)N)r�)	rr�r'rrgr/r0r1rr2s     r&r7�CTokenizeTest.check_tokenizeise��
�Q�K��
�\�\��\�
#�1��:�:�1�:�:�F���F�
���V�_�_�%6�%A�%A�%C�D�	$�
#�
#�s�AA<�<
B
c�f�Sn[R"[RSSSSS9[R"[RSSSSS9[R"[RSSS	SS9[R"[RS
S	SSS9[R"[R
S
SSS
S9/nS
H[nUR
US9 [[R"U"U5RSUS95nURXB5 SSS5 M] g!,(df   Mo=f)Nc3�2# �SRU5v� g7f)N�1+1)r.r�s r&r/�-CTokenizeTest.test_encoding.<locals>.readlinets����,�,�x�(�(���r�rdr�rr�rJr�r�r�r�r�)r-r�zutf-16r�T)rcrb)rr2r�rrrr�rErgrFr0)r3r/r5rbrNs     r&�
test_encoding�CTokenizeTest.test_encodingss��	)�
���H�O�O�C�v�SY�`e�f����H�K�K��6�v�\a�b����H�O�O�C�v�SY�`e�f����H�$4�$4�R�v�SY�`e�f����H�$6�$6�r��U[�bd�e�
��7�H����x��0��h�H�H��X�&�/�/�!%�%����
� � ��2�
1�0�7�0�0�s
�AD!�!
D0	c�H�URSS5 URSS5 URSS5 URSS5 URS	S
5 URSS5 URS
S5 URSS5 URSS5 g)Nrez�    NUMBER     '0xff'        (1, 0) (1, 4)
    LESSEQUAL  '<='          (1, 5) (1, 7)
    NUMBER     '255'         (1, 8) (1, 11)
    rfz�    NUMBER     '0b10'        (1, 0) (1, 4)
    LESSEQUAL  '<='          (1, 5) (1, 7)
    NUMBER     '255'         (1, 8) (1, 11)
    rgz�    NUMBER     '0o123'       (1, 0) (1, 5)
    LESSEQUAL  '<='          (1, 6) (1, 8)
    NUMBER     '0O123'       (1, 9) (1, 14)
    rhz�    NUMBER     '1234567'     (1, 0) (1, 7)
    GREATER    '>'           (1, 8) (1, 9)
    TILDE      '~'           (1, 10) (1, 11)
    NUMBER     '0x15'        (1, 11) (1, 15)
    riz�    NUMBER     '2134568'     (1, 0) (1, 7)
    NOTEQUAL   '!='          (1, 8) (1, 10)
    NUMBER     '1231515'     (1, 11) (1, 18)
    rjac    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)
    rkz�    NUMBER     '0xdeadbeef'  (1, 0) (1, 10)
    NOTEQUAL   '!='          (1, 11) (1, 13)
    MINUS      '-'           (1, 14) (1, 15)
    NUMBER     '1'           (1, 15) (1, 16)
    rlz�    NUMBER     '0xdeadc0de'  (1, 0) (1, 10)
    AMPER      '&'           (1, 11) (1, 12)
    NUMBER     '12345'       (1, 13) (1, 18)
    rmz�    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)
    rnros r&rp�CTokenizeTest.test_int�s������M�,�		�	
���M�,�		�	
���,�/�		�	
���-�0�		�	
���0�3�		�	
���5�	8�			�	
���.�1�		�	
���0�3�		�	
���0�3�		r(c��URSS5 URSS5 URSS5 URSS5 URS	S
5 URSS5 URS
S5 g)Nrvz�    NAME       'x'           (1, 0) (1, 1)
    EQUAL      '='           (1, 2) (1, 3)
    NUMBER     '3.14159'     (1, 4) (1, 11)
    rwz�    NAME       'x'           (1, 0) (1, 1)
    EQUAL      '='           (1, 2) (1, 3)
    NUMBER     '314159.'     (1, 4) (1, 11)
    rxz�    NAME       'x'           (1, 0) (1, 1)
    EQUAL      '='           (1, 2) (1, 3)
    NUMBER     '.314159'     (1, 4) (1, 11)
    ryz�    NAME       'x'           (1, 0) (1, 1)
    EQUAL      '='           (1, 2) (1, 3)
    NUMBER     '3e14159'     (1, 4) (1, 11)
    rzz�    NAME       'x'           (1, 0) (1, 1)
    EQUAL      '='           (1, 2) (1, 3)
    NUMBER     '3E123'       (1, 4) (1, 9)
    r{z�    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)
    r|z�    NAME       'x'           (1, 0) (1, 1)
    EQUAL      '='           (1, 2) (1, 3)
    NUMBER     '3.14e159'    (1, 4) (1, 12)
    rnros r&r}�CTokenizeTest.test_float�s������M�,�		�	
���M�,�		�	
���M�,�		�	
���M�,�		�	
���K�*�		�	
���O�.�		�	
���N�-�		r(c�`�URSS5 URSS5 URSS5 URSS5 URS	S
5 URSS5 URS
S5 URSS5 URSS5 URSS5 URSS5 URSS5 URSS5 URSS5 URSS5 URSS 5 URS!S"5 URS#S$5 URS%S&5 URS'S(5 URS)S*5 URS+S,5 URS-S.5 URS/S05 URS1S25 URS3S45 URS5S65 URS7S85 URS9S:5 URS;S<5 URS=S>5 g)?Nr�a5    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)
    r�a6    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)
    r�z�    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)
    r�z�    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)
    r�z�    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)
    r�a�    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)
    r�a�    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)
    r�z�    STRING     "u'abc'"      (1, 0) (1, 6)
    PLUS       '+'           (1, 7) (1, 8)
    STRING     "U'abc'"      (1, 9) (1, 15)
    r�z�    STRING     'u"abc"'      (1, 0) (1, 6)
    PLUS       '+'           (1, 7) (1, 8)
    STRING     'U"abc"'      (1, 9) (1, 15)
    r�z�    STRING     "b'abc'"      (1, 0) (1, 6)
    PLUS       '+'           (1, 7) (1, 8)
    STRING     "B'abc'"      (1, 9) (1, 15)
    r�z�    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)
    r�r�r�r�r�r�r�r�r�r�r�r�z"hola\\\r\ndfgf"z9    STRING     '"hola\\\\\\r\\ndfgf"' (1, 0) (1, 16)
    r�r�r�a=    FSTRING_START 'fR"'         (1, 0) (1, 3)
    FSTRING_MIDDLE 'a'           (1, 3) (1, 4)
    LBRACE     '{'           (1, 4) (1, 5)
    NAME       'b'           (1, 5) (1, 6)
    RBRACE     '}'           (1, 6) (1, 7)
    FSTRING_MIDDLE 'c'           (1, 7) (1, 8)
    FSTRING_END '"'           (1, 8) (1, 9)
    r�r�r�r�zf"{
a}"z�    FSTRING_START 'f"'          (1, 0) (1, 2)
    LBRACE     '{'           (1, 2) (1, 3)
    NAME       'a'           (2, 0) (2, 1)
    RBRACE     '}'           (2, 1) (2, 2)
    FSTRING_END '"'           (2, 2) (2, 3)
    r�r�zf"hola\\\r\ndfgf"z�    FSTRING_START 'f"'          (1, 0) (1, 2)
    FSTRING_MIDDLE 'hola\\\\\\r\\ndfgf' (1, 2) (1, 16)
    FSTRING_END '"'           (1, 16) (1, 17)
    r�a�    FSTRING_START "f'''"        (1, 0) (1, 4)
    FSTRING_MIDDLE '__'          (1, 4) (1, 6)
    LBRACE     '{'           (1, 6) (1, 7)
    NAME       'x'           (2, 4) (2, 5)
    COLON      ':'           (2, 5) (2, 6)
    FSTRING_MIDDLE 'a\n'         (2, 6) (3, 0)
    RBRACE     '}'           (3, 0) (3, 1)
    FSTRING_MIDDLE '__'          (3, 1) (3, 3)
    FSTRING_END "'''"         (3, 3) (3, 6)
    r�a�    FSTRING_START "f'''"        (1, 0) (1, 4)
    FSTRING_MIDDLE '__'          (1, 4) (1, 6)
    LBRACE     '{'           (1, 6) (1, 7)
    NAME       'x'           (2, 4) (2, 5)
    COLON      ':'           (2, 5) (2, 6)
    FSTRING_MIDDLE 'a\n    b\n     c\n      d\n' (2, 6) (6, 0)
    RBRACE     '}'           (6, 0) (6, 1)
    FSTRING_MIDDLE '__'          (6, 1) (6, 3)
    FSTRING_END "'''"         (6, 3) (6, 6)
    rnros r&r��CTokenizeTest.test_string�s������.�1�		�	
���1�4�		�	
���>�A�		�	
���/�2�		�	
���/�2�		�	
���C�
F�
		�	
���C�
F�
		�	
���-�0�		�	
���-�0�		�	
���-�0�		�	
���-�0�		�	
���C�F�		�	
���C�F�		�	
���C�F�		�	
���C�F�		�	
���-�0�		�	
���L�+�		�	
���L�+�		�	
�����		�	
�����		�	
�����		�	
���/�2�		�	
���H�'�		�	
���K�*�		�	
���L�+�		�	
�����		�	
����	�		�	
�����		�	
���0�3�		�	
���
�
�
		�	
���
�
�
		r(c�p�URSS5 URSS5 URSS5 g)Nr�a    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)
    r�a�    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)
    r�a�    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)
    rnros r&r��CTokenizeTest.test_function�	sJ�����?�B�		�.	
���;�>�		�$	
���D�G�		r(c�(�URSS5 g)Nr�a�    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)
    rnros r&r��CTokenizeTest.test_comparison.
r�r(c�(�URSS5 g)Nr�a$    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)
    rnros r&r��CTokenizeTest.test_additiveT
r�r(c�(�URSS5 g)Nr�a�    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)
    rnros r&r��!CTokenizeTest.test_multiplicativek
r�r(c�L�URSS5 URSS5 g)Nr�a�    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)
    r�aI    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)
    rnros r&r��CTokenizeTest.test_unary
s0�����0�3�		�	
���5�8�		r(c�(�URSS5 g)Nr�a�    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)
    rnros r&r��CTokenizeTest.test_selector�
r�r(c�(�URSS5 g�Nr�a    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)
    rnros r&r��CTokenizeTest.test_method�
r�r(c�(�URSS5 gr5rnros r&r��CTokenizeTest.test_tabs�
r�r(c��URSS5 URSS5 URSS5 URSS5 URS	S
5 URSS5 URS
S5 URSS5 URSS5 URSS5 URSS5 URSS5 URSS5 URSS5 URSS5 URSS 5 URS!S"5 URS#S$5 URS%S&5 URS'S(5 URS)S*5 g)+Nr�z�    NAME       'async'       (1, 0) (1, 5)
    EQUAL      '='           (1, 6) (1, 7)
    NUMBER     '1'           (1, 8) (1, 9)
    r�a8    NAME       'a'           (1, 0) (1, 1)
    EQUAL      '='           (1, 2) (1, 3)
    LPAR       '('           (1, 4) (1, 5)
    NAME       'async'       (1, 5) (1, 10)
    EQUAL      '='           (1, 11) (1, 12)
    NUMBER     '1'           (1, 13) (1, 14)
    RPAR       ')'           (1, 14) (1, 15)
    r�z�    NAME       'async'       (1, 0) (1, 5)
    LPAR       '('           (1, 5) (1, 6)
    RPAR       ')'           (1, 6) (1, 7)
    r�a<    NAME       'class'       (1, 0) (1, 5)
    NAME       '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)
    r�z�    NAME       'class'       (1, 0) (1, 5)
    NAME       'async'       (1, 6) (1, 11)
    COLON      ':'           (1, 11) (1, 12)
    NAME       'pass'        (1, 12) (1, 16)
    r�z�    NAME       'await'       (1, 0) (1, 5)
    EQUAL      '='           (1, 6) (1, 7)
    NUMBER     '1'           (1, 8) (1, 9)
    r�z�    NAME       'foo'         (1, 0) (1, 3)
    DOT        '.'           (1, 3) (1, 4)
    NAME       'async'       (1, 4) (1, 9)
    r�a;    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)
    COLON      ':'           (1, 16) (1, 17)
    NAME       'pass'        (1, 18) (1, 22)
    r�a<    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)
    COLON      ':'           (1, 17) (1, 18)
    NAME       'pass'        (1, 19) (1, 23)
    r�z�    NAME       'async'       (1, 0) (1, 5)
    DOT        '.'           (1, 5) (1, 6)
    NAME       'foo'         (1, 6) (1, 9)
    r�r�r�z�    NAME       'async'       (1, 0) (1, 5)
    NEWLINE    ''            (1, 5) (1, 5)
    NAME       'await'       (3, 0) (3, 5)
    r�z�    NAME       'async'       (1, 0) (1, 5)
    NEWLINE    ''            (1, 5) (1, 5)
    ELLIPSIS   '...'         (2, 0) (2, 3)
    NEWLINE    ''            (2, 3) (2, 3)
    NAME       'await'       (3, 0) (3, 5)
    r�z�    NAME       'async'       (1, 0) (1, 5)
    NEWLINE    ''            (1, 5) (1, 5)
    NAME       'await'       (2, 0) (2, 5)
    r�z�    NAME       'foo'         (1, 0) (1, 3)
    DOT        '.'           (1, 3) (1, 4)
    NAME       'async'       (1, 4) (1, 9)
    PLUS       '+'           (1, 10) (1, 11)
    NUMBER     '1'           (1, 12) (1, 13)
    r�a;    NAME       '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)
    r�a�    NAME       '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)
    NAME       '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)
    NAME       '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)
    NAME       'await'       (5, 4) (5, 9)
    NEWLINE    ''            (5, 9) (5, 9)
    DEDENT     ''            (6, -1) (6, -1)
    DEDENT     ''            (6, -1) (6, -1)
    NAME       'async'       (6, 0) (6, 5)
    PLUSEQUAL  '+='          (6, 6) (6, 8)
    NUMBER     '1'           (6, 9) (6, 10)
    NEWLINE    ''            (6, 10) (6, 10)
    r�a�    NAME       '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       '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)
    r�ah    NAME       'async'       (1, 0) (1, 5)
    NAME       'def'         (1, 6) (1, 9)
    NAME       'foo'         (1, 10) (1, 13)
    LPAR       '('           (1, 13) (1, 14)
    NAME       'async'       (1, 14) (1, 19)
    RPAR       ')'           (1, 19) (1, 20)
    COLON      ':'           (1, 20) (1, 21)
    NAME       'await'       (1, 22) (1, 27)
    r�a~    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)
    NAME       '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)
    NAME       'await'       (6, 2) (6, 7)
    EQUAL      '='           (6, 8) (6, 9)
    NUMBER     '2'           (6, 10) (6, 11)
    DEDENT     ''            (6, -1) (6, -1)
    r�a�    NAME       '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)
    NAME       '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)
    NAME       'await'       (6, 2) (6, 7)
    EQUAL      '='           (6, 8) (6, 9)
    NUMBER     '2'           (6, 10) (6, 11)
    DEDENT     ''            (6, -1) (6, -1)
    rnros r&r�CTokenizeTest.test_async�
s������K�*�		�	
���-�0�		�	
���I�(�		�	
���3�6�		�	
���.�1�		�	
���K�*�		�	
���K�*�		�	
���4�7�		�	
���5�8�		�	
���K�*�		�	
���G�&�		�	
���4�7�		�	
���/�2�		�	
���N�-�		�	
���O�.�		�	
���3�6�		�	
����#�*		�X	
���H�K�		�&	
���9�	<�			�	
�����
!		�F	
�����
"		r(c�(�URSS5 g)Nr�u7    NAME       'Örter'       (1, 0) (1, 5)
    EQUAL      '='           (1, 6) (1, 7)
    STRING     "u'places'"   (1, 8) (1, 17)
    NEWLINE    ''            (1, 17) (1, 17)
    NAME       'grün'        (2, 0) (2, 4)
    EQUAL      '='           (2, 5) (2, 6)
    STRING     "U'green'"    (2, 7) (2, 15)
    rnros r&r��CTokenizeTest.test_unicode�r�r(c��SnSH;nURUS9 UR[RX5 SSS5 M= g!,(df   MO=f)Nc�j�[U5n[[R"UR55$r)rrErrgr/)r9�
the_strings  r&�
get_tokens�5CTokenizeTest.test_invalid_syntax.<locals>.get_tokens�s(��!�&�)�J���B�B�:�CV�CV�W�X�Xr() z(1+2]z(1+2}z{1+2]�1_�1.2_�1e2_�1e+� u€�0b12�0b1_2�0b2�0b1_�0b�0o18�0o1_8�0o8�0o1_�0o�0x1_�0xrB�012rCrDrEz'sdfsdfz'''sdfsdf''a�((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((a))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))�]z6            f'__{
                x:d
            }__'z a
)r�)r�rCrr�)r3r@r�s   r&�test_invalid_syntax�!CTokenizeTest.test_invalid_syntax�sN��	Y�%
�D�L���4��(��!�!�(�"5�"5�z�H�)�(�M%
�L)�(�s�!A�
A	c��^�SnSnU"US-
5n[U5m[[R"TR55nURUSR[R5 URUSR[R5 [USS5 U"U5n[U5mUR[U4Sj5 UR[[USS5 g)	N�dc�^�SRS[U555nUSU-S--
nU$)Nr�c3�2# �UH
nSU-S-v� M g7f)�  z	if True:
Nr<)�.0rLs  r&�	<genexpr>�ICTokenizeTest.test_max_indent.<locals>.generate_source.<locals>.<genexpr>%s���O��1�d�Q�h�,�6��rr[zpass
)r@r8)�indentsr�s  r&�generate_source�6CTokenizeTest.test_max_indent.<locals>.generate_source$s2���W�W�O��g��O�O�F��d�W�n�x�/�/�F��Mr(rBrMrrS�execc�V>�[[R"TR55$r)rErrgr/)�	the_inputs�r&�<lambda>�/CTokenizeTest.test_max_indent.<locals>.<lambda>2s���D��9c�9c�dm�dv�dv�9w�4xr()rrErrgr/r0r!�DEDENTrr�rCrV)r3�	MAXINDENTr`�validrN�invalidrds      @r&�test_max_indent�CTokenizeTest.test_max_indent!s�����	�	�
 �	�A�
�.���U�O�	��h�@�@��AS�AS�T�U����������(�/�/�:���������(�*<�*<�=���z�6�*�!�)�,���W�%�	����*�,x�y�����g�w�
�F�	
r(c��Sn[S5nURUS5 [S5nURU"U5U"U55 [S5nURUS5 [S5nURU"U5U"U55 [S5nURUS	5 [S
5nURU"U5U"U55 g)Nc��[U5n[R"UR5VVVs/sHtp o2U4PM
 snnn$s snnnfr)rrrgr/)r9r?�kindr's    r&r@�ECTokenizeTest.test_continuation_lines_indentation.<locals>.get_tokens8sL��!�&�)�J��A�A�*�BU�BU�V�X�V�(:��q�6�N�V�X�
X��Xs�Az�
            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
        )rr7r0)r3r@r��code_no_conts    r&�#test_continuation_lines_indentation�1CTokenizeTest.test_continuation_lines_indentation7s��	X�
��
��	
���D�#�	
�,��
��	
����D�)�:�l�+C�D���
��	
���D�#�	
���
��
	
����D�)�:�l�+C�D���
��	
���D�#�	
�"��
��	
����D�)�:�l�+C�Dr(r<N)rrrrr7r rpr}r�r�r�r�r�r�r�r�r�rr�rUrkrrrr<r(r&rrhsj��E�3�(?	�B,	�\w	�r=	�~$	�L	�.	�($	�L	�,	�"	�"H	�T
	�,I�\
�,bEr(rc��\rSrSrSrSrg)�CTokenizerBufferTestsi�c��SSS-SSS-3n[R"5n[USU5n[U5 SSS5 g!,(df   g=f)Nz"        #coding: latin-1
        #r�i'z

        #i'�foo)r	r�rr
)r3�test_scriptr��	file_names    r&�!test_newline_at_the_end_of_buffer�7CTokenizerBufferTests.test_newline_at_the_end_of_buffer�sW��
�

�e�)��
�

�e�)�����
�
�
!�X�#�H�e�[�A�I��I�&�"�
!�
!�s�A�
Ar<N)rrrrrzrr<r(r&ruru�s��
'r(ru�__main__)(r>r�r"r�unittest�iorr�textwraprrr�testr�test.supportr	�test.support.script_helperr
rr�test.support.numbersr
rr'r*rr(r*r:r]rmrr�r�rCrrrur�mainr<r(r&�<module>r�s��	�	���� ��#��"�Y�Y��� h	�8�h	�T%A��A�
?�:�x�:�<#I�H�#I�L<�H�<�.@"��@"�F
v2�8�v2�r&G�X�&G�R
.� Q#�H�Q#�h2��2�8qE�H�qE�h!'�H�-�-�'��z���M�M�O�r(

Youez - 2016 - github.com/yon3zu
LinuXploit