aboutsummaryrefslogtreecommitdiff
path: root/run_mypy.py
diff options
context:
space:
mode:
authorDaniel Mensinger <daniel@mensinger-ka.de>2020-08-28 18:01:41 +0200
committerDaniel Mensinger <daniel@mensinger-ka.de>2020-09-08 20:15:56 +0200
commitce042f318e56f94afca7b92364728e02d068b30e (patch)
tree4952d3ee4f40a33772edc01888a4cd5a2d812ee9 /run_mypy.py
parentff28f3fa34bcaaeaf487e752dc371f4ea5f1cfc2 (diff)
downloadmeson-ce042f318e56f94afca7b92364728e02d068b30e.zip
meson-ce042f318e56f94afca7b92364728e02d068b30e.tar.gz
meson-ce042f318e56f94afca7b92364728e02d068b30e.tar.bz2
typing: Add run_mypy.py for easier mypy invocation
Diffstat (limited to 'run_mypy.py')
-rwxr-xr-xrun_mypy.py82
1 files changed, 82 insertions, 0 deletions
diff --git a/run_mypy.py b/run_mypy.py
new file mode 100755
index 0000000..68fa344
--- /dev/null
+++ b/run_mypy.py
@@ -0,0 +1,82 @@
+#!/usr/bin/env python3
+
+import sys
+import subprocess
+from pathlib import Path
+import typing as T
+
+normal_modules = [
+ 'mesonbuild/interpreterbase.py',
+ 'mesonbuild/mtest.py',
+ 'mesonbuild/minit.py',
+ 'mesonbuild/mintro.py',
+ 'mesonbuild/mparser.py',
+ 'mesonbuild/msetup.py',
+ 'mesonbuild/ast',
+ 'mesonbuild/wrap',
+ 'tools',
+ 'mesonbuild/modules/fs.py',
+ 'mesonbuild/dependencies/boost.py',
+ 'mesonbuild/dependencies/mpi.py',
+ 'mesonbuild/dependencies/hdf5.py',
+ 'mesonbuild/compilers/mixins/intel.py',
+ 'mesonbuild/mlog.py',
+ 'mesonbuild/mcompile.py',
+ 'mesonbuild/mesonlib.py',
+ 'mesonbuild/arglist.py',
+ # 'mesonbuild/envconfig.py',
+]
+
+strict_modules = [
+ 'mesonbuild/interpreterbase.py',
+ # 'mesonbuild/mesonlib.py',
+ 'mesonbuild/mlog.py',
+ 'mesonbuild/ast',
+]
+
+normal_args = ['--follow-imports=skip']
+strict_args = normal_args + [
+ '--warn-redundant-casts',
+ '--warn-unused-ignores',
+ '--warn-return-any',
+ # '--warn-unreachable',
+ '--disallow-untyped-calls',
+ '--disallow-untyped-defs',
+ '--disallow-incomplete-defs',
+ '--disallow-untyped-decorators',
+ # '--disallow-any-expr',
+ # '--disallow-any-decorated',
+ # '--disallow-any-explicit',
+ # '--disallow-any-generics',
+ # '--disallow-subclassing-any',
+]
+
+def run_mypy(opts: T.List[str], modules: T.List[str]) -> int:
+ root = Path(__file__).absolute().parent
+ p = subprocess.run(
+ [sys.executable, '-m', 'mypy'] + opts + modules,
+ cwd=root,
+ )
+ return p.returncode
+
+def check_mypy() -> None:
+ try:
+ import mypy
+ except ImportError:
+ print('Failed import mypy')
+ sys.exit(1)
+
+def main() -> int:
+ res = 0
+ check_mypy()
+
+ print('Running normal mypy check...')
+ res += run_mypy(normal_args, normal_modules)
+
+ print('\n\nRunning struct mypy check...')
+ res += run_mypy(strict_args, strict_modules)
+
+ return res
+
+if __name__ == '__main__':
+ sys.exit(main())