Path 1: 976 calls (0.64)

ClassDef (976)

1def _check_proper_bases(self, node: nodes.ClassDef) -> None:
2        """Detect that a class inherits something which is not
3        a class or a type.
4        """
5        for base in node.bases:
6            ancestor = safe_infer(base)
7            if not ancestor:
8                continue
9            if isinstance(ancestor, astroid.Instance) and ancestor.is_subtype_of(
10                "builtins.type"
11            ):
12                continue
13
14            if not isinstance(ancestor, nodes.ClassDef) or _is_invalid_base_class(
15                ancestor
16            ):
17                self.add_message("inherit-non-class", args=base.as_string(), node=node)
18
19            if isinstance(ancestor, nodes.ClassDef) and ancestor.is_subtype_of(
20                "enum.Enum"
21            ):
22                members = ancestor.getattr("__members__")
23                if members and isinstance(members[0], nodes.Dict) and members[0].items:
24                    self.add_message(
25                        "invalid-enum-extension",
26                        args=ancestor.name,
27                        node=node,
28                        confidence=INFERENCE,
29                    )
30
31            if ancestor.name == object.__name__:
32                self.add_message(
33                    "useless-object-inheritance", args=node.name, node=node
34                )
            

Path 2: 457 calls (0.3)

ClassDef (457)

1def _check_proper_bases(self, node: nodes.ClassDef) -> None:
2        """Detect that a class inherits something which is not
3        a class or a type.
4        """
5        for base in node.bases:
6            ancestor = safe_infer(base)
7            if not ancestor:
8                continue
9            if isinstance(ancestor, astroid.Instance) and ancestor.is_subtype_of(
10                "builtins.type"
11            ):
12                continue
13
14            if not isinstance(ancestor, nodes.ClassDef) or _is_invalid_base_class(
15                ancestor
16            ):
17                self.add_message("inherit-non-class", args=base.as_string(), node=node)
18
19            if isinstance(ancestor, nodes.ClassDef) and ancestor.is_subtype_of(
20                "enum.Enum"
21            ):
22                members = ancestor.getattr("__members__")
23                if members and isinstance(members[0], nodes.Dict) and members[0].items:
24                    self.add_message(
25                        "invalid-enum-extension",
26                        args=ancestor.name,
27                        node=node,
28                        confidence=INFERENCE,
29                    )
30
31            if ancestor.name == object.__name__:
32                self.add_message(
33                    "useless-object-inheritance", args=node.name, node=node
34                )
            

Path 3: 52 calls (0.03)

ClassDef (52)

1def _check_proper_bases(self, node: nodes.ClassDef) -> None:
2        """Detect that a class inherits something which is not
3        a class or a type.
4        """
5        for base in node.bases:
6            ancestor = safe_infer(base)
7            if not ancestor:
8                continue
9            if isinstance(ancestor, astroid.Instance) and ancestor.is_subtype_of(
10                "builtins.type"
11            ):
12                continue
13
14            if not isinstance(ancestor, nodes.ClassDef) or _is_invalid_base_class(
15                ancestor
16            ):
17                self.add_message("inherit-non-class", args=base.as_string(), node=node)
18
19            if isinstance(ancestor, nodes.ClassDef) and ancestor.is_subtype_of(
20                "enum.Enum"
21            ):
22                members = ancestor.getattr("__members__")
23                if members and isinstance(members[0], nodes.Dict) and members[0].items:
24                    self.add_message(
25                        "invalid-enum-extension",
26                        args=ancestor.name,
27                        node=node,
28                        confidence=INFERENCE,
29                    )
30
31            if ancestor.name == object.__name__:
32                self.add_message(
33                    "useless-object-inheritance", args=node.name, node=node
34                )
            

Path 4: 12 calls (0.01)

ClassDef (12)

1def _check_proper_bases(self, node: nodes.ClassDef) -> None:
2        """Detect that a class inherits something which is not
3        a class or a type.
4        """
5        for base in node.bases:
6            ancestor = safe_infer(base)
7            if not ancestor:
8                continue
9            if isinstance(ancestor, astroid.Instance) and ancestor.is_subtype_of(
10                "builtins.type"
11            ):
12                continue
13
14            if not isinstance(ancestor, nodes.ClassDef) or _is_invalid_base_class(
15                ancestor
16            ):
17                self.add_message("inherit-non-class", args=base.as_string(), node=node)
18
19            if isinstance(ancestor, nodes.ClassDef) and ancestor.is_subtype_of(
20                "enum.Enum"
21            ):
22                members = ancestor.getattr("__members__")
23                if members and isinstance(members[0], nodes.Dict) and members[0].items:
24                    self.add_message(
25                        "invalid-enum-extension",
26                        args=ancestor.name,
27                        node=node,
28                        confidence=INFERENCE,
29                    )
30
31            if ancestor.name == object.__name__:
32                self.add_message(
33                    "useless-object-inheritance", args=node.name, node=node
34                )
            

