diff --git a/pylint/checkers/design_analysis.py b/pylint/checkers/design_analysis.py index f8c1d5c6c9..cb64e0a9ba 100644 --- a/pylint/checkers/design_analysis.py +++ b/pylint/checkers/design_analysis.py @@ -87,6 +87,7 @@ DATACLASS_IMPORT = "dataclasses" TYPING_NAMEDTUPLE = "typing.NamedTuple" TYPING_TYPEDDICT = "typing.TypedDict" +TYPING_EXTENSIONS_TYPEDDICT = "typing_extensions.TypedDict" # Set of stdlib classes to ignore when calculating number of ancestors STDLIB_CLASSES_IGNORE_ANCESTOR = frozenset( @@ -168,6 +169,7 @@ "typing.Sized", TYPING_NAMEDTUPLE, TYPING_TYPEDDICT, + TYPING_EXTENSIONS_TYPEDDICT, ) ) @@ -179,7 +181,11 @@ def _is_exempt_from_public_methods(node: astroid.ClassDef) -> bool: for ancestor in node.ancestors(): if is_enum(ancestor): return True - if ancestor.qname() in (TYPING_NAMEDTUPLE, TYPING_TYPEDDICT): + if ancestor.qname() in ( + TYPING_NAMEDTUPLE, + TYPING_TYPEDDICT, + TYPING_EXTENSIONS_TYPEDDICT, + ): return True # Or if it's a dataclass