Path 1: 3898 calls (0.42)

AssignName (3898)

1@utils.only_required_for_messages(
2        "disallowed-name",
3        "invalid-name",
4        "typevar-name-incorrect-variance",
5        "typevar-double-variance",
6        "typevar-name-mismatch",
7    )
8    def visit_assignname(self, node: nodes.AssignName) -> None:
9        """Check module level assigned names."""
10        frame = node.frame(future=True)
11        assign_type = node.assign_type()
12
13        # Check names defined in comprehensions
14        if isinstance(assign_type, nodes.Comprehension):
15            self._check_name("inlinevar", node.name, node)
16
17        # Check names defined in module scope
18        elif isinstance(frame, nodes.Module):
19            # Check names defined in Assign nodes
20            if isinstance(assign_type, nodes.Assign):
21                inferred_assign_type = utils.safe_infer(assign_type.value)
22
23                # Check TypeVar's assigned alone or in tuple assignment
24                if isinstance(node.parent, nodes.Assign) and self._assigns_typevar(
25                    assign_type.value
26                ):
27                    self._check_name("typevar", assign_type.targets[0].name, node)
28                elif (
29                    isinstance(node.parent, nodes.Tuple)
30                    and isinstance(assign_type.value, nodes.Tuple)
31                    # protect against unbalanced tuple unpacking
32                    and node.parent.elts.index(node) < len(assign_type.value.elts)
33                    and self._assigns_typevar(
34                        assign_type.value.elts[node.parent.elts.index(node)]
35                    )
36                ):
37                    self._check_name(
38                        "typevar",
39                        assign_type.targets[0].elts[node.parent.elts.index(node)].name,
40                        node,
41                    )
42
43                # Check classes (TypeVar's are classes so they need to be excluded first)
44                elif isinstance(inferred_assign_type, nodes.ClassDef):
45                    self._check_name("class", node.name, node)
46
47                # Don't emit if the name redefines an import in an ImportError except handler.
48                elif not _redefines_import(node) and isinstance(
49                    inferred_assign_type, nodes.Const
50                ):
51                    self._check_name("const", node.name, node)
52                else:
53                    self._check_name(
54                        "variable", node.name, node, disallowed_check_only=True
55                    )
56
57            # Check names defined in AnnAssign nodes
58            elif isinstance(
59                assign_type, nodes.AnnAssign
60            ) and utils.is_assign_name_annotated_with(node, "Final"):
61                self._check_name("const", node.name, node)
62
63        # Check names defined in function scopes
64        elif isinstance(frame, nodes.FunctionDef):
65            # global introduced variable aren't in the function locals
66            if node.name in frame and node.name not in frame.argnames():
67                if not _redefines_import(node):
68                    self._check_name("variable", node.name, node)
69
70        # Check names defined in class scopes
71        elif isinstance(frame, nodes.ClassDef):
72            if not list(frame.local_attr_ancestors(node.name)):
73                for ancestor in frame.ancestors():
74                    if utils.is_enum(ancestor) or utils.is_assign_name_annotated_with(
75                        node, "Final"
76                    ):
77                        self._check_name("class_const", node.name, node)
78                        break
79                else:
80                    self._check_name("class_attribute", node.name, node)
            

Path 2: 1743 calls (0.19)

AssignName (1743)

1@utils.only_required_for_messages(
2        "disallowed-name",
3        "invalid-name",
4        "typevar-name-incorrect-variance",
5        "typevar-double-variance",
6        "typevar-name-mismatch",
7    )
8    def visit_assignname(self, node: nodes.AssignName) -> None:
9        """Check module level assigned names."""
10        frame = node.frame(future=True)
11        assign_type = node.assign_type()
12
13        # Check names defined in comprehensions
14        if isinstance(assign_type, nodes.Comprehension):
15            self._check_name("inlinevar", node.name, node)
16
17        # Check names defined in module scope
18        elif isinstance(frame, nodes.Module):
19            # Check names defined in Assign nodes
20            if isinstance(assign_type, nodes.Assign):
21                inferred_assign_type = utils.safe_infer(assign_type.value)
22
23                # Check TypeVar's assigned alone or in tuple assignment
24                if isinstance(node.parent, nodes.Assign) and self._assigns_typevar(
25                    assign_type.value
26                ):
27                    self._check_name("typevar", assign_type.targets[0].name, node)
28                elif (
29                    isinstance(node.parent, nodes.Tuple)
30                    and isinstance(assign_type.value, nodes.Tuple)
31                    # protect against unbalanced tuple unpacking
32                    and node.parent.elts.index(node) < len(assign_type.value.elts)
33                    and self._assigns_typevar(
34                        assign_type.value.elts[node.parent.elts.index(node)]
35                    )
36                ):
37                    self._check_name(
38                        "typevar",
39                        assign_type.targets[0].elts[node.parent.elts.index(node)].name,
40                        node,
41                    )
42
43                # Check classes (TypeVar's are classes so they need to be excluded first)
44                elif isinstance(inferred_assign_type, nodes.ClassDef):
45                    self._check_name("class", node.name, node)
46
47                # Don't emit if the name redefines an import in an ImportError except handler.
48                elif not _redefines_import(node) and isinstance(
49                    inferred_assign_type, nodes.Const
50                ):
51                    self._check_name("const", node.name, node)
52                else:
53                    self._check_name(
54                        "variable", node.name, node, disallowed_check_only=True
55                    )
56
57            # Check names defined in AnnAssign nodes
58            elif isinstance(
59                assign_type, nodes.AnnAssign
60            ) and utils.is_assign_name_annotated_with(node, "Final"):
61                self._check_name("const", node.name, node)
62
63        # Check names defined in function scopes
64        elif isinstance(frame, nodes.FunctionDef):
65            # global introduced variable aren't in the function locals
66            if node.name in frame and node.name not in frame.argnames():
67                if not _redefines_import(node):
68                    self._check_name("variable", node.name, node)
69
70        # Check names defined in class scopes
71        elif isinstance(frame, nodes.ClassDef):
72            if not list(frame.local_attr_ancestors(node.name)):
73                for ancestor in frame.ancestors():
74                    if utils.is_enum(ancestor) or utils.is_assign_name_annotated_with(
75                        node, "Final"
76                    ):
77                        self._check_name("class_const", node.name, node)
78                        break
79                else:
80                    self._check_name("class_attribute", node.name, node)
            

Path 3: 778 calls (0.08)

AssignName (778)

1@utils.only_required_for_messages(
2        "disallowed-name",
3        "invalid-name",
4        "typevar-name-incorrect-variance",
5        "typevar-double-variance",
6        "typevar-name-mismatch",
7    )
8    def visit_assignname(self, node: nodes.AssignName) -> None:
9        """Check module level assigned names."""
10        frame = node.frame(future=True)
11        assign_type = node.assign_type()
12
13        # Check names defined in comprehensions
14        if isinstance(assign_type, nodes.Comprehension):
15            self._check_name("inlinevar", node.name, node)
16
17        # Check names defined in module scope
18        elif isinstance(frame, nodes.Module):
19            # Check names defined in Assign nodes
20            if isinstance(assign_type, nodes.Assign):
21                inferred_assign_type = utils.safe_infer(assign_type.value)
22
23                # Check TypeVar's assigned alone or in tuple assignment
24                if isinstance(node.parent, nodes.Assign) and self._assigns_typevar(
25                    assign_type.value
26                ):
27                    self._check_name("typevar", assign_type.targets[0].name, node)
28                elif (
29                    isinstance(node.parent, nodes.Tuple)
30                    and isinstance(assign_type.value, nodes.Tuple)
31                    # protect against unbalanced tuple unpacking
32                    and node.parent.elts.index(node) < len(assign_type.value.elts)
33                    and self._assigns_typevar(
34                        assign_type.value.elts[node.parent.elts.index(node)]
35                    )
36                ):
37                    self._check_name(
38                        "typevar",
39                        assign_type.targets[0].elts[node.parent.elts.index(node)].name,
40                        node,
41                    )
42
43                # Check classes (TypeVar's are classes so they need to be excluded first)
44                elif isinstance(inferred_assign_type, nodes.ClassDef):
45                    self._check_name("class", node.name, node)
46
47                # Don't emit if the name redefines an import in an ImportError except handler.
48                elif not _redefines_import(node) and isinstance(
49                    inferred_assign_type, nodes.Const
50                ):
51                    self._check_name("const", node.name, node)
52                else:
53                    self._check_name(
54                        "variable", node.name, node, disallowed_check_only=True
55                    )
56
57            # Check names defined in AnnAssign nodes
58            elif isinstance(
59                assign_type, nodes.AnnAssign
60            ) and utils.is_assign_name_annotated_with(node, "Final"):
61                self._check_name("const", node.name, node)
62
63        # Check names defined in function scopes
64        elif isinstance(frame, nodes.FunctionDef):
65            # global introduced variable aren't in the function locals
66            if node.name in frame and node.name not in frame.argnames():
67                if not _redefines_import(node):
68                    self._check_name("variable", node.name, node)
69
70        # Check names defined in class scopes
71        elif isinstance(frame, nodes.ClassDef):
72            if not list(frame.local_attr_ancestors(node.name)):
73                for ancestor in frame.ancestors():
74                    if utils.is_enum(ancestor) or utils.is_assign_name_annotated_with(
75                        node, "Final"
76                    ):
77                        self._check_name("class_const", node.name, node)
78                        break
79                else:
80                    self._check_name("class_attribute", node.name, node)
            

