diff options
author | Marc Mueller <30130371+cdce8p@users.noreply.github.com> | 2021-03-05 15:24:54 +0100 |
---|---|---|
committer | Pierre Sassoulas <pierre.sassoulas@gmail.com> | 2021-03-06 13:59:56 +0100 |
commit | a7d37d22041bdf7a28631f42ea86a4a06ba35e24 (patch) | |
tree | 0bfc8c68d1c57eb969213ff0060deef2ee8c4055 | |
parent | c85d202a235a0b353c0f2bec3f02760f3643e52c (diff) | |
download | pylint-git-a7d37d22041bdf7a28631f42ea86a4a06ba35e24.tar.gz |
Exempt TypedDict from too-few-public-methods check
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | pylint/checkers/design_analysis.py | 5 | ||||
-rw-r--r-- | tests/functional/t/typedDict.py | 2 |
3 files changed, 8 insertions, 3 deletions
@@ -29,6 +29,10 @@ Release date: TBA Closes #4161 +* Exempt ``typing.TypedDict`` from ``too-few-public-methods`` check. + + Closes #4180 + What's New in Pylint 2.7.2? =========================== diff --git a/pylint/checkers/design_analysis.py b/pylint/checkers/design_analysis.py index d2a9d3d01..9fc864aca 100644 --- a/pylint/checkers/design_analysis.py +++ b/pylint/checkers/design_analysis.py @@ -95,16 +95,17 @@ SPECIAL_OBJ = re.compile("^_{2}[a-z]+_{2}$") DATACLASSES_DECORATORS = frozenset({"dataclass", "attrs"}) DATACLASS_IMPORT = "dataclasses" TYPING_NAMEDTUPLE = "typing.NamedTuple" +TYPING_TYPEDDICT = "typing.TypedDict" def _is_exempt_from_public_methods(node: astroid.ClassDef) -> bool: """Check if a class is exempt from too-few-public-methods""" - # If it's a typing.Namedtuple or an Enum + # If it's a typing.Namedtuple, typing.TypedDict or an Enum for ancestor in node.ancestors(): if ancestor.name == "Enum" and ancestor.root().name == "enum": return True - if ancestor.qname() == TYPING_NAMEDTUPLE: + if ancestor.qname() in (TYPING_NAMEDTUPLE, TYPING_TYPEDDICT): return True # Or if it's a dataclass diff --git a/tests/functional/t/typedDict.py b/tests/functional/t/typedDict.py index 9fdcee2ee..912a4eae6 100644 --- a/tests/functional/t/typedDict.py +++ b/tests/functional/t/typedDict.py @@ -1,5 +1,5 @@ """Test typing.TypedDict""" -# pylint: disable=invalid-name,missing-class-docstring,too-few-public-methods +# pylint: disable=invalid-name,missing-class-docstring import typing from typing import TypedDict |