@@ -1269,14 +1269,18 @@ def visit_JoinedStr(self, node):
12691269 quote_type = quote_types [0 ]
12701270 self .write (f"{ quote_type } { value } { quote_type } " )
12711271
1272- def _write_fstring_inner (self , node , escape_newlines = False ):
1272+ def _write_fstring_inner (self , node , is_format_spec = False ):
12731273 if isinstance (node , JoinedStr ):
12741274 # for both the f-string itself, and format_spec
12751275 for value in node .values :
1276- self ._write_fstring_inner (value , escape_newlines = escape_newlines )
1276+ self ._write_fstring_inner (value , is_format_spec = is_format_spec )
12771277 elif isinstance (node , Constant ) and isinstance (node .value , str ):
12781278 value = node .value .replace ("{" , "{{" ).replace ("}" , "}}" )
1279- if escape_newlines :
1279+
1280+ if is_format_spec :
1281+ value = value .replace ("\\ " , "\\ \\ " )
1282+ value = value .replace ("'" , "\\ '" )
1283+ value = value .replace ('"' , '\\ "' )
12801284 value = value .replace ("\n " , "\\ n" )
12811285 self .write (value )
12821286 elif isinstance (node , FormattedValue ):
@@ -1300,10 +1304,7 @@ def unparse_inner(inner):
13001304 self .write (f"!{ chr (node .conversion )} " )
13011305 if node .format_spec :
13021306 self .write (":" )
1303- self ._write_fstring_inner (
1304- node .format_spec ,
1305- escape_newlines = True
1306- )
1307+ self ._write_fstring_inner (node .format_spec , is_format_spec = True )
13071308
13081309 def visit_Name (self , node ):
13091310 self .write (node .id )
0 commit comments