diff --git a/run_mypy.py b/run_mypy.py index 25ab54c0bf..88adea8db9 100644 --- a/run_mypy.py +++ b/run_mypy.py @@ -4,8 +4,7 @@ import sys import subprocess # A quick Python implementation of unix 'where' command. -def where(exeName): - searchPath = os.getenv("PATH") +def where(exeName, searchPath=os.getenv("PATH")): paths = searchPath.split(";" if sys.platform == "win32" else ":") for path in paths: candidatePath = os.path.join(path, exeName) @@ -21,10 +20,18 @@ def findModules(path): return result def main(): + # Find Uranium via the PYTHONPATH var + uraniumUMPath = where("UM", os.getenv("PYTHONPATH")) + if uraniumUMPath is None: + uraniumUMPath = os.path.join("..", "Uranium") + uraniumPath = os.path.dirname(uraniumUMPath) + + mypyPathParts = [".", os.path.join(".", "plugins"), os.path.join(".", "plugins", "VersionUpgrade"), + uraniumPath, os.path.join(uraniumPath, "stubs")] if sys.platform == "win32": - os.putenv("MYPYPATH", r".;.\plugins;.\plugins\VersionUpgrade;..\Uranium\;..\Uranium\stubs\\" ) + os.putenv("MYPYPATH", ";".join(mypyPathParts)) else: - os.putenv("MYPYPATH", r".:./plugins:./plugins/VersionUpgrade:../Uranium/:../Uranium\stubs/") + os.putenv("MYPYPATH", ":".join(mypyPathParts)) # Mypy really needs to be run via its Python script otherwise it can't find its data files. mypyExe = where("mypy.bat" if sys.platform == "win32" else "mypy")