Path 4: 558 calls (0.06)

AssignName (558)

1@utils.only_required_for_messages(
2        "disallowed-name",
3        "invalid-name",
4        "typevar-name-incorrect-variance",
5        "typevar-double-variance",
6        "typevar-name-mismatch",
7    )
8    def visit_assignname(self, node: nodes.AssignName) -> None:
9        """Check module level assigned names."""
10        frame = node.frame(future=True)
11        assign_type = node.assign_type()
12
13        # Check names defined in comprehensions
14        if isinstance(assign_type, nodes.Comprehension):
15            self._check_name("inlinevar", node.name, node)
16
17        # Check names defined in module scope
18        elif isinstance(frame, nodes.Module):
19            # Check names defined in Assign nodes
20            if isinstance(assign_type, nodes.Assign):
21                inferred_assign_type = utils.safe_infer(assign_type.value)
22
23                # Check TypeVar's assigned alone or in tuple assignment
24                if isinstance(node.parent, nodes.Assign) and self._assigns_typevar(
25                    assign_type.value
26                ):
27                    self._check_name("typevar", assign_type.targets[0].name, node)
28                elif (
29                    isinstance(node.parent, nodes.Tuple)
30                    and isinstance(assign_type.value, nodes.Tuple)
31                    # protect against unbalanced tuple unpacking
32                    and node.parent.elts.index(node) < len(assign_type.value.elts)
33                    and self._assigns_typevar(
34                        assign_type.value.elts[node.parent.elts.index(node)]
35                    )
36                ):
37                    self._check_name(
38                        "typevar",
39                        assign_type.targets[0].elts[node.parent.elts.index(node)].name,
40                        node,
41                    )
42
43                # Check classes (TypeVar's are classes so they need to be excluded first)
44                elif isinstance(inferred_assign_type, nodes.ClassDef):
45                    self._check_name("class", node.name, node)
46
47                # Don't emit if the name redefines an import in an ImportError except handler.
48                elif not _redefines_import(node) and isinstance(
49                    inferred_assign_type, nodes.Const
50                ):
51                    self._check_name("const", node.name, node)
52                else:
53                    self._check_name(
54                        "variable", node.name, node, disallowed_check_only=True
55                    )
56
57            # Check names defined in AnnAssign nodes
58            elif isinstance(
59                assign_type, nodes.AnnAssign
60            ) and utils.is_assign_name_annotated_with(node, "Final"):
61                self._check_name("const", node.name, node)
62
63        # Check names defined in function scopes
64        elif isinstance(frame, nodes.FunctionDef):
65            # global introduced variable aren't in the function locals
66            if node.name in frame and node.name not in frame.argnames():
67                if not _redefines_import(node):
68                    self._check_name("variable", node.name, node)
69
70        # Check names defined in class scopes
71        elif isinstance(frame, nodes.ClassDef):
72            if not list(frame.local_attr_ancestors(node.name)):
73                for ancestor in frame.ancestors():
74                    if utils.is_enum(ancestor) or utils.is_assign_name_annotated_with(
75                        node, "Final"
76                    ):
77                        self._check_name("class_const", node.name, node)
78                        break
79                else:
80                    self._check_name("class_attribute", node.name, node)
            

Path 5: 548 calls (0.06)

AssignName (548)

1@utils.only_required_for_messages(
2        "disallowed-name",
3        "invalid-name",
4        "typevar-name-incorrect-variance",
5        "typevar-double-variance",
6        "typevar-name-mismatch",
7    )
8    def visit_assignname(self, node: nodes.AssignName) -> None:
9        """Check module level assigned names."""
10        frame = node.frame(future=True)
11        assign_type = node.assign_type()
12
13        # Check names defined in comprehensions
14        if isinstance(assign_type, nodes.Comprehension):
15            self._check_name("inlinevar", node.name, node)
16
17        # Check names defined in module scope
18        elif isinstance(frame, nodes.Module):
19            # Check names defined in Assign nodes
20            if isinstance(assign_type, nodes.Assign):
21                inferred_assign_type = utils.safe_infer(assign_type.value)
22
23                # Check TypeVar's assigned alone or in tuple assignment
24                if isinstance(node.parent, nodes.Assign) and self._assigns_typevar(
25                    assign_type.value
26                ):
27                    self._check_name("typevar", assign_type.targets[0].name, node)
28                elif (
29                    isinstance(node.parent, nodes.Tuple)
30                    and isinstance(assign_type.value, nodes.Tuple)
31                    # protect against unbalanced tuple unpacking
32                    and node.parent.elts.index(node) < len(assign_type.value.elts)
33                    and self._assigns_typevar(
34                        assign_type.value.elts[node.parent.elts.index(node)]
35                    )
36                ):
37                    self._check_name(
38                        "typevar",
39                        assign_type.targets[0].elts[node.parent.elts.index(node)].name,
40                        node,
41                    )
42
43                # Check classes (TypeVar's are classes so they need to be excluded first)
44                elif isinstance(inferred_assign_type, nodes.ClassDef):
45                    self._check_name("class", node.name, node)
46
47                # Don't emit if the name redefines an import in an ImportError except handler.
48                elif not _redefines_import(node) and isinstance(
49                    inferred_assign_type, nodes.Const
50                ):
51                    self._check_name("const", node.name, node)
52                else:
53                    self._check_name(
54                        "variable", node.name, node, disallowed_check_only=True
55                    )
56
57            # Check names defined in AnnAssign nodes
58            elif isinstance(
59                assign_type, nodes.AnnAssign
60            ) and utils.is_assign_name_annotated_with(node, "Final"):
61                self._check_name("const", node.name, node)
62
63        # Check names defined in function scopes
64        elif isinstance(frame, nodes.FunctionDef):
65            # global introduced variable aren't in the function locals
66            if node.name in frame and node.name not in frame.argnames():
67                if not _redefines_import(node):
68                    self._check_name("variable", node.name, node)
69
70        # Check names defined in class scopes
71        elif isinstance(frame, nodes.ClassDef):
72            if not list(frame.local_attr_ancestors(node.name)):
73                for ancestor in frame.ancestors():
74                    if utils.is_enum(ancestor) or utils.is_assign_name_annotated_with(
75                        node, "Final"
76                    ):
77                        self._check_name("class_const", node.name, node)
78                        break
79                else:
80                    self._check_name("class_attribute", node.name, node)
            

Path 6: 422 calls (0.05)

AssignName (422)

1@utils.only_required_for_messages(
2        "disallowed-name",
3        "invalid-name",
4        "typevar-name-incorrect-variance",
5        "typevar-double-variance",
6        "typevar-name-mismatch",
7    )
8    def visit_assignname(self, node: nodes.AssignName) -> None:
9        """Check module level assigned names."""
10        frame = node.frame(future=True)
11        assign_type = node.assign_type()
12
13        # Check names defined in comprehensions
14        if isinstance(assign_type, nodes.Comprehension):
15            self._check_name("inlinevar", node.name, node)
16
17        # Check names defined in module scope
18        elif isinstance(frame, nodes.Module):
19            # Check names defined in Assign nodes
20            if isinstance(assign_type, nodes.Assign):
21                inferred_assign_type = utils.safe_infer(assign_type.value)
22
23                # Check TypeVar's assigned alone or in tuple assignment
24                if isinstance(node.parent, nodes.Assign) and self._assigns_typevar(
25                    assign_type.value
26                ):
27                    self._check_name("typevar", assign_type.targets[0].name, node)
28                elif (
29                    isinstance(node.parent, nodes.Tuple)
30                    and isinstance(assign_type.value, nodes.Tuple)
31                    # protect against unbalanced tuple unpacking
32                    and node.parent.elts.index(node) < len(assign_type.value.elts)
33                    and self._assigns_typevar(
34                        assign_type.value.elts[node.parent.elts.index(node)]
35                    )
36                ):
37                    self._check_name(
38                        "typevar",
39                        assign_type.targets[0].elts[node.parent.elts.index(node)].name,
40                        node,
41                    )
42
43                # Check classes (TypeVar's are classes so they need to be excluded first)
44                elif isinstance(inferred_assign_type, nodes.ClassDef):
45                    self._check_name("class", node.name, node)
46
47                # Don't emit if the name redefines an import in an ImportError except handler.
48                elif not _redefines_import(node) and isinstance(
49                    inferred_assign_type, nodes.Const
50                ):
51                    self._check_name("const", node.name, node)
52                else:
53                    self._check_name(
54                        "variable", node.name, node, disallowed_check_only=True
55                    )
56
57            # Check names defined in AnnAssign nodes
58            elif isinstance(
59                assign_type, nodes.AnnAssign
60            ) and utils.is_assign_name_annotated_with(node, "Final"):
61                self._check_name("const", node.name, node)
62
63        # Check names defined in function scopes
64        elif isinstance(frame, nodes.FunctionDef):
65            # global introduced variable aren't in the function locals
66            if node.name in frame and node.name not in frame.argnames():
67                if not _redefines_import(node):
68                    self._check_name("variable", node.name, node)
69
70        # Check names defined in class scopes
71        elif isinstance(frame, nodes.ClassDef):
72            if not list(frame.local_attr_ancestors(node.name)):
73                for ancestor in frame.ancestors():
74                    if utils.is_enum(ancestor) or utils.is_assign_name_annotated_with(
75                        node, "Final"
76                    ):
77                        self._check_name("class_const", node.name, node)
78                        break
79                else:
80                    self._check_name("class_attribute", node.name, node)
            

