403Webshell
Server IP : 121.121.20.254  /  Your IP : 216.73.216.202
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:/Python315/Lib/test/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : C:/Python315/Lib/test/__pycache__/test_tokenize.cpython-315.opt-1.pyc
R
>lqj�c��]PHs]PHs]PHs]PHs]PHs]PHs]PHs]PHs]PH s]QH$G
s
Gs]QH0G
s
]QH GsGs]QH@Gs]QHHGs]QHPGsGsGs]QH`GsGsQsQ	Q
\2sQQ\2sQ
sQQ\2sQQ\2s QQ\2s!QQ\2s"QQ\2s#QQ\2s$Qs%QQ\2s&QQ\2s'QQ \2s(Q!Q"\O2s)\OTQ#Q$\O22s+Q%Q&\O2s,\-Q'6Xc\O\2P!P!)(�)�BytesIO�StringIO)�dedent)�TestCase�mock)�support)�	os_helper)�run_test_script�make_script�run_python_until_end)�VALID_UNDERSCORE_LITERALS�INVALID_UNDERSCORE_LITERALSc�l�,o[UO22oUP*Q7oSFD�vqVqxo	U[O6XcU!U%c&U[O6XcU]*U6XcJM[O
U*oUO
QUQ
QU8Q
QUQU02J�	U!)�z
�    �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:\Python315\\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�`�\sQs]*snQsQsQsQsQsQs	Qs
QsQ	sQ
s
QsQsQ
sQsQsQsQsQsQsQsQsQsQsQsQsQsUsP!)�TokenizeTestc��[UOQ22o[[OUO2U2oUOUQ,UO
2O2*2P!)�utf-8z*    ENCODING   'utf-8'       (0, 0) (0, 0))r�encoder&r�readline�assertEqual�rstripr��self�s�expected�frs&&&  r%�check_tokenize�TokenizeTest.check_tokenize1s`��
�A�H�H�W�%�&��-�h�.?�.?��
�
�.K�Q�O������F�G�!���*�5�5�7�8�	9r'c��QoUO[29^tt^2[[OU2O22PPP2QoUO[29^tt^2[[O
U2O22PPP2QoUO[29^tt^2[[O
U2O22PPP2P!)%fhK�9h)%fhK|9h)%fhP!9h)c3�$ �Qw�	Qw�	P!3h��sdfosdg�r;r'r%�gen�/TokenizeTest.test_invalid_readline.<locals>.gen;s����O��O���c3�$ �Qw�	Qw�	P!3h)ssdfosdgr;r;r'r%r<r=As�������r>c3�, �Qw�	]]*P!3hr9r;r;r'r%r<r=Gs����O�
�a�C�C�s�)�assertRaises�	TypeError�listr�__next__�generate_tokens�ZeroDivisionError)r1r<s& r%�test_invalid_readline�"TokenizeTest.test_invalid_readline:s���	��
�
�y�
)�
)���"�"�3�5�>�>�2�3�*�	��
�
�y�
)�
)���)�)�#�%�.�.�9�:�*�	��
�
�0�
1�
1���)�)�#�%�.�.�9�:�2�
1�*�
)��*�
)��2�
1�
1�s5�/D	�9/D�/D/�	D	�D	�D,	�%D,	�/E	�8E	c�R�[QOQ22o[[OUO22oUOUQ*O[O2UOUP*O[O2P!)�xr+���)	rr,rCrr-r.r rr)r1r4�tokenss&  r%�test_implicit_newline�"TokenizeTest.test_implicit_newlineMsl��
�C�J�J�w�'�(���h�'�'��
�
�3�4����������(�*:�*:�;���������(�*<�*<�=r'c��UOQQ2UOQQ2UOQQ2UOQQ2Qo[U2OoUO[Q	29^tt^2o[
O
U2FDoJ	PPP2UO
WOO]2UO
UOOQ
2UO
UOOP2UO
UOOP2UO
UOOQ	2UO
UOO]	2UO
UOOQ2P!)%fhCK9h)z1 + 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)r5rr-�assertRaisesRegex�IndentationErrorrr.�	exception�lineno�filename�
end_lineno�
end_offset�msg�offset�text)r1�indent_error_filer-�e�toks&    r%�
test_basic�TokenizeTest.test_basicUs������G�&�		�
	
���;�=�		�(	
���K�N�	� 	
���1�4�	���
�,�-�6�6��
�
#�
#�$4�%>�?�?�BC��(�(��2���3�?�
	
������+�+�Q�/�������-�-�z�:�������/�/��6�������/�/��6����
�K�K�O�O�A�	C�	
������+�+�Q�/�������)�)�:�6�?�?�?�s�?F2�2G	�;G	c�L�UOQQ2UOQQ2UOQQ2UOQQ2UOQQ	2UOQ
Q2UOQQ
2UOQQ2UOQQ2P!)�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)
    �r5�r1s&r%�test_int�TokenizeTest.test_int�s������M�,�		�
	
���M�,�		�
	
���,�/�		�
	
���-�0�		�	
���0�3�		�
	
���5�	8�			�	
���.�1�		�	
���0�3�		�
	
���0�3�		r'c��UOQQ2UOQQ2UOQQ2UOQQ2P!)zx = 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)
    rjrks&r%�	test_long�TokenizeTest.test_long�s_�����G�&�		�
	
���/�2�		�
	
���7�:�		�
	
���4�7�		r'c��UOQQ2UOQQ2UOQQ2UOQQ2UOQQ	2UOQ
Q2UOQQ
2P!)�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)
    rjrks&r%�
test_float�TokenizeTest.test_float�s������M�,�		�
	
���M�,�		�
	
���M�,�		�
	
���M�,�		�
	
���K�*�		�
	
���O�.�		�	
���N�-�		r'c��Qo[FD$oQU7cJUOUU2U2J&	QQ.o[FD,oV#7cJUU2UOUU2U2J.	P![OcJJh9h)c���[UOQ22o[OUO2FD!vq#qEoU[O6XfJUt!	Q!)r+z
invalid token)rr,rr-�NUMBER)r2r4�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r.r
r�
TokenError�assertNotEqual)r1r�lit�extra_valid_casess&   r%�test_underscore_literals�%TokenizeTest.test_underscore_literalss���	#�-�,�C��c�z�����\�#�.��4�	-�#�G�,��.�.�C��'��
��S�!�
����S� 1�3�7�/��
�&�&�
��
�s�A1�1B
�B
�	B
c��UOQQ2UOQQ2UOQQ2UOQQ2UOQQ	2UOQ
Q2UOQQ
2UOQQ2UOQQ2UOQQ2UOQQ2UOQQ2UOQQ2UOQQ2UOQQ2UOQQ2UOQ Q!2UOQ"Q#2UOQ$Q%2UOQ&Q'2UOQ(Q)2UOQ*Q+2UOQ,Q-2UOQ.Q/2UOQ0Q12UOQ2Q32UOQ4Q52UOQ6Q72UOQ8Q92UOQ:Q;2UOQ<Q=2UOQ>Q?2UOQ@QA2UOQBQC2UOQDQE2UOQFQG2P!)H�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)
    rjrks&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�t�UOQQ2UOQQ2UOQQ2P!)�!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)
    rjrks&r%�
test_function�TokenizeTest.test_functionnsJ�����?�B�		�,	
���;�>�		�"	
���D�G�		r'c�,�UOQQ2P!)�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)
    rjrks&r%�test_comparison�TokenizeTest.test_comparison�������M�!O�"		r'c�,�UOQQ2P!)zx = 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)
    rjrks&r%�
test_shift�TokenizeTest.test_shift�s�����-�0�		r'c�,�UOQQ2P!)�%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)
    rjrks&r%�
test_additive�TokenizeTest.test_additive�������C�F�		r'c�,�UOQQ2P!)�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)
    rjrks&r%�test_multiplicative� TokenizeTest.test_multiplicative�������5�8�		r'c�P�UOQQ2UOQQ2P!)�~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)
    rjrks&r%�
test_unary�TokenizeTest.test_unarys0�����0�3�		�	
���5�8�		r'c�,�UOQQ2P!)�/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)
    rjrks&r%�
test_selector�TokenizeTest.test_selector,������N�Q�		r'c�,�UOQQ2P!)� @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)
    rjrks&r%�test_method�TokenizeTest.test_methodB������?�
B�
		r'c�,�UOQQ2P!)zdef 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)
    rjrks&r%�	test_tabs�TokenizeTest.test_tabsSs�����-�/�		r'c�,�UOQQ2P!)u!Ö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)
    rjrks&r%�test_non_ascii_identifiers�'TokenizeTest.test_non_ascii_identifiershs�����@�C�		r'c�,�UOQQ2P!)�#Ö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)
    rjrks&r%�test_unicode�TokenizeTest.test_unicodet������B�E�		r'c��UOQQ2UOQQ2UOQQ2UOQQ2UOQQ	2UOQ
Q2UOQQ
2UOQQ2UOQQ2UOQQ2UOQQ2UOQQ2UOQQ2UOQQ2UOQQ2UOQQ2UOQ Q!2UOQ"Q#2UOQ$Q%2UOQ&Q'2UOQ(Q)2P!)*�	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)
    rjrks&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�,�UOQQ2P!)z[
    # 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)
    rjrks&r%�3test_newline_after_parenthesized_block_with_comment�@TokenizeTest.test_newline_after_parenthesized_block_with_comment�s������
	�		r'c�,�UOQQ2P!)z); xz�    OP         ')'           (1, 0) (1, 1)
    OP         ';'           (1, 1) (1, 2)
    NAME       'x'           (1, 3) (1, 4)
    rjrks&r%�,test_closing_parenthesis_from_different_line�9TokenizeTest.test_closing_parenthesis_from_different_line�s�����F�%�		r'c�,�UOQQ2P!)uTa = 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)
    rjrks&r%� test_multiline_non_ascii_fstring�-TokenizeTest.test_multiline_non_ascii_fstring�s�����O�Q�		r'c�P�UOQQ2UOQQ2P!)u4f'''
    🔗 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)
    rjrks&r%�*test_multiline_non_ascii_fstring_with_expr�7TokenizeTest.test_multiline_non_ascii_fstring_with_expr�s2������
�		�	
���:�=�		r'r;)�__name__�
__module__�__qualname__�__firstlineno__r5rGrMr^rlroryr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrr�__static_attributes__�__classdictcell__��
__classdict__s@r%r)r)*s�����9�;�&>�F7�P7	�r	�0&	�P8�0~	�@
:	�x$	�L
	�	�.	�(#	�J	�,	�"	�*
	�
	�P	�d	�"	�		�	�	r'r)c�(`�\sQsQsnQsQsUsP!)�GenerateTokensTesti�c���[U2o[[OUO2U2oUOVBO
2O22P!�N)rr&rrEr-r.r/rr0s&&&  r%r5�!GenerateTokensTest.check_tokenize�sG��
�Q�K��-�h�.F�.F�q�z�z�.R�TU�V��������!2�!=�!=�!?�@r'r;)r
rrr
r5rrrs@r%rr�s����A�Ar'rc
��,o[O[UOQ22O2oSFD�vq4oU[O6XchQU7caUO[OQ1[OQ1[O[U21[OQ1,2J�UOV412J�	[OU2OQ2O2!)r+�.�Decimalr��))rrr,r-r}�extend�NAME�OP�STRING�reprr�
untokenize�decode�strip)r2r�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�.`�\sQsQsnQsQsQsUsP!)�TestMisci�c���]QHGoQoUO[U2Q2UO	[[
U22Q2UO[
[U22UQ22P!)r)rz+21.3e-5*-.1234/81.7z8+Decimal ('21.3e-5')*-Decimal ('.1234')/Decimal ('81.7')z-3.2171603427[0-9]*e-0+7z!-3.217160342717258261933904529E-7)�decimalrr.r'�assertRegexr�eval)r1rr2s&  r%�
test_decistmt�TestMisc.test_decistmt�sd��	$�"������!��S�	U�	
����d�1�g��(B�C�	
����h�q�k�*� �!D�E�	Gr'c�z�[O,QN*oUO[OU2P!)�	TokenInfo)r1r�rE�detect_encodingr �openr)r!�__all__�assertCountEqualr)r1r3s& r%�test___all__�TestMisc.test___all__s-���=�=�$
�
��	
���h�.�.��9r'r;)r
rrr
r.r6rrrs@r%r)r)�s����G�(:�:r'r)c�J`�\sQsQsnQsQsQsQsQsQs	Qs
Q	sUsP!)
�TestTokenizerAdheresToPep0263i
zM
Test that tokenizer adheres to the coding behaviour stipulated in PEP 0263.
c��[OO[OO[2QU2o[UQ29^tt^2o[OV2PPP2P!)%fhP!9h)�tokenizedata�rb)�os�path�join�dirname�__file__r3�
TestRoundtrip�check_roundtrip)r1rUr>r4s&&  r%�	_testFile�'TestTokenizerAdheresToPep0263._testFilesQ���w�w�|�|�B�G�G�O�O�H�5�~�x�P��
�$��
�
���)�)�$�2��
�
�
�s�A8�8B		�B		c�.�QoUOU2P!)z9tokenize_tests-utf8-coding-cookie-and-no-utf8-bom-sig.txt�rD�r1r4s& r%�'test_utf8_coding_cookie_and_no_utf8_bom�ETestTokenizerAdheresToPep0263.test_utf8_coding_cookie_and_no_utf8_bom���G�����q�r'c�N�QoUO[UOU2P!)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.txt�rA�SyntaxErrorrDrHs& r%�&test_latin1_coding_cookie_and_utf8_bom�DTestTokenizerAdheresToPep0263.test_latin1_coding_cookie_and_utf8_boms ��
G�����+�t�~�~�q�9r'c�.�QoUOU2P!)z9tokenize_tests-no-coding-cookie-and-utf8-bom-sig-only.txtrGrHs& r%�"test_no_coding_cookie_and_utf8_bom�@TestTokenizerAdheresToPep0263.test_no_coding_cookie_and_utf8_bom#rKr'c�.�QoUOU2P!)z6tokenize_tests-utf8-coding-cookie-and-utf8-bom-sig.txtrGrHs& r%�$test_utf8_coding_cookie_and_utf8_bom�BTestTokenizerAdheresToPep0263.test_utf8_coding_cookie_and_utf8_bom's��D�����q�r'c��UO[UOQ2UO[UOQ2P!)z
bad_coding.pyzbad_coding2.pyrMrks&r%�test_bad_coding_cookie�4TestTokenizerAdheresToPep0263.test_bad_coding_cookie+s/�����+�t�~�~��G����+�t�~�~�7G�Hr'r;)
r
rrr
�__doc__rDrIrOrRrUrXrrrs@r%r9r9
s/�����3�
�	:���I�Ir'r9c�(`�\sQsQsnQsQsUsP!)�
Test_Tokenizei0c�``�QoUOQ2nP
nUU1Qko[[OU2OQP	Q52PQo[O
]QQQQ2,oUO
V4Q2P!)u"ЉЊЈЁЂ"r+c3�>: �R%f
P	nRw�	P!Qw�	P!3h)Tr'r;)�firstr$s��r%r-�NTest_Tokenize.test__tokenize_decodes_with_specified_encoding.<locals>.readline6s��������
��	�s�	�)�encoding�extra_tokenszbytes not decoded with encodingrK�rr�r�)r,rCr�!_generate_tokens_from_c_tokenizerrDr1r.)r1�literalr-rL�expected_tokensr_r$s&    @@r%�.test__tokenize_decodes_with_specified_encoding�<Test_Tokenize.test__tokenize_decodes_with_specified_encoding2s���� ���~�~�g�&����	��h�@�@���AT�AT�JQ�NR�T�U�UX�VX�Z��$�-�-�a����Q_�`�a������:�	<r'r;)r
rrr
rirrrs@r%r\r\0s����<�<r'r\c�`�\sQsQsnQsQsQsQsQsQs	Qs
Q	sQ
sQs
QsQ
sQsQsQsQsQsQsQsQsQsQsQsQsQsQsQsQsQs Qs!Q s"Q!s#\$OJQ"2s&Q#s'Q$s(Q%s)Us*P!)&�TestDetectEncodingiGc�``�]nUU1QkoU!)rc�Z:�R[R26Xc[gRR*oR]*
nU!�r)r�
StopIteration)r$�index�liness ��r%r-�1TestDetectEncoding.get_readline.<locals>.readlineKs,�����E�
�"�#�#���<�D��Q�J�E��Kr'r;)r1rrr-rqs&f @r%�get_readline�TestDetectEncoding.get_readlineIs�����	��r'c���Qo[OUOU22vq#UOUQ2UOU[	UQ*22P!)�#!/home/ä/bin/python
r+�N�N)rws# something €
�print(something)
�do_something(else)
�rr2rtr.rC�r1rrra�consumed_liness&   r%�test_no_bom_no_encoding_cookie�1TestDetectEncoding.test_no_bom_no_encoding_cookieTsQ��
��$,�#;�#;�D�<M�<M�e�<T�#U� ������7�+������e�B�i��9r'c���QoUO[29^tt^2[OUO	U22PPP2P!)%fhP!9h)�#!/home/�/bin/python

)r�rzr{�rArNrr2rt�r1rrs& r%�/test_no_bom_no_encoding_cookie_first_line_error�BTestDetectEncoding.test_no_bom_no_encoding_cookie_first_line_error_�D��
��
�
�
�{�
+�
+��$�$�T�%6�%6�u�%=�>�,�
+�
+�
+���&A�A"	�A"	c���QoUO[29^tt^2[OUO	U22PPP2P!)%fhP!9h)�#!/usr/bin/python
)r��# something �
rzr{r�r�s& r%�0test_no_bom_no_encoding_cookie_second_line_error�CTestDetectEncoding.test_no_bom_no_encoding_cookie_second_line_errorh�D��
���
�
�{�
+�
+��$�$�T�%6�%6�u�%=�>�,�
+�
+�
+�r�c��Qo[OUOU22vq#UOUQ2UOUQQ,2P!)�#!/home/ä/bin/python
rz�	utf-8-sigrw)r�rzr{�rr2rtr.r}s&   r%�test_bom_no_cookie�%TestDetectEncoding.test_bom_no_cookiersS��
��
$,�#;�#;�D�<M�<M�e�<T�#U� ������;�/�����:�<Q�R�	Tr'c���QoUO[29^tt^2[OUO	U22PPP2P!)%fhP!9h)�#!/home/�/bin/python
)r�rzr{r�r�s& r%�#test_bom_no_cookie_first_line_error�6TestDetectEncoding.test_bom_no_cookie_first_line_error}r�r�c���QoUO[29^tt^2[OUO	U22PPP2P!)%fhP!9h)�#!/usr/bin/python
)r�r�rzr{r�r�s& r%�$test_bom_no_cookie_second_line_error�7TestDetectEncoding.test_bom_no_cookie_second_line_error�r�r�c��Qo[OUOU22vq#UOUQ2UOUQ,2P!)�# -*- coding: latin-1 -*-
�
iso-8859-1)r�rzr{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��Qo[OUOU22vq#UOUQ2UOUQ,2P!)�# coding=utf-8
r�s# coding=utf-8
)r�rzr{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�x�QoUOU2oUO[[OU2P!)�## vim: set fileencoding=ascii :
)r�rzr{�rtrArNrr2�r1rrr-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��Qo[OUOU22vq#UOUQ2QQ,oUOV42P!)�
#! something
� # vim: set fileencoding=ascii :
�ascii)r�r�rzr{r��r1rrrar~r3s&    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��Qo[OUOU22vq#UOUQ2UOUQQ,2P!)�#! something
�f# coding=utf-8
r�r�)r�r�rzr{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�x�QoUOU2oUO[[OU2P!)r�)r�r�rzr{r�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��Qo[OUOU22vq#UOUQ2Q,oUOV42P!)�print('£')
r+)r��%# vim: set fileencoding=iso8859-15 :
�
print('€')
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���Qo[OUOU22vq#UOUQ2UOU[	UQ*22P!)�#coding:iso-8859-15 �
�iso-8859-15�NrN)r�rzr|r}s&   r%�test_first_non_utf8_coding_line�2TestDetectEncoding.test_first_non_utf8_coding_line�sQ��
��$,�#;�#;�D�<M�<M�e�<T�#U� ������=�1������e�B�i��9r'c���QoUO[29^tt^2[OUO	U22PPP2P!)%fhP!9h)�#coding:ascii ä
)r�rzr�r�s& r%�!test_first_utf8_coding_line_error�4TestDetectEncoding.test_first_utf8_coding_line_error�sD��
���
�
�{�
+�
+��$�$�T�%6�%6�u�%=�>�,�
+�
+�
+�r�c���Qo[OUOU22vq#UOUQ2UOU[	UQ*22P!)r�r�rx)r�r�rzr|r}s&   r%� test_second_non_utf8_coding_line�3TestDetectEncoding.test_second_non_utf8_coding_line��Q��
��
$,�#;�#;�D�<M�<M�e�<T�#U� ������=�1������e�B�i��9r'c���QoUO[29^tt^2[OUO	U22PPP2P!)%fhP!9h)r�)r�r�rzr�r�s& r%�"test_second_utf8_coding_line_error�5TestDetectEncoding.test_second_utf8_coding_line_error�r�r�c���Qo[OUOU22vq#UOUQ2UOU[	UQ*22P!)�#!/home/�/bin/python
r�rx)r�s#coding:iso-8859-15
rzr|r}s&   r%�test_non_utf8_shebang�(TestDetectEncoding.test_non_utf8_shebang�r�r'c���QoUO[29^tt^2[OUO	U22PPP2P!)%fhP!9h)rw)rws#coding:ascii
rzr�r�s& r%�test_utf8_shebang_error�*TestDetectEncoding.test_utf8_shebang_errorr�r�c��Qo[OUOU22vq#UOUQ2QQ,oUOV42P!)�
r��
iso8859-15)r�r�r�r�r�s&    r%�(test_cookie_second_line_empty_first_line�;TestDetectEncoding.test_cookie_second_line_empty_first_linesR��
��
$,�#;�#;�D�<M�<M�e�<T�#U� ������<�0��D�E������2r'c���Qo[OUOU22vq#UOUQ2UOU[	UQ*22P!)rwr+rx)rws# something
r�rzr{r|r}s&   r%�test_cookie_third_line�)TestDetectEncoding.test_cookie_third_linesQ��
��$,�#;�#;�D�<M�<M�e�<T�#U� ������7�+������e�B�i��9r'c���Qo[OUOU22vq#UOUQ2UOU[	UQ*22P!)�#coding:iso8859-15
r�r�)r��#coding:latin1
rzr|r}s&   r%�test_double_coding_line�*TestDetectEncoding.test_double_coding_line(sQ��
��
$,�#;�#;�D�<M�<M�e�<T�#U� ������<�0������e�B�i��9r'c���Qo[OUOU22vq#UOUQ2UOU[	UQ*22P!)�!#coding:iso8859-15 coding:latin1
r�r�)r�rzr|r}s&   r%�test_double_coding_same_line�/TestDetectEncoding.test_double_coding_same_line3sQ��
��$,�#;�#;�D�<M�<M�e�<T�#U� ������<�0������e�B�i��9r'c���Qo[OUOU22vq#UOUQ2UOU[	UQ*22P!)�#coding:utf-8
r+r�)r�r�rzr|r}s&   r%�test_double_coding_utf8�*TestDetectEncoding.test_double_coding_utf8<sQ��
��
$,�#;�#;�D�<M�<M�e�<T�#U� ������7�+������e�B�i��9r'c���QoUO[Q29^tt^2[OUO	U22PPP2P!)%fhP!9h)�#coding:iso8859-15
�%source code cannot contain null bytes)r�r�r�rz�rQrNrr2rtr�s& r%�test_nul_in_first_coding_line�0TestDetectEncoding.test_nul_in_first_coding_lineF�Q��
���
#�
#�K�7�9�9��$�$�T�%6�%6�u�%=�>�9�9�9�9���&A�A#	�A#	c���QoUO[Q29^tt^2[OUO	U22PPP2P!)%fhP!9h)r�r�)r�r�r�rzr�r�s& r%�test_nul_in_second_coding_line�1TestDetectEncoding.test_nul_in_second_coding_lineQr�r�c	��Q	oSFD}oQ
FDsoUOQU2oQQUOQ2*Q*QQ1oUOU2o[OU2vqxUOUQ2Ju	J	P!)�latin-1r��-r��
# coding: r�r�sprint(things)
sdo_something += 4
)r�r�ziso-latin-1zlatin-1-unixziso-8859-1-unixziso-latin-1-mac�r�r&��replacer,rtrr2r.�	r1�	encodingsra�rep�encrr�rl�foundr~s	&        r%�test_latin1_normalization�,TestDetectEncoding.test_latin1_normalization\s���;�	�!�H�!���&�&�s�C�0��/�&����G�)<�<�u�D�+�/�1���&�&�u�-��(0�(@�(@��(D�%��� � ���5�"�"r'c�x�QoUOU2oUO[[OU2P!)�
print("�")�r	r�r�s&  r%�test_syntaxerror_latin1�*TestDetectEncoding.test_syntaxerror_latin1ks3�����$�$�U�+�����+�x�'?�'?��Jr'c	��QoSFD|oQFDroUOQU2oQQUOQ2*Q*Q1oUOU2o[OU2vqxUOUQ2Jt	J~	P!)	r+r�r�r�r�r�s1 + 3
)r+z	utf-8-macz
utf-8-unixr�r�rs	&        r%�test_utf8_normalization�*TestDetectEncoding.test_utf8_normalizationts���8�	�!�H�!���&�&�s�C�0��/�&����G�)<�<�u�D�#�%���&�&�u�-��(0�(@�(@��(D�%��� � ���0�"�"r'c���UOQ2o[OU2vq#UOUQ2UOUQ,2[OUOQ22vq#UOUQ2UOU,2UOQ2o[OU2vq#UOUQ2UOUQ,2UOQ2o[OU2vq#UOUQ2UOU,2UOQ2oUO	[
[OU2P!)rzr+r�)rzr;)sprint(something)
)�)s# coding: bad
)rtrr2r.rArN�r1r-rar~s&   r%�test_short_files�#TestDetectEncoding.test_short_files�s=���$�$�%=�>��#+�#;�#;�H�#E� ������7�+�����*?�)@�A�#+�#;�#;�D�<M�<M�b�<Q�#R� ������7�+������,��$�$�%I�J��#+�#;�#;�H�#E� ������;�/�����*?�)@�A��$�$�%7�8��#+�#;�#;�H�#E� ������;�/������,��$�$�%:�;�����+�x�'?�'?��Jr'c��UOQ2o[OU2vq#UOUQ2UOUQ,2P!)�print("#coding=fake")r+)r)rtrr2r.rs&   r%�test_false_encoding�&TestDetectEncoding.test_false_encoding�sJ���$�$�%@�A��#+�#;�#;�H�#E� ������7�+�����*B�)C�Dr'c	�~�[OQ*oUO[OU2QFD�o[	UQUQ59^tt^2o[QU*UQ5[QUQ5PPP2[OU29^tt^2oUOUOU2UOUOQ2PPP2J�	[	UQQQ59^tt^2o[QUQ5PPP2[OU29^tt^2oUOUOQ2UOUOQ2PPP2P!)%fhCK9h)%fhCJY9h)%fhK�9h)%fhP!9h)	z.py�w�raz# coding: %s��fileuprint('euro:€')�rr�)r�r+)
r�TESTFN�
addCleanup�unlinkr3�printrr.ra�mode)r1rUra�fps&   r%�	test_open�TestDetectEncoding.test_open�s4���#�#�e�+�����	�(�(�(�3�1�H��h��h�7�7�2��n�x�/�b�9��,�2�6�8����x�(�(�B�� � ����h�7�� � ����#�.�)�(�	1��(�C�+�
6�
6�"��(�r�2�7�
�]�]�8�
$�
$�����R�[�[�+�6����R�W�W�c�*�%�
$�8�7�7��)�(�(��
7�
6��
$�
$�
$�sH�"E/	�9F	�8F�,9F+�/F
�8F
�F
�F
�F(	�!F(	�+F<	�4F<	c��`�QoQnU1QkQ2oUO[29^tt^2URU2oU;[OUO
2PPP2UO
[QOU229^tt^2URU2o[OUO
2PPP2P!)%fhKq9h)%fhP!9h)�some_file_pathc�6:`�\sQsQsnQsU1QksQsUsP!)�;TestDetectEncoding.test_filename_in_exception.<locals>.Bunki�c�.�V mVm]UmP!)r)�name�_lines�_index)r1rrr>s&&&r%�__init__�DTestDetectEncoding.test_filename_in_exception.<locals>.Bunk.__init__�s�� �	�#����r'c�:�UO[R26Xc[gRUO*oU9O]*
tmU!ro)r.rrp)r1r$rrs& �r%r-�DTestDetectEncoding.test_filename_in_exception.<locals>.Bunk.readline�s:����;�;�#�e�*�,�'�'��T�[�[�)�����q� ���r')r.r-r,)r
rrr
r/r-rr)rrrs@�r%�Bunkr*�s����
 �

