summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJacob Walls <jacobtylerwalls@gmail.com>2023-04-23 14:15:34 -0400
committerGitHub <noreply@github.com>2023-04-23 14:15:34 -0400
commit34d3ad71c9cf9d29cc2ee91531b0b9b101a999d7 (patch)
treecb86487cea52967b10aeb1f7c287eaa0f548e2d4
parent6be842ec680a2cbd249812da0844e5322332d65e (diff)
downloadpylint-git-34d3ad71c9cf9d29cc2ee91531b0b9b101a999d7.tar.gz
Optimize `is_trailing_comma()` (#8606)
Skip is_trailing_comma() call unless `trailing-comma-tuple` enabled
-rw-r--r--doc/whatsnew/fragments/1954.performance3
-rw-r--r--pylint/checkers/refactoring/refactoring_checker.py9
2 files changed, 7 insertions, 5 deletions
diff --git a/doc/whatsnew/fragments/1954.performance b/doc/whatsnew/fragments/1954.performance
index 846b38e2c..aa065f0d1 100644
--- a/doc/whatsnew/fragments/1954.performance
+++ b/doc/whatsnew/fragments/1954.performance
@@ -1,3 +1,4 @@
-Cache `class_is_abstract()`.
+- Optimize `is_trailing_comma()`.
+- Cache `class_is_abstract()`.
Refs #1954
diff --git a/pylint/checkers/refactoring/refactoring_checker.py b/pylint/checkers/refactoring/refactoring_checker.py
index f8d0bc7bc..890b0e64d 100644
--- a/pylint/checkers/refactoring/refactoring_checker.py
+++ b/pylint/checkers/refactoring/refactoring_checker.py
@@ -98,7 +98,7 @@ def _is_trailing_comma(tokens: list[tokenize.TokenInfo], index: int) -> bool:
if token.exact_type != tokenize.COMMA:
return False
# Must have remaining tokens on the same line such as NEWLINE
- left_tokens = list(itertools.islice(tokens, index + 1, None))
+ left_tokens = itertools.islice(tokens, index + 1, None)
more_tokens_on_line = False
for remaining_token in left_tokens:
@@ -644,9 +644,10 @@ class RefactoringChecker(checkers.BaseTokenChecker):
# token[2] is the actual position and also is
# reported by IronPython.
self._elifs.extend([token[2], tokens[index + 1][2]])
- elif _is_trailing_comma(tokens, index):
- if self.linter.is_message_enabled("trailing-comma-tuple"):
- self.add_message("trailing-comma-tuple", line=token.start[0])
+ elif self.linter.is_message_enabled(
+ "trailing-comma-tuple"
+ ) and _is_trailing_comma(tokens, index):
+ self.add_message("trailing-comma-tuple", line=token.start[0])
@utils.only_required_for_messages("consider-using-with")
def leave_module(self, _: nodes.Module) -> None: