From 60a2db21d8ff6ca59e32f632ca501305c0403fe5 Mon Sep 17 00:00:00 2001 From: Pierre Sassoulas Date: Sat, 5 Nov 2022 19:37:01 +0100 Subject: [PATCH] [refactor] Use typed NamedTuple for Confidence + PragmaRepresenter (#7718) The init needs to analyse a string with the old way of doing things, which is not the best in term of performance. We also have the benefit of being able to add typing with the new way of doing it. --- pylint/interfaces.py | 10 +++++++--- pylint/utils/pragma_parser.py | 6 ++++-- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/pylint/interfaces.py b/pylint/interfaces.py index 65d5b5947..221084fab 100644 --- a/pylint/interfaces.py +++ b/pylint/interfaces.py @@ -7,9 +7,8 @@ from __future__ import annotations import warnings -from collections import namedtuple from tokenize import TokenInfo -from typing import TYPE_CHECKING +from typing import TYPE_CHECKING, NamedTuple from astroid import nodes @@ -33,7 +32,12 @@ __all__ = ( "CONFIDENCE_LEVEL_NAMES", ) -Confidence = namedtuple("Confidence", ["name", "description"]) + +class Confidence(NamedTuple): + name: str + description: str + + # Warning Certainties HIGH = Confidence("HIGH", "Warning that is not based on inference result.") CONTROL_FLOW = Confidence( diff --git a/pylint/utils/pragma_parser.py b/pylint/utils/pragma_parser.py index 8e34fa693..df3627380 100644 --- a/pylint/utils/pragma_parser.py +++ b/pylint/utils/pragma_parser.py @@ -5,8 +5,8 @@ from __future__ import annotations import re -from collections import namedtuple from collections.abc import Generator +from typing import NamedTuple # Allow stopping after the first semicolon/hash encountered, # so that an option can be continued with the reasons @@ -27,7 +27,9 @@ OPTION_RGX = r""" OPTION_PO = re.compile(OPTION_RGX, re.VERBOSE) -PragmaRepresenter = namedtuple("PragmaRepresenter", "action messages") +class PragmaRepresenter(NamedTuple): + action: str + messages: list[str] ATOMIC_KEYWORDS = frozenset(("disable-all", "skip-file"))