python (3.11.7)

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

e4dZddlZddlZddlZddlZddlZddlZdZdZGddej	Z
edkrejdSdS)aTest correct treatment of various string literals by the parser.

There are four types of string literals:

    'abc'             -- normal str
    r'abc'            -- raw str
    b'xyz'            -- normal bytes
    br'xyz' | rb'xyz' -- raw bytes

The difference between normal and raw strings is of course that in a
raw string, \ escapes (while still used to determine the end of the
literal) are not interpreted, so that r'\x00' contains four
characters: a backslash, an x, and two zeros; while '\x00' contains a
single character (code point zero).

The tricky thing is what should happen when non-ASCII bytes are used
inside literals.  For bytes literals, this is considered illegal.  But
for str literals, those bytes are supposed to be decoded using the
encoding declared for the file (UTF-8 by default).

We have to test this with various file encodings.  We also test it with
exec()/eval(), which uses a different code path.

This file is really about correct treatment of encodings and
backslashes.  It doesn't concern itself with issues like single
vs. double quotes or singly- vs. triply-quoted strings: that's dealt
with elsewhere (I assume).
Na# coding: %s
a = 'x'
assert ord(a) == 120
b = '\x01'
assert ord(b) == 1
c = r'\x01'
assert list(map(ord, c)) == [92, 120, 48, 49]
d = '\x81'
assert ord(d) == 0x81
e = r'\x81'
assert list(map(ord, e)) == [92, 120, 56, 49]
f = '\u1881'
assert ord(f) == 0x1881
g = r'\u1881'
assert list(map(ord, g)) == [92, 117, 49, 56, 56, 49]
h = '\U0001d120'
assert ord(h) == 0x1d120
i = r'\U0001d120'
assert list(map(ord, i)) == [92, 85, 48, 48, 48, 49, 100, 49, 50, 48]
c"t|gSN)bytes)is M/BuggyBox/python/3.11.7/bootstrap/lib/python3.11/test/test_string_literals.pybyter<s!::ceZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZdZdZddZdZdZdZdZdZdZdS)TestLiteralsctjdd|_tj|_tjd|jdS)Nr)syspath	save_pathtempfilemkdtemptmpdirinsertselfs rsetUpzTestLiterals.setUpBsA!!!&((4;'''''r	ch|jtjdd<tj|jddS)NT)
ignore_errors)rr
rshutilrmtreerrs rtearDownzTestLiterals.tearDownGs0n
dk666666r	ctD]}dSr)TEMPLATE)rcs  r
test_templatezTestLiterals.test_templateKs	9	9AA	9	9r	cL|tdd|tdtd|tdtd|tdtd|tdtd|td	td
|tdtd
|tdtd
|tdtd
dS)Nz 'x' xz '\x01' z '' z '\x81' u '' z
 '\u1881' u 'ᢁ' z '\U0001d120'  u '𝄠' assertEqualevalchrrs rtest_eval_str_normalz!TestLiterals.test_eval_str_normalQsJk**C000o..A777n--s1vv666o..D		:::n--s4yy999/00#f++>>>.//V===344c'llCCC233S\\BBBBBr	c|ttd|ttd|ttd|ttd|ttd|ttd|ttd|ttd|ttd	|ttd
|ttd|ttd|ttd
|ttddS)Nz '\x' z '\x0' z '\u' z '\u0' z '\u00' z	 '\u000' z '\U' z '\U0' z '\U00' z	 '\U000' z
 '\U0000' z '\U00000' z '\U000000' z
 '\U0000000' assertRaisesSyntaxErrorr(rs rtest_eval_str_incompletez%TestLiterals.test_eval_str_incomplete\s^+t];;;+t^<<<+t];;;+t^<<<+t_===+t-=>>>+t];;;+t^<<<+t_===+t-=>>>+t->???+t-?@@@+t-@AAA+t-ABBBBBr	c	NtddD]o}|dvr|t5|t	d|zdt|zdddn#1swxYwYpt
jd5}t
jdt	t	d
dddn#1swxYwY|t|d|t|djd||djd
||dj
dt
jd5}t
jdt	|t5}t	d
dddn#1swxYwY|j}dddn#1swxYwY||g||jd||jd
||j
d||jdt
jd5}t
jdt	|t5}t	ddddn#1swxYwY|j}dddn#1swxYwY|t|d||djt|t|djd||djd
dS)Nr"s

"'01234567NU\abfnrtuvxz'\%c'\Trecordalwayscategoryz	'''
\z'''rinvalid escape sequence '\z'<string>errorz'\e' $zinvalid escape sequence)rangeassertWarnsDeprecationWarningr'r(r)warningscatch_warningssimplefilterlenstrmessagefilenamelinenor-r.	exceptionmsgoffsetr7assertRegexrbwcmexcs     rtest_eval_str_invalid_escapez)TestLiterals.test_eval_str_invalid_escapelsq#	D	DA666!!"455
D
D  hl!3!3TCFF]CCC
D
D
D
D
D
D
D
D
D
D
D
D
D
D
D
$D
1
1
1	 Q!(5GHHHH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
Q###QqT\**,KLLL1
3331a(((

$D
1
1
1	Q!'4FGGGG"";//
$2]###
$
$
$
$
$
$
$
$
$
$
$
$
$
$
$,C																
	
B"ABBBz222Q'''Q'''
$D
1
1
1	Q!(5GHHHH"";//
 2Y
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 ,C																
	
Q###1(:;;;QqT\**,EFFF1
33333s7A55A9	<A9	+C

CC6G06GG0G	G0G	
G00G47G46LK$L$K(	(L+K(	,
LL	LctddD]g}|t5|t	d|zt|dddn#1swxYwYht
jd5}t
jdtt	ddddn#1swxYwY|t|d	|t|d
jd||d
jd||d
j
d	t
jd5}t
jd
t|t5}t	ddddn#1swxYwY|j}dddn#1swxYwY||g||jd||jd||j
d	||jd	dS)Nz'\%o'Tr3r5r6z'''
\407'''r"r$invalid octal escape sequence '\407'r9r:)r;r<r=r'r(r)r>r?r@rArBrCrDrEr-r.rFrGrHrrrLrMrNs     r"test_eval_str_invalid_octal_escapez/TestLiterals.test_eval_str_invalid_octal_escapes6uf%%	=	=A!!"455
=
=  hl!3!3SVV<<<
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
$D
1
1
1	"Q!(5GHHHH!!!	"	"	"	"	"	"	"	"	"	"	"	"	"	"	"	
Q###QqT\**@	B	B	B1
3331a(((

$D
1
1
1	Q!'4FGGGG"";//
&2_%%%
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&,C																
	
B"IJJJz222Q'''Q'''''sY4A--A1	4A1	+CC	C	86G(.G
>G(
G	G(G	
G((G,/G,c|tdd|tdd|tdtd|tdd|td	td
|tdd|td
td|tdd|tdtddS)Nz r'x' r!z	 r'\x01' \x01z r'' r"z	 r'\x81' z\x81u r'' r#z r'\u1881' z\u1881u r'ᢁ' r$z r'\U0001d120' z
\U0001d120u	 r'𝄠' r%r&rs rtest_eval_str_rawzTestLiterals.test_eval_str_raws5l++S111.//>>>o..A777.//>>>o..D		:::011>BBB/00#f++>>>4557IJJJ344c'llCCCCCr	c|tdd|tdtd|tdtd|tdtd|ttd|td	d
|ttd|tdd
|ttddS)Nz b'x' xz	 b'\x01' r"z b'' z	 b'\x81' r#u b''  br'\u1881' \u1881u b'ᢁ'  br'\U0001d120' 
\U0001d120u	 b'𝄠' r'r(rr-r.rs rtest_eval_bytes_normalz#TestLiterals.test_eval_bytes_normalsl++T222.//a999o..Q888.//d<<<+t_===1224DEEE+t->???5668LMMM+t-BCCCCCr	c|ttd|ttddS)Nz b'\x' z b'\x0' r,rs rtest_eval_bytes_incompletez'TestLiterals.test_eval_bytes_incompletes8+t^<<<+t_=====r	c	tddD]p}|dvr|t5|t	d|zdt|gzdddn#1swxYwYqt
jd5}t
jdt	t	d
dddn#1swxYwY|t|d|t|djd||djd
||dj
dt
jd5}t
jdt	|t5}t	d
dddn#1swxYwY|j}dddn#1swxYwY||g||jd||jd
||j
ddS)Nr"r1s

"'01234567\abfnrtvxzb'\%c'\Tr3r5r6z
b'''
\z'''rr8r9r:r;r<r=r'r(rr>r?r@rArBrCrDrEr-r.rFrGrJs     rtest_eval_bytes_invalid_escapez+TestLiterals.test_eval_bytes_invalid_escapes<q#	J	JA333!!"455
J
J  i!m!4!4eeQCjj6HIII
J
J
J
J
J
J
J
J
J
J
J
J
J
J
J
$D
1
1
1	!Q!(5GHHHH   	!	!	!	!	!	!	!	!	!	!	!	!	!	!	!	
Q###QqT\**,KLLL1
3331a(((

$D
1
1
1	Q!'4FGGGG"";//
%2^$$$
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%,C																
	
B"ABBBz222Q'''''sY8A66A:	=A:	+CCC6G17GG1G	G1G	
G11G58G5c	tddD]k}|t5|t	d|zt|dzgdddn#1swxYwYlt
jd5}t
jdtt	d	dddn#1swxYwY|t|d
|t|djd||djd
||dj
d
t
jd5}t
jdt|t5}t	d	dddn#1swxYwY|j}dddn#1swxYwY||g||jd||jd
||j
d
dS)NrQrRzb'\%o'Tr3r5r6zb'''
\407'''r"rrSr9r:rerTs     r$test_eval_bytes_invalid_octal_escapez1TestLiterals.test_eval_bytes_invalid_octal_escapes;uf%%	J	JA!!"455
J
J  i!m!4!4eQYK6H6HIII
J
J
J
J
J
J
J
J
J
J
J
J
J
J
J
$D
1
1
1	#Q!(5GHHHH!"""	#	#	#	#	#	#	#	#	#	#	#	#	#	#	#	
Q###QqT\**@	B	B	B1
3331a(((

$D
1
1
1	Q!'4FGGGG"";//
'2%&&&
'
'
'
'
'
'
'
'
'
'
'
'
'
'
',C																
	
B"IJJJz222Q'''''sY8A11A5	8A5	+C		C
C
<6G,2GG,G	G,G	
G,,G03G0c|tdd|tdd|tdd|tdd|tdtd|td	td|td
d|tdd|ttd
|ttd|tdd|tdd|ttd|ttd|tdd|tdd|ttd|ttd|ttd|ttd|ttd|ttd|ttd|ttddS)Nz br'x' rZz rb'x' z
 br'\x01' \x01z
 rb'\x01' z br'' r"z rb'' z
 br'\x81' s\x81z
 rb'\x81' u br'' u rb'' r[r\z rb'\u1881' u	 br'ᢁ' u	 rb'ᢁ' r]r^z rb'\U0001d120' u
 br'𝄠' u
 rb'𝄠' z bb'' z rr'' z brr'' z bbr'' z rrb'' z rbb'' r_rs rtest_eval_bytes_rawz TestLiterals.test_eval_bytes_rawsm,,d333m,,d333/00.AAA/00.AAA.//a999.//a999/00.AAA/00.AAA+t-=>>>+t-=>>>1224DEEE1224DEEE+t-?@@@+t-?@@@5668LMMM5668LMMM+t-CDDD+t-CDDD+t\:::+t\:::+t];;;+t];;;+t];;;+t];;;;;r	c|tdd|tdd|tdd|ttd|ttd|ttd|ttd	dS)
Nz u'x' r!u U'ä' äu u'ä' z ur'' z ru'' z bu'' z ub'' )r'r(r-r.rs rtest_eval_str_uzTestLiterals.test_eval_str_usl++S111/00$777PQQSWXXX+t\:::+t\:::+t\:::+t\:::::r	cf|tdd|tdd|tdd|tdd|td	d
dS)Nz B'x' rZz	 R'\x01' rWz
 BR'\x01' rkz
 F'{1+1}' z U'\U0001d120' u𝄠)r'r(rs rtest_uppercase_prefixesz$TestLiterals.test_uppercase_prefixessl++T222.//999/00(;;;.//C:::455}EEEEEr	cd|ddz}tj|j|dz}t|d|}	|t|z|||n#|wxYwt|tj|=dS)Nxx_-_z.pyrL)encoding)replaceosrjoinropenwriterclose
