summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarc Mueller <30130371+cdce8p@users.noreply.github.com>2022-05-05 21:30:12 +0200
committerGitHub <noreply@github.com>2022-05-05 21:30:12 +0200
commit5d796836175cc1ac344fef898e5d8b8b5c29ac82 (patch)
treeedb189b888d159cf488ea99db2a79d762f2d0e81
parent1be6cf9cc26a37d9de11578146442759b49b5bf7 (diff)
downloadpylint-git-5d796836175cc1ac344fef898e5d8b8b5c29ac82.tar.gz
Fix invalid-enum-extension with IntFlag (#6511)
-rw-r--r--pylint/checkers/classes/class_checker.py20
-rw-r--r--tests/functional/i/invalid/invalid_enum_extension.py7
2 files changed, 16 insertions, 11 deletions
diff --git a/pylint/checkers/classes/class_checker.py b/pylint/checkers/classes/class_checker.py
index 42db70df2..c130686f4 100644
--- a/pylint/checkers/classes/class_checker.py
+++ b/pylint/checkers/classes/class_checker.py
@@ -818,17 +818,17 @@ a metaclass class method.",
):
self.add_message("inherit-non-class", args=base.as_string(), node=node)
- if (
- isinstance(ancestor, nodes.ClassDef)
- and ancestor.is_subtype_of("enum.Enum")
- and any(isinstance(stmt, nodes.Assign) for stmt in ancestor.body)
+ if isinstance(ancestor, nodes.ClassDef) and ancestor.is_subtype_of(
+ "enum.Enum"
):
- self.add_message(
- "invalid-enum-extension",
- args=ancestor.name,
- node=node,
- confidence=INFERENCE,
- )
+ members = ancestor.getattr("__members__")
+ if members and isinstance(members[0], nodes.Dict) and members[0].items:
+ self.add_message(
+ "invalid-enum-extension",
+ args=ancestor.name,
+ node=node,
+ confidence=INFERENCE,
+ )
if ancestor.name == object.__name__:
self.add_message(
diff --git a/tests/functional/i/invalid/invalid_enum_extension.py b/tests/functional/i/invalid/invalid_enum_extension.py
index af29fcdf8..5af11af38 100644
--- a/tests/functional/i/invalid/invalid_enum_extension.py
+++ b/tests/functional/i/invalid/invalid_enum_extension.py
@@ -1,6 +1,6 @@
"""Test check for classes extending an Enum class."""
# pylint: disable=missing-class-docstring,invalid-name
-from enum import Enum
+from enum import Enum, IntFlag
# We don't flag the Enum class itself
class A(Enum):
@@ -19,3 +19,8 @@ class C(Enum):
class D(C):
x = 3
+
+
+class CustomFlags(IntFlag):
+ SUPPORT_OPEN = 1
+ SUPPORT_CLOSE = 2