Path 7: 319 calls (0.03)

AssignName (319)

1@utils.only_required_for_messages(
2        "disallowed-name",
3        "invalid-name",
4        "typevar-name-incorrect-variance",
5        "typevar-double-variance",
6        "typevar-name-mismatch",
7    )
8    def visit_assignname(self, node: nodes.AssignName) -> None:
9        """Check module level assigned names."""
10        frame = node.frame(future=True)
11        assign_type = node.assign_type()
12
13        # Check names defined in comprehensions
14        if isinstance(assign_type, nodes.Comprehension):
15            self._check_name("inlinevar", node.name, node)
16
17        # Check names defined in module scope
18        elif isinstance(frame, nodes.Module):
19            # Check names defined in Assign nodes
20            if isinstance(assign_type, nodes.Assign):
21                inferred_assign_type = utils.safe_infer(assign_type.value)
22
23                # Check TypeVar's assigned alone or in tuple assignment
24                if isinstance(node.parent, nodes.Assign) and self._assigns_typevar(
25                    assign_type.value
26                ):
27                    self._check_name("typevar", assign_type.targets[0].name, node)
28                elif (
29                    isinstance(node.parent, nodes.Tuple)
30                    and isinstance(assign_type.value, nodes.Tuple)
31                    # protect against unbalanced tuple unpacking
32                    and node.parent.elts.index(node) < len(assign_type.value.elts)
33                    and self._assigns_typevar(
34                        assign_type.value.elts[node.parent.elts.index(node)]
35                    )
36                ):
37                    self._check_name(
38                        "typevar",
39                        assign_type.targets[0].elts[node.parent.elts.index(node)].name,
40                        node,
41                    )
42
43                # Check classes (TypeVar's are classes so they need to be excluded first)
44                elif isinstance(inferred_assign_type, nodes.ClassDef):
45                    self._check_name("class", node.name, node)
46
47                # Don't emit if the name redefines an import in an ImportError except handler.
48                elif not _redefines_import(node) and isinstance(
49                    inferred_assign_type, nodes.Const
50                ):
51                    self._check_name("const", node.name, node)
52                else:
53                    self._check_name(
54                        "variable", node.name, node, disallowed_check_only=True
55                    )
56
57            # Check names defined in AnnAssign nodes
58            elif isinstance(
59                assign_type, nodes.AnnAssign
60            ) and utils.is_assign_name_annotated_with(node, "Final"):
61                self._check_name("const", node.name, node)
62
63        # Check names defined in function scopes
64        elif isinstance(frame, nodes.FunctionDef):
65            # global introduced variable aren't in the function locals
66            if node.name in frame and node.name not in frame.argnames():
67                if not _redefines_import(node):
68                    self._check_name("variable", node.name, node)
69
70        # Check names defined in class scopes
71        elif isinstance(frame, nodes.ClassDef):
72            if not list(frame.local_attr_ancestors(node.name)):
73                for ancestor in frame.ancestors():
74                    if utils.is_enum(ancestor) or utils.is_assign_name_annotated_with(
75                        node, "Final"
76                    ):
77                        self._check_name("class_const", node.name, node)
78                        break
79                else:
80                    self._check_name("class_attribute", node.name, node)
            

Path 8: 217 calls (0.02)

AssignName (217)

1@utils.only_required_for_messages(
2        "disallowed-name",
3        "invalid-name",
4        "typevar-name-incorrect-variance",
5        "typevar-double-variance",
6        "typevar-name-mismatch",
7    )
8    def visit_assignname(self, node: nodes.AssignName) -> None:
9        """Check module level assigned names."""
10        frame = node.frame(future=True)
11        assign_type = node.assign_type()
12
13        # Check names defined in comprehensions
14        if isinstance(assign_type, nodes.Comprehension):
15            self._check_name("inlinevar", node.name, node)
16
17        # Check names defined in module scope
18        elif isinstance(frame, nodes.Module):
19            # Check names defined in Assign nodes
20            if isinstance(assign_type, nodes.Assign):
21                inferred_assign_type = utils.safe_infer(assign_type.value)
22
23                # Check TypeVar's assigned alone or in tuple assignment
24                if isinstance(node.parent, nodes.Assign) and self._assigns_typevar(
25                    assign_type.value
26                ):
27                    self._check_name("typevar", assign_type.targets[0].name, node)
28                elif (
29                    isinstance(node.parent, nodes.Tuple)
30                    and isinstance(assign_type.value, nodes.Tuple)
31                    # protect against unbalanced tuple unpacking
32                    and node.parent.elts.index(node) < len(assign_type.value.elts)
33                    and self._assigns_typevar(
34                        assign_type.value.elts[node.parent.elts.index(node)]
35                    )
36                ):
37                    self._check_name(
38                        "typevar",
39                        assign_type.targets[0].elts[node.parent.elts.index(node)].name,
40                        node,
41                    )
42
43                # Check classes (TypeVar's are classes so they need to be excluded first)
44                elif isinstance(inferred_assign_type, nodes.ClassDef):
45                    self._check_name("class", node.name, node)
46
47                # Don't emit if the name redefines an import in an ImportError except handler.
48                elif not _redefines_import(node) and isinstance(
49                    inferred_assign_type, nodes.Const
50                ):
51                    self._check_name("const", node.name, node)
52                else:
53                    self._check_name(
54                        "variable", node.name, node, disallowed_check_only=True
55                    )
56
57            # Check names defined in AnnAssign nodes
58            elif isinstance(
59                assign_type, nodes.AnnAssign
60            ) and utils.is_assign_name_annotated_with(node, "Final"):
61                self._check_name("const", node.name, node)
62
63        # Check names defined in function scopes
64        elif isinstance(frame, nodes.FunctionDef):
65            # global introduced variable aren't in the function locals
66            if node.name in frame and node.name not in frame.argnames():
67                if not _redefines_import(node):
68                    self._check_name("variable", node.name, node)
69
70        # Check names defined in class scopes
71        elif isinstance(frame, nodes.ClassDef):
72            if not list(frame.local_attr_ancestors(node.name)):
73                for ancestor in frame.ancestors():
74                    if utils.is_enum(ancestor) or utils.is_assign_name_annotated_with(
75                        node, "Final"
76                    ):
77                        self._check_name("class_const", node.name, node)
78                        break
79                else:
80                    self._check_name("class_attribute", node.name, node)
            

Path 9: 204 calls (0.02)

AssignName (204)

1@utils.only_required_for_messages(
2        "disallowed-name",
3        "invalid-name",
4        "typevar-name-incorrect-variance",
5        "typevar-double-variance",
6        "typevar-name-mismatch",
7    )
8    def visit_assignname(self, node: nodes.AssignName) -> None:
9        """Check module level assigned names."""
10        frame = node.frame(future=True)
11        assign_type = node.assign_type()
12
13        # Check names defined in comprehensions
14        if isinstance(assign_type, nodes.Comprehension):
15            self._check_name("inlinevar", node.name, node)
16
17        # Check names defined in module scope
18        elif isinstance(frame, nodes.Module):
19            # Check names defined in Assign nodes
20            if isinstance(assign_type, nodes.Assign):
21                inferred_assign_type = utils.safe_infer(assign_type.value)
22
23                # Check TypeVar's assigned alone or in tuple assignment
24                if isinstance(node.parent, nodes.Assign) and self._assigns_typevar(
25                    assign_type.value
26                ):
27                    self._check_name("typevar", assign_type.targets[0].name, node)
28                elif (
29                    isinstance(node.parent, nodes.Tuple)
30                    and isinstance(assign_type.value, nodes.Tuple)
31                    # protect against unbalanced tuple unpacking
32                    and node.parent.elts.index(node) < len(assign_type.value.elts)
33                    and self._assigns_typevar(
34                        assign_type.value.elts[node.parent.elts.index(node)]
35                    )
36                ):
37                    self._check_name(
38                        "typevar",
39                        assign_type.targets[0].elts[node.parent.elts.index(node)].name,
40                        node,
41                    )
42
43                # Check classes (TypeVar's are classes so they need to be excluded first)
44                elif isinstance(inferred_assign_type, nodes.ClassDef):
45                    self._check_name("class", node.name, node)
46
47                # Don't emit if the name redefines an import in an ImportError except handler.
48                elif not _redefines_import(node) and isinstance(
49                    inferred_assign_type, nodes.Const
50                ):
51                    self._check_name("const", node.name, node)
52                else:
53                    self._check_name(
54                        "variable", node.name, node, disallowed_check_only=True
55                    )
56
57            # Check names defined in AnnAssign nodes
58            elif isinstance(
59                assign_type, nodes.AnnAssign
60            ) and utils.is_assign_name_annotated_with(node, "Final"):
61                self._check_name("const", node.name, node)
62
63        # Check names defined in function scopes
64        elif isinstance(frame, nodes.FunctionDef):
65            # global introduced variable aren't in the function locals
66            if node.name in frame and node.name not in frame.argnames():
67                if not _redefines_import(node):
68                    self._check_name("variable", node.name, node)
69
70        # Check names defined in class scopes
71        elif isinstance(frame, nodes.ClassDef):
72            if not list(frame.local_attr_ancestors(node.name)):
73                for ancestor in frame.ancestors():
74                    if utils.is_enum(ancestor) or utils.is_assign_name_annotated_with(
75                        node, "Final"
76                    ):
77                        self._check_name("class_const", node.name, node)
78                        break
79                else:
80                    self._check_name("class_attribute", node.name, node)
            

