diff options
| author | Jason R. Coombs <jaraco@jaraco.com> | 2017-09-09 12:26:51 -0400 |
|---|---|---|
| committer | Jason R. Coombs <jaraco@jaraco.com> | 2017-09-09 12:26:51 -0400 |
| commit | d3fc6036c7fe25ee7ffee3fc9f0b75f2b9d5a58a (patch) | |
| tree | 742e8618991a9d5f604ad962f435b61e9ac02915 /pkg_resources/__init__.py | |
| parent | 6f10cff41ca441a91ddb9182c591a4a2e170633a (diff) | |
| download | python-setuptools-git-d3fc6036c7fe25ee7ffee3fc9f0b75f2b9d5a58a.tar.gz | |
Screen entries before sorting in find_on_path. Ref #1134.
Diffstat (limited to 'pkg_resources/__init__.py')
| -rw-r--r-- | pkg_resources/__init__.py | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/pkg_resources/__init__.py b/pkg_resources/__init__.py index 0f5dd238..68349df4 100644 --- a/pkg_resources/__init__.py +++ b/pkg_resources/__init__.py @@ -2032,8 +2032,17 @@ def find_on_path(importer, path_item, only=False): entries = safe_listdir(path_item) + # for performance, before sorting by version, + # screen entries for only those that will yield + # distributions + filtered = ( + entry + for entry in entries + if dist_factory(path_item, entry, only) + ) + # scan for .egg and .egg-info in directory - path_item_entries = _by_version_descending(entries) + path_item_entries = _by_version_descending(filtered) for entry in path_item_entries: fullpath = os.path.join(path_item, entry) factory = dist_factory(path_item, entry, only) @@ -2042,6 +2051,9 @@ def find_on_path(importer, path_item, only=False): def dist_factory(path_item, entry, only): + """ + Return a dist_factory for a path_item and entry + """ lower = entry.lower() is_meta = any(map(lower.endswith, ('.egg-info', '.dist-info'))) return ( |
