Skip to content

Commit 743a04d

Browse files
[performance] Check that 'trailing-comma-tuple' is enabled only once (#9620)
1 parent b4a9535 commit 743a04d

File tree

3 files changed

+13
-3
lines changed

3 files changed

+13
-3
lines changed
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
Known issue: It's impossible to reactivate ``trailing-comma-tuple`` using message control
2+
once it's been disabled for a file due to over-optimization.
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
An internal check for ``trailing-comma-tuple`` being globally enabled or not is now
2+
done once per file instead of once for each token.
3+
4+
Refs #9608.

pylint/checkers/refactoring/refactoring_checker.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -648,6 +648,10 @@ def _check_simplifiable_if(self, node: nodes.If) -> None:
648648
self.add_message("simplifiable-if-statement", node=node, args=(reduced_to,))
649649

650650
def process_tokens(self, tokens: list[tokenize.TokenInfo]) -> None:
651+
# Optimization flag because '_is_trailing_comma' is costly
652+
trailing_comma_tuple_enabled_for_file = self.linter.is_message_enabled(
653+
"trailing-comma-tuple"
654+
)
651655
# Process tokens and look for 'if' or 'elif'
652656
for index, token in enumerate(tokens):
653657
token_string = token[1]
@@ -659,9 +663,9 @@ def process_tokens(self, tokens: list[tokenize.TokenInfo]) -> None:
659663
# token[2] is the actual position and also is
660664
# reported by IronPython.
661665
self._elifs.extend([token[2], tokens[index + 1][2]])
662-
elif self.linter.is_message_enabled(
663-
"trailing-comma-tuple"
664-
) and _is_trailing_comma(tokens, index):
666+
elif trailing_comma_tuple_enabled_for_file and _is_trailing_comma(
667+
tokens, index
668+
):
665669
self.add_message("trailing-comma-tuple", line=token.start[0])
666670

667671
@utils.only_required_for_messages("consider-using-with")

0 commit comments

Comments
 (0)