Path 10: 109 calls (0.01)

AssignName (109)

1@utils.only_required_for_messages(
2        "disallowed-name",
3        "invalid-name",
4        "typevar-name-incorrect-variance",
5        "typevar-double-variance",
6        "typevar-name-mismatch",
7    )
8    def visit_assignname(self, node: nodes.AssignName) -> None:
9        """Check module level assigned names."""
10        frame = node.frame(future=True)
11        assign_type = node.assign_type()
12
13        # Check names defined in comprehensions
14        if isinstance(assign_type, nodes.Comprehension):
15            self._check_name("inlinevar", node.name, node)
16
17        # Check names defined in module scope
18        elif isinstance(frame, nodes.Module):
19            # Check names defined in Assign nodes
20            if isinstance(assign_type, nodes.Assign):
21                inferred_assign_type = utils.safe_infer(assign_type.value)
22
23                # Check TypeVar's assigned alone or in tuple assignment
24                if isinstance(node.parent, nodes.Assign) and self._assigns_typevar(
25                    assign_type.value
26                ):
27                    self._check_name("typevar", assign_type.targets[0].name, node)
28                elif (
29                    isinstance(node.parent, nodes.Tuple)
30                    and isinstance(assign_type.value, nodes.Tuple)
31                    # protect against unbalanced tuple unpacking
32                    and node.parent.elts.index(node) < len(assign_type.value.elts)
33                    and self._assigns_typevar(
34                        assign_type.value.elts[node.parent.elts.index(node)]
35                    )
36                ):
37                    self._check_name(
38                        "typevar",
39                        assign_type.targets[0].elts[node.parent.elts.index(node)].name,
40                        node,
41                    )
42
43                # Check classes (TypeVar's are classes so they need to be excluded first)
44                elif isinstance(inferred_assign_type, nodes.ClassDef):
45                    self._check_name("class", node.name, node)
46
47                # Don't emit if the name redefines an import in an ImportError except handler.
48                elif not _redefines_import(node) and isinstance(
49                    inferred_assign_type, nodes.Const
50                ):
51                    self._check_name("const", node.name, node)
52                else:
53                    self._check_name(
54                        "variable", node.name, node, disallowed_check_only=True
55                    )
56
57            # Check names defined in AnnAssign nodes
58            elif isinstance(
59                assign_type, nodes.AnnAssign
60            ) and utils.is_assign_name_annotated_with(node, "Final"):
61                self._check_name("const", node.name, node)
62
63        # Check names defined in function scopes
64        elif isinstance(frame, nodes.FunctionDef):
65            # global introduced variable aren't in the function locals
66            if node.name in frame and node.name not in frame.argnames():
67                if not _redefines_import(node):
68                    self._check_name("variable", node.name, node)
69
70        # Check names defined in class scopes
71        elif isinstance(frame, nodes.ClassDef):
72            if not list(frame.local_attr_ancestors(node.name)):
73                for ancestor in frame.ancestors():
74                    if utils.is_enum(ancestor) or utils.is_assign_name_annotated_with(
75                        node, "Final"
76                    ):
77                        self._check_name("class_const", node.name, node)
78                        break
79                else:
80                    self._check_name("class_attribute", node.name, node)
            

Path 11: 92 calls (0.01)

AssignName (92)

1@utils.only_required_for_messages(
2        "disallowed-name",
3        "invalid-name",
4        "typevar-name-incorrect-variance",
5        "typevar-double-variance",
6        "typevar-name-mismatch",
7    )
8    def visit_assignname(self, node: nodes.AssignName) -> None:
9        """Check module level assigned names."""
10        frame = node.frame(future=True)
11        assign_type = node.assign_type()
12
13        # Check names defined in comprehensions
14        if isinstance(assign_type, nodes.Comprehension):
15            self._check_name("inlinevar", node.name, node)
16
17        # Check names defined in module scope
18        elif isinstance(frame, nodes.Module):
19            # Check names defined in Assign nodes
20            if isinstance(assign_type, nodes.Assign):
21                inferred_assign_type = utils.safe_infer(assign_type.value)
22
23                # Check TypeVar's assigned alone or in tuple assignment
24                if isinstance(node.parent, nodes.Assign) and self._assigns_typevar(
25                    assign_type.value
26                ):
27                    self._check_name("typevar", assign_type.targets[0].name, node)
28                elif (
29                    isinstance(node.parent, nodes.Tuple)
30                    and isinstance(assign_type.value, nodes.Tuple)
31                    # protect against unbalanced tuple unpacking
32                    and node.parent.elts.index(node) < len(assign_type.value.elts)
33                    and self._assigns_typevar(
34                        assign_type.value.elts[node.parent.elts.index(node)]
35                    )
36                ):
37                    self._check_name(
38                        "typevar",
39                        assign_type.targets[0].elts[node.parent.elts.index(node)].name,
40                        node,
41                    )
42
43                # Check classes (TypeVar's are classes so they need to be excluded first)
44                elif isinstance(inferred_assign_type, nodes.ClassDef):
45                    self._check_name("class", node.name, node)
46
47                # Don't emit if the name redefines an import in an ImportError except handler.
48                elif not _redefines_import(node) and isinstance(
49                    inferred_assign_type, nodes.Const
50                ):
51                    self._check_name("const", node.name, node)
52                else:
53                    self._check_name(
54                        "variable", node.name, node, disallowed_check_only=True
55                    )
56
57            # Check names defined in AnnAssign nodes
58            elif isinstance(
59                assign_type, nodes.AnnAssign
60            ) and utils.is_assign_name_annotated_with(node, "Final"):
61                self._check_name("const", node.name, node)
62
63        # Check names defined in function scopes
64        elif isinstance(frame, nodes.FunctionDef):
65            # global introduced variable aren't in the function locals
66            if node.name in frame and node.name not in frame.argnames():
67                if not _redefines_import(node):
68                    self._check_name("variable", node.name, node)
69
70        # Check names defined in class scopes
71        elif isinstance(frame, nodes.ClassDef):
72            if not list(frame.local_attr_ancestors(node.name)):
73                for ancestor in frame.ancestors():
74                    if utils.is_enum(ancestor) or utils.is_assign_name_annotated_with(
75                        node, "Final"
76                    ):
77                        self._check_name("class_const", node.name, node)
78                        break
79                else:
80                    self._check_name("class_attribute", node.name, node)
            

Path 12: 85 calls (0.01)

AssignName (85)

1@utils.only_required_for_messages(
2        "disallowed-name",
3        "invalid-name",
4        "typevar-name-incorrect-variance",
5        "typevar-double-variance",
6        "typevar-name-mismatch",
7    )
8    def visit_assignname(self, node: nodes.AssignName) -> None:
9        """Check module level assigned names."""
10        frame = node.frame(future=True)
11        assign_type = node.assign_type()
12
13        # Check names defined in comprehensions
14        if isinstance(assign_type, nodes.Comprehension):
15            self._check_name("inlinevar", node.name, node)
16
17        # Check names defined in module scope
18        elif isinstance(frame, nodes.Module):
19            # Check names defined in Assign nodes
20            if isinstance(assign_type, nodes.Assign):
21                inferred_assign_type = utils.safe_infer(assign_type.value)
22
23                # Check TypeVar's assigned alone or in tuple assignment
24                if isinstance(node.parent, nodes.Assign) and self._assigns_typevar(
25                    assign_type.value
26                ):
27                    self._check_name("typevar", assign_type.targets[0].name, node)
28                elif (
29                    isinstance(node.parent, nodes.Tuple)
30                    and isinstance(assign_type.value, nodes.Tuple)
31                    # protect against unbalanced tuple unpacking
32                    and node.parent.elts.index(node) < len(assign_type.value.elts)
33                    and self._assigns_typevar(
34                        assign_type.value.elts[node.parent.elts.index(node)]
35                    )
36                ):
37                    self._check_name(
38                        "typevar",
39                        assign_type.targets[0].elts[node.parent.elts.index(node)].name,
40                        node,
41                    )
42
43                # Check classes (TypeVar's are classes so they need to be excluded first)
44                elif isinstance(inferred_assign_type, nodes.ClassDef):
45                    self._check_name("class", node.name, node)
46
47                # Don't emit if the name redefines an import in an ImportError except handler.
48                elif not _redefines_import(node) and isinstance(
49                    inferred_assign_type, nodes.Const
50                ):
51                    self._check_name("const", node.name, node)
52                else:
53                    self._check_name(
54                        "variable", node.name, node, disallowed_check_only=True
55                    )
56
57            # Check names defined in AnnAssign nodes
58            elif isinstance(
59                assign_type, nodes.AnnAssign
60            ) and utils.is_assign_name_annotated_with(node, "Final"):
61                self._check_name("const", node.name, node)
62
63        # Check names defined in function scopes
64        elif isinstance(frame, nodes.FunctionDef):
65            # global introduced variable aren't in the function locals
66            if node.name in frame and node.name not in frame.argnames():
67                if not _redefines_import(node):
68                    self._check_name("variable", node.name, node)
69
70        # Check names defined in class scopes
71        elif isinstance(frame, nodes.ClassDef):
72            if not list(frame.local_attr_ancestors(node.name)):
73                for ancestor in frame.ancestors():
74                    if utils.is_enum(ancestor) or utils.is_assign_name_annotated_with(
75                        node, "Final"
76                    ):
77                        self._check_name("class_const", node.name, node)
78                        break
79                else:
80                    self._check_name("class_attribute", node.name, node)
            

