meson/run_mypy.py

85 lines
2.2 KiB
Python
Raw Normal View History

#!/usr/bin/env python3
import sys
import subprocess
2020-08-29 01:29:20 +08:00
import argparse
from pathlib import Path
import typing as T
2020-08-30 21:58:23 +08:00
modules = [
2020-09-27 17:15:57 +08:00
# fully typed submodules
'mesonbuild/ast',
'mesonbuild/cmake',
2020-09-27 17:15:57 +08:00
'mesonbuild/compilers/mixins',
'mesonbuild/scripts',
'mesonbuild/wrap',
2020-08-30 21:58:23 +08:00
2020-09-27 17:15:57 +08:00
# specific files
'mesonbuild/arglist.py',
'mesonbuild/compilers/compilers.py',
'mesonbuild/compilers/c.py',
2020-09-27 17:15:57 +08:00
'mesonbuild/compilers/c_function_attributes.py',
2020-09-22 09:17:16 +08:00
'mesonbuild/compilers/cpp.py',
2020-09-23 06:18:24 +08:00
'mesonbuild/compilers/cuda.py',
'mesonbuild/compilers/fortran.py',
2020-09-29 01:21:46 +08:00
'mesonbuild/compilers/java.py',
2020-09-27 17:15:57 +08:00
'mesonbuild/compilers/objc.py',
'mesonbuild/compilers/objcpp.py',
2020-09-29 01:15:03 +08:00
'mesonbuild/compilers/rust.py',
2020-09-29 00:56:10 +08:00
'mesonbuild/compilers/swift.py',
2020-09-26 03:24:47 +08:00
'mesonbuild/compilers/vala.py',
2020-09-27 17:15:57 +08:00
# 'mesonbuild/coredata.py',
'mesonbuild/dependencies/boost.py',
'mesonbuild/dependencies/hdf5.py',
'mesonbuild/dependencies/mpi.py',
'mesonbuild/envconfig.py',
'mesonbuild/interpreterbase.py',
'mesonbuild/linkers.py',
'mesonbuild/mcompile.py',
'mesonbuild/mesonlib.py',
'mesonbuild/minit.py',
'mesonbuild/mintro.py',
'mesonbuild/mlog.py',
'mesonbuild/modules/fs.py',
'mesonbuild/mparser.py',
'mesonbuild/msetup.py',
'mesonbuild/mtest.py',
2020-09-27 17:15:57 +08:00
'run_mypy.py',
'tools'
]
def check_mypy() -> None:
2020-09-27 17:15:57 +08:00
try:
import mypy
except ImportError:
print('Failed import mypy')
sys.exit(1)
def main() -> int:
2020-09-27 17:15:57 +08:00
check_mypy()
2020-09-27 17:15:57 +08:00
root = Path(__file__).absolute().parent
args = [] # type: T.List[str]
2020-08-30 21:58:23 +08:00
2020-09-27 17:15:57 +08:00
parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('-p', '--pretty', action='store_true', help='pretty print mypy errors')
parser.add_argument('-C', '--clear', action='store_true', help='clear the terminal before running mypy')
2020-08-29 01:29:20 +08:00
2020-09-27 17:15:57 +08:00
opts = parser.parse_args()
if opts.pretty:
args.append('--pretty')
2020-08-29 01:29:20 +08:00
if opts.clear:
print('\x1bc', end='', flush=True)
print('Running mypy (this can take some time) ...')
2020-09-27 17:15:57 +08:00
p = subprocess.run(
[sys.executable, '-m', 'mypy'] + args + modules,
cwd=root,
)
return p.returncode
if __name__ == '__main__':
2020-09-27 17:15:57 +08:00
sys.exit(main())