diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index dea20d4c6..2c8d3e19b 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -47,4 +47,6 @@ jobs: with: python-version: '3.x' - run: python -m pip install mypy types-PyYAML - - run: python run_mypy.py + - run: python run_mypy.py --allver + env: + PYTHONUNBUFFERED: 1 diff --git a/run_mypy.py b/run_mypy.py index 15dd5a628..cf0e0e3de 100755 --- a/run_mypy.py +++ b/run_mypy.py @@ -104,6 +104,7 @@ def main() -> int: parser.add_argument('-q', '--quiet', action='store_true', help='do not print informational messages') 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') + parser.add_argument('--allver', action='store_true', help='Check all supported versions of python') opts, args = parser.parse_known_args() if opts.pretty: @@ -129,8 +130,15 @@ def main() -> int: command = [opts.mypy] if opts.mypy else [sys.executable, '-m', 'mypy'] if not opts.quiet: print('Running mypy (this can take some time) ...') - p = subprocess.run(command + args + to_check, cwd=root) - return p.returncode + retcode = subprocess.run(command + args + to_check, cwd=root).returncode + if opts.allver and retcode == 0: + for minor in range(7, sys.version_info[1]): + if not opts.quiet: + print(f'Checking mypy with python version: 3.{minor}') + p = subprocess.run(command + args + to_check + [f'--python-version=3.{minor}'], cwd=root) + if p.returncode != 0: + retcode = p.returncode + return retcode else: if not opts.quiet: print('nothing to do...')