Skip to content

Commit 5788bd7

Browse files
committed
debugging for non-interactive usage of pip
1 parent 02f1a94 commit 5788bd7

File tree

4 files changed

+45
-43
lines changed

4 files changed

+45
-43
lines changed

pip_check_reqs/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__ = '2.0.2'
1+
__version__ = '2.0.3'

pip_check_reqs/common.py

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import imp
44
import logging
55
import os
6+
import pkg_resources
67
import re
78

89
from packaging.utils import canonicalize_name
@@ -155,3 +156,43 @@ def f(candidate, ignore_cfg=ignore_cfg):
155156
return True
156157
return False
157158
return f
159+
160+
161+
def search_packages_info(query):
162+
"""
163+
Gather details from installed distributions. Print distribution name,
164+
version, location, and installed files. Installed files requires a
165+
pip generated 'installed-files.txt' in the distributions '.egg-info'
166+
directory.
167+
"""
168+
installed = {}
169+
for p in pkg_resources.working_set:
170+
installed[canonicalize_name(p.project_name)] = p
171+
172+
query_names = [canonicalize_name(name) for name in query]
173+
174+
for dist in [installed[pkg] for pkg in query_names if pkg in installed]:
175+
package = {
176+
'name': dist.project_name,
177+
'version': dist.version,
178+
'location': dist.location,
179+
'requires': [dep.project_name for dep in dist.requires()],
180+
}
181+
file_list = None
182+
if isinstance(dist, pkg_resources.DistInfoDistribution):
183+
# RECORDs should be part of .dist-info metadatas
184+
if dist.has_metadata('RECORD'):
185+
lines = dist.get_metadata_lines('RECORD')
186+
paths = [l.split(',')[0] for l in lines]
187+
paths = [os.path.join(dist.location, p) for p in paths]
188+
file_list = [os.path.relpath(p, dist.location) for p in paths]
189+
else:
190+
# Otherwise use pip's log for .egg-info's
191+
if dist.has_metadata('installed-files.txt'):
192+
paths = dist.get_metadata_lines('installed-files.txt')
193+
paths = [os.path.join(dist.egg_info, p) for p in paths]
194+
file_list = [os.path.relpath(p, dist.location) for p in paths]
195+
196+
if file_list:
197+
package['files'] = sorted(file_list)
198+
yield package

pip_check_reqs/find_extra_reqs.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,10 @@
55
import sys
66

77
from packaging.utils import canonicalize_name
8-
from pip._internal.commands.show import search_packages_info
8+
#from pip._internal.commands.show import search_packages_info
99
from pip._internal.utils.misc import get_installed_distributions
1010
from pip_check_reqs import common
11+
from pip_check_reqs.common import search_packages_info
1112

1213
log = logging.getLogger(__name__)
1314

pip_check_reqs/find_missing_reqs.py

Lines changed: 1 addition & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
import logging
33
import optparse
44
import os
5-
import pkg_resources
65
import sys
76

87
from packaging.utils import canonicalize_name
@@ -12,50 +11,11 @@
1211
from pip._internal.utils.misc import get_installed_distributions
1312

1413
from pip_check_reqs import common
14+
from pip_check_reqs.common import search_packages_info
1515

1616
log = logging.getLogger(__name__)
1717

1818

19-
def search_packages_info(query):
20-
"""
21-
Gather details from installed distributions. Print distribution name,
22-
version, location, and installed files. Installed files requires a
23-
pip generated 'installed-files.txt' in the distributions '.egg-info'
24-
directory.
25-
"""
26-
installed = {}
27-
for p in pkg_resources.working_set:
28-
installed[canonicalize_name(p.project_name)] = p
29-
30-
query_names = [canonicalize_name(name) for name in query]
31-
32-
for dist in [installed[pkg] for pkg in query_names if pkg in installed]:
33-
package = {
34-
'name': dist.project_name,
35-
'version': dist.version,
36-
'location': dist.location,
37-
'requires': [dep.project_name for dep in dist.requires()],
38-
}
39-
file_list = None
40-
if isinstance(dist, pkg_resources.DistInfoDistribution):
41-
# RECORDs should be part of .dist-info metadatas
42-
if dist.has_metadata('RECORD'):
43-
lines = dist.get_metadata_lines('RECORD')
44-
paths = [l.split(',')[0] for l in lines]
45-
paths = [os.path.join(dist.location, p) for p in paths]
46-
file_list = [os.path.relpath(p, dist.location) for p in paths]
47-
else:
48-
# Otherwise use pip's log for .egg-info's
49-
if dist.has_metadata('installed-files.txt'):
50-
paths = dist.get_metadata_lines('installed-files.txt')
51-
paths = [os.path.join(dist.egg_info, p) for p in paths]
52-
file_list = [os.path.relpath(p, dist.location) for p in paths]
53-
54-
if file_list:
55-
package['files'] = sorted(file_list)
56-
yield package
57-
58-
5919
def find_missing_reqs(options):
6020
# 1. find files used by imports in the code (as best we can without
6121
# executing)

0 commit comments

Comments
 (0)