@@ -710,14 +710,16 @@ def test_double_braces(self):
710710 ])
711711
712712 def test_double_brace_ast_location_covers_both_source_braces (self ):
713- value = ast .parse ('f"a{{"' ).body [0 ].value .values [0 ]
714- self .assertIsInstance (value , ast .Constant )
715- self .assertEqual (value .value , "a{" )
716- self .assertEqual (
717- (value .lineno , value .col_offset , value .end_lineno ,
718- value .end_col_offset ),
719- (1 , 2 , 1 , 5 ),
720- )
713+ for source , expected in [('f"a{{"' , "a{" ), ('f"a}}"' , "a}" )]:
714+ with self .subTest (source = source ):
715+ value = ast .parse (source ).body [0 ].value .values [0 ]
716+ self .assertIsInstance (value , ast .Constant )
717+ self .assertEqual (value .value , expected )
718+ self .assertEqual (
719+ (value .lineno , value .col_offset , value .end_lineno ,
720+ value .end_col_offset ),
721+ (1 , 2 , 1 , 5 ),
722+ )
721723
722724 def test_compile_time_concat (self ):
723725 x = 'def'
@@ -1301,6 +1303,13 @@ def test_nested_fstrings(self):
13011303 self .assertEqual (f'{ f"{ 0 } " * 3 } ' , '000' )
13021304 self .assertEqual (f'{ f"{ y } " * 3 } ' , '555' )
13031305
1306+ def test_deeply_nested_fstrings_with_leading_text (self ):
1307+ source = "0"
1308+ for depth in range (20 ):
1309+ quote = '"' if depth % 2 == 0 else "'"
1310+ source = f"f{ quote } x{{{ source } }}{ quote } "
1311+ self .assertEqual (eval (source ), "x" * 20 + "0" )
1312+
13041313 def test_invalid_string_prefixes (self ):
13051314 single_quote_cases = ["fu''" ,
13061315 "uf''" ,
@@ -1679,6 +1688,12 @@ def __repr__(self):
16791688
16801689 self .assertEqual (f'{ " # nooo " = } ' , '" # nooo "=\' # nooo \' ' )
16811690 self .assertEqual (f'{ " \" # nooo \" " = } ' , '" \\ " # nooo \\ " "=\' " # nooo " \' ' )
1691+ self .assertEqual (f'''{ " \" # nooo \" " # real comment
1692+ = } ''' , '" \\ " # nooo \\ " " \n =\' " # nooo " \' ' )
1693+ self .assertEqual (f'{ """a" # inside""" = } ' ,
1694+ '"""a" # inside"""=\' a" # inside\' ' )
1695+ self .assertEqual (f"{ '''a' # inside''' = } " ,
1696+ "'''a' # inside'''=\" a' # inside\" " )
16821697
16831698 self .assertEqual (f'{ # some comment goes here
16841699 """hello""" = } ' , ' \n """hello"""=\' hello\' ' )
0 commit comments