mirror of
				https://github.com/zulip/zulip.git
				synced 2025-10-30 19:43:47 +00:00 
			
		
		
		
	Mypy can’t follow absolute imports based on directories other than the root. This was hiding some type errors due to ignore_missing_imports. Signed-off-by: Anders Kaseorg <anders@zulip.com>
		
			
				
	
	
		
			80 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			80 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
| #!/usr/bin/env python3
 | |
| 
 | |
| import argparse
 | |
| import json
 | |
| import os
 | |
| import re
 | |
| import subprocess
 | |
| import sys
 | |
| 
 | |
| sys.path.append(os.path.join(os.path.dirname(__file__), ".."))
 | |
| 
 | |
| # check for the venv
 | |
| from tools.lib import sanity_check
 | |
| 
 | |
| sanity_check.check_venv(__file__)
 | |
| 
 | |
| from scripts.lib.zulip_tools import ENDC, FAIL, WARNING
 | |
| from tools.lib.capitalization import check_capitalization
 | |
| 
 | |
| DJANGO_PO_REGEX = re.compile('msgid "(.*?)"')
 | |
| 
 | |
| if __name__ == "__main__":
 | |
|     parser = argparse.ArgumentParser()
 | |
|     parser.add_argument(
 | |
|         "--show-ignored",
 | |
|         action="store_true",
 | |
|         help="Show strings that passed the check because they contained ignored phrases.",
 | |
|     )
 | |
|     parser.add_argument(
 | |
|         "--no-generate", action="store_true", help="Don't run makemessages command."
 | |
|     )
 | |
|     args = parser.parse_args()
 | |
| 
 | |
|     if not args.no_generate:
 | |
|         subprocess.call(["./manage.py", "makemessages", "--locale", "en"], stderr=subprocess.STDOUT)
 | |
| 
 | |
|     with open("locale/en/translations.json") as f:
 | |
|         data = json.load(f)
 | |
|         frontend = check_capitalization(list(data.keys()))
 | |
|         frontend_errors, frontend_ignored, banned_errors_front = frontend
 | |
| 
 | |
|     with open("locale/en/LC_MESSAGES/django.po") as f:
 | |
|         rows = [r for r in DJANGO_PO_REGEX.findall(f.read()) if r]
 | |
|         backend = check_capitalization(rows)
 | |
|         backend_errors, backend_ignored, banned_errors_back = backend
 | |
| 
 | |
|     if frontend_errors:
 | |
|         print(WARNING + "Strings not properly capitalized in frontend:" + ENDC)
 | |
|         print("\n".join(frontend_errors))
 | |
| 
 | |
|     if backend_errors:
 | |
|         print(WARNING + "Strings not properly capitalized in backend:" + ENDC)
 | |
|         print("\n".join(backend_errors))
 | |
| 
 | |
|     if banned_errors_front:
 | |
|         print(WARNING + "Found banned words in frontend strings" + ENDC)
 | |
|         print("\n".join(banned_errors_front))
 | |
| 
 | |
|     if banned_errors_back:
 | |
|         print(WARNING + "Found banned words in backend strings" + ENDC)
 | |
|         print("\n".join(banned_errors_back))
 | |
| 
 | |
|     if args.show_ignored:
 | |
|         print(WARNING + "Strings which were ignored: " + ENDC)
 | |
|         print("\n".join(frontend_ignored + backend_ignored))
 | |
| 
 | |
|     if frontend_errors or backend_errors or banned_errors_back or banned_errors_front:
 | |
|         # Point the user to the documentation on what the policy is.
 | |
|         docs_url = (
 | |
|             "https://zulip.readthedocs.io/en/latest/translating/translating.html#capitalization"
 | |
|         )
 | |
|         print()
 | |
|         print(WARNING + "You can usually find strings using `git grep 'String to find'`" + ENDC)
 | |
|         print(WARNING + "See also " + docs_url + ENDC)
 | |
|         print()
 | |
|         print(FAIL + "Failed!" + ENDC)
 | |
|         sys.exit(1)
 | |
|     else:
 | |
|         sys.exit(0)
 |