Path 13: 59 calls (0.01)

AssignName (59)

1@utils.only_required_for_messages(
2        "disallowed-name",
3        "invalid-name",
4        "typevar-name-incorrect-variance",
5        "typevar-double-variance",
6        "typevar-name-mismatch",
7    )
8    def visit_assignname(self, node: nodes.AssignName) -> None:
9        """Check module level assigned names."""
10        frame = node.frame(future=True)
11        assign_type = node.assign_type()
12
13        # Check names defined in comprehensions
14        if isinstance(assign_type, nodes.Comprehension):
15            self._check_name("inlinevar", node.name, node)
16
17        # Check names defined in module scope
18        elif isinstance(frame, nodes.Module):
19            # Check names defined in Assign nodes
20            if isinstance(assign_type, nodes.Assign):
21                inferred_assign_type = utils.safe_infer(assign_type.value)
22
23                # Check TypeVar's assigned alone or in tuple assignment
24                if isinstance(node.parent, nodes.Assign) and self._assigns_typevar(
25                    assign_type.value
26                ):
27                    self._check_name("typevar", assign_type.targets[0].name, node)
28                elif (
29                    isinstance(node.parent, nodes.Tuple)
30                    and isinstance(assign_type.value, nodes.Tuple)
31                    # protect against unbalanced tuple unpacking
32                    and node.parent.elts.index(node) < len(assign_type.value.elts)
33                    and self._assigns_typevar(
34                        assign_type.value.elts[node.parent.elts.index(node)]
35                    )
36                ):
37                    self._check_name(
38                        "typevar",
39                        assign_type.targets[0].elts[node.parent.elts.index(node)].name,
40                        node,
41                    )
42
43                # Check classes (TypeVar's are classes so they need to be excluded first)
44                elif isinstance(inferred_assign_type, nodes.ClassDef):
45                    self._check_name("class", node.name, node)
46
47                # Don't emit if the name redefines an import in an ImportError except handler.
48                elif not _redefines_import(node) and isinstance(
49                    inferred_assign_type, nodes.Const
50                ):
51                    self._check_name("const", node.name, node)
52                else:
53                    self._check_name(
54                        "variable", node.name, node, disallowed_check_only=True
55                    )
56
57            # Check names defined in AnnAssign nodes
58            elif isinstance(
59                assign_type, nodes.AnnAssign
60            ) and utils.is_assign_name_annotated_with(node, "Final"):
61                self._check_name("const", node.name, node)
62
63        # Check names defined in function scopes
64        elif isinstance(frame, nodes.FunctionDef):
65            # global introduced variable aren't in the function locals
66            if node.name in frame and node.name not in frame.argnames():
67                if not _redefines_import(node):
68                    self._check_name("variable", node.name, node)
69
70        # Check names defined in class scopes
71        elif isinstance(frame, nodes.ClassDef):
72            if not list(frame.local_attr_ancestors(node.name)):
73                for ancestor in frame.ancestors():
74                    if utils.is_enum(ancestor) or utils.is_assign_name_annotated_with(
75                        node, "Final"
76                    ):
77                        self._check_name("class_const", node.name, node)
78                        break
79                else:
80                    self._check_name("class_attribute", node.name, node)
            

Path 14: 46 calls (0.01)

AssignName (46)

1@utils.only_required_for_messages(
2        "disallowed-name",
3        "invalid-name",
4        "typevar-name-incorrect-variance",
5        "typevar-double-variance",
6        "typevar-name-mismatch",
7    )
8    def visit_assignname(self, node: nodes.AssignName) -> None:
9        """Check module level assigned names."""
10        frame = node.frame(future=True)
11        assign_type = node.assign_type()
12
13        # Check names defined in comprehensions
14        if isinstance(assign_type, nodes.Comprehension):
15            self._check_name("inlinevar", node.name, node)
16
17        # Check names defined in module scope
18        elif isinstance(frame, nodes.Module):
19            # Check names defined in Assign nodes
20            if isinstance(assign_type, nodes.Assign):
21                inferred_assign_type = utils.safe_infer(assign_type.value)
22
23                # Check TypeVar's assigned alone or in tuple assignment
24                if isinstance(node.parent, nodes.Assign) and self._assigns_typevar(
25                    assign_type.value
26                ):
27                    self._check_name("typevar", assign_type.targets[0].name, node)
28                elif (
29                    isinstance(node.parent, nodes.Tuple)
30                    and isinstance(assign_type.value, nodes.Tuple)
31                    # protect against unbalanced tuple unpacking
32                    and node.parent.elts.index(node) < len(assign_type.value.elts)
33                    and self._assigns_typevar(
34                        assign_type.value.elts[node.parent.elts.index(node)]
35                    )
36                ):
37                    self._check_name(
38                        "typevar",
39                        assign_type.targets[0].elts[node.parent.elts.index(node)].name,
40                        node,
41                    )
42
43                # Check classes (TypeVar's are classes so they need to be excluded first)
44                elif isinstance(inferred_assign_type, nodes.ClassDef):
45                    self._check_name("class", node.name, node)
46
47                # Don't emit if the name redefines an import in an ImportError except handler.
48                elif not _redefines_import(node) and isinstance(
49                    inferred_assign_type, nodes.Const
50                ):
51                    self._check_name("const", node.name, node)
52                else:
53                    self._check_name(
54                        "variable", node.name, node, disallowed_check_only=True
55                    )
56
57            # Check names defined in AnnAssign nodes
58            elif isinstance(
59                assign_type, nodes.AnnAssign
60            ) and utils.is_assign_name_annotated_with(node, "Final"):
61                self._check_name("const", node.name, node)
62
63        # Check names defined in function scopes
64        elif isinstance(frame, nodes.FunctionDef):
65            # global introduced variable aren't in the function locals
66            if node.name in frame and node.name not in frame.argnames():
67                if not _redefines_import(node):
68                    self._check_name("variable", node.name, node)
69
70        # Check names defined in class scopes
71        elif isinstance(frame, nodes.ClassDef):
72            if not list(frame.local_attr_ancestors(node.name)):
73                for ancestor in frame.ancestors():
74                    if utils.is_enum(ancestor) or utils.is_assign_name_annotated_with(
75                        node, "Final"
76                    ):
77                        self._check_name("class_const", node.name, node)
78                        break
79                else:
80                    self._check_name("class_attribute", node.name, node)
            

Path 15: 38 calls (0.0)

AssignName (38)

1@utils.only_required_for_messages(
2        "disallowed-name",
3        "invalid-name",
4        "typevar-name-incorrect-variance",
5        "typevar-double-variance",
6        "typevar-name-mismatch",
7    )
8    def visit_assignname(self, node: nodes.AssignName) -> None:
9        """Check module level assigned names."""
10        frame = node.frame(future=True)
11        assign_type = node.assign_type()
12
13        # Check names defined in comprehensions
14        if isinstance(assign_type, nodes.Comprehension):
15            self._check_name("inlinevar", node.name, node)
16
17        # Check names defined in module scope
18        elif isinstance(frame, nodes.Module):
19            # Check names defined in Assign nodes
20            if isinstance(assign_type, nodes.Assign):
21                inferred_assign_type = utils.safe_infer(assign_type.value)
22
23                # Check TypeVar's assigned alone or in tuple assignment
24                if isinstance(node.parent, nodes.Assign) and self._assigns_typevar(
25                    assign_type.value
26                ):
27                    self._check_name("typevar", assign_type.targets[0].name, node)
28                elif (
29                    isinstance(node.parent, nodes.Tuple)
30                    and isinstance(assign_type.value, nodes.Tuple)
31                    # protect against unbalanced tuple unpacking
32                    and node.parent.elts.index(node) < len(assign_type.value.elts)
33                    and self._assigns_typevar(
34                        assign_type.value.elts[node.parent.elts.index(node)]
35                    )
36                ):
37                    self._check_name(
38                        "typevar",
39                        assign_type.targets[0].elts[node.parent.elts.index(node)].name,
40                        node,
41                    )
42
43                # Check classes (TypeVar's are classes so they need to be excluded first)
44                elif isinstance(inferred_assign_type, nodes.ClassDef):
45                    self._check_name("class", node.name, node)
46
47                # Don't emit if the name redefines an import in an ImportError except handler.
48                elif not _redefines_import(node) and isinstance(
49                    inferred_assign_type, nodes.Const
50                ):
51                    self._check_name("const", node.name, node)
52                else:
53                    self._check_name(
54                        "variable", node.name, node, disallowed_check_only=True
55                    )
56
57            # Check names defined in AnnAssign nodes
58            elif isinstance(
59                assign_type, nodes.AnnAssign
60            ) and utils.is_assign_name_annotated_with(node, "Final"):
61                self._check_name("const", node.name, node)
62
63        # Check names defined in function scopes
64        elif isinstance(frame, nodes.FunctionDef):
65            # global introduced variable aren't in the function locals
66            if node.name in frame and node.name not in frame.argnames():
67                if not _redefines_import(node):
68                    self._check_name("variable", node.name, node)
69
70        # Check names defined in class scopes
71        elif isinstance(frame, nodes.ClassDef):
72            if not list(frame.local_attr_ancestors(node.name)):
73                for ancestor in frame.ancestors():
74                    if utils.is_enum(ancestor) or utils.is_assign_name_annotated_with(
75                        node, "Final"
76                    ):
77                        self._check_name("class_const", node.name, node)
78                        break
79                else:
80                    self._check_name("class_attribute", node.name, node)
            

