Method: pylint.checkers.classes.class_checker.ClassChecker._check_invalid_overridden_method
Calls: 260, Exceptions: 0, Paths: 8Back
Path 1: 241 calls (0.93)
FunctionDef (239) AsyncFunctionDef (2)
FunctionDef (239) AsyncFunctionDef (2)
1def _check_invalid_overridden_method(
2 self,
3 function_node: nodes.FunctionDef,
4 parent_function_node: nodes.FunctionDef,
5 ) -> None:
6 parent_is_property = decorated_with_property(
7 parent_function_node
8 ) or is_property_setter_or_deleter(parent_function_node)
9 current_is_property = decorated_with_property(
10 function_node
11 ) or is_property_setter_or_deleter(function_node)
12 if parent_is_property and not current_is_property:
13 self.add_message(
14 "invalid-overridden-method",
15 args=(function_node.name, "property", function_node.type),
16 node=function_node,
17 )
18 elif not parent_is_property and current_is_property:
19 self.add_message(
20 "invalid-overridden-method",
21 args=(function_node.name, "method", "property"),
22 node=function_node,
23 )
24
25 parent_is_async = isinstance(parent_function_node, nodes.AsyncFunctionDef)
26 current_is_async = isinstance(function_node, nodes.AsyncFunctionDef)
27
28 if parent_is_async and not current_is_async:
29 self.add_message(
30 "invalid-overridden-method",
31 args=(function_node.name, "async", "non-async"),
32 node=function_node,
33 )
34
35 elif not parent_is_async and current_is_async:
36 self.add_message(
37 "invalid-overridden-method",
38 args=(function_node.name, "non-async", "async"),
39 node=function_node,
40 )
41 if (
42 decorated_with(parent_function_node, ["typing.final"])
43 or uninferable_final_decorators(parent_function_node.decorators)
44 ) and self._py38_plus:
45 self.add_message(
46 "overridden-final-method",
47 args=(function_node.name, parent_function_node.parent.frame().name),
48 node=function_node,
49 )
Path 2: 5 calls (0.02)
FunctionDef (5)
FunctionDef (5)
1def _check_invalid_overridden_method(
2 self,
3 function_node: nodes.FunctionDef,
4 parent_function_node: nodes.FunctionDef,
5 ) -> None:
6 parent_is_property = decorated_with_property(
7 parent_function_node
8 ) or is_property_setter_or_deleter(parent_function_node)
9 current_is_property = decorated_with_property(
10 function_node
11 ) or is_property_setter_or_deleter(function_node)
12 if parent_is_property and not current_is_property:
13 self.add_message(
14 "invalid-overridden-method",
15 args=(function_node.name, "property", function_node.type),
16 node=function_node,
17 )
18 elif not parent_is_property and current_is_property:
19 self.add_message(
20 "invalid-overridden-method",
21 args=(function_node.name, "method", "property"),
22 node=function_node,
23 )
24
25 parent_is_async = isinstance(parent_function_node, nodes.AsyncFunctionDef)
26 current_is_async = isinstance(function_node, nodes.AsyncFunctionDef)
27
28 if parent_is_async and not current_is_async:
29 self.add_message(
30 "invalid-overridden-method",
31 args=(function_node.name, "async", "non-async"),
32 node=function_node,
33 )
34
35 elif not parent_is_async and current_is_async:
36 self.add_message(
37 "invalid-overridden-method",
38 args=(function_node.name, "non-async", "async"),
39 node=function_node,
40 )
41 if (
42 decorated_with(parent_function_node, ["typing.final"])
43 or uninferable_final_decorators(parent_function_node.decorators)
44 ) and self._py38_plus:
45 self.add_message(
46 "overridden-final-method",
47 args=(function_node.name, parent_function_node.parent.frame().name),
48 node=function_node,
49 )
Path 3: 4 calls (0.02)
FunctionDef (4)
FunctionDef (4)
1def _check_invalid_overridden_method(
2 self,
3 function_node: nodes.FunctionDef,
4 parent_function_node: nodes.FunctionDef,
5 ) -> None:
6 parent_is_property = decorated_with_property(
7 parent_function_node
8 ) or is_property_setter_or_deleter(parent_function_node)
9 current_is_property = decorated_with_property(
10 function_node
11 ) or is_property_setter_or_deleter(function_node)
12 if parent_is_property and not current_is_property:
13 self.add_message(
14 "invalid-overridden-method",
15 args=(function_node.name, "property", function_node.type),
16 node=function_node,
17 )
18 elif not parent_is_property and current_is_property:
19 self.add_message(
20 "invalid-overridden-method",
21 args=(function_node.name, "method", "property"),
22 node=function_node,
23 )
24
25 parent_is_async = isinstance(parent_function_node, nodes.AsyncFunctionDef)
26 current_is_async = isinstance(function_node, nodes.AsyncFunctionDef)
27
28 if parent_is_async and not current_is_async:
29 self.add_message(
30 "invalid-overridden-method",
31 args=(function_node.name, "async", "non-async"),
32 node=function_node,
33 )
34
35 elif not parent_is_async and current_is_async:
36 self.add_message(
37 "invalid-overridden-method",
38 args=(function_node.name, "non-async", "async"),
39 node=function_node,
40 )
41 if (
42 decorated_with(parent_function_node, ["typing.final"])
43 or uninferable_final_decorators(parent_function_node.decorators)
44 ) and self._py38_plus:
45 self.add_message(
46 "overridden-final-method",
47 args=(function_node.name, parent_function_node.parent.frame().name),
48 node=function_node,
49 )
Path 4: 4 calls (0.02)
FunctionDef (4)
FunctionDef (4)
1def _check_invalid_overridden_method(
2 self,
3 function_node: nodes.FunctionDef,
4 parent_function_node: nodes.FunctionDef,
5 ) -> None:
6 parent_is_property = decorated_with_property(
7 parent_function_node
8 ) or is_property_setter_or_deleter(parent_function_node)
9 current_is_property = decorated_with_property(
10 function_node
11 ) or is_property_setter_or_deleter(function_node)
12 if parent_is_property and not current_is_property:
13 self.add_message(
14 "invalid-overridden-method",
15 args=(function_node.name, "property", function_node.type),
16 node=function_node,
17 )
18 elif not parent_is_property and current_is_property:
19 self.add_message(
20 "invalid-overridden-method",
21 args=(function_node.name, "method", "property"),
22 node=function_node,
23 )
24
25 parent_is_async = isinstance(parent_function_node, nodes.AsyncFunctionDef)
26 current_is_async = isinstance(function_node, nodes.AsyncFunctionDef)
27
28 if parent_is_async and not current_is_async:
29 self.add_message(
30 "invalid-overridden-method",
31 args=(function_node.name, "async", "non-async"),
32 node=function_node,
33 )
34
35 elif not parent_is_async and current_is_async:
36 self.add_message(
37 "invalid-overridden-method",
38 args=(function_node.name, "non-async", "async"),
39 node=function_node,
40 )
41 if (
42 decorated_with(parent_function_node, ["typing.final"])
43 or uninferable_final_decorators(parent_function_node.decorators)
44 ) and self._py38_plus:
45 self.add_message(
46 "overridden-final-method",
47 args=(function_node.name, parent_function_node.parent.frame().name),
48 node=function_node,
49 )
Path 5: 2 calls (0.01)
FunctionDef (2)
FunctionDef (2)
1def _check_invalid_overridden_method(
2 self,
3 function_node: nodes.FunctionDef,
4 parent_function_node: nodes.FunctionDef,
5 ) -> None:
6 parent_is_property = decorated_with_property(
7 parent_function_node
8 ) or is_property_setter_or_deleter(parent_function_node)
9 current_is_property = decorated_with_property(
10 function_node
11 ) or is_property_setter_or_deleter(function_node)
12 if parent_is_property and not current_is_property:
13 self.add_message(
14 "invalid-overridden-method",
15 args=(function_node.name, "property", function_node.type),
16 node=function_node,
17 )
18 elif not parent_is_property and current_is_property:
19 self.add_message(
20 "invalid-overridden-method",
21 args=(function_node.name, "method", "property"),
22 node=function_node,
23 )
24
25 parent_is_async = isinstance(parent_function_node, nodes.AsyncFunctionDef)
26 current_is_async = isinstance(function_node, nodes.AsyncFunctionDef)
27
28 if parent_is_async and not current_is_async:
29 self.add_message(
30 "invalid-overridden-method",
31 args=(function_node.name, "async", "non-async"),
32 node=function_node,
33 )
34
35 elif not parent_is_async and current_is_async:
36 self.add_message(
37 "invalid-overridden-method",
38 args=(function_node.name, "non-async", "async"),
39 node=function_node,
40 )
41 if (
42 decorated_with(parent_function_node, ["typing.final"])
43 or uninferable_final_decorators(parent_function_node.decorators)
44 ) and self._py38_plus:
45 self.add_message(
46 "overridden-final-method",
47 args=(function_node.name, parent_function_node.parent.frame().name),
48 node=function_node,
49 )
Path 6: 2 calls (0.01)
FunctionDef (2)
FunctionDef (2)
1def _check_invalid_overridden_method(
2 self,
3 function_node: nodes.FunctionDef,
4 parent_function_node: nodes.FunctionDef,
5 ) -> None:
6 parent_is_property = decorated_with_property(
7 parent_function_node
8 ) or is_property_setter_or_deleter(parent_function_node)
9 current_is_property = decorated_with_property(
10 function_node
11 ) or is_property_setter_or_deleter(function_node)
12 if parent_is_property and not current_is_property:
13 self.add_message(
14 "invalid-overridden-method",
15 args=(function_node.name, "property", function_node.type),
16 node=function_node,
17 )
18 elif not parent_is_property and current_is_property:
19 self.add_message(
20 "invalid-overridden-method",
21 args=(function_node.name, "method", "property"),
22 node=function_node,
23 )
24
25 parent_is_async = isinstance(parent_function_node, nodes.AsyncFunctionDef)
26 current_is_async = isinstance(function_node, nodes.AsyncFunctionDef)
27
28 if parent_is_async and not current_is_async:
29 self.add_message(
30 "invalid-overridden-method",
31 args=(function_node.name, "async", "non-async"),
32 node=function_node,
33 )
34
35 elif not parent_is_async and current_is_async:
36 self.add_message(
37 "invalid-overridden-method",
38 args=(function_node.name, "non-async", "async"),
39 node=function_node,
40 )
41 if (
42 decorated_with(parent_function_node, ["typing.final"])
43 or uninferable_final_decorators(parent_function_node.decorators)
44 ) and self._py38_plus:
45 self.add_message(
46 "overridden-final-method",
47 args=(function_node.name, parent_function_node.parent.frame().name),
48 node=function_node,
49 )
Path 7: 1 calls (0.0)
FunctionDef (1)
AsyncFunctionDef (1)
1def _check_invalid_overridden_method(
2 self,
3 function_node: nodes.FunctionDef,
4 parent_function_node: nodes.FunctionDef,
5 ) -> None:
6 parent_is_property = decorated_with_property(
7 parent_function_node
8 ) or is_property_setter_or_deleter(parent_function_node)
9 current_is_property = decorated_with_property(
10 function_node
11 ) or is_property_setter_or_deleter(function_node)
12 if parent_is_property and not current_is_property:
13 self.add_message(
14 "invalid-overridden-method",
15 args=(function_node.name, "property", function_node.type),
16 node=function_node,
17 )
18 elif not parent_is_property and current_is_property:
19 self.add_message(
20 "invalid-overridden-method",
21 args=(function_node.name, "method", "property"),
22 node=function_node,
23 )
24
25 parent_is_async = isinstance(parent_function_node, nodes.AsyncFunctionDef)
26 current_is_async = isinstance(function_node, nodes.AsyncFunctionDef)
27
28 if parent_is_async and not current_is_async:
29 self.add_message(
30 "invalid-overridden-method",
31 args=(function_node.name, "async", "non-async"),
32 node=function_node,
33 )
34
35 elif not parent_is_async and current_is_async:
36 self.add_message(
37 "invalid-overridden-method",
38 args=(function_node.name, "non-async", "async"),
39 node=function_node,
40 )
41 if (
42 decorated_with(parent_function_node, ["typing.final"])
43 or uninferable_final_decorators(parent_function_node.decorators)
44 ) and self._py38_plus:
45 self.add_message(
46 "overridden-final-method",
47 args=(function_node.name, parent_function_node.parent.frame().name),
48 node=function_node,
49 )
Path 8: 1 calls (0.0)
AsyncFunctionDef (1)
FunctionDef (1)
1def _check_invalid_overridden_method(
2 self,
3 function_node: nodes.FunctionDef,
4 parent_function_node: nodes.FunctionDef,
5 ) -> None:
6 parent_is_property = decorated_with_property(
7 parent_function_node
8 ) or is_property_setter_or_deleter(parent_function_node)
9 current_is_property = decorated_with_property(
10 function_node
11 ) or is_property_setter_or_deleter(function_node)
12 if parent_is_property and not current_is_property:
13 self.add_message(
14 "invalid-overridden-method",
15 args=(function_node.name, "property", function_node.type),
16 node=function_node,
17 )
18 elif not parent_is_property and current_is_property:
19 self.add_message(
20 "invalid-overridden-method",
21 args=(function_node.name, "method", "property"),
22 node=function_node,
23 )
24
25 parent_is_async = isinstance(parent_function_node, nodes.AsyncFunctionDef)
26 current_is_async = isinstance(function_node, nodes.AsyncFunctionDef)
27
28 if parent_is_async and not current_is_async:
29 self.add_message(
30 "invalid-overridden-method",
31 args=(function_node.name, "async", "non-async"),
32 node=function_node,
33 )
34
35 elif not parent_is_async and current_is_async:
36 self.add_message(
37 "invalid-overridden-method",
38 args=(function_node.name, "non-async", "async"),
39 node=function_node,
40 )
41 if (
42 decorated_with(parent_function_node, ["typing.final"])
43 or uninferable_final_decorators(parent_function_node.decorators)
44 ) and self._py38_plus:
45 self.add_message(
46 "overridden-final-method",
47 args=(function_node.name, parent_function_node.parent.frame().name),
48 node=function_node,
49 )