@@ -164,14 +164,18 @@ def __init__(self,
164164 show_error_codes : bool = False ,
165165 pretty : bool = False ,
166166 read_source : Optional [Callable [[str ], Optional [List [str ]]]] = None ,
167- show_absolute_path : bool = False ) -> None :
167+ show_absolute_path : bool = False ,
168+ enabled_error_codes : Optional [Set [ErrorCode ]] = None ,
169+ disabled_error_codes : Optional [Set [ErrorCode ]] = None ) -> None :
168170 self .show_error_context = show_error_context
169171 self .show_column_numbers = show_column_numbers
170172 self .show_error_codes = show_error_codes
171173 self .show_absolute_path = show_absolute_path
172174 self .pretty = pretty
173175 # We use fscache to read source code when showing snippets.
174176 self .read_source = read_source
177+ self .enabled_error_codes = enabled_error_codes or set ()
178+ self .disabled_error_codes = disabled_error_codes or set ()
175179 self .initialize ()
176180
177181 def initialize (self ) -> None :
@@ -195,7 +199,9 @@ def copy(self) -> 'Errors':
195199 self .show_error_codes ,
196200 self .pretty ,
197201 self .read_source ,
198- self .show_absolute_path )
202+ self .show_absolute_path ,
203+ self .enabled_error_codes ,
204+ self .disabled_error_codes )
199205 new .file = self .file
200206 new .import_ctx = self .import_ctx [:]
201207 new .function_or_member = self .function_or_member [:]
@@ -351,15 +357,25 @@ def add_error_info(self, info: ErrorInfo) -> None:
351357 self ._add_error_info (file , info )
352358
353359 def is_ignored_error (self , line : int , info : ErrorInfo , ignores : Dict [int , List [str ]]) -> bool :
354- if line not in ignores :
360+ if info .code and self .is_error_code_enabled (info .code ) is False :
361+ return True
362+ elif line not in ignores :
355363 return False
356364 elif not ignores [line ]:
357365 # Empty list means that we ignore all errors
358366 return True
359- elif info .code :
367+ elif info .code and self . is_error_code_enabled ( info . code ) is True :
360368 return info .code .code in ignores [line ]
361369 return False
362370
371+ def is_error_code_enabled (self , error_code : ErrorCode ) -> bool :
372+ if error_code in self .disabled_error_codes :
373+ return False
374+ elif error_code in self .enabled_error_codes :
375+ return True
376+ else :
377+ return error_code .default_enabled
378+
363379 def clear_errors_in_targets (self , path : str , targets : Set [str ]) -> None :
364380 """Remove errors in specific fine-grained targets within a file."""
365381 if path in self .error_info_map :
0 commit comments