Path 16: 22 calls (0.0)

AssignName (22)

1@utils.only_required_for_messages(
2        "disallowed-name",
3        "invalid-name",
4        "typevar-name-incorrect-variance",
5        "typevar-double-variance",
6        "typevar-name-mismatch",
7    )
8    def visit_assignname(self, node: nodes.AssignName) -> None:
9        """Check module level assigned names."""
10        frame = node.frame(future=True)
11        assign_type = node.assign_type()
12
13        # Check names defined in comprehensions
14        if isinstance(assign_type, nodes.Comprehension):
15            self._check_name("inlinevar", node.name, node)
16
17        # Check names defined in module scope
18        elif isinstance(frame, nodes.Module):
19            # Check names defined in Assign nodes
20            if isinstance(assign_type, nodes.Assign):
21                inferred_assign_type = utils.safe_infer(assign_type.value)
22
23                # Check TypeVar's assigned alone or in tuple assignment
24                if isinstance(node.parent, nodes.Assign) and self._assigns_typevar(
25                    assign_type.value
26                ):
27                    self._check_name("typevar", assign_type.targets[0].name, node)
28                elif (
29                    isinstance(node.parent, nodes.Tuple)
30                    and isinstance(assign_type.value, nodes.Tuple)
31                    # protect against unbalanced tuple unpacking
32                    and node.parent.elts.index(node) < len(assign_type.value.elts)
33                    and self._assigns_typevar(
34                        assign_type.value.elts[node.parent.elts.index(node)]
35                    )
36                ):
37                    self._check_name(
38                        "typevar",
39                        assign_type.targets[0].elts[node.parent.elts.index(node)].name,
40                        node,
41                    )
42
43                # Check classes (TypeVar's are classes so they need to be excluded first)
44                elif isinstance(inferred_assign_type, nodes.ClassDef):
45                    self._check_name("class", node.name, node)
46
47                # Don't emit if the name redefines an import in an ImportError except handler.
48                elif not _redefines_import(node) and isinstance(
49                    inferred_assign_type, nodes.Const
50                ):
51                    self._check_name("const", node.name, node)
52                else:
53                    self._check_name(
54                        "variable", node.name, node, disallowed_check_only=True
55                    )
56
57            # Check names defined in AnnAssign nodes
58            elif isinstance(
59                assign_type, nodes.AnnAssign
60            ) and utils.is_assign_name_annotated_with(node, "Final"):
61                self._check_name("const", node.name, node)
62
63        # Check names defined in function scopes
64        elif isinstance(frame, nodes.FunctionDef):
65            # global introduced variable aren't in the function locals
66            if node.name in frame and node.name not in frame.argnames():
67                if not _redefines_import(node):
68                    self._check_name("variable", node.name, node)
69
70        # Check names defined in class scopes
71        elif isinstance(frame, nodes.ClassDef):
72            if not list(frame.local_attr_ancestors(node.name)):
73                for ancestor in frame.ancestors():
74                    if utils.is_enum(ancestor) or utils.is_assign_name_annotated_with(
75                        node, "Final"
76                    ):
77                        self._check_name("class_const", node.name, node)
78                        break
79                else:
80                    self._check_name("class_attribute", node.name, node)
            

Path 17: 12 calls (0.0)

AssignName (12)

1@utils.only_required_for_messages(
2        "disallowed-name",
3        "invalid-name",
4        "typevar-name-incorrect-variance",
5        "typevar-double-variance",
6        "typevar-name-mismatch",
7    )
8    def visit_assignname(self, node: nodes.AssignName) -> None:
9        """Check module level assigned names."""
10        frame = node.frame(future=True)
11        assign_type = node.assign_type()
12
13        # Check names defined in comprehensions
14        if isinstance(assign_type, nodes.Comprehension):
15            self._check_name("inlinevar", node.name, node)
16
17        # Check names defined in module scope
18        elif isinstance(frame, nodes.Module):
19            # Check names defined in Assign nodes
20            if isinstance(assign_type, nodes.Assign):
21                inferred_assign_type = utils.safe_infer(assign_type.value)
22
23                # Check TypeVar's assigned alone or in tuple assignment
24                if isinstance(node.parent, nodes.Assign) and self._assigns_typevar(
25                    assign_type.value
26                ):
27                    self._check_name("typevar", assign_type.targets[0].name, node)
28                elif (
29                    isinstance(node.parent, nodes.Tuple)
30                    and isinstance(assign_type.value, nodes.Tuple)
31                    # protect against unbalanced tuple unpacking
32                    and node.parent.elts.index(node) < len(assign_type.value.elts)
33                    and self._assigns_typevar(
34                        assign_type.value.elts[node.parent.elts.index(node)]
35                    )
36                ):
37                    self._check_name(
38                        "typevar",
39                        assign_type.targets[0].elts[node.parent.elts.index(node)].name,
40                        node,
41                    )
42
43                # Check classes (TypeVar's are classes so they need to be excluded first)
44                elif isinstance(inferred_assign_type, nodes.ClassDef):
45                    self._check_name("class", node.name, node)
46
47                # Don't emit if the name redefines an import in an ImportError except handler.
48                elif not _redefines_import(node) and isinstance(
49                    inferred_assign_type, nodes.Const
50                ):
51                    self._check_name("const", node.name, node)
52                else:
53                    self._check_name(
54                        "variable", node.name, node, disallowed_check_only=True
55                    )
56
57            # Check names defined in AnnAssign nodes
58            elif isinstance(
59                assign_type, nodes.AnnAssign
60            ) and utils.is_assign_name_annotated_with(node, "Final"):
61                self._check_name("const", node.name, node)
62
63        # Check names defined in function scopes
64        elif isinstance(frame, nodes.FunctionDef):
65            # global introduced variable aren't in the function locals
66            if node.name in frame and node.name not in frame.argnames():
67                if not _redefines_import(node):
68                    self._check_name("variable", node.name, node)
69
70        # Check names defined in class scopes
71        elif isinstance(frame, nodes.ClassDef):
72            if not list(frame.local_attr_ancestors(node.name)):
73                for ancestor in frame.ancestors():
74                    if utils.is_enum(ancestor) or utils.is_assign_name_annotated_with(
75                        node, "Final"
76                    ):
77                        self._check_name("class_const", node.name, node)
78                        break
79                else:
80                    self._check_name("class_attribute", node.name, node)
            

Path 18: 10 calls (0.0)

AssignName (10)

1@utils.only_required_for_messages(
2        "disallowed-name",
3        "invalid-name",
4        "typevar-name-incorrect-variance",
5        "typevar-double-variance",
6        "typevar-name-mismatch",
7    )
8    def visit_assignname(self, node: nodes.AssignName) -> None:
9        """Check module level assigned names."""
10        frame = node.frame(future=True)
11        assign_type = node.assign_type()
12
13        # Check names defined in comprehensions
14        if isinstance(assign_type, nodes.Comprehension):
15            self._check_name("inlinevar", node.name, node)
16
17        # Check names defined in module scope
18        elif isinstance(frame, nodes.Module):
19            # Check names defined in Assign nodes
20            if isinstance(assign_type, nodes.Assign):
21                inferred_assign_type = utils.safe_infer(assign_type.value)
22
23                # Check TypeVar's assigned alone or in tuple assignment
24                if isinstance(node.parent, nodes.Assign) and self._assigns_typevar(
25                    assign_type.value
26                ):
27                    self._check_name("typevar", assign_type.targets[0].name, node)
28                elif (
29                    isinstance(node.parent, nodes.Tuple)
30                    and isinstance(assign_type.value, nodes.Tuple)
31                    # protect against unbalanced tuple unpacking
32                    and node.parent.elts.index(node) < len(assign_type.value.elts)
33                    and self._assigns_typevar(
34                        assign_type.value.elts[node.parent.elts.index(node)]
35                    )
36                ):
37                    self._check_name(
38                        "typevar",
39                        assign_type.targets[0].elts[node.parent.elts.index(node)].name,
40                        node,
41                    )
42
43                # Check classes (TypeVar's are classes so they need to be excluded first)
44                elif isinstance(inferred_assign_type, nodes.ClassDef):
45                    self._check_name("class", node.name, node)
46
47                # Don't emit if the name redefines an import in an ImportError except handler.
48                elif not _redefines_import(node) and isinstance(
49                    inferred_assign_type, nodes.Const
50                ):
51                    self._check_name("const", node.name, node)
52                else:
53                    self._check_name(
54                        "variable", node.name, node, disallowed_check_only=True
55                    )
56
57            # Check names defined in AnnAssign nodes
58            elif isinstance(
59                assign_type, nodes.AnnAssign
60            ) and utils.is_assign_name_annotated_with(node, "Final"):
61                self._check_name("const", node.name, node)
62
63        # Check names defined in function scopes
64        elif isinstance(frame, nodes.FunctionDef):
65            # global introduced variable aren't in the function locals
66            if node.name in frame and node.name not in frame.argnames():
67                if not _redefines_import(node):
68                    self._check_name("variable", node.name, node)
69
70        # Check names defined in class scopes
71        elif isinstance(frame, nodes.ClassDef):
72            if not list(frame.local_attr_ancestors(node.name)):
73                for ancestor in frame.ancestors():
74                    if utils.is_enum(ancestor) or utils.is_assign_name_annotated_with(
75                        node, "Final"
76                    ):
77                        self._check_name("class_const", node.name, node)
78                        break
79                else:
80                    self._check_name("class_attribute", node.name, node)
            

