diff --git a/doc/whatsnew/fragments/8720.bugfix b/doc/whatsnew/fragments/8720.bugfix new file mode 100644 index 0000000000..2e024eed15 --- /dev/null +++ b/doc/whatsnew/fragments/8720.bugfix @@ -0,0 +1,3 @@ +Avoid ``consider-using-f-string`` on modulos with brackets in template. + +Closes #8720. diff --git a/pylint/checkers/refactoring/recommendation_checker.py b/pylint/checkers/refactoring/recommendation_checker.py index 38d7592143..399584baa8 100644 --- a/pylint/checkers/refactoring/recommendation_checker.py +++ b/pylint/checkers/refactoring/recommendation_checker.py @@ -418,6 +418,10 @@ def _detect_replacable_format_call(self, node: nodes.Const) -> None: ): return + # Brackets can be inconvenient in f-string expressions + if "{" in node.parent.left.value or "}" in node.parent.left.value: + return + inferred_right = utils.safe_infer(node.parent.right) # If dicts or lists of length > 1 are used diff --git a/tests/functional/c/consider/consider_using_f_string.py b/tests/functional/c/consider/consider_using_f_string.py index e961c44f70..adeed270d1 100644 --- a/tests/functional/c/consider/consider_using_f_string.py +++ b/tests/functional/c/consider/consider_using_f_string.py @@ -39,6 +39,7 @@ def print_good(): print("{}".format("\n".join(i for i in "string"))) print("%s" % "\n") print("%s" % "\n".join(i for i in "string")) + print("{%s}%s" % (PARAM_1, PARAM_2)) def print_bad(): diff --git a/tests/functional/c/consider/consider_using_f_string.txt b/tests/functional/c/consider/consider_using_f_string.txt index 1d68e947be..acb6f0cb29 100644 --- a/tests/functional/c/consider/consider_using_f_string.txt +++ b/tests/functional/c/consider/consider_using_f_string.txt @@ -1,30 +1,30 @@ -consider-using-f-string:45:10:45:21:print_bad:Formatting a regular string which could be a f-string:UNDEFINED consider-using-f-string:46:10:46:21:print_bad:Formatting a regular string which could be a f-string:UNDEFINED -consider-using-f-string:47:10:47:28:print_bad:Formatting a regular string which could be a f-string:UNDEFINED -consider-using-f-string:48:10:48:17:print_bad:Formatting a regular string which could be a f-string:UNDEFINED -consider-using-f-string:49:10:49:26:print_bad:Formatting a regular string which could be a f-string:UNDEFINED -consider-using-f-string:50:10:50:21:print_bad:Formatting a regular string which could be a f-string:UNDEFINED +consider-using-f-string:47:10:47:21:print_bad:Formatting a regular string which could be a f-string:UNDEFINED +consider-using-f-string:48:10:48:28:print_bad:Formatting a regular string which could be a f-string:UNDEFINED +consider-using-f-string:49:10:49:17:print_bad:Formatting a regular string which could be a f-string:UNDEFINED +consider-using-f-string:50:10:50:26:print_bad:Formatting a regular string which could be a f-string:UNDEFINED consider-using-f-string:51:10:51:21:print_bad:Formatting a regular string which could be a f-string:UNDEFINED consider-using-f-string:52:10:52:21:print_bad:Formatting a regular string which could be a f-string:UNDEFINED -consider-using-f-string:53:10:53:24:print_bad:Formatting a regular string which could be a f-string:UNDEFINED -consider-using-f-string:54:10:54:21:print_bad:Formatting a regular string which could be a f-string:UNDEFINED -consider-using-f-string:80:4:80:15:statement_bad:Formatting a regular string which could be a f-string:UNDEFINED +consider-using-f-string:53:10:53:21:print_bad:Formatting a regular string which could be a f-string:UNDEFINED +consider-using-f-string:54:10:54:24:print_bad:Formatting a regular string which could be a f-string:UNDEFINED +consider-using-f-string:55:10:55:21:print_bad:Formatting a regular string which could be a f-string:UNDEFINED consider-using-f-string:81:4:81:15:statement_bad:Formatting a regular string which could be a f-string:UNDEFINED -consider-using-f-string:82:4:82:22:statement_bad:Formatting a regular string which could be a f-string:UNDEFINED -consider-using-f-string:83:4:83:11:statement_bad:Formatting a regular string which could be a f-string:UNDEFINED -consider-using-f-string:84:4:84:20:statement_bad:Formatting a regular string which could be a f-string:UNDEFINED -consider-using-f-string:85:4:85:15:statement_bad:Formatting a regular string which could be a f-string:UNDEFINED +consider-using-f-string:82:4:82:15:statement_bad:Formatting a regular string which could be a f-string:UNDEFINED +consider-using-f-string:83:4:83:22:statement_bad:Formatting a regular string which could be a f-string:UNDEFINED +consider-using-f-string:84:4:84:11:statement_bad:Formatting a regular string which could be a f-string:UNDEFINED +consider-using-f-string:85:4:85:20:statement_bad:Formatting a regular string which could be a f-string:UNDEFINED consider-using-f-string:86:4:86:15:statement_bad:Formatting a regular string which could be a f-string:UNDEFINED consider-using-f-string:87:4:87:15:statement_bad:Formatting a regular string which could be a f-string:UNDEFINED -consider-using-f-string:88:4:88:18:statement_bad:Formatting a regular string which could be a f-string:UNDEFINED -consider-using-f-string:89:4:89:15:statement_bad:Formatting a regular string which could be a f-string:UNDEFINED -consider-using-f-string:112:8:112:19:assignment_bad:Formatting a regular string which could be a f-string:UNDEFINED +consider-using-f-string:88:4:88:15:statement_bad:Formatting a regular string which could be a f-string:UNDEFINED +consider-using-f-string:89:4:89:18:statement_bad:Formatting a regular string which could be a f-string:UNDEFINED +consider-using-f-string:90:4:90:15:statement_bad:Formatting a regular string which could be a f-string:UNDEFINED consider-using-f-string:113:8:113:19:assignment_bad:Formatting a regular string which could be a f-string:UNDEFINED -consider-using-f-string:114:8:114:26:assignment_bad:Formatting a regular string which could be a f-string:UNDEFINED -consider-using-f-string:115:8:115:15:assignment_bad:Formatting a regular string which could be a f-string:UNDEFINED -consider-using-f-string:116:8:116:24:assignment_bad:Formatting a regular string which could be a f-string:UNDEFINED -consider-using-f-string:117:8:117:19:assignment_bad:Formatting a regular string which could be a f-string:UNDEFINED +consider-using-f-string:114:8:114:19:assignment_bad:Formatting a regular string which could be a f-string:UNDEFINED +consider-using-f-string:115:8:115:26:assignment_bad:Formatting a regular string which could be a f-string:UNDEFINED +consider-using-f-string:116:8:116:15:assignment_bad:Formatting a regular string which could be a f-string:UNDEFINED +consider-using-f-string:117:8:117:24:assignment_bad:Formatting a regular string which could be a f-string:UNDEFINED consider-using-f-string:118:8:118:19:assignment_bad:Formatting a regular string which could be a f-string:UNDEFINED consider-using-f-string:119:8:119:19:assignment_bad:Formatting a regular string which could be a f-string:UNDEFINED -consider-using-f-string:120:8:120:22:assignment_bad:Formatting a regular string which could be a f-string:UNDEFINED -consider-using-f-string:121:8:121:19:assignment_bad:Formatting a regular string which could be a f-string:UNDEFINED +consider-using-f-string:120:8:120:19:assignment_bad:Formatting a regular string which could be a f-string:UNDEFINED +consider-using-f-string:121:8:121:22:assignment_bad:Formatting a regular string which could be a f-string:UNDEFINED +consider-using-f-string:122:8:122:19:assignment_bad:Formatting a regular string which could be a f-string:UNDEFINED diff --git a/tests/functional/r/regression_02/regression_8109.py b/tests/functional/r/regression_02/regression_8109.py index 69af0356a0..d0c601d4d9 100644 --- a/tests/functional/r/regression_02/regression_8109.py +++ b/tests/functional/r/regression_02/regression_8109.py @@ -11,5 +11,5 @@ class Number: round: int = 2 def __str__(self): - number_format = "{:,.%sf}" % self.round # [consider-using-f-string] + number_format = "{:,.%sf}" % self.round return number_format.format(self.amount).rstrip("0").rstrip(".") diff --git a/tests/functional/r/regression_02/regression_8109.txt b/tests/functional/r/regression_02/regression_8109.txt deleted file mode 100644 index 161925b7dc..0000000000 --- a/tests/functional/r/regression_02/regression_8109.txt +++ /dev/null @@ -1 +0,0 @@ -consider-using-f-string:14:24:14:34:Number.__str__:Formatting a regular string which could be a f-string:UNDEFINED diff --git a/tests/test_epylint.py b/tests/test_epylint.py index 9b3f6800de..4b59cf8428 100644 --- a/tests/test_epylint.py +++ b/tests/test_epylint.py @@ -44,7 +44,6 @@ def test_epylint_good_command(example_path: PosixPath) -> None: def test_epylint_strange_command(example_path: PosixPath) -> None: with pytest.warns(DeprecationWarning): out, _ = lint.py_run( - # pylint: disable-next=consider-using-f-string "%s -E --disable=E1111 --msg-template={category} {module} {obj} {line} {column} {msg}" % example_path, return_std=True,