eng/scripts/run_pyright.py (39 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 pyright within a tox environment. Depending on which package is being executed against,
# a failure may be suppressed.
import os
from subprocess import check_output, CalledProcessError
import logging
import sys
import time
from util import run_check
logging.getLogger().setLevel(logging.INFO)
def get_pyright_config_file_location():
pyright_config = os.path.join(os.getcwd(), "../../scripts/eng/pyrightconfig.json")
if os.path.exists(pyright_config):
return pyright_config
else:
return os.path.join(os.getcwd(), "../../../scripts/eng/pyrightconfig.json")
def _single_dir_pyright(mod):
inner_class = next(d for d in mod.iterdir() if d.is_dir() and not str(d).endswith("egg-info"))
retries = 3
while retries:
try:
check_output(
[
sys.executable,
"-m",
"pyright",
"-p",
get_pyright_config_file_location(),
str(inner_class.absolute()),
],
text=True,
)
return True
except CalledProcessError as e:
logging.exception("{} exited with pyright error {}".format(inner_class.stem, e.returncode))
logging.error(f"PyRight stdout:\n{e.stdout}\n===========")
logging.error(f"PyRight stderr:\n{e.stderr}\n===========")
# PyRight has shown to randomly failed with a 217, retry the same folder 3 times should help
retries -= 1
time.sleep(5)
return False
if __name__ == "__main__":
run_check("pyright", _single_dir_pyright, "PyRight")