File tree Expand file tree Collapse file tree 2 files changed +40
-0
lines changed Expand file tree Collapse file tree 2 files changed +40
-0
lines changed Original file line number Diff line number Diff line change @@ -288,3 +288,35 @@ def visit_Name(self, node):
288
288
289
289
def visit_Str (self , node ):
290
290
self .result += "'" + node .s + "'"
291
+
292
+ def visit_joined_str (self , node , surround = True ):
293
+ for val in node .values :
294
+ if isinstance (val , ast .Str ):
295
+ self .result += val .s
296
+ else :
297
+ self .visit (val )
298
+
299
+ def visit_JoinedStr (self , node ):
300
+ """
301
+ JoinedStr(expr* values)
302
+ """
303
+ self .result += "f\' "
304
+ self .visit_joined_str (node )
305
+ self .result += "'"
306
+
307
+ def visit_FormattedValue (self , node ):
308
+ """
309
+ FormattedValue(expr value, int? conversion, expr? format_spec)
310
+ """
311
+ self .result += '{'
312
+ self .visit (node .value )
313
+ self .result += {
314
+ - 1 : '' , # no formatting
315
+ 97 : '!a' , # ascii formatting
316
+ 114 : '!r' , # repr formatting
317
+ 115 : '!s' , # string formatting
318
+ }[node .conversion ]
319
+ if node .format_spec :
320
+ self .result += ':'
321
+ self .visit_joined_str (node .format_spec )
322
+ self .result += '}'
Original file line number Diff line number Diff line change @@ -71,3 +71,11 @@ def test_list_one_element(self):
71
71
def test_list_two_elements (self ):
72
72
label = self .perform_labeling_on_expression ('[1, 2]' )
73
73
self .assertEqual (label .result , '[1, 2]' )
74
+
75
+ def test_joined_str (self ):
76
+ label = self .perform_labeling_on_expression ('f"a{f(b)}{c}d"' )
77
+ self .assertEqual (label .result , 'f\' a{f(b)}{c}d\' ' )
78
+
79
+ def test_joined_str_with_format_spec (self ):
80
+ label = self .perform_labeling_on_expression ('f"a{b!s:.{length}}"' )
81
+ self .assertEqual (label .result , 'f\' a{b!s:.{length}}\' ' )
You can’t perform that action at this time.
0 commit comments