__import__r
modules)rrxextramodnamefnfs      rcheck_encodingzTestLiterals.check_encoding s(**3444
W\\$+w
7
7S8,,,	
GGHx'(((
GGENNN
GGIIIIAGGIIII7K   s2BB2c6d}|d|dS)Nu#z = 'ሴ'; assert ord(z) == 0x1234
utf-8rrrs  rtest_file_utf_8zTestLiterals.test_file_utf_8,s#9GU+++++r	cNd}|t|jd|dS)Nub'€'
r)r-r.rrs  rtest_file_utf_8_errorz"TestLiterals.test_file_utf_8_error0s*+t':GUKKKKKr	c0|ddS)Nrrrs rtest_file_utf8zTestLiterals.test_file_utf84sG$$$$$r	c0|ddS)Nz
iso-8859-1rrs rtest_file_iso_8859_1z!TestLiterals.test_file_iso_8859_17sL)))))r	c0|ddS)Nzlatin-1rrs rtest_file_latin_1zTestLiterals.test_file_latin_1:sI&&&&&r	c0|ddS)Nlatin9rrs rtest_file_latin9zTestLiterals.test_file_latin9=sH%%%%%r	N)rs)__name__
__module____qualname__rrrr*r/rOrUrXr`rbrfrirlrorrrrrrrrrr	rrr@sv(((
777999	C	C	CCCC $4$4$4L(((2	D	D	D	D	D	D>>>(((2(((0<<<4;;;FFF
!
!
!
!,,,LLL%%%***'''&&&&&r	r__main__)
__doc__rzr
rrunittestr>rrTestCaserrmainrr	r<module>rs:
			







,~&~&~&~&~&8$~&~&~&BzHMOOOOOr