Skip to content

Commit 1f74e7e

Browse files
committed
Factor out logic for locating egg-info directories
Why: A named function brings clarity to expressing what is happening.
1 parent 1bfeda6 commit 1f74e7e

File tree

1 file changed

+19
-17
lines changed

1 file changed

+19
-17
lines changed

src/pip/_internal/req/req_install.py

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -673,6 +673,24 @@ def looks_like_virtual_env(path):
673673
os.path.exists(os.path.join(path, 'Scripts', 'Python.exe'))
674674
)
675675

676+
def locate_editable_egg_info(base):
677+
candidates = []
678+
for root, dirs, files in os.walk(base):
679+
for dir_ in vcs.dirnames:
680+
if dir_ in dirs:
681+
dirs.remove(dir_)
682+
# Iterate over a copy of ``dirs``, since mutating
683+
# a list while iterating over it can cause trouble.
684+
# (See https://github.com/pypa/pip/pull/462.)
685+
for dir_ in list(dirs):
686+
if looks_like_virtual_env(os.path.join(root, dir_)):
687+
dirs.remove(dir_)
688+
# Also don't search through tests
689+
elif dir_ == 'test' or dir_ == 'tests':
690+
dirs.remove(dir_)
691+
candidates.extend(os.path.join(root, dir_) for dir_ in dirs)
692+
return [f for f in candidates if f.endswith('.egg-info')]
693+
676694
def depth_of_directory(dir_):
677695
return (
678696
dir_.count(os.path.sep) +
@@ -681,23 +699,7 @@ def depth_of_directory(dir_):
681699

682700
if self.editable:
683701
base = self.source_dir
684-
filenames = []
685-
for root, dirs, files in os.walk(base):
686-
for dir in vcs.dirnames:
687-
if dir in dirs:
688-
dirs.remove(dir)
689-
# Iterate over a copy of ``dirs``, since mutating
690-
# a list while iterating over it can cause trouble.
691-
# (See https://github.com/pypa/pip/pull/462.)
692-
for dir in list(dirs):
693-
if looks_like_virtual_env(os.path.join(root, dir)):
694-
dirs.remove(dir)
695-
# Also don't search through tests
696-
elif dir == 'test' or dir == 'tests':
697-
dirs.remove(dir)
698-
filenames.extend([os.path.join(root, dir)
699-
for dir in dirs])
700-
filenames = [f for f in filenames if f.endswith('.egg-info')]
702+
filenames = locate_editable_egg_info(base)
701703
else:
702704
base = os.path.join(self.setup_py_dir, 'pip-egg-info')
703705
filenames = os.listdir(base)

0 commit comments

Comments
 (0)