2
2
# For details: https://github.com/PyCQA/pylint/blob/main/LICENSE
3
3
# Copyright (c) https://github.com/PyCQA/pylint/blob/main/CONTRIBUTORS.txt
4
4
5
+ from __future__ import annotations
6
+
5
7
import collections
6
8
import sys
7
- from typing import (
8
- TYPE_CHECKING ,
9
- DefaultDict ,
10
- Dict ,
11
- Iterator ,
12
- Optional ,
13
- Set ,
14
- Tuple ,
15
- Union ,
16
- )
9
+ from typing import TYPE_CHECKING , DefaultDict , Dict , Iterator
17
10
18
11
from astroid import nodes
19
12
38
31
class FileState :
39
32
"""Hold internal state specific to the currently analyzed file."""
40
33
41
- def __init__ (self , modname : Optional [ str ] = None ) -> None :
34
+ def __init__ (self , modname : str | None = None ) -> None :
42
35
self .base_name = modname
43
36
self ._module_msgs_state : MessageStateDict = {}
44
37
self ._raw_module_msgs_state : MessageStateDict = {}
45
38
self ._ignored_msgs : DefaultDict [
46
- Tuple [str , int ], Set [int ]
39
+ tuple [str , int ], set [int ]
47
40
] = collections .defaultdict (set )
48
- self ._suppression_mapping : Dict [ Tuple [str , int ], int ] = {}
49
- self ._effective_max_line_number : Optional [ int ] = None
41
+ self ._suppression_mapping : dict [ tuple [str , int ], int ] = {}
42
+ self ._effective_max_line_number : int | None = None
50
43
51
44
def collect_block_lines (
52
- self , msgs_store : " MessageDefinitionStore" , module_node : nodes .Module
45
+ self , msgs_store : MessageDefinitionStore , module_node : nodes .Module
53
46
) -> None :
54
47
"""Walk the AST to collect block level options line numbers."""
55
48
for msg , lines in self ._module_msgs_state .items ():
@@ -62,7 +55,7 @@ def collect_block_lines(
62
55
63
56
def _collect_block_lines (
64
57
self ,
65
- msgs_store : " MessageDefinitionStore" ,
58
+ msgs_store : MessageDefinitionStore ,
66
59
node : nodes .NodeNG ,
67
60
msg_state : MessageStateDict ,
68
61
) -> None :
@@ -126,7 +119,7 @@ def _collect_block_lines(
126
119
self ._module_msgs_state [msgid ] = {line : state }
127
120
del lines [lineno ]
128
121
129
- def set_msg_status (self , msg : " MessageDefinition" , line : int , status : bool ) -> None :
122
+ def set_msg_status (self , msg : MessageDefinition , line : int , status : bool ) -> None :
130
123
"""Set status (enabled/disable) for a given message at a given line."""
131
124
assert line > 0
132
125
try :
@@ -135,7 +128,7 @@ def set_msg_status(self, msg: "MessageDefinition", line: int, status: bool) -> N
135
128
self ._module_msgs_state [msg .msgid ] = {line : status }
136
129
137
130
def handle_ignored_message (
138
- self , state_scope : Optional [ Literal [0 , 1 , 2 ]] , msgid : str , line : Optional [ int ]
131
+ self , state_scope : Literal [0 , 1 , 2 ] | None , msgid : str , line : int | None
139
132
) -> None :
140
133
"""Report an ignored message.
141
134
@@ -154,12 +147,12 @@ def handle_ignored_message(
154
147
155
148
def iter_spurious_suppression_messages (
156
149
self ,
157
- msgs_store : " MessageDefinitionStore" ,
150
+ msgs_store : MessageDefinitionStore ,
158
151
) -> Iterator [
159
- Tuple [
152
+ tuple [
160
153
Literal ["useless-suppression" , "suppressed-message" ],
161
154
int ,
162
- Union [ Tuple [ str ], Tuple [str , int ] ],
155
+ tuple [ str ] | tuple [str , int ],
163
156
]
164
157
]:
165
158
for warning , lines in self ._raw_module_msgs_state .items ():
@@ -180,5 +173,5 @@ def iter_spurious_suppression_messages(
180
173
from_ ,
181
174
)
182
175
183
- def get_effective_max_line_number (self ) -> Optional [ int ] :
176
+ def get_effective_max_line_number (self ) -> int | None :
184
177
return self ._effective_max_line_number
0 commit comments