From 1b228fa0e3f07c73de0053985565293b795e6e96 Mon Sep 17 00:00:00 2001 From: Tim Savannah Date: Tue, 5 Jul 2016 16:35:17 -0400 Subject: Skip empty egg directories, which may be leftover from previous installations --- pkg_resources/__init__.py | 3 +++ 1 file changed, 3 insertions(+) (limited to 'pkg_resources') diff --git a/pkg_resources/__init__.py b/pkg_resources/__init__.py index 15cb93fd..35725c06 100644 --- a/pkg_resources/__init__.py +++ b/pkg_resources/__init__.py @@ -1975,6 +1975,9 @@ def find_on_path(importer, path_item, only=False): fullpath = os.path.join(path_item, entry) if os.path.isdir(fullpath): # egg-info directory, allow getting metadata + if len(os.listdir(fullpath)) == 0: + # Empty egg directory, skip. + continue metadata = PathMetadata(path_item, fullpath) else: metadata = FileMetadata(fullpath) -- cgit v1.2.3 From fb1867e305660161c2960dfcfc5a95d41310e19d Mon Sep 17 00:00:00 2001 From: Tim Savannah Date: Tue, 5 Jul 2016 16:37:26 -0400 Subject: Scan for distributions in reverse order, so we find the newest version of a distribution (instead of the oldest) --- pkg_resources/__init__.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'pkg_resources') diff --git a/pkg_resources/__init__.py b/pkg_resources/__init__.py index 35725c06..645eda81 100644 --- a/pkg_resources/__init__.py +++ b/pkg_resources/__init__.py @@ -1969,7 +1969,11 @@ def find_on_path(importer, path_item, only=False): ) else: # scan for .egg and .egg-info in directory - for entry in os.listdir(path_item): + + path_item_entries = os.listdir(path_item) + # Reverse so we find the newest version of a distribution, + path_item_entries.reverse() + for entry in path_item_entries: lower = entry.lower() if lower.endswith('.egg-info') or lower.endswith('.dist-info'): fullpath = os.path.join(path_item, entry) -- cgit v1.2.3 From e0805ec6a33ff22977723258a99f0184a508bef2 Mon Sep 17 00:00:00 2001 From: Tim Savannah Date: Tue, 5 Jul 2016 18:47:53 -0400 Subject: Ammend: fb1867e305660161c2960dfcfc5a95d41310e19d add missing sort --- pkg_resources/__init__.py | 1 + 1 file changed, 1 insertion(+) (limited to 'pkg_resources') diff --git a/pkg_resources/__init__.py b/pkg_resources/__init__.py index 645eda81..72b03bc1 100644 --- a/pkg_resources/__init__.py +++ b/pkg_resources/__init__.py @@ -1972,6 +1972,7 @@ def find_on_path(importer, path_item, only=False): path_item_entries = os.listdir(path_item) # Reverse so we find the newest version of a distribution, + path_item_entries.sort() path_item_entries.reverse() for entry in path_item_entries: lower = entry.lower() -- cgit v1.2.3