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                )