Path 19: 4 calls (0.0)

AssignName (4)

1@utils.only_required_for_messages(
2        "disallowed-name",
3        "invalid-name",
4        "typevar-name-incorrect-variance",
5        "typevar-double-variance",
6        "typevar-name-mismatch",
7    )
8    def visit_assignname(self, node: nodes.AssignName) -> None:
9        """Check module level assigned names."""
10        frame = node.frame(future=True)
11        assign_type = node.assign_type()
12
13        # Check names defined in comprehensions
14        if isinstance(assign_type, nodes.Comprehension):
15            self._check_name("inlinevar", node.name, node)
16
17        # Check names defined in module scope
18        elif isinstance(frame, nodes.Module):
19            # Check names defined in Assign nodes
20            if isinstance(assign_type, nodes.Assign):
21                inferred_assign_type = utils.safe_infer(assign_type.value)
22
23                # Check TypeVar's assigned alone or in tuple assignment
24                if isinstance(node.parent, nodes.Assign) and self._assigns_typevar(
25                    assign_type.value
26                ):
27                    self._check_name("typevar", assign_type.targets[0].name, node)
28                elif (
29                    isinstance(node.parent, nodes.Tuple)
30                    and isinstance(assign_type.value, nodes.Tuple)
31                    # protect against unbalanced tuple unpacking
32                    and node.parent.elts.index(node) < len(assign_type.value.elts)
33                    and self._assigns_typevar(
34                        assign_type.value.elts[node.parent.elts.index(node)]
35                    )
36                ):
37                    self._check_name(
38                        "typevar",
39                        assign_type.targets[0].elts[node.parent.elts.index(node)].name,
40                        node,
41                    )
42
43                # Check classes (TypeVar's are classes so they need to be excluded first)
44                elif isinstance(inferred_assign_type, nodes.ClassDef):
45                    self._check_name("class", node.name, node)
46
47                # Don't emit if the name redefines an import in an ImportError except handler.
48                elif not _redefines_import(node) and isinstance(
49                    inferred_assign_type, nodes.Const
50                ):
51                    self._check_name("const", node.name, node)
52                else:
53                    self._check_name(
54                        "variable", node.name, node, disallowed_check_only=True
55                    )
56
57            # Check names defined in AnnAssign nodes
58            elif isinstance(
59                assign_type, nodes.AnnAssign
60            ) and utils.is_assign_name_annotated_with(node, "Final"):
61                self._check_name("const", node.name, node)
62
63        # Check names defined in function scopes
64        elif isinstance(frame, nodes.FunctionDef):
65            # global introduced variable aren't in the function locals
66            if node.name in frame and node.name not in frame.argnames():
67                if not _redefines_import(node):
68                    self._check_name("variable", node.name, node)
69
70        # Check names defined in class scopes
71        elif isinstance(frame, nodes.ClassDef):
72            if not list(frame.local_attr_ancestors(node.name)):
73                for ancestor in frame.ancestors():
74                    if utils.is_enum(ancestor) or utils.is_assign_name_annotated_with(
75                        node, "Final"
76                    ):
77                        self._check_name("class_const", node.name, node)
78                        break
79                else:
80                    self._check_name("class_attribute", node.name, node)
            

Path 20: 4 calls (0.0)

AssignName (4)

1@utils.only_required_for_messages(
2        "disallowed-name",
3        "invalid-name",
4        "typevar-name-incorrect-variance",
5        "typevar-double-variance",
6        "typevar-name-mismatch",
7    )
8    def visit_assignname(self, node: nodes.AssignName) -> None:
9        """Check module level assigned names."""
10        frame = node.frame(future=True)
11        assign_type = node.assign_type()
12
13        # Check names defined in comprehensions
14        if isinstance(assign_type, nodes.Comprehension):
15            self._check_name("inlinevar", node.name, node)
16
17        # Check names defined in module scope
18        elif isinstance(frame, nodes.Module):
19            # Check names defined in Assign nodes
20            if isinstance(assign_type, nodes.Assign):
21                inferred_assign_type = utils.safe_infer(assign_type.value)
22
23                # Check TypeVar's assigned alone or in tuple assignment
24                if isinstance(node.parent, nodes.Assign) and self._assigns_typevar(
25                    assign_type.value
26                ):
27                    self._check_name("typevar", assign_type.targets[0].name, node)
28                elif (
29                    isinstance(node.parent, nodes.Tuple)
30                    and isinstance(assign_type.value, nodes.Tuple)
31                    # protect against unbalanced tuple unpacking
32                    and node.parent.elts.index(node) < len(assign_type.value.elts)
33                    and self._assigns_typevar(
34                        assign_type.value.elts[node.parent.elts.index(node)]
35                    )
36                ):
37                    self._check_name(
38                        "typevar",
39                        assign_type.targets[0].elts[node.parent.elts.index(node)].name,
40                        node,
41                    )
42
43                # Check classes (TypeVar's are classes so they need to be excluded first)
44                elif isinstance(inferred_assign_type, nodes.ClassDef):
45                    self._check_name("class", node.name, node)
46
47                # Don't emit if the name redefines an import in an ImportError except handler.
48                elif not _redefines_import(node) and isinstance(
49                    inferred_assign_type, nodes.Const
50                ):
51                    self._check_name("const", node.name, node)
52                else:
53                    self._check_name(
54                        "variable", node.name, node, disallowed_check_only=True
55                    )
56
57            # Check names defined in AnnAssign nodes
58            elif isinstance(
59                assign_type, nodes.AnnAssign
60            ) and utils.is_assign_name_annotated_with(node, "Final"):
61                self._check_name("const", node.name, node)
62
63        # Check names defined in function scopes
64        elif isinstance(frame, nodes.FunctionDef):
65            # global introduced variable aren't in the function locals
66            if node.name in frame and node.name not in frame.argnames():
67                if not _redefines_import(node):
68                    self._check_name("variable", node.name, node)
69
70        # Check names defined in class scopes
71        elif isinstance(frame, nodes.ClassDef):
72            if not list(frame.local_attr_ancestors(node.name)):
73                for ancestor in frame.ancestors():
74                    if utils.is_enum(ancestor) or utils.is_assign_name_annotated_with(
75                        node, "Final"
76                    ):
77                        self._check_name("class_const", node.name, node)
78                        break
79                else:
80                    self._check_name("class_attribute", node.name, node)
            

Path 21: 4 calls (0.0)

AssignName (4)

1@utils.only_required_for_messages(
2        "disallowed-name",
3        "invalid-name",
4        "typevar-name-incorrect-variance",
5        "typevar-double-variance",
6        "typevar-name-mismatch",
7    )
8    def visit_assignname(self, node: nodes.AssignName) -> None:
9        """Check module level assigned names."""
10        frame = node.frame(future=True)
11        assign_type = node.assign_type()
12
13        # Check names defined in comprehensions
14        if isinstance(assign_type, nodes.Comprehension):
15            self._check_name("inlinevar", node.name, node)
16
17        # Check names defined in module scope
18        elif isinstance(frame, nodes.Module):
19            # Check names defined in Assign nodes
20            if isinstance(assign_type, nodes.Assign):
21                inferred_assign_type = utils.safe_infer(assign_type.value)
22
23                # Check TypeVar's assigned alone or in tuple assignment
24                if isinstance(node.parent, nodes.Assign) and self._assigns_typevar(
25                    assign_type.value
26                ):
27                    self._check_name("typevar", assign_type.targets[0].name, node)
28                elif (
29                    isinstance(node.parent, nodes.Tuple)
30                    and isinstance(assign_type.value, nodes.Tuple)
31                    # protect against unbalanced tuple unpacking
32                    and node.parent.elts.index(node) < len(assign_type.value.elts)
33                    and self._assigns_typevar(
34                        assign_type.value.elts[node.parent.elts.index(node)]
35                    )
36                ):
37                    self._check_name(
38                        "typevar",
39                        assign_type.targets[0].elts[node.parent.elts.index(node)].name,
40                        node,
41                    )
42
43                # Check classes (TypeVar's are classes so they need to be excluded first)
44                elif isinstance(inferred_assign_type, nodes.ClassDef):
45                    self._check_name("class", node.name, node)
46
47                # Don't emit if the name redefines an import in an ImportError except handler.
48                elif not _redefines_import(node) and isinstance(
49                    inferred_assign_type, nodes.Const
50                ):
51                    self._check_name("const", node.name, node)
52                else:
53                    self._check_name(
54                        "variable", node.name, node, disallowed_check_only=True
55                    )
56
57            # Check names defined in AnnAssign nodes
58            elif isinstance(
59                assign_type, nodes.AnnAssign
60            ) and utils.is_assign_name_annotated_with(node, "Final"):
61                self._check_name("const", node.name, node)
62
63        # Check names defined in function scopes
64        elif isinstance(frame, nodes.FunctionDef):
65            # global introduced variable aren't in the function locals
66            if node.name in frame and node.name not in frame.argnames():
67                if not _redefines_import(node):
68                    self._check_name("variable", node.name, node)
69
70        # Check names defined in class scopes
71        elif isinstance(frame, nodes.ClassDef):
72            if not list(frame.local_attr_ancestors(node.name)):
73                for ancestor in frame.ancestors():
74                    if utils.is_enum(ancestor) or utils.is_assign_name_annotated_with(
75                        node, "Final"
76                    ):
77                        self._check_name("class_const", node.name, node)
78                        break
79                else:
80                    self._check_name("class_attribute", node.name, node)
            