Path 5: 8 calls (0.01)

ClassDef (8)

1def _check_proper_bases(self, node: nodes.ClassDef) -> None:
2        """Detect that a class inherits something which is not
3        a class or a type.
4        """
5        for base in node.bases:
6            ancestor = safe_infer(base)
7            if not ancestor:
8                continue
9            if isinstance(ancestor, astroid.Instance) and ancestor.is_subtype_of(
10                "builtins.type"
11            ):
12                continue
13
14            if not isinstance(ancestor, nodes.ClassDef) or _is_invalid_base_class(
15                ancestor
16            ):
17                self.add_message("inherit-non-class", args=base.as_string(), node=node)
18
19            if isinstance(ancestor, nodes.ClassDef) and ancestor.is_subtype_of(
20                "enum.Enum"
21            ):
22                members = ancestor.getattr("__members__")
23                if members and isinstance(members[0], nodes.Dict) and members[0].items:
24                    self.add_message(
25                        "invalid-enum-extension",
26                        args=ancestor.name,
27                        node=node,
28                        confidence=INFERENCE,
29                    )
30
31            if ancestor.name == object.__name__:
32                self.add_message(
33                    "useless-object-inheritance", args=node.name, node=node
34                )
            

Path 6: 4 calls (0.0)

ClassDef (4)

1def _check_proper_bases(self, node: nodes.ClassDef) -> None:
2        """Detect that a class inherits something which is not
3        a class or a type.
4        """
5        for base in node.bases:
6            ancestor = safe_infer(base)
7            if not ancestor:
8                continue
9            if isinstance(ancestor, astroid.Instance) and ancestor.is_subtype_of(
10                "builtins.type"
11            ):
12                continue
13
14            if not isinstance(ancestor, nodes.ClassDef) or _is_invalid_base_class(
15                ancestor
16            ):
17                self.add_message("inherit-non-class", args=base.as_string(), node=node)
18
19            if isinstance(ancestor, nodes.ClassDef) and ancestor.is_subtype_of(
20                "enum.Enum"
21            ):
22                members = ancestor.getattr("__members__")
23                if members and isinstance(members[0], nodes.Dict) and members[0].items:
24                    self.add_message(
25                        "invalid-enum-extension",
26                        args=ancestor.name,
27                        node=node,
28                        confidence=INFERENCE,
29                    )
30
31            if ancestor.name == object.__name__:
32                self.add_message(
33                    "useless-object-inheritance", args=node.name, node=node
34                )
            

Path 7: 4 calls (0.0)

ClassDef (4)

1def _check_proper_bases(self, node: nodes.ClassDef) -> None:
2        """Detect that a class inherits something which is not
3        a class or a type.
4        """
5        for base in node.bases:
6            ancestor = safe_infer(base)
7            if not ancestor:
8                continue
9            if isinstance(ancestor, astroid.Instance) and ancestor.is_subtype_of(
10                "builtins.type"
11            ):
12                continue
13
14            if not isinstance(ancestor, nodes.ClassDef) or _is_invalid_base_class(
15                ancestor
16            ):
17                self.add_message("inherit-non-class", args=base.as_string(), node=node)
18
19            if isinstance(ancestor, nodes.ClassDef) and ancestor.is_subtype_of(
20                "enum.Enum"
21            ):
22                members = ancestor.getattr("__members__")
23                if members and isinstance(members[0], nodes.Dict) and members[0].items:
24                    self.add_message(
25                        "invalid-enum-extension",
26                        args=ancestor.name,
27                        node=node,
28                        confidence=INFERENCE,
29                    )
30
31            if ancestor.name == object.__name__:
32                self.add_message(
33                    "useless-object-inheritance", args=node.name, node=node
34                )
            

Path 8: 2 calls (0.0)

ClassDef (2)

1def _check_proper_bases(self, node: nodes.ClassDef) -> None:
2        """Detect that a class inherits something which is not
3        a class or a type.
4        """
5        for base in node.bases:
6            ancestor = safe_infer(base)
7            if not ancestor:
8                continue
9            if isinstance(ancestor, astroid.Instance) and ancestor.is_subtype_of(
10                "builtins.type"
11            ):
12                continue
13
14            if not isinstance(ancestor, nodes.ClassDef) or _is_invalid_base_class(
15                ancestor
16            ):
17                self.add_message("inherit-non-class", args=base.as_string(), node=node)
18
19            if isinstance(ancestor, nodes.ClassDef) and ancestor.is_subtype_of(
20                "enum.Enum"
21            ):
22                members = ancestor.getattr("__members__")
23                if members and isinstance(members[0], nodes.Dict) and members[0].items:
24                    self.add_message(
25                        "invalid-enum-extension",
26                        args=ancestor.name,
27                        node=node,
28                        confidence=INFERENCE,
29                    )
30
31            if ancestor.name == object.__name__:
32                self.add_message(
33                    "useless-object-inheritance", args=node.name, node=node
34                )
            

Path 9: 2 calls (0.0)

ClassDef (2)

1def _check_proper_bases(self, node: nodes.ClassDef) -> None:
2        """Detect that a class inherits something which is not
3        a class or a type.
4        """
5        for base in node.bases:
6            ancestor = safe_infer(base)
7            if not ancestor:
8                continue
9            if isinstance(ancestor, astroid.Instance) and ancestor.is_subtype_of(
10                "builtins.type"
11            ):
12                continue
13
14            if not isinstance(ancestor, nodes.ClassDef) or _is_invalid_base_class(
15                ancestor
16            ):
17                self.add_message("inherit-non-class", args=base.as_string(), node=node)
18
19            if isinstance(ancestor, nodes.ClassDef) and ancestor.is_subtype_of(
20                "enum.Enum"
21            ):
22                members = ancestor.getattr("__members__")
23                if members and isinstance(members[0], nodes.Dict) and members[0].items:
24                    self.add_message(
25                        "invalid-enum-extension",
26                        args=ancestor.name,
27                        node=node,
28                        confidence=INFERENCE,
29                    )
30
31            if ancestor.name == object.__name__:
32                self.add_message(
33                    "useless-object-inheritance", args=node.name, node=node
34                )
            

Path 10: 1 calls (0.0)

ClassDef (1)

1def _check_proper_bases(self, node: nodes.ClassDef) -> None:
2        """Detect that a class inherits something which is not
3        a class or a type.
4        """
5        for base in node.bases:
6            ancestor = safe_infer(base)
7            if not ancestor:
8                continue
9            if isinstance(ancestor, astroid.Instance) and ancestor.is_subtype_of(
10                "builtins.type"
11            ):
12                continue
13
14            if not isinstance(ancestor, nodes.ClassDef) or _is_invalid_base_class(
15                ancestor
16            ):
17                self.add_message("inherit-non-class", args=base.as_string(), node=node)
18
19            if isinstance(ancestor, nodes.ClassDef) and ancestor.is_subtype_of(
20                "enum.Enum"
21            ):
22                members = ancestor.getattr("__members__")
23                if members and isinstance(members[0], nodes.Dict) and members[0].items:
24                    self.add_message(
25                        "invalid-enum-extension",
26                        args=ancestor.name,
27                        node=node,
28                        confidence=INFERENCE,
29                    )
30
31            if ancestor.name == object.__name__:
32                self.add_message(
33                    "useless-object-inheritance", args=node.name, node=node
34                )
            

Path 11: 1 calls (0.0)

ClassDef (1)

1def _check_proper_bases(self, node: nodes.ClassDef) -> None:
2        """Detect that a class inherits something which is not
3        a class or a type.
4        """
5        for base in node.bases:
6            ancestor = safe_infer(base)
7            if not ancestor:
8                continue
9            if isinstance(ancestor, astroid.Instance) and ancestor.is_subtype_of(
10                "builtins.type"
11            ):
12                continue
13
14            if not isinstance(ancestor, nodes.ClassDef) or _is_invalid_base_class(
15                ancestor
16            ):
17                self.add_message("inherit-non-class", args=base.as_string(), node=node)
18
19            if isinstance(ancestor, nodes.ClassDef) and ancestor.is_subtype_of(
20                "enum.Enum"
21            ):
22                members = ancestor.getattr("__members__")
23                if members and isinstance(members[0], nodes.Dict) and members[0].items:
24                    self.add_message(
25                        "invalid-enum-extension",
26                        args=ancestor.name,
27                        node=node,
28                        confidence=INFERENCE,
29                    )
30
31            if ancestor.name == object.__name__:
32                self.add_message(
33                    "useless-object-inheritance", args=node.name, node=node
34                )