Skip to content

Commit c742f8f

Browse files
d1gl3Pierre-Sassoulas
authored andcommitted
Fixed misinterpreted modulo sign for consider-using-f-string (#6914)
* Fixed a false positive in consider-using-f-string if the left side of a % is not a string. * consider-using-f-string: if left side of a \% does not have the attr value it can't be a str
1 parent e9683c4 commit c742f8f

File tree

4 files changed

+31
-18
lines changed

4 files changed

+31
-18
lines changed

doc/whatsnew/2/2.14/full.rst

+4
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,10 @@ What's New in Pylint 2.14.2?
55
----------------------------
66
Release date: TBA
77

8+
* Fixed a false positive in ``consider-using-f-string`` if the left side of a ``%`` is not a string.
9+
10+
Closes #6689
11+
812
* Fixed a false positive in ``unnecessary-list-index-lookup`` and ``unnecessary-dict-index-lookup``
913
when the subscript is updated in the body of a nested loop.
1014

pylint/checkers/refactoring/recommendation_checker.py

+6
Original file line numberDiff line numberDiff line change
@@ -394,6 +394,12 @@ def _detect_replacable_format_call(self, node: nodes.Const) -> None:
394394
if "\\" in node.parent.right.as_string():
395395
return
396396

397+
# If % applied to another type than str, it's modulo and can't be replaced by formatting
398+
if not hasattr(node.parent.left, "value") or not isinstance(
399+
node.parent.left.value, str
400+
):
401+
return
402+
397403
inferred_right = utils.safe_infer(node.parent.right)
398404

399405
# If dicts or lists of length > 1 are used

tests/functional/c/consider/consider_using_f_string.py

+3
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,9 @@ def statement_good():
7272
"{}".format("\n".join(i for i in "string"))
7373
"%s" % "\n"
7474
"%s" % "\n".join(i for i in "string")
75+
1 % "str"
76+
(1, 2) % 'garbage'
77+
7578

7679
def statement_bad():
7780
"String %f" % PARAM_1 # [consider-using-f-string]

tests/functional/c/consider/consider_using_f_string.txt

+18-18
Original file line numberDiff line numberDiff line change
@@ -8,23 +8,23 @@ consider-using-f-string:51:10:51:21:print_bad:Formatting a regular string which
88
consider-using-f-string:52:10:52:21:print_bad:Formatting a regular string which could be a f-string:UNDEFINED
99
consider-using-f-string:53:10:53:24:print_bad:Formatting a regular string which could be a f-string:UNDEFINED
1010
consider-using-f-string:54:10:54:21:print_bad:Formatting a regular string which could be a f-string:UNDEFINED
11-
consider-using-f-string:77:4:77:15:statement_bad:Formatting a regular string which could be a f-string:UNDEFINED
12-
consider-using-f-string:78:4:78:15:statement_bad:Formatting a regular string which could be a f-string:UNDEFINED
13-
consider-using-f-string:79:4:79:22:statement_bad:Formatting a regular string which could be a f-string:UNDEFINED
14-
consider-using-f-string:80:4:80:11:statement_bad:Formatting a regular string which could be a f-string:UNDEFINED
15-
consider-using-f-string:81:4:81:20:statement_bad:Formatting a regular string which could be a f-string:UNDEFINED
16-
consider-using-f-string:82:4:82:15:statement_bad:Formatting a regular string which could be a f-string:UNDEFINED
17-
consider-using-f-string:83:4:83:15:statement_bad:Formatting a regular string which could be a f-string:UNDEFINED
18-
consider-using-f-string:84:4:84:15:statement_bad:Formatting a regular string which could be a f-string:UNDEFINED
19-
consider-using-f-string:85:4:85:18:statement_bad:Formatting a regular string which could be a f-string:UNDEFINED
11+
consider-using-f-string:80:4:80:15:statement_bad:Formatting a regular string which could be a f-string:UNDEFINED
12+
consider-using-f-string:81:4:81:15:statement_bad:Formatting a regular string which could be a f-string:UNDEFINED
13+
consider-using-f-string:82:4:82:22:statement_bad:Formatting a regular string which could be a f-string:UNDEFINED
14+
consider-using-f-string:83:4:83:11:statement_bad:Formatting a regular string which could be a f-string:UNDEFINED
15+
consider-using-f-string:84:4:84:20:statement_bad:Formatting a regular string which could be a f-string:UNDEFINED
16+
consider-using-f-string:85:4:85:15:statement_bad:Formatting a regular string which could be a f-string:UNDEFINED
2017
consider-using-f-string:86:4:86:15:statement_bad:Formatting a regular string which could be a f-string:UNDEFINED
21-
consider-using-f-string:109:8:109:19:assignment_bad:Formatting a regular string which could be a f-string:UNDEFINED
22-
consider-using-f-string:110:8:110:19:assignment_bad:Formatting a regular string which could be a f-string:UNDEFINED
23-
consider-using-f-string:111:8:111:26:assignment_bad:Formatting a regular string which could be a f-string:UNDEFINED
24-
consider-using-f-string:112:8:112:15:assignment_bad:Formatting a regular string which could be a f-string:UNDEFINED
25-
consider-using-f-string:113:8:113:24:assignment_bad:Formatting a regular string which could be a f-string:UNDEFINED
26-
consider-using-f-string:114:8:114:19:assignment_bad:Formatting a regular string which could be a f-string:UNDEFINED
27-
consider-using-f-string:115:8:115:19:assignment_bad:Formatting a regular string which could be a f-string:UNDEFINED
28-
consider-using-f-string:116:8:116:19:assignment_bad:Formatting a regular string which could be a f-string:UNDEFINED
29-
consider-using-f-string:117:8:117:22:assignment_bad:Formatting a regular string which could be a f-string:UNDEFINED
18+
consider-using-f-string:87:4:87:15:statement_bad:Formatting a regular string which could be a f-string:UNDEFINED
19+
consider-using-f-string:88:4:88:18:statement_bad:Formatting a regular string which could be a f-string:UNDEFINED
20+
consider-using-f-string:89:4:89:15:statement_bad:Formatting a regular string which could be a f-string:UNDEFINED
21+
consider-using-f-string:112:8:112:19:assignment_bad:Formatting a regular string which could be a f-string:UNDEFINED
22+
consider-using-f-string:113:8:113:19:assignment_bad:Formatting a regular string which could be a f-string:UNDEFINED
23+
consider-using-f-string:114:8:114:26:assignment_bad:Formatting a regular string which could be a f-string:UNDEFINED
24+
consider-using-f-string:115:8:115:15:assignment_bad:Formatting a regular string which could be a f-string:UNDEFINED
25+
consider-using-f-string:116:8:116:24:assignment_bad:Formatting a regular string which could be a f-string:UNDEFINED
26+
consider-using-f-string:117:8:117:19:assignment_bad:Formatting a regular string which could be a f-string:UNDEFINED
3027
consider-using-f-string:118:8:118:19:assignment_bad:Formatting a regular string which could be a f-string:UNDEFINED
28+
consider-using-f-string:119:8:119:19:assignment_bad:Formatting a regular string which could be a f-string:UNDEFINED
29+
consider-using-f-string:120:8:120:22:assignment_bad:Formatting a regular string which could be a f-string:UNDEFINED
30+
consider-using-f-string:121:8:121:19:assignment_bad:Formatting a regular string which could be a f-string:UNDEFINED

0 commit comments

Comments
 (0)