Path 22: 2 calls (0.0)

AssignName (2)

1@utils.only_required_for_messages(
2        "disallowed-name",
3        "invalid-name",
4        "typevar-name-incorrect-variance",
5        "typevar-double-variance",
6        "typevar-name-mismatch",
7    )
8    def visit_assignname(self, node: nodes.AssignName) -> None:
9        """Check module level assigned names."""
10        frame = node.frame(future=True)
11        assign_type = node.assign_type()
12
13        # Check names defined in comprehensions
14        if isinstance(assign_type, nodes.Comprehension):
15            self._check_name("inlinevar", node.name, node)
16
17        # Check names defined in module scope
18        elif isinstance(frame, nodes.Module):
19            # Check names defined in Assign nodes
20            if isinstance(assign_type, nodes.Assign):
21                inferred_assign_type = utils.safe_infer(assign_type.value)
22
23                # Check TypeVar's assigned alone or in tuple assignment
24                if isinstance(node.parent, nodes.Assign) and self._assigns_typevar(
25                    assign_type.value
26                ):
27                    self._check_name("typevar", assign_type.targets[0].name, node)
28                elif (
29                    isinstance(node.parent, nodes.Tuple)
30                    and isinstance(assign_type.value, nodes.Tuple)
31                    # protect against unbalanced tuple unpacking
32                    and node.parent.elts.index(node) < len(assign_type.value.elts)
33                    and self._assigns_typevar(
34                        assign_type.value.elts[node.parent.elts.index(node)]
35                    )
36                ):
37                    self._check_name(
38                        "typevar",
39                        assign_type.targets[0].elts[node.parent.elts.index(node)].name,
40                        node,
41                    )
42
43                # Check classes (TypeVar's are classes so they need to be excluded first)
44                elif isinstance(inferred_assign_type, nodes.ClassDef):
45                    self._check_name("class", node.name, node)
46
47                # Don't emit if the name redefines an import in an ImportError except handler.
48                elif not _redefines_import(node) and isinstance(
49                    inferred_assign_type, nodes.Const
50                ):
51                    self._check_name("const", node.name, node)
52                else:
53                    self._check_name(
54                        "variable", node.name, node, disallowed_check_only=True
55                    )
56
57            # Check names defined in AnnAssign nodes
58            elif isinstance(
59                assign_type, nodes.AnnAssign
60            ) and utils.is_assign_name_annotated_with(node, "Final"):
61                self._check_name("const", node.name, node)
62
63        # Check names defined in function scopes
64        elif isinstance(frame, nodes.FunctionDef):
65            # global introduced variable aren't in the function locals
66            if node.name in frame and node.name not in frame.argnames():
67                if not _redefines_import(node):
68                    self._check_name("variable", node.name, node)
69
70        # Check names defined in class scopes
71        elif isinstance(frame, nodes.ClassDef):
72            if not list(frame.local_attr_ancestors(node.name)):
73                for ancestor in frame.ancestors():
74                    if utils.is_enum(ancestor) or utils.is_assign_name_annotated_with(
75                        node, "Final"
76                    ):
77                        self._check_name("class_const", node.name, node)
78                        break
79                else:
80                    self._check_name("class_attribute", node.name, node)
            

Path 23: 2 calls (0.0)

AssignName (2)

1@utils.only_required_for_messages(
2        "disallowed-name",
3        "invalid-name",
4        "typevar-name-incorrect-variance",
5        "typevar-double-variance",
6        "typevar-name-mismatch",
7    )
8    def visit_assignname(self, node: nodes.AssignName) -> None:
9        """Check module level assigned names."""
10        frame = node.frame(future=True)
11        assign_type = node.assign_type()
12
13        # Check names defined in comprehensions
14        if isinstance(assign_type, nodes.Comprehension):
15            self._check_name("inlinevar", node.name, node)
16
17        # Check names defined in module scope
18        elif isinstance(frame, nodes.Module):
19            # Check names defined in Assign nodes
20            if isinstance(assign_type, nodes.Assign):
21                inferred_assign_type = utils.safe_infer(assign_type.value)
22
23                # Check TypeVar's assigned alone or in tuple assignment
24                if isinstance(node.parent, nodes.Assign) and self._assigns_typevar(
25                    assign_type.value
26                ):
27                    self._check_name("typevar", assign_type.targets[0].name, node)
28                elif (
29                    isinstance(node.parent, nodes.Tuple)
30                    and isinstance(assign_type.value, nodes.Tuple)
31                    # protect against unbalanced tuple unpacking
32                    and node.parent.elts.index(node) < len(assign_type.value.elts)
33                    and self._assigns_typevar(
34                        assign_type.value.elts[node.parent.elts.index(node)]
35                    )
36                ):
37                    self._check_name(
38                        "typevar",
39                        assign_type.targets[0].elts[node.parent.elts.index(node)].name,
40                        node,
41                    )
42
43                # Check classes (TypeVar's are classes so they need to be excluded first)
44                elif isinstance(inferred_assign_type, nodes.ClassDef):
45                    self._check_name("class", node.name, node)
46
47                # Don't emit if the name redefines an import in an ImportError except handler.
48                elif not _redefines_import(node) and isinstance(
49                    inferred_assign_type, nodes.Const
50                ):
51                    self._check_name("const", node.name, node)
52                else:
53                    self._check_name(
54                        "variable", node.name, node, disallowed_check_only=True
55                    )
56
57            # Check names defined in AnnAssign nodes
58            elif isinstance(
59                assign_type, nodes.AnnAssign
60            ) and utils.is_assign_name_annotated_with(node, "Final"):
61                self._check_name("const", node.name, node)
62
63        # Check names defined in function scopes
64        elif isinstance(frame, nodes.FunctionDef):
65            # global introduced variable aren't in the function locals
66            if node.name in frame and node.name not in frame.argnames():
67                if not _redefines_import(node):
68                    self._check_name("variable", node.name, node)
69
70        # Check names defined in class scopes
71        elif isinstance(frame, nodes.ClassDef):
72            if not list(frame.local_attr_ancestors(node.name)):
73                for ancestor in frame.ancestors():
74                    if utils.is_enum(ancestor) or utils.is_assign_name_annotated_with(
75                        node, "Final"
76                    ):
77                        self._check_name("class_const", node.name, node)
78                        break
79                else:
80                    self._check_name("class_attribute", node.name, node)
            

Path 24: 1 calls (0.0)

AssignName (1)

1@utils.only_required_for_messages(
2        "disallowed-name",
3        "invalid-name",
4        "typevar-name-incorrect-variance",
5        "typevar-double-variance",
6        "typevar-name-mismatch",
7    )
8    def visit_assignname(self, node: nodes.AssignName) -> None:
9        """Check module level assigned names."""
10        frame = node.frame(future=True)
11        assign_type = node.assign_type()
12
13        # Check names defined in comprehensions
14        if isinstance(assign_type, nodes.Comprehension):
15            self._check_name("inlinevar", node.name, node)
16
17        # Check names defined in module scope
18        elif isinstance(frame, nodes.Module):
19            # Check names defined in Assign nodes
20            if isinstance(assign_type, nodes.Assign):
21                inferred_assign_type = utils.safe_infer(assign_type.value)
22
23                # Check TypeVar's assigned alone or in tuple assignment
24                if isinstance(node.parent, nodes.Assign) and self._assigns_typevar(
25                    assign_type.value
26                ):
27                    self._check_name("typevar", assign_type.targets[0].name, node)
28                elif (
29                    isinstance(node.parent, nodes.Tuple)
30                    and isinstance(assign_type.value, nodes.Tuple)
31                    # protect against unbalanced tuple unpacking
32                    and node.parent.elts.index(node) < len(assign_type.value.elts)
33                    and self._assigns_typevar(
34                        assign_type.value.elts[node.parent.elts.index(node)]
35                    )
36                ):
37                    self._check_name(
38                        "typevar",
39                        assign_type.targets[0].elts[node.parent.elts.index(node)].name,
40                        node,
41                    )
42
43                # Check classes (TypeVar's are classes so they need to be excluded first)
44                elif isinstance(inferred_assign_type, nodes.ClassDef):
45                    self._check_name("class", node.name, node)
46
47                # Don't emit if the name redefines an import in an ImportError except handler.
48                elif not _redefines_import(node) and isinstance(
49                    inferred_assign_type, nodes.Const
50                ):
51                    self._check_name("const", node.name, node)
52                else:
53                    self._check_name(
54                        "variable", node.name, node, disallowed_check_only=True
55                    )
56
57            # Check names defined in AnnAssign nodes
58            elif isinstance(
59                assign_type, nodes.AnnAssign
60            ) and utils.is_assign_name_annotated_with(node, "Final"):
61                self._check_name("const", node.name, node)
62
63        # Check names defined in function scopes
64        elif isinstance(frame, nodes.FunctionDef):
65            # global introduced variable aren't in the function locals
66            if node.name in frame and node.name not in frame.argnames():
67                if not _redefines_import(node):
68                    self._check_name("variable", node.name, node)
69
70        # Check names defined in class scopes
71        elif isinstance(frame, nodes.ClassDef):
72            if not list(frame.local_attr_ancestors(node.name)):
73                for ancestor in frame.ancestors():
74                    if utils.is_enum(ancestor) or utils.is_assign_name_annotated_with(
75                        node, "Final"
76                    ):
77                        self._check_name("class_const", node.name, node)
78                        break
79                else:
80                    self._check_name("class_attribute", node.name, node)