Method: pylint.checkers.classes.class_checker.ClassChecker._check_slots_elt
Calls: 72, Exceptions: 0, Paths: 6Back
Path 1: 63 calls (0.88)
Const (59) Attribute (4)
ClassDef (63)
1def _check_slots_elt(
2 self, elt: SuccessfulInferenceResult, node: nodes.ClassDef
3 ) -> None:
4 for inferred in elt.infer():
5 if inferred is astroid.Uninferable:
6 continue
7 if not isinstance(inferred, nodes.Const) or not isinstance(
8 inferred.value, str
9 ):
10 self.add_message(
11 "invalid-slots-object",
12 args=elt.as_string(),
13 node=elt,
14 confidence=INFERENCE,
15 )
16 continue
17 if not inferred.value:
18 self.add_message(
19 "invalid-slots-object",
20 args=elt.as_string(),
21 node=elt,
22 confidence=INFERENCE,
23 )
24
25 # Check if we have a conflict with a class variable.
26 class_variable = node.locals.get(inferred.value)
27 if class_variable:
28 # Skip annotated assignments which don't conflict at all with slots.
29 if len(class_variable) == 1:
30 parent = class_variable[0].parent
31 if isinstance(parent, nodes.AnnAssign) and parent.value is None:
32 return
33 self.add_message(
34 "class-variable-slots-conflict", args=(inferred.value,), node=elt
35 )
Path 2: 3 calls (0.04)
Const (3)
ClassDef (3)
1def _check_slots_elt(
2 self, elt: SuccessfulInferenceResult, node: nodes.ClassDef
3 ) -> None:
4 for inferred in elt.infer():
5 if inferred is astroid.Uninferable:
6 continue
7 if not isinstance(inferred, nodes.Const) or not isinstance(
8 inferred.value, str
9 ):
10 self.add_message(
11 "invalid-slots-object",
12 args=elt.as_string(),
13 node=elt,
14 confidence=INFERENCE,
15 )
16 continue
17 if not inferred.value:
18 self.add_message(
19 "invalid-slots-object",
20 args=elt.as_string(),
21 node=elt,
22 confidence=INFERENCE,
23 )
24
25 # Check if we have a conflict with a class variable.
26 class_variable = node.locals.get(inferred.value)
27 if class_variable:
28 # Skip annotated assignments which don't conflict at all with slots.
29 if len(class_variable) == 1:
30 parent = class_variable[0].parent
31 if isinstance(parent, nodes.AnnAssign) and parent.value is None:
32 return
33 self.add_message(
34 "class-variable-slots-conflict", args=(inferred.value,), node=elt
35 )
Path 3: 2 calls (0.03)
Name (2)
ClassDef (2)
1def _check_slots_elt(
2 self, elt: SuccessfulInferenceResult, node: nodes.ClassDef
3 ) -> None:
4 for inferred in elt.infer():
5 if inferred is astroid.Uninferable:
6 continue
7 if not isinstance(inferred, nodes.Const) or not isinstance(
8 inferred.value, str
9 ):
10 self.add_message(
11 "invalid-slots-object",
12 args=elt.as_string(),
13 node=elt,
14 confidence=INFERENCE,
15 )
16 continue
17 if not inferred.value:
18 self.add_message(
19 "invalid-slots-object",
20 args=elt.as_string(),
21 node=elt,
22 confidence=INFERENCE,
23 )
24
25 # Check if we have a conflict with a class variable.
26 class_variable = node.locals.get(inferred.value)
27 if class_variable:
28 # Skip annotated assignments which don't conflict at all with slots.
29 if len(class_variable) == 1:
30 parent = class_variable[0].parent
31 if isinstance(parent, nodes.AnnAssign) and parent.value is None:
32 return
33 self.add_message(
34 "class-variable-slots-conflict", args=(inferred.value,), node=elt
35 )
Path 4: 2 calls (0.03)
Const (1) BinOp (1)
ClassDef (2)
1def _check_slots_elt(
2 self, elt: SuccessfulInferenceResult, node: nodes.ClassDef
3 ) -> None:
4 for inferred in elt.infer():
5 if inferred is astroid.Uninferable:
6 continue
7 if not isinstance(inferred, nodes.Const) or not isinstance(
8 inferred.value, str
9 ):
10 self.add_message(
11 "invalid-slots-object",
12 args=elt.as_string(),
13 node=elt,
14 confidence=INFERENCE,
15 )
16 continue
17 if not inferred.value:
18 self.add_message(
19 "invalid-slots-object",
20 args=elt.as_string(),
21 node=elt,
22 confidence=INFERENCE,
23 )
24
25 # Check if we have a conflict with a class variable.
26 class_variable = node.locals.get(inferred.value)
27 if class_variable:
28 # Skip annotated assignments which don't conflict at all with slots.
29 if len(class_variable) == 1:
30 parent = class_variable[0].parent
31 if isinstance(parent, nodes.AnnAssign) and parent.value is None:
32 return
33 self.add_message(
34 "class-variable-slots-conflict", args=(inferred.value,), node=elt
35 )
Path 5: 1 calls (0.01)
Const (1)
ClassDef (1)
None (1)
1def _check_slots_elt(
2 self, elt: SuccessfulInferenceResult, node: nodes.ClassDef
3 ) -> None:
4 for inferred in elt.infer():
5 if inferred is astroid.Uninferable:
6 continue
7 if not isinstance(inferred, nodes.Const) or not isinstance(
8 inferred.value, str
9 ):
10 self.add_message(
11 "invalid-slots-object",
12 args=elt.as_string(),
13 node=elt,
14 confidence=INFERENCE,
15 )
16 continue
17 if not inferred.value:
18 self.add_message(
19 "invalid-slots-object",
20 args=elt.as_string(),
21 node=elt,
22 confidence=INFERENCE,
23 )
24
25 # Check if we have a conflict with a class variable.
26 class_variable = node.locals.get(inferred.value)
27 if class_variable:
28 # Skip annotated assignments which don't conflict at all with slots.
29 if len(class_variable) == 1:
30 parent = class_variable[0].parent
31 if isinstance(parent, nodes.AnnAssign) and parent.value is None:
32 return
33 self.add_message(
34 "class-variable-slots-conflict", args=(inferred.value,), node=elt
35 )
Path 6: 1 calls (0.01)
Const (1)
ClassDef (1)
1def _check_slots_elt(
2 self, elt: SuccessfulInferenceResult, node: nodes.ClassDef
3 ) -> None:
4 for inferred in elt.infer():
5 if inferred is astroid.Uninferable:
6 continue
7 if not isinstance(inferred, nodes.Const) or not isinstance(
8 inferred.value, str
9 ):
10 self.add_message(
11 "invalid-slots-object",
12 args=elt.as_string(),
13 node=elt,
14 confidence=INFERENCE,
15 )
16 continue
17 if not inferred.value:
18 self.add_message(
19 "invalid-slots-object",
20 args=elt.as_string(),
21 node=elt,
22 confidence=INFERENCE,
23 )
24
25 # Check if we have a conflict with a class variable.
26 class_variable = node.locals.get(inferred.value)
27 if class_variable:
28 # Skip annotated assignments which don't conflict at all with slots.
29 if len(class_variable) == 1:
30 parent = class_variable[0].parent
31 if isinstance(parent, nodes.AnnAssign) and parent.value is None:
32 return
33 self.add_message(
34 "class-variable-slots-conflict", args=(inferred.value,), node=elt
35 )