From 8247aebbe51e3617658189602fcf40b8d5e28af4 Mon Sep 17 00:00:00 2001 From: Ethan Smith Date: Tue, 21 Nov 2017 23:16:21 -0800 Subject: [PATCH] Begin implementing PEP 561 checking This is the initial work to add packages that opt into type checking via PEP 561. --- mypy/build.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/mypy/build.py b/mypy/build.py index cdf214d7e69f..896e25add09a 100644 --- a/mypy/build.py +++ b/mypy/build.py @@ -792,6 +792,21 @@ def find() -> Optional[str]: dir = os.path.normpath(os.path.join(pathitem, dir_chain)) if os.path.isdir(dir): dirs.append(dir) + try: + user_dir = site.getusersitepackages() + package_dirs = site.getsitepackages() + [user_dir] + except AttributeError: + package_dirs = [get_python_lib()] + + for pkg_dir in package_dirs: + # Third-party stub packages + stub_pkg = os.path.join(pkg_dir, components[0] + '_stubs') + if os.path.isfile(os.path.join(stub_pkg, 'py.typed')): + components[0] = components[0] + '_stubs' + dirs.append(os.path.join(pkg_dir, os.sep.join(components[:-1]))) + elif os.path.isfile(os.path.join(pkg_dir, components[0], 'py.typed')): + dirs.append(os.path.join(pkg_dir, dir_chain)) + find_module_dir_cache[dir_chain, lib_path] = dirs candidate_base_dirs = find_module_dir_cache[dir_chain, lib_path]