�
r'r3z.*{}r
)rArNr,rr2r-rQ�format)r1r>r3�insrrs&   @r%�test_filename_in_exception�-TestDetectEncoding.test_filename_in_exception�s��������	�	��
�
�{�
+�
+��u�d�#�C����$�$�S�\�\�2�	,�
�
#�
#�K����t�1D�
E�
E��u�d�#�C��$�$�S�\�\�2�F�
E�,�
+��
F�
E�
E�s#�,C�*C�C	�C	�C*	�"C*	c��[Q2o[OQUQ59^tt^2UO[[
OQ2PPP2UOUO2P!)%fhK-9h)s#coding:xxxztokenize._builtin_open)�return_value�foobar)	rr�patchrArNrr3�
assertTrue�closed)r1�ms& r%�test_open_error�"TestDetectEncoding.test_open_error�sT���N�#��
�Z�Z�0�q�
A�
A����k�8�=�=�(�C�B�������!�B�
A�s�&A8�8B	�B	r;)+r
rrr
rtrr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrr�
thread_unsafer%r6r?rrrs@r%rlrlGs�����	�	:�?�?�	T�?�?�K�@�K�
3�
D�K�	3�:�?�:�?�:�?�	3�
:�	:�:�:�	?�	?�
6�K�1�K�.E�
���+��+�(3�8"�"r'rlc�R`�\sQsQsnQsQsQsQsQsQs	Qs
Q	sQ
sUs
P!)�TestTokenizei�c�b``	`
�]PHoQn	Pn
U	1QkoU
1Qko]nU1QkoUOoUOoV!mV1m[OU2oUO[	U2Q*,QN2VQmVamUOR
R	2P!XQmXamh9h)rr+c�:�RQQ,1!)�first�secondr;)r-ras&�r%�mock_detect_encoding�8TestTokenize.test_tokenize.<locals>.mock_detect_encoding�s����h�	�2�2�2r'c�:�Un,oU2oU%cUOU2J$U![cSt!h9h)T)rpr)r-ra�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�\:�R]*
nR]6XcQ![R2O2!)rr')�strr,)�counters�r%�
mock_readline�1TestTokenize.test_tokenize.<locals>.mock_readline�s)����q�L�G��!�|���w�<�&�&�(�(r':rNN)rFrG�1�2�3�4)rr2rfr.rC)r1�tokenize_modulerHrOrT�orig_detect_encoding�orig_c_token�resultsrSrarNs&       @@@r%�
test_tokenize�TestTokenize.test_tokenize�s����*����
�	3�	���	)� /�>�>��&�H�H��*>�'�<J�9�	M��'�'�
�6�G����T�'�]�2�.�J�
L�/C�+�@L�=������1��/C�+�@L�=�s�:B � B.c	��,o[Q2FD$oUOQOUQ52J&	UOQ2QOU2o[	[
O
[
UOQ22O22oUOUQ*OQ2P!)��zdef i{i}(): return {i})�i�OK�
r+���)�rangerr4r?rCrrr,r-r.�string)r1�bufrb�tokss&   r%�test_oneline_defs�TestTokenize.test_oneline_defss������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	��[[O[UOQ22O22o[U2oUO
[U2]U*2UO
[OU]*O*[O[O*2[U2FD\oUO
[OV5]**O*[OV%**2J^	UO
[OU]U**O*[O[O*2UO
[OU]U**O*[O[O*2P!�r+)rCrrr,r-rr.r�
exact_type�ENCODINGrfr!rr)r1�opstr�optypesrL�num_optypesrbs&&*   r%�assertExactTypeEqual�!TestTokenize.assertExactTypeEqualsE���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���UOQ[O[O2UOQ[O[O
2UOQ[O2UOQ[O2UOQ[O2UOQ[O2UOQ[O2UOQ[O2UOQ[O2UOQ	[O2UOQ
[O2UOQ[O2UOQ[O 2UOQ
[O"2UOQ[O$2UOQ[O&2UOQ[O([O*2UOQ[O,2UOQ[O.2UOQ[O02UOQ[O22UOQ[O42UOQ[O62UOQ[O82UOQ[O:2UOQ[O<2UOQ[O>2UOQ[O@2UOQ[OB2UOQ[OD2UOQ[OF2UOQ[OH2UOQ [OJ2UOQ![OL2UOQ![OL2UOQ"[ON2UOQ#[OP2UOQ$[OR2UOQ%[OT2UOQ&[OV2UOQ'[OX2UOQ([OZ2UOQ)[O\2UOQ*[O^2UOQ+[O`2UOQ,[bOd[O<[bOf[O[bOd[O<[bOf[O,[bOd[O<[bOf2UOQ-[O([Of[O[Of[O[Of[O*2UOQ.[O6[O[Od[O[Of[O2P!)/z()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))4rsr!�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}rks&r%�test_exact_type�TestTokenize.test_exact_types����!�!�$��
�
�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�H�UOQ[O2P!)z@          )rsr!r�rks&r%�%test_pathological_trailing_whitespace�2TestTokenize.test_pathological_trailing_whitespace`s���!�!�-����:r'c��Qo[O[OQQ	Q	PQ5[O[OQQ
QQQ5[O[O
QQQ
QQ5[O[OQQQQQ5[O[OQQQQQ5[O[OQQQQQ5[O[OQQQQQ5[O[OPQQQQ5[O[OPQQPQ5,	o[[O[UOQ22O22oUOV22P!)zb = 1

#testr+�r rgr"r#r$�bzb = 1
r��1rdz#test�rrrc�rr�rry�r��r��r��r��ryr�ryr�r�r)r�r�)r�r�)r�r)rr1r!rorrr}r�NL�COMMENTrrCrr,r-r.�r1�sourcerhrLs&   r%�5test_comment_at_the_end_of_the_source_without_newline�BTestTokenize.test_comment_at_the_end_of_the_source_without_newlineds?��!�����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�D�Qo[O[OQQQPQ5[O[OQQQ	QQ5[O[O
QQ	Q
QQ5[O[OPQQQQ5[O[OPQ
Q
PQ5,o[[O[UOQ22O22oUOV22P!)za
 r+)rgr"r#r$�aza
rdrr�rcr�r�r�)ryryr�)
rr1r!rorrr�rrCrr,r-r.r�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_newlinevs��������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	��Qo[O29^tt^2o[OO	UQ2o[UQ29^tt^2oUO
U2PPP2[U2vqVUOQUO2PPP2P!)%fhKC9h)%fhP!9h)sF"""
        �"""z	script.py�wbsSyntaxError)
r�temp_dirr=r>r?r3�writer�assertIn�err)r1�scriptr�rUr�rsr&s&      r%�(test_invalid_character_in_fstring_middle�5TestTokenize.test_invalid_character_in_fstring_middle�s������
�
�
!�
!�X��w�w�|�|�H�k�:�H��h��%�%���
�
�6�"�&�(��2�E�B��M�M�.�"�&�&�1�"�
!�%�%��"�
!�
!�s/�5B6�B#	�(1B6�#B3
�,B3
�.B6�6C	�?C	r;)r
rrr
r^rjrsr�r�r�r�r�rrrs@r%rCrC�s4����)2�V	0�=�?.�B;�2�$2�
2�
2r'rCc�4`�\sQsQsnQsQsQsQsUsP!)�UntokenizeTesti�c�~�[O2o]Um]UmUO	[
29^tt^2oUO
Q2PPP2UOWOO]*Q2UO	[
UOQ2P!)%fhK`9h)ryz'start (1,3) precedes previous end (2,2)r�r�)
r�Untokenizer�prev_row�prev_colrA�
ValueError�add_whitespacer.rS�args)r1�u�cms&  r%�test_bad_input_order�#UntokenizeTest.test_bad_input_order�s���� � �"����
���
�
�
�
�z�
*�
*�b�
���U�#�+�������*�*�1�-�9�	;�	
���*�a�&6�&6��>�+�
*�s�B,�,B<	�5B<	c�P�[O2o]Um]Um,UmUOQ2UO
UOQ,2]UmUOQ2UO
UO,QN2[OUQ2P!)r�\
za
  b
    c
  \
  c
r�)r�r�)r�z\
\
r)	rr�r�r�rLr�r.rBrC)r1r�s& r%�test_backslash_continuation�*UntokenizeTest.test_backslash_continuation�s���� � �"����
���
����	���� �������F�8�,���
�	���� �������#?�@��%�%�d�,H�Ir'c��[O2o[OQ1o[OQ1U,oUO	U[,22UO
UOQ,2[O2oUO
UO[U,22Q2[O2oUO
UO[U22Q2UO
UOQ2UO
[O[U22Q2P!)�Hellor+zHello sHello )
rr�rro�compat�iterr.rLr ra)r1r�r!rLs&   r%�test_iter_compat�UntokenizeTest.test_iter_compat�s���� � �"������(���$�$�g�.��6��	�����R��!�������H�:�.�� � �"��������d�E�7�m�4�h�?�� � �"��������d�6�l�3�X�>�������W�-�����,�,�T�&�\�:�I�Fr'r;)	r
rrr
r�r�r�rrrs@r%r�r��s����
?�J�G�Gr'r�c�V�[OQ2oUOU2PI!)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?\n)�re�compile�search)r��patterns& r%�contains_ambiguous_backslashr��s'���j�j�)�*�G��>�>�&�!��-�-r'c�X`�\sQsQsnQsQsQsQsQsQs	Qs
Q	sQ
sQs
UsP!)rBi�c�6�[U[2%cUOQ2oLUO2o[	UOP	Q52Oo[[OU22oSTt,tFDpUQ*MJ
	oo[OU2o[	UOP	Q52Oo[OU2Tt,tFDpUQ*MJ
	o	oUOV�2[OU2o
[	U
OP	Q52Oo[OU2Tt,tFDpUQ*MJ
	ooUOV�2[U2%ftUOQ2o
[	U
OP	Q52Oo[O[OU22oUOV�2P!P!ttohttohttoh)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+��keependsrxr)
�
isinstancerRr,�readr�rrDrCrr r.r��removeprefix)r1r4�coder-�tokens5r]�tokens2�bytes_from2�	readline2�
tokens2_from2�bytes_from5�	readline5�
tokens2_from5�code_without_bom�untokenized_codes&&             r%rC�TestRoundtrip.check_roundtrip�s��� �a�����8�8�G�$�D��6�6�8�D�������6�7�@�@���x�(�(��2�3��&-�.�g�s�r�7�7�g��.��)�)�'�2����/�/��/�>�?�H�H�	�,4�,=�,=�i�,H�I�,H�S�R���,H�
�I�����0��)�)�'�2����/�/��/�>�?�H�H�	�,4�,=�,=�i�,H�I�,H�S�R���,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�H�(H� Hc	��[U[2%cUOQ2oLUO2o[	UOP	Q52Oo[OU2FDoUO[O[O.7cJ4UOUOUOUO]*UO]*2J�	P!)r+r�)rrRr,rr�rrDrr rorr.rgr$r"r#)r1r4rr-r]s&&   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�l�UOQ2UOQ2UOQ2[OQQQ5o[UQ29^tt^2oUOU2PPP2UOQ2UOQ2UOQ	2UOQ
2UOQ2UOQ2UOQ
2UOQ2UOQ2UOQ2UOQ2UOQ2UOQ2UOQ2UOQ2UOQ2UOQ2UOQ2UOQ2UOQ2UOQ2UOQ2UOQ2UOQ2UOQ2UOQ 2UOQ!2UOQ"2UOQ#2UOQ$2UOQ%2UOQ&2UOQ'2UOQ(2UOQ)2,Q-NoSFDoUOU2J	UOQ*2UOQ+2UOQ,2P!)%fhCK�9h).zif 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}}'zt'{ {}}'zt'{f'{ {}}'}{ {}}'zf'{t'{ {}}'}{ {}}')z
if 1:
    "foo"
"bar"
z
if 1:
    ("foo"
     "bar")
z
if 1:
    "foo"
    "bar"
)rCr�findfiler3)r1�fnr4�cases�cases&    r%�test_roundtrip�TestRoundtrip.test_roundtrips���	
���.�	/����-�	.�	
���,�	-�
�
�
�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�� � ��&��	
���[�)����2�3����2�3�c�^�^�s�!L"�"L3	�+L3	c�*�UOQ2P!)zna = (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']
�rCrks&r%�test_continuation�TestRoundtrip.test_continuationds�����	&�		'r'c�L�UOQ2UOQ2P!)z)x=1+\
1
# This is a comment\
# This also
z# Comment \
x = 0rrks&r%r��)TestRoundtrip.test_backslash_continuationqs*�����-�	.�	
���%�	&r'c�*�UOQ2P!)z'' ''rrks&r%�test_string_concatenation�'TestRoundtrip.test_string_concatenationzs�����W�%r'c���]PHo]PHo[OO	[
29%f[OoUO[OOUOU2Q22o[OQ2%fUOU]
2oSFD�o[O]6�c
[QU2[UQ29^tt^2oUOUQ59^tt^2UO!U2UO#U2PPP2PPP2J�	P!)%fhK9h)%fhJ�9h)rztest*.py�cpurr<r)�glob�randomr=r>r@rA�curdirr?�escaper�is_resource_enabled�sample�verboser"r3�subTestrCr)r1r%r&�tempdir�	testfiles�testfiler4s&      r%�test_random_files�TestRoundtrip.test_random_files~s���	��'�'�/�/�(�+�8�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�0��(�(��+��.�.�q�1�1�&�%�"�1�0��&�%�%�s0�,E	�#E
�*E	�E�	E�E	�E$
�E$
c���[U[2%cUOQ2o[O[O[U2O22OQ2!rm)rrRr,rr rr-r!)r1rs&&r%�	roundtrip�TestRoundtrip.roundtrip�sO���d�C� � ��;�;�w�'�D��"�"�8�#4�#4�W�T�]�5K�5K�#L�M�T�T�U\�]�]r'c��QoUOU2OQ2oUOU]*U]*2UOU2P!)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
rd)r3�splitr.rC)r1r�	codeliness&  r%�#test_indentation_semantics_retained�1TestRoundtrip.test_indentation_semantics_retained�sH��
+���N�N�4�(�.�.�t�4�	�����1��y��|�4����T�"r'r;)r
rrr
rCrrrr�r!r0r3r8rrrs@r%rBrB�s=����'A�R	M�a4�H'�&�&�2�(^�
#�#r'rBc�.`�\sQsQsnQsQsQsUsP!)�InvalidPythonTestsi�c���Qo[O[OQQQQQ5[O[OQQQ	QQ5[O[O
QQ	Q
QQ5[O[OQQ
QQQ5[O[O
QQQQQ5[O[OPQQ
QQ5[O[OPQQPQ5,o[[O[U2O22oUOV22P!)z2sin(x)�2r��sinr�rJrrcr�r�r�r�rd)r�r�)
rr1r!r}rrrrrCrErr-r.r�s&   r%�test_number_followed_by_name�/InvalidPythonTests.test_number_followed_by_name�s��������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
��Qo[O[OQQQQQ5[O[OPQQQQ5[O[O
PQQPQ5,o[
[O[U2O22oUOV22P!)�01234r�rcr�r�r�)rr1r!r}rrrCrErr-r.r�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;)r
rrr
r@rDrrrs@r%r;r;�s����2� 	2�	2r'r;c�`�\sQsQsnQsQsQsQsQsQs	Qs
Q	sQ
sQs
QsQ
sQsQsQsQs\O*2Q2sQsQsUsP!)�
CTokenizeTesti�c�:�[U2oUOUQ59^tt^2[[OUO
2U2oUO
VBO2O22PPP2P!)%fhP!9h))r�)	rr,r&rrfr-r.r/rr0s&&&  r%r5�CTokenizeTest.check_tokenize�sk��
�Q�K��
�\�\��\�
#�
#�1��:�:�1�:�:�F���F�
���V�_�_�%6�%A�%A�%C�D�	$�
#�
#�
#�s�AB	�	B	�B	c��Qo[O[OQQQQQ5[O[OQQQ	QQ5[O[OQQ	Q
QQ5[O[OPQ
QQQ5[O[O
PQQPQ5,oQ
FDioUO
UQ59^tt^2[[OUU2OP	UQ52oUOVB2PPP2Jk	P!)%fhJ�9h)c3�8 �QOU2w�	P!3h)�1+1)r,rs&r%r-�-CTokenizeTest.test_encoding.<locals>.readline�s����,�,�x�(�(�s�r�rLr�ryr)rbrarcr�r�r�r�r�)r+r�zutf-16)rr1r}rrrr,rCrfrDr.)r1r-r3rarLs&    r%�
test_encoding�CTokenizeTest.test_encoding�s	��	)�
���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�0��h�H�H��X�&�/�/�!%�%����
� � ��2�
1�0�7�0�0�0�s�/AE	�E
�
E
c�L�UOQQ2UOQQ2UOQQ2UOQQ2UOQQ	2UOQ
Q2UOQQ
2UOQQ2UOQQ2P!)raz�    NUMBER     '0xff'        (1, 0) (1, 4)
    LESSEQUAL  '<='          (1, 5) (1, 7)
    NUMBER     '255'         (1, 8) (1, 11)
    rbz�    NUMBER     '0b10'        (1, 0) (1, 4)
    LESSEQUAL  '<='          (1, 5) (1, 7)
    NUMBER     '255'         (1, 8) (1, 11)
    rcz�    NUMBER     '0o123'       (1, 0) (1, 5)
    LESSEQUAL  '<='          (1, 6) (1, 8)
    NUMBER     '0O123'       (1, 9) (1, 14)
    rdz�    NUMBER     '1234567'     (1, 0) (1, 7)
    GREATER    '>'           (1, 8) (1, 9)
    TILDE      '~'           (1, 10) (1, 11)
    NUMBER     '0x15'        (1, 11) (1, 15)
    rez�    NUMBER     '2134568'     (1, 0) (1, 7)
    NOTEQUAL   '!='          (1, 8) (1, 10)
    NUMBER     '1231515'     (1, 11) (1, 18)
    rfac    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)
    rgz�    NUMBER     '0xdeadbeef'  (1, 0) (1, 10)
    NOTEQUAL   '!='          (1, 11) (1, 13)
    MINUS      '-'           (1, 14) (1, 15)
    NUMBER     '1'           (1, 15) (1, 16)
    rhz�    NUMBER     '0xdeadc0de'  (1, 0) (1, 10)
    AMPER      '&'           (1, 11) (1, 12)
    NUMBER     '12345'       (1, 13) (1, 18)
    riz�    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)
    rjrks&r%rl�CTokenizeTest.test_int�s������M�,�		�	
���M�,�		�	
���,�/�		�	
���-�0�		�	
���0�3�		�	
���5�	8�			�	
���.�1�		�	
���0�3�		�	
���0�3�		r'c��UOQQ2UOQQ2UOQQ2UOQQ2UOQQ	2UOQ
Q2UOQQ
2P!)rrz�    NAME       'x'           (1, 0) (1, 1)
    EQUAL      '='           (1, 2) (1, 3)
    NUMBER     '3.14159'     (1, 4) (1, 11)
    rsz�    NAME       'x'           (1, 0) (1, 1)
    EQUAL      '='           (1, 2) (1, 3)
    NUMBER     '314159.'     (1, 4) (1, 11)
    rtz�    NAME       'x'           (1, 0) (1, 1)
    EQUAL      '='           (1, 2) (1, 3)
    NUMBER     '.314159'     (1, 4) (1, 11)
    ruz�    NAME       'x'           (1, 0) (1, 1)
    EQUAL      '='           (1, 2) (1, 3)
    NUMBER     '3e14159'     (1, 4) (1, 11)
    rvz�    NAME       'x'           (1, 0) (1, 1)
    EQUAL      '='           (1, 2) (1, 3)
    NUMBER     '3E123'       (1, 4) (1, 9)
    rwz�    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)
    rxz�    NAME       'x'           (1, 0) (1, 1)
    EQUAL      '='           (1, 2) (1, 3)
    NUMBER     '3.14e159'    (1, 4) (1, 12)
    rjrks&r%ry�CTokenizeTest.test_float	s������M�,�		�	
���M�,�		�	
���M�,�		�	
���M�,�		�	
���K�*�		�	
���O�.�		�	
���N�-�		r'c�d�UOQQ2UOQQ2UOQQ2UOQQ2UOQQ	2UOQ
Q2UOQQ
2UOQQ2UOQQ2UOQQ2UOQQ2UOQQ2UOQQ2UOQQ2UOQQ2UOQQ2UOQ Q!2UOQ"Q#2UOQ$Q%2UOQ&Q'2UOQ(Q)2UOQ*Q+2UOQ,Q-2UOQ.Q/2UOQ0Q12UOQ2Q32UOQ4Q52UOQ6Q72UOQ8Q92UOQ:Q;2UOQ<Q=2P!)>r�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)
    rjrks&r%r��CTokenizeTest.test_stringL	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�t�UOQQ2UOQQ2UOQQ2P!)r�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)
    rjrks&r%r��CTokenizeTest.test_functionE
sJ�����?�B�		�.	
���;�>�		�$	
���D�G�		r'c�,�UOQQ2P!)r�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)
    rjrks&r%r��CTokenizeTest.test_comparison�
r�r'c�,�UOQQ2P!)r�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)
    rjrks&r%r��CTokenizeTest.test_additive�
r�r'c�,�UOQQ2P!)r�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)
    rjrks&r%r��!CTokenizeTest.test_multiplicative�
r�r'c�P�UOQQ2UOQQ2P!)r�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)
    rjrks&r%r��CTokenizeTest.test_unary�
s0�����0�3�		�	
���5�8�		r'c�,�UOQQ2P!)r�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)
    rjrks&r%r��CTokenizeTest.test_selector�
r�r'c�,�UOQQ2P!�r�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)
    rjrks&r%r��CTokenizeTest.test_methodr�r'c�,�UOQQ2P!rcrjrks&r%r��CTokenizeTest.test_tabs"r�r'c��UOQQ2UOQQ2UOQQ2UOQQ2UOQQ	2UOQ
Q2UOQQ
2UOQQ2UOQQ2UOQQ2UOQQ2UOQQ2UOQQ2UOQQ2UOQQ2UOQQ2UOQ Q!2UOQ"Q#2UOQ$Q%2UOQ&Q'2UOQ(Q)2P!)*r�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)
    rjrks&r%r��CTokenizeTest.test_async3s������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�,�UOQQ2P!)r�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)
    rjrks&r%r��CTokenizeTest.test_unicode=r�r'c	�P�Qo,QMQMQMQMQMQMQMQMQ	MQ
MQMQMQ
MQMQMQMQMQMQMQMQMQMQMQMQMQMQMQMQMQMQMQMFDFoUOUQ59^tt^2UO[OV2PPP2JH	P!)%fhJ]9h)c�l�[U2o[[OUO22!r)rrCrrfr-)rg�
the_strings& r%�
get_tokens�5CTokenizeTest.test_invalid_syntax.<locals>.get_tokensJs(��!�&�)�J���B�B�:�CV�CV�W�X�Xr'z(1+2]z(1+2}z{1+2]�1_z1.2_�1e2_z1e+� u€�0b12�0b1_2�0b2�0b1_�0b�0o18�0o1_8�0o8�0o1_�0o�0x1_�0x�012z'sdfsdfz'''sdfsdf''�]z6            f'__{
                x:d
            }__'z a
)ra�((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((a)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))r,rArr�)r1rnrs&  r%�test_invalid_syntax�!CTokenizeTest.test_invalid_syntaxIs���	Y�%
��%
��%
�
�%
�
�	%
�

�%
�
�
%
�
�%
�
�%
�
�%
�
�%
�
�%
�
�%
�
�%
�
�%
� 
�!%
�"
�#%
�$
�%%
�&
�'%
�(
�)%
�*
�+%
�,
�-%
�.
�/%
�0
�1%
�2
�3%
�4
�5%
�6
�7%
�8
�9%
�:
�;%
�<
"�=%
�>
�?%
�@
�A%
�H
�I%
�D�L���4��(�(��!�!�(�"5�"5�z�H�)�(�M%
�L)�(�(�s�%!B	�B%
�B%
c�`�]doQoUU]*
2o[U2n[[ORO22oUOUQ*O[O2UOUP*O[O2[UQQ2UU2o[U2nUO[U1Qk2UO[[UQQ2P!)�dc�v�POQ[U222oUQU*Q**
oU!)�c3�N�SF �DoQU*Q*w�	J	P!3h)�  z	if True:
r;)�.0rJs& r%�	<genexpr>�ICTokenizeTest.test_max_indent.<locals>.generate_source.<locals>.<genexpr>|s������1�d�Q�h�,�6�6��s�%r�zpass
)r?rf)�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'rP�execc�X:�[[ORO22!r)rCrrfr-)�	the_inputs�r%�<lambda>�/CTokenizeTest.test_max_indent.<locals>.<lambda>�s���D��9c�9c�dm�dv�dv�9w�4xr'rK)rrCrrfr-r.r �DEDENTrr�rArR)r1�	MAXINDENTr��validrL�invalidr�s&     @r%�test_max_indent�CTokenizeTest.test_max_indentws�����	�	�
 �	�A�
�.���U�O�	��h�@�@��AS�AS�T�U����������(�/�/�:���������(�*<�*<�=���z�6�*�!�)�,���W�%�	����*�,x�y�����g�w�
�F�	
r'c��Qo[Q2oUOUQ2[Q2oUOUU2UU22[Q2oUOUQ2[Q2oUOUU2UU22[Q2oUOUQ2[Q	2oUOUU2UU22P!)
c	��[U2o[OUO2TTTt,tFDuq p2U1MJ
	tooo!ttooohr)rrrfr-)rgrm�kindr&s&   r%rn�ECTokenizeTest.test_continuation_lines_indentation.<locals>.get_tokens�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
        )rr5r.)r1rnr�code_no_conts&   r%�#test_continuation_lines_indentation�1CTokenizeTest.test_continuation_lines_indentation�s��	X�
��
��	
���D�#�	
�,��
��	
����D�)�:�l�+C�D���
��	
���D�#�	
���
��
	
����D�)�:�l�+C�D���
��	
���D�#�	
�"��
��	
����D�)�:�l�+C�Dr'r;)r
rrr
r5rNrlryr�r�r�r�r�r�r�r�r�r�r�r�r�skip_wasi_stack_overflowr�r�rrrs@r%rGrG�s�����E�3�(?	�B,	�\w	�r=	�~$	�L	�.	�($	�L	�,	�"	�"H	�T
	�,I�\
�%�%�'�
�(�
�,bE�bEr'rGc�(`�\sQsQsnQsQsUsP!)�CTokenizerBufferTestsi�c���QQQ*QQQ*0o[O29^tt^2o[UQU2o[U2PPP2P!)%fhP!9h)z"        #coding: latin-1
        #r�i'z

        #i'�foo)rr�r
r	)r1�test_scriptr��	file_names&   r%�!test_newline_at_the_end_of_buffer�7CTokenizerBufferTests.test_newline_at_the_end_of_buffer�s]��
�

�e�)��
�

�e�)�����
�
�
!�
!�X�#�H�e�[�A�I��I�&�"�
!�
!�
!�s�A�A)	�!A)	r;)r
rrr
r�rrrs@r%r�r��s����
'�
'r'r�c�\`�\sQsQsnQs\Q2sQsQsQs	Qs
QsQ	sQ
s
UsP!)�CommandLineTesti
c��[O2UmUO[O
UO2P!r)�tempfile�mktemprUr rr!rks&r%�setUp�CommandLineTest.setUp
s(�� ���)��
����	�(�(�$�-�-�8r'c�P�[OQQU2O2!)z�Dedent *string* and strip it from its surrounding whitespaces.

This method is used by the other utility functions so that any
string to write or to match against can be freely indented.
z\s+r)r��subr")rgs&r%�text_normalize�CommandLineTest.text_normalize
s ���v�v�f�c�6�*�0�0�2�2r'c��[UOQ29^tt^2oUOU2PPP2P!)%fhP!9h)r)r3rUr�)r1�contentr$s&& r%�
set_source�CommandLineTest.set_source
s0��
�$�-�-��
%�
%���H�H�W��&�
%�
%�
%�s�<�A
	�A
	c��[2o[OU29^tt^2[O,UNUO
MQ5PPP2UO
UO22!)%fhK/9h)�r�)r�
contextlib�redirect_stdoutr�_mainrUr��getvalue)r1�flags�outputs&* r%�invoke_tokenize�CommandLineTest.invoke_tokenize
s[�����
�
'�
'��
/�
/��N�N� 7�%� 7���� 7�8�0��"�"�6�?�?�#4�5�5�0�
/�s�&A7�7B	�B	c�8�UOVQ59^tt^2UOU2UOUoUOU2oUO	UO2UO22PPP2P!)%fhP!9h))r�r�)r,r�r�r��assertListEqualr)r1r��expectr��ress&&&* r%�check_output�CommandLineTest.check_output
sn��
�\�\��\�
5�
5��O�O�F�#��&�&��.�C��(�(��0�F�� � ����!1�6�3D�3D�3F�G�	6�
5�
5�
5�s�A"B�B	�B	c	���QoUOQ2SFD7oUOUQ59^tt^2UOU2oPPP2J9	UO[29^tt^2[
O[229^tt^2UOQ2oPPP2PPP2P!)%fhJ�9h)%fhK.9h)%fhP!9h)�-ezS
            def f():
                print(x)
                return None
        r�z	--unknown�r�z--exact)r�r,r�rA�
SystemExitr��redirect_stderrr)r1�
base_flags�flagr&s&   r%�test_invocation�CommandLineTest.test_invocation!
s���&�
�����	
��D����4��(�(��(�(��.��)�(���
�
�z�
*�
*��+�+�H�J�7�7��(�(��5��8�+�
*�)�(�(��
8�7��+�
*�
*�sA�B;	�0'C"�C	�)C"�;C
�C
�C
�C
�C"�"C3	�+C3	c�2�QoQoUOV2P!)�a = 1a=
            0,0-0,0:            ENCODING       'utf-8'
            1,0-1,1:            NAME           'a'
            1,2-1,3:            OP             '='
            1,4-1,5:            NUMBER         '1'
            1,5-1,6:            NEWLINE        ''
            2,0-2,0:            ENDMARKER      ''
        �r�)r1r�r�s&  r%�test_without_flag�!CommandLineTest.test_without_flag4
s������	
���&�)r'c�H�QoQoQFDoUOVU2J	P!)r�a=
            0,0-0,0:            ENCODING       'utf-8'
            1,0-1,1:            NAME           'a'
            1,2-1,3:            EQUAL          '='
            1,4-1,5:            NUMBER         '1'
            1,5-1,6:            NEWLINE        ''
            2,0-2,0:            ENDMARKER      ''
        r�r�)r1r�r�r�s&   r%�test_exact_flag�CommandLineTest.test_exact_flagA
s*������&�D����f�d�3�&r')rU)r
rrr
r��staticmethodr�r�r�r�r�r�r�rrrs@r%r�r�
sB����9��3��3��6�H�6�&*�4�4r'r�c�8`�\sQsQsn\Q2sQsQsUsP!)�StringPrefixTestiP
c�0�[2o[O[O[O
2FD1o[
UQ02UOUO22J3	[2o[O2FD�o]oQ[OV22FD�o[OU2FD�o[OSTt,tFDpwUO21MJ	toFDFoPOU2o	U	Q6XcJ[
U	Q02UOU	2U]*
oJH	J�	J�	U]6XfJ�Ut!	P![cCJ=h9httoh[cJ�h9h)z""c3�P�SF �DoPOU2w�	J	P!3h)r�)r?)r��ls& r%r��<StringPrefixTest.determine_valid_prefixes.<locals>.<genexpr>l
s ��S���S�A�����
�
�S�s�&�not)�set�	itertools�chainrg�ascii_lowercase�ascii_uppercaser-�add�lowerrN�count�combinations�permutations�product�upperr?)
�single_char_valid_prefixes�letter�valid_prefixes�length�num_at_this_length�prefix�t�cr��ps
          r%�determine_valid_prefixes�)StringPrefixTest.determine_valid_prefixesQ
s^��&)�U�"� �o�o�f�&<�&<�f�>T�>T�U�F�
���x�r�]�#�*�.�.�v�|�|�~�>�V�����o�o�'�F�!"���"�/�/�0J�S���#�/�/��7�A�&�.�.��0K��A�Q�W�W�Y���0K�L���G�G�A�J����:�%�	!� �A�3�b��N�
+�.�.�q�1�.�!�3�.�M�8�	�*"�Q�&�%�%�1(���
��
��1L�� +�!� �!�s6�-E.�'F�((F�.	E>�8E>�=E>�	F�F�Fc�8�UO[O]*Q2UO[OP*Q2[[O]PO	Q22oUOVO22P!)rr�rr|)r.r�StringPrefixr�r6r�)r1�defined_prefixess& r%�
test_prefixes�StringPrefixTest.test_prefixes�
sy��	
����.�.�q�1�3�7�����.�.�r�2�C�8��x�4�4�Q�r�:�@�@��E�F��	
���)�+H�+H�+J�Kr'r;)	r
rrr
r�r�r�rrrs@r%r�r�P
s$�����0&��0&�fL�Lr'r��__main__)/r�r�r=r�rgr�r!r�unittest�iorr�textwraprrr�testr�test.supportr�test.support.script_helperr	r
r�test.support.numbersrr
r&r)rr'r)r9r\rlrCr�r�rBr;rGr��force_not_colorized_test_classr�r�r
�mainr;r'r%�<module>rsR����	�	�
����� ��#��"�Y�Y��� h	�8�h	�T%A��A�
?�:�x�:�<#I�H�#I�L<�H�<�.N"��N"�bv2�8�v2�r&G�X�&G�R
.� U#�H�U#�p2��2�8rE�H�rE�j!'�H�-�-�'�	�'�'�K4�h�'�'�K4�(�K4�\EL�x�(�(�EL�P�z���M�M�O�r'

Youez - 2016 - github.com/yon3zu
LinuXploit