 b573c1daf3
			
		
	
	
		b573c1daf3
		
	
	
	
	
		
			
			Flake8 combines pycodestyle with pyflakes and automatically gives us support for noqa comments, parallelism, configuration files, plugins, and easy editor integration. Signed-off-by: Anders Kaseorg <anders@zulipchat.com>
		
			
				
	
	
		
			46 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			46 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable file
		
	
	
	
	
| #! /usr/bin/env python3
 | |
| 
 | |
| import argparse
 | |
| 
 | |
| from zulint.command import add_default_linter_arguments, LinterConfig
 | |
| 
 | |
| from custom_check import python_rules, non_py_rules
 | |
| 
 | |
| EXCLUDED_FILES = [
 | |
|     # This is an external file that doesn't comply with our codestyle
 | |
|     'zulip/integrations/perforce/git_p4.py',
 | |
| ]
 | |
| 
 | |
| def run() -> None:
 | |
|     parser = argparse.ArgumentParser()
 | |
|     add_default_linter_arguments(parser)
 | |
|     args = parser.parse_args()
 | |
| 
 | |
|     linter_config = LinterConfig(args)
 | |
| 
 | |
|     by_lang = linter_config.list_files(file_types=['py', 'sh', 'json', 'md', 'txt'],
 | |
|                                        exclude=EXCLUDED_FILES)
 | |
| 
 | |
|     linter_config.external_linter('mypy', ['tools/run-mypy'], ['py'], pass_targets=False,
 | |
|                                   description="Static type checker for Python (config: mypy.ini)")
 | |
|     linter_config.external_linter('flake8', ['flake8'], ['py'],
 | |
|                                   description="Standard Python linter (config: .flake8)")
 | |
| 
 | |
|     @linter_config.lint
 | |
|     def custom_py() -> int:
 | |
|         """Runs custom checks for python files (config: tools/linter_lib/custom_check.py)"""
 | |
|         failed = python_rules.check(by_lang, verbose=args.verbose)
 | |
|         return 1 if failed else 0
 | |
| 
 | |
|     @linter_config.lint
 | |
|     def custom_nonpy() -> int:
 | |
|         """Runs custom checks for non-python files (config: tools/linter_lib/custom_check.py)"""
 | |
|         failed = False
 | |
|         for rule in non_py_rules:
 | |
|             failed = failed or rule.check(by_lang, verbose=args.verbose)
 | |
|         return 1 if failed else 0
 | |
| 
 | |
|     linter_config.do_lint()
 | |
| 
 | |
| if __name__ == '__main__':
 | |
|     run()
 |