diff options
| author | Claudiu Popa <pcmanticore@gmail.com> | 2018-09-18 10:06:06 +0200 |
|---|---|---|
| committer | Claudiu Popa <pcmanticore@gmail.com> | 2018-09-18 10:06:06 +0200 |
| commit | 5ec7113b23f36b09246f0863257b51198546f53b (patch) | |
| tree | a09e8ce7bd8eb34eed720ceca78eca58d8f1501a /pylint/checkers/design_analysis.py | |
| parent | 9a44c1e087c3e794c6cc5855c9aa4aadacd13c56 (diff) | |
| download | pylint-git-5ec7113b23f36b09246f0863257b51198546f53b.tar.gz | |
``too-few-public-methods`` is not reported for ``typing.NamedTuple``
Close #2459
Diffstat (limited to 'pylint/checkers/design_analysis.py')
| -rw-r--r-- | pylint/checkers/design_analysis.py | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/pylint/checkers/design_analysis.py b/pylint/checkers/design_analysis.py index a762e269d..0c1a21cb9 100644 --- a/pylint/checkers/design_analysis.py +++ b/pylint/checkers/design_analysis.py @@ -26,7 +26,6 @@ from astroid import decorators from pylint.interfaces import IAstroidChecker from pylint.checkers import BaseChecker -from pylint.checkers import utils as checker_utils from pylint.checkers.utils import check_messages from pylint import utils @@ -93,6 +92,15 @@ MSGS = { SPECIAL_OBJ = re.compile("^_{2}[a-z]+_{2}$") DATACLASS_DECORATOR = "dataclass" DATACLASS_IMPORT = "dataclasses" +TYPING_NAMEDTUPLE = "typing.NamedTuple" + + +def _is_typing_namedtuple(node: astroid.ClassDef) -> bool: + """Check if a class node is a typing.NamedTuple class""" + for base in node.ancestors(): + if base.qname() == TYPING_NAMEDTUPLE: + return True + return False def _is_enum_class(node: astroid.ClassDef) -> bool: @@ -351,7 +359,12 @@ class MisdesignChecker(BaseChecker): # Stop here for exception, metaclass, interface classes and other # classes for which we don't need to count the methods. - if node.type != "class" or _is_enum_class(node) or _is_dataclass(node): + if ( + node.type != "class" + or _is_enum_class(node) + or _is_dataclass(node) + or _is_typing_namedtuple(node) + ): return # Does the class contain more than n public methods ? |
