eng/scripts/run_pylint.py (37 lines of code) (raw):
#!/usr/bin/env python
# --------------------------------------------------------------------------------------------
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for license information.
# --------------------------------------------------------------------------------------------
# This script is used to execute pylint within a tox environment. Depending on which package is being executed against,
# a failure may be suppressed.
from subprocess import check_call, CalledProcessError
import os
import logging
import sys
from util import run_check
logging.getLogger().setLevel(logging.INFO)
def get_rfc_file_location():
rfc_file_location = os.path.join(os.getcwd(), "../../scripts/eng/pylintrc")
if os.path.exists(rfc_file_location):
return rfc_file_location
else:
return os.path.join(os.getcwd(), "../../../scripts/eng/pylintrc")
def _single_dir_pylint(mod):
inner_class = next(d for d in mod.iterdir() if d.is_dir() and not str(d).endswith("egg-info"))
try:
check_call(
[
sys.executable,
"-m",
"pylint",
"--rcfile={}".format(get_rfc_file_location()),
"--evaluation=(max(0, 0 if fatal else 10.0 - ((float(5 * error + warning + refactor + convention + info)/ statement) * 10)))",
"--load-plugins=pylint_guidelines_checker",
"--output-format=parseable",
"--recursive=y",
"--py-version=3.9",
str(inner_class.absolute()),
]
)
return True
except CalledProcessError as e:
logging.error("{} exited with linting error {}".format(str(inner_class.absolute()), e.returncode))
return False
if __name__ == "__main__":
if sys.version_info >= (3, 10, 0):
# only run pylint with python 3.9
sys.exit(0)
run_check("pylint", _single_dir_pylint, "Pylint")