python (3.11.7)

(root)/
lib/
python3.11/
test/
__pycache__/
test_string_literals.cpython-311.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|gS)N)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;'''''rch|jtjdd<tj|jddS)NT)
ignore_errors)rrr
shutilrmtreerrs rtearDownzTestLiterals.tearDownGs0n
dk666666rcrtD].}|dks&d|cxkrdksnJt|/dS)N
 ~)TEMPLATErepr)rcs  r
test_templatezTestLiterals.test_templateKsM	9	9A99qCa	9	9rcL|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\\BBBBBrc|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-ABBBBBrc	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simplefilterlenstrmessagefilenamelinenor0r1	exceptionmsgoffsetr:assertRegexrbwcmexcs     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'Tr6r8r9z'''
\407'''r%r$invalid octal escape sequence '\407'r<r=)r>r?r@r*r+r,rArBrCrDrErFrGrHr0r1rIrJrKrrrOrPrQs     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'llCCCCCrc|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+rr0r1rs rtest_eval_bytes_normalz#TestLiterals.test_eval_bytes_normalsl++T222.//a999o..Q888.//d<<<+t_===1224DEEE+t->???5668LMMM+t-BCCCCCrc|ttd|ttddS)Nz b'\x' z b'\x0' r/rs rtest_eval_bytes_incompletez'TestLiterals.test_eval_bytes_incompletes8+t^<<<+t_=====rc	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%r4s

"'01234567\abfnrtvxzb'\%c'\Tr6r8r9z
b'''
\z'''rr;r<r=r>r?r@r*r+rrArBrCrDrErFrGrHr0r1rIrJrMs     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)NrTrUzb'\%o'Tr6r8r9zb'''
\407'''r%rrVr<r=rhrWs     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' r]z 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`raz rb'\U0001d120' u
 br'𝄠' u
 rb'𝄠' z bb'' z rr'' z brr'' z bbr'' z rrb'' z rbb'' rbrs 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];;;;;rc|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+r0r1rs rtest_eval_str_uzTestLiterals.test_eval_str_usl++S111/00$777PQQSWXXX+t\:::+t\:::+t\:::+t\:::::rcf|tdd|tdd|tdd|tdd|td	d
dS)Nz B'x' r]z	 R'\x01' rZz
 BR'\x01' rnz
 F'{1+1}' z U'\U0001d120' u𝄠)r*r+rs rtest_uppercase_prefixesz$TestLiterals.test_uppercase_prefixessl++T222.//999/00(;;;.//C:::455}EEEEErcd|ddz}tj|j|dz}t|d|}	|t|z|||n#|wxYwt|tj|=dS)Nxx_-_z.pyrO)encoding)replaceosr
joinropenwriterclose
__import__rmodules)rr{extramodnamefnfs      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+++++rcNd}|t|jd|dS)Nub'€'
r)r0r1rrs  rtest_file_utf_8_errorz"TestLiterals.test_file_utf_8_error0s*+t':GUKKKKKrc0|ddS)Nrrrs rtest_file_utf8zTestLiterals.test_file_utf84sG$$$$$rc0|ddS)Nz
iso-8859-1rrs rtest_file_iso_8859_1z!TestLiterals.test_file_iso_8859_17sL)))))rc0|ddS)Nzlatin-1rrs rtest_file_latin_1zTestLiterals.test_file_latin_1:sI&&&&&rc0|ddS)Nlatin9rrs rtest_file_latin9zTestLiterals.test_file_latin9=sH%%%%%rN)rv)__name__
__module____qualname__rrr"r-r2rRrXr[rcrerirlrorrrurrrrrrrrrr
r
@sv(((
777999	C	C	CCCC $4$4$4L(((2	D	D	D	D	D	D>>>(((2(((0<<<4;;;FFF
!
!
!
!,,,LLL%%%***'''&&&&&rr
__main__)
__doc__r}rrrunittestrArrTestCaser
rmainrrr<module>rs:
			







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