#!/usr/bin/env python3 from __future__ import annotations import subprocess import sys from pathlib import Path FORBIDDEN = {'a', 'an', 'the'} def git_ls_python_files(): result = subprocess.run( ['git', 'ls-files', '*.py'], capture_output=True, text=True, check=True, ) return [Path(p) for p in result.stdout.splitlines()] def is_test_file(path: Path) -> bool: name = path.name return ( name.startswith('test_') or name.startswith('tests_') or name.endswith('_test.py') ) def has_forbidden_article(path: Path) -> bool: parts = path.stem.split('_') return any(part in FORBIDDEN for part in parts) def main() -> int: for path in git_ls_python_files(): if not is_test_file(path): continue if has_forbidden_article(path): print('ERROR: Forbidden article in test filename:') print(path) return 1 return 0 if __name__ == '__main__': sys.exit(main())