2424import warnings
2525from collections import defaultdict
2626from pathlib import Path
27+ from typing import Optional
2728
2829from prospector import encoding
2930from prospector .exceptions import FatalProspectorException
@@ -63,9 +64,11 @@ def get_noqa_suppressions(file_contents: list[str]) -> tuple[bool, set[int]]:
6364}
6465
6566
66- def _parse_pylint_informational (messages : list [Message ]) -> tuple [set [Path ], dict [Path , dict [int , list [str ]]]]:
67- ignore_files : set [Path ] = set ()
68- ignore_messages : dict [Path , dict [int , list [str ]]] = defaultdict (lambda : defaultdict (list ))
67+ def _parse_pylint_informational (
68+ messages : list [Message ],
69+ ) -> tuple [set [Optional [Path ]], dict [Optional [Path ], dict [int , list [str ]]]]:
70+ ignore_files : set [Optional [Path ]] = set ()
71+ ignore_messages : dict [Optional [Path ], dict [int , list [str ]]] = defaultdict (lambda : defaultdict (list ))
6972
7073 for message in messages :
7174 if message .source == "pylint" :
@@ -86,15 +89,15 @@ def _parse_pylint_informational(messages: list[Message]) -> tuple[set[Path], dic
8689
8790def get_suppressions (
8891 filepaths : list [Path ], messages : list [Message ]
89- ) -> tuple [set [Path ], dict [Path , set [int ]], dict [Path , dict [int , set [tuple [str , str ]]]]]:
92+ ) -> tuple [set [Optional [ Path ]] , dict [Path , set [int ]], dict [Optional [ Path ] , dict [int , set [tuple [str , str ]]]]]:
9093 """
9194 Given every message which was emitted by the tools, and the
9295 list of files to inspect, create a list of files to ignore,
9396 and a map of filepath -> line-number -> codes to ignore
9497 """
95- paths_to_ignore : set [Path ] = set ()
98+ paths_to_ignore : set [Optional [ Path ] ] = set ()
9699 lines_to_ignore : dict [Path , set [int ]] = defaultdict (set )
97- messages_to_ignore : dict [Path , dict [int , set [tuple [str , str ]]]] = defaultdict (lambda : defaultdict (set ))
100+ messages_to_ignore : dict [Optional [ Path ] , dict [int , set [tuple [str , str ]]]] = defaultdict (lambda : defaultdict (set ))
98101
99102 # first deal with 'noqa' style messages
100103 for filepath in filepaths :
@@ -113,12 +116,12 @@ def get_suppressions(
113116 # now figure out which messages were suppressed by pylint
114117 pylint_ignore_files , pylint_ignore_messages = _parse_pylint_informational (messages )
115118 paths_to_ignore |= pylint_ignore_files
116- for filepath , line in pylint_ignore_messages .items ():
119+ for pylint_filepath , line in pylint_ignore_messages .items ():
117120 for line_number , codes in line .items ():
118121 for code in codes :
119- messages_to_ignore [filepath ][line_number ].add (("pylint" , code ))
122+ messages_to_ignore [pylint_filepath ][line_number ].add (("pylint" , code ))
120123 if code in _PYLINT_EQUIVALENTS :
121124 for equivalent in _PYLINT_EQUIVALENTS [code ]:
122- messages_to_ignore [filepath ][line_number ].add (equivalent )
125+ messages_to_ignore [pylint_filepath ][line_number ].add (equivalent )
123126
124127 return paths_to_ignore , lines_to_ignore , messages_to_ignore
0 commit comments