ɷې/SrSSKrSSKrSSKrSSKrSSKrSSKrSrSr"SS\R5r \ S:Xa\R"5 gg)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[U/5$N)bytes)is @/opt/alt/python313/lib64/python3.13/test/test_string_literals.pybyter<s !:c\rSrSrSrSrSrSrSrSr Sr S r S r S r S rS rSrSrSrSrSSjrSrSrSrSrSrSrSrg) TestLiterals@c[RSSUl[R"5Ul[RR SUR 5 g)Nr)syspath save_pathtempfilemkdtemptmpdirinsertselfs rsetUpTestLiterals.setUpBs7!&&(  4;;'r c|UR[RSS&[R"UR SS9 g)NT) ignore_errors)rrrshutilrmtreerrs rtearDownTestLiterals.tearDownGs%nn  dkk6r c[HnM gr)TEMPLATE)rcs r test_templateTestLiterals.test_templateKs Ar czUR[S5S5 UR[S5[S55 UR[S5[S55 UR[S5[S55 UR[S5[S55 UR[S 5[S 55 UR[S 5[S 55 UR[S 5[S 55 UR[S5[S 55 g)Nz 'x' xz '\x01' z '' z '\x81' u '' z '\u1881' u 'ᢁ' z '\U0001d120' u '𝄠'  assertEqualevalchrrs rtest_eval_str_normal!TestLiterals.test_eval_str_normalQs k*C0 o.A7 n-s1v6 o.D : n-s4y9 /0#f+> ./V= 34c'lC 23S\Br cUR[[S5 UR[[S5 UR[[S5 UR[[S5 UR[[S5 UR[[S5 UR[[S5 UR[[S5 UR[[S 5 UR[[S 5 UR[[S 5 UR[[S 5 UR[[S 5 UR[[S5 g)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'  assertRaises SyntaxErrorr,rs rtest_eval_str_incomplete%TestLiterals.test_eval_str_incomplete\s +t]; +t^< +t]; +t^< +t_= +t-=> +t]; +t^< +t_= +t-=> +t->? +t-?@ +t-@A +t-ABr c [SS5HSnUS;aM UR[5 UR[ SU-5S[ U5-5 SSS5 MU [ R"SS9n[ R"S[S 9 [ S 5 SSS5 UR[W5S5 UR[US R5S 5 URUS RS 5 URUS RS5 [ R"SS9n[ R"S[S 9 UR[5n[ S 5 SSS5 WR nSSS5 URU/5 URWR"S 5 URURS 5 URURS5 URUR$S5 [ R"SS9n[ R"S[S 9 UR[5n[ S5 SSS5 WR nSSS5 UR[U5S5 URUS R&[5 UR)[US R5S5 URUS RS 5 g!,(df  GM=f!,(df  GN=f!,(df  GN=f!,(df  GN=f!,(df  N=f!,(df  N=f)Nr&s "'01234567NU\abfnrtuvxz'\%c'\Trecordalwayscategoryz ''' \z'''rinvalid escape sequence '\z'errorz'\e' $zinvalid escape sequence)range assertWarns SyntaxWarningr+r,r-warningscatch_warnings simplefilterlenstrmessagefilenamelinenor2r3 exceptionmsgoffsetr= assertRegexrbwcmexcs rtest_eval_str_invalid_escape)TestLiterals.test_eval_str_invalid_escapels}q#A66!!-0  hl!3TCF]C10  $ $D 1Q  ! !(] C  2 Q# QqT\\*,KL 1 3 1a(  $ $D 1Q  ! !'M B"";/2]#0,,C 2 B "AB z2 Q' Q' $ $D 1Q  ! !(] C"";/2Y0,,C 2 Q# 1 6 QqT\\*,EF 1 3A102 10/2 10/2 1s_+L8%L:/L;) L)5L;'/M M "M L  L&) L8 3L;; M  M M M,c[SS5HHnUR[5 UR[ SU-5[ U55 SSS5 MJ [ R"SS9n[ R"S[S9 [ S5 SSS5 UR[W5S 5 UR[US R5S 5 URUS RS 5 URUS RS 5 [ R"SS9n[ R"S[S9 UR[5n[ S5 SSS5 WR nSSS5 URU/5 URWR"S 5 URURS 5 URURS 5 URUR$S 5 g!,(df  GM =f!,(df  GN=f!,(df  N=f!,(df  N=f)Nz'\%o'Tr9r;r<z ''' \407'''r&r$invalid octal escape sequence '\407'r?r@rA)rBrCrDr+r,r-rErFrGrHrIrJrKrLr2r3rMrNrOrrrSrTrUs r"test_eval_str_invalid_octal_escape/TestLiterals.test_eval_str_invalid_octal_escapesuf%A!!-0  hl!3SV<10& $ $D 1Q  ! !(] C  !2 Q# QqT\\*@ B 1 3 1a(  $ $D 1Q  ! !'M B"";/2_%0,,C 2 B "IJ z2 Q' Q'+102 10/2 1s;(H -%H//H? H.*H? H  H+. H< 8H?? I cD[R"SS9n[R"S[S9 UR [ 5n[ S5 SSS5 WRnSSS5 URW/5 URWRS5 URURS5 URURS5 URURS 5 [R"SS9n[R"S[S9 UR [ 5n[ S 5 SSS5 WRnSSS5 URU/5 URURS5 URURS5 URURS5 URURS 5 g!,(df  GN=f!,(df  GN=f!,(df  N=f!,(df  N=f) NTr9rAr<z&"'''''''''''''''''''''invalid\ Escape"zinvalid escape sequence '\ 'r?r&z"''Incorrect \ logic?") rErFrGrDr2r3r,rMr+rNrKrLrO)rrSrTrUs r)test_invalid_escape_locations_with_offset6TestLiterals.test_invalid_escape_locations_with_offsets  $ $D 1Q  ! !'M B"";/2@A0,,C 2 B "AB z2 Q' R(  $ $D 1Q  ! !'M B"";/2010,,C 2 B "AB z2 Q' R(%0/2 10/2 1sG/G. GG./H1 H=H G+ &G.. G= H H Hc2UR[S5S5 UR[S5S5 UR[S5[S55 UR[S5S5 UR[S 5[S 55 UR[S 5S 5 UR[S 5[S55 UR[S5S5 UR[S5[S55 g)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_rawTestLiterals.test_eval_str_raws l+S1 ./> o.A7 ./> o.D : 01>B /0#f+> 457IJ 34c'lCr c UR[S5S5 UR[S5[S55 UR[S5[S55 UR[S5[S55 UR[[S5 UR[S 5S 5 UR[[S 5 UR[S 5S 5 UR[[S5 g)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,rr2r3rs rtest_eval_bytes_normal#TestLiterals.test_eval_bytes_normals l+T2 ./a9 o.Q8 ./d< +t_= 124DE +t->? 568LM +t-BCr cpUR[[S5 UR[[S5 g)Nz b'\x' z b'\x0' r1rs rtest_eval_bytes_incomplete'TestLiterals.test_eval_bytes_incompletes& +t^< +t_=r c [SS5HTnUS;aM UR[5 UR[ SU-5S[ U/5-5 SSS5 MV [ R"SS9n[ R"S[S 9 [ S 5 SSS5 UR[W5S5 UR[US R5S 5 URUS RS 5 URUS RS5 [ R"SS9n[ R"S[S 9 UR[5n[ S 5 SSS5 WR nSSS5 URU/5 URWR"S 5 URURS 5 URURS5 g!,(df  GM=f!,(df  GNu=f!,(df  N=f!,(df  N=f)Nr&r7s "'01234567\abfnrtvxzb'\%c'\Tr9r;r<z b''' \z'''rr>r?r@rArBrCrDr+r,rrErFrGrHrIrJrKrLr2r3rMrNrQs rtest_eval_bytes_invalid_escape+TestLiterals.test_eval_bytes_invalid_escapesq#A33!!-0  i!m!4eeQCj6HI10  $ $D 1Q  ! !(] C  2 Q# QqT\\*,KL 1 3 1a(  $ $D 1Q  ! !'M B"";/2^$0,,C 2 B "AB z2 Q''102 10/2 1s;,G99%H ;/H/* H6H/9 H H H, (H// H=c p[SS5HLnUR[5 UR[ SU-5[ US-/55 SSS5 MN [ R"SS9n[ R"S[S9 [ S 5 SSS5 UR[W5S 5 UR[US R5S 5 URUS RS 5 URUS RS5 [ R"SS9n[ R"S[S9 UR[5n[ S 5 SSS5 WR nSSS5 URU/5 URWR"S 5 URURS 5 URURS5 g!,(df  GM=f!,(df  GNu=f!,(df  N=f!,(df  N=f)NrYrZzb'\%o'Tr9r;r<z b''' \407'''r&rr[r?r@rArvr\s r$test_eval_bytes_invalid_octal_escape1TestLiterals.test_eval_bytes_invalid_octal_escapesuf%A!!-0  i!m!4eQYK6HI10& $ $D 1Q  ! !(] C ! "2 Q# QqT\\*@ B 1 3 1a(  $ $D 1Q  ! !'M B"";/2%&0,,C 2 B "IJ z2 Q')102 10/2 1s;,G11%H3/H'" H.H'1 H  H H$ H'' H5c8UR[S5S5 UR[S5S5 UR[S5S5 UR[S5S5 UR[S5[S55 UR[S 5[S55 UR[S 5S 5 UR[S 5S 5 UR[[S 5 UR[[S5 UR[S5S5 UR[S5S5 UR[[S5 UR[[S5 UR[S5S5 UR[S5S5 UR[[S5 UR[[S5 UR[[S5 UR[[S5 UR[[S5 UR[[S5 UR[[S5 UR[[S5 g)Nz br'x' riz rb'x' z br'\x01' \x01z rb'\x01' z br'' r&z rb'' z br'\x81' s\x81z rb'\x81' u br'' u rb'' rjrkz rb'\u1881' u br'ᢁ' u rb'ᢁ' rlrmz rb'\U0001d120' u br'𝄠' u rb'𝄠' z bb'' z rr'' z brr'' z bbr'' z rrb'' z rbb'' rnrs rtest_eval_bytes_raw TestLiterals.test_eval_bytes_raw s m,d3 m,d3 /0.A /0.A ./a9 ./a9 /0.A /0.A +t-=> +t-=> 124DE 124DE +t-?@ +t-?@ 568LM 568LM +t-CD +t-CD +t\: +t\: +t]; +t]; +t]; +t];r c~UR[S5S5 UR[S5S5 UR[S5S5 UR[[S5 UR[[S5 UR[[S5 UR[[S 5 g) Nz u'x' r%u U'ä' äu u'ä' z ur'' z ru'' z bu'' z ub'' )r+r,r2r3rs rtest_eval_str_uTestLiterals.test_eval_str_u's l+S1 /0$7 PQSWX +t\: +t\: +t\: +t\:r cUR[S5S5 UR[S5S5 UR[S5S5 UR[S5S5 UR[S 5S 5 g) Nz B'x' riz R'\x01' rez BR'\x01' r~z F'{1+1}' r@z U'\U0001d120' u𝄠)r+r,rs rtest_uppercase_prefixes$TestLiterals.test_uppercase_prefixes0sq l+T2 ./9 /0(; ./C5: 45}Er ctSURSS5-n[RRURUS-5n[ USUS9nUR [U-5 UR U5 UR5 [U5 [RU g!UR5 f=f)Nxx_-_z.pyrS)encoding) replaceosrjoinropenwriter close __import__rmodules)rrextramodnamefnfs rcheck_encodingTestLiterals.check_encoding7s(**344 WW\\$++w 7 S8 ,  GGHx' ( GGEN GGI7 KK  GGIs )B%%B7c,SnURSU5 g)Nu#z = 'ሴ'; assert ord(z) == 0x1234 utf-8rrrs rtest_file_utf_8TestLiterals.test_file_utf_8Cs9 GU+r cLSnUR[URSU5 g)Nub'€' r)r2r3rrs rtest_file_utf_8_error"TestLiterals.test_file_utf_8_errorGs! +t':':GUKr c&URS5 g)Nrrrs rtest_file_utf8TestLiterals.test_file_utf8Ks G$r c&URS5 g)Nz iso-8859-1rrs rtest_file_iso_8859_1!TestLiterals.test_file_iso_8859_1Ns L)r c&URS5 g)Nzlatin-1rrs rtest_file_latin_1TestLiterals.test_file_latin_1Qs I&r c&URS5 g)Nlatin9rrs rtest_file_latin9TestLiterals.test_file_latin9Ts H%r )rrN))__name__ __module__ __qualname____firstlineno__rrr"r.r4rVr]rbrfrorrrwr{rrrrrrrrrr__static_attributes__r rr r @s|( 79 CC $4L(2). D D>(2(0<4;F !,L%*'&r r __main__) __doc__rrrrunittestrEr rTestCaser rmainrr rrsW:  ,U&8$$U&p z MMOr