mypy: Run mypy for each package separately.

This commit is contained in:
derAnfaenger 2017-09-26 19:34:11 +02:00 committed by Tim Abbott
parent abe9338cfe
commit 449d5faa59

View file

@ -8,6 +8,8 @@ import sys
import argparse import argparse
import subprocess import subprocess
from collections import OrderedDict
from pathlib import PurePath
from server_lib import lister from server_lib import lister
from typing import cast, Dict, List from typing import cast, Dict, List
@ -42,11 +44,8 @@ zulip_botserver/zulip_botserver/server.py
zulip_botserver/setup.py zulip_botserver/setup.py
""".split() """.split()
default_targets = ['zulip/zulip',
'zulip/setup.py']
parser = argparse.ArgumentParser(description="Run mypy on files tracked by git.") parser = argparse.ArgumentParser(description="Run mypy on files tracked by git.")
parser.add_argument('targets', nargs='*', default=default_targets, parser.add_argument('targets', nargs='*', default=[],
help="""files and directories to include in the result. help="""files and directories to include in the result.
If this is not specified, the current directory is used""") If this is not specified, the current directory is used""")
parser.add_argument('-m', '--modified', action='store_true', default=False, help='list only modified files') parser.add_argument('-m', '--modified', action='store_true', default=False, help='list only modified files')
@ -80,6 +79,12 @@ pyi_files = set(files_dict['pyi'])
python_files = [fpath for fpath in files_dict['py'] python_files = [fpath for fpath in files_dict['py']
if not fpath.endswith('.py') or fpath + 'i' not in pyi_files] if not fpath.endswith('.py') or fpath + 'i' not in pyi_files]
repo_python_files = OrderedDict([('zulip', []), ('zulip_bots', []), ('zulip_botserver', [])])
for file_path in python_files:
repo = PurePath(file_path).parts[0]
if repo in repo_python_files:
repo_python_files[repo].append(file_path)
mypy_command = "mypy" mypy_command = "mypy"
extra_args = ["--check-untyped-defs", extra_args = ["--check-untyped-defs",
@ -98,8 +103,14 @@ if args.quick:
extra_args.append("--quick") extra_args.append("--quick")
# run mypy # run mypy
if python_files: status = 0
rc = subprocess.call([mypy_command] + extra_args + python_files) for repo, python_files in repo_python_files.items():
sys.exit(rc) print("Running mypy for `{}`.".format(repo))
else: if python_files:
print("There are no files to run mypy on.") print(python_files)
result = subprocess.call([mypy_command] + extra_args + python_files)
if result != 0:
status = result
else:
print("There are no files to run mypy on.")
sys.exit(status)