|
8 | 8 | import re
|
9 | 9 | import sys
|
10 | 10 |
|
11 |
| -import pkg_resources |
12 |
| -from pip.req import parse_requirements |
| 11 | +from pip.commands.show import search_packages_info |
13 | 12 | from pip.download import PipSession
|
14 |
| -from pip.util import get_installed_distributions, normalize_name |
| 13 | +from pip.req import parse_requirements |
| 14 | +from pip.utils import get_installed_distributions, normalize_name |
15 | 15 |
|
16 | 16 | log = logging.getLogger(__name__)
|
17 | 17 |
|
18 | 18 |
|
19 |
| -# TODO: remove me when pip 1.6 is released (vendored from pypa/pip git) |
20 |
| -def search_packages_info(query): # pragma: no cover |
21 |
| - """ |
22 |
| - Gather details from installed distributions. Print distribution name, |
23 |
| - version, location, and installed files. Installed files requires a |
24 |
| - pip generated 'installed-files.txt' in the distributions '.egg-info' |
25 |
| - directory. |
26 |
| - """ |
27 |
| - installed = dict( |
28 |
| - [(p.project_name.lower(), p) for p in pkg_resources.working_set]) |
29 |
| - query_names = [name.lower() for name in query] |
30 |
| - for dist in [installed[pkg] for pkg in query_names if pkg in installed]: |
31 |
| - package = { |
32 |
| - 'name': dist.project_name, |
33 |
| - 'version': dist.version, |
34 |
| - 'location': dist.location, |
35 |
| - 'requires': [dep.project_name for dep in dist.requires()], |
36 |
| - } |
37 |
| - file_list = None |
38 |
| - if isinstance(dist, pkg_resources.DistInfoDistribution): |
39 |
| - # RECORDs should be part of .dist-info metadatas |
40 |
| - if dist.has_metadata('RECORD'): |
41 |
| - lines = dist.get_metadata_lines('RECORD') |
42 |
| - paths = [l.split(',')[0] for l in lines] |
43 |
| - paths = [os.path.join(dist.location, p) for p in paths] |
44 |
| - file_list = [os.path.relpath(p, dist.location) for p in paths] |
45 |
| - else: |
46 |
| - # Otherwise use pip's log for .egg-info's |
47 |
| - if dist.has_metadata('installed-files.txt'): |
48 |
| - paths = dist.get_metadata_lines('installed-files.txt') |
49 |
| - paths = [os.path.join(dist.egg_info, p) for p in paths] |
50 |
| - file_list = [os.path.relpath(p, dist.location) for p in paths] |
51 |
| - # use and short-circuit to check for None |
52 |
| - package['files'] = file_list and sorted(file_list) |
53 |
| - yield package |
54 |
| - |
55 |
| - |
56 | 19 | class FoundModule:
|
57 | 20 | def __init__(self, modname, filename, locations=None):
|
58 | 21 | self.modname = modname
|
|
0 commit comments