Method: pylint.checkers.classes.class_checker.ClassChecker._check_proper_bases
Calls: 1519, Exceptions: 0, Paths: 11Back
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 )