summaryrefslogtreecommitdiff
path: root/setuptools/config
diff options
context:
space:
mode:
authorAnderson Bravalheri <andersonbravalheri@gmail.com>2022-03-25 12:51:34 +0000
committerAnderson Bravalheri <andersonbravalheri@gmail.com>2022-03-25 12:58:15 +0000
commitfac2737b118356f37e99e3448dd5366ee58b6fa1 (patch)
treee93ee8550f7342a344d6ab47060b149b640cfb18 /setuptools/config
parent4923d1139be9366b3010a6d6e56d4c4980a0ab6e (diff)
downloadpython-setuptools-git-fac2737b118356f37e99e3448dd5366ee58b6fa1.tar.gz
Avoid unnecessarily changing package_dir
And also avoid using './' paths
Diffstat (limited to 'setuptools/config')
-rw-r--r--setuptools/config/expand.py24
1 files changed, 12 insertions, 12 deletions
diff --git a/setuptools/config/expand.py b/setuptools/config/expand.py
index 3985040c..04442bd8 100644
--- a/setuptools/config/expand.py
+++ b/setuptools/config/expand.py
@@ -292,8 +292,8 @@ def find_packages(
:rtype: list
"""
-
- from setuptools.discovery import remove_nested_packages
+ from setuptools.discovery import construct_package_dir
+ from setuptools.extern.more_itertools import unique_everseen, always_iterable
if namespaces:
from setuptools.discovery import PEP420PackageFinder as PackageFinder
@@ -302,18 +302,18 @@ def find_packages(
root_dir = root_dir or os.curdir
where = kwargs.pop('where', ['.'])
- if isinstance(where, str):
- where = [where]
-
- packages = []
+ packages: List[str] = []
fill_package_dir = {} if fill_package_dir is None else fill_package_dir
- for path in where:
- pkgs = PackageFinder.find(_nest_path(root_dir, path), **kwargs)
+
+ for path in unique_everseen(always_iterable(where)):
+ package_path = _nest_path(root_dir, path)
+ pkgs = PackageFinder.find(package_path, **kwargs)
packages.extend(pkgs)
- if fill_package_dir.get("") != path:
- parent_pkgs = remove_nested_packages(pkgs)
- parent = {pkg: "/".join([path, *pkg.split(".")]) for pkg in parent_pkgs}
- fill_package_dir.update(parent)
+ if pkgs and not (
+ fill_package_dir.get("") == path
+ or os.path.samefile(package_path, root_dir)
+ ):
+ fill_package_dir.update(construct_package_dir(pkgs, path))
return packages