aboutsummaryrefslogtreecommitdiffstats
path: root/jython-tosca-parser/src/main/resources/Lib/site-packages/pip/commands/show.py
diff options
context:
space:
mode:
Diffstat (limited to 'jython-tosca-parser/src/main/resources/Lib/site-packages/pip/commands/show.py')
-rw-r--r--jython-tosca-parser/src/main/resources/Lib/site-packages/pip/commands/show.py87
1 files changed, 87 insertions, 0 deletions
diff --git a/jython-tosca-parser/src/main/resources/Lib/site-packages/pip/commands/show.py b/jython-tosca-parser/src/main/resources/Lib/site-packages/pip/commands/show.py
new file mode 100644
index 0000000..e0d2bc7
--- /dev/null
+++ b/jython-tosca-parser/src/main/resources/Lib/site-packages/pip/commands/show.py
@@ -0,0 +1,87 @@
+import os
+
+from pip.basecommand import Command
+from pip.log import logger
+from pip._vendor import pkg_resources
+
+
+class ShowCommand(Command):
+ """Show information about one or more installed packages."""
+ name = 'show'
+ usage = """
+ %prog [options] <package> ..."""
+ summary = 'Show information about installed packages.'
+
+ def __init__(self, *args, **kw):
+ super(ShowCommand, self).__init__(*args, **kw)
+ self.cmd_opts.add_option(
+ '-f', '--files',
+ dest='files',
+ action='store_true',
+ default=False,
+ help='Show the full list of installed files for each package.')
+
+ self.parser.insert_option_group(0, self.cmd_opts)
+
+ def run(self, options, args):
+ if not args:
+ logger.warn('ERROR: Please provide a package name or names.')
+ return
+ query = args
+
+ results = search_packages_info(query)
+ print_results(results, options.files)
+
+
+def search_packages_info(query):
+ """
+ Gather details from installed distributions. Print distribution name,
+ version, location, and installed files. Installed files requires a
+ pip generated 'installed-files.txt' in the distributions '.egg-info'
+ directory.
+ """
+ installed = dict(
+ [(p.project_name.lower(), p) for p in pkg_resources.working_set])
+ query_names = [name.lower() for name in query]
+ for dist in [installed[pkg] for pkg in query_names if pkg in installed]:
+ package = {
+ 'name': dist.project_name,
+ 'version': dist.version,
+ 'location': dist.location,
+ 'requires': [dep.project_name for dep in dist.requires()],
+ }
+ file_list = None
+ if isinstance(dist, pkg_resources.DistInfoDistribution):
+ # RECORDs should be part of .dist-info metadatas
+ if dist.has_metadata('RECORD'):
+ lines = dist.get_metadata_lines('RECORD')
+ paths = [l.split(',')[0] for l in lines]
+ paths = [os.path.join(dist.location, p) for p in paths]
+ file_list = [os.path.relpath(p, dist.egg_info)
+ for p in paths]
+ else:
+ # Otherwise use pip's log for .egg-info's
+ if dist.has_metadata('installed-files.txt'):
+ file_list = dist.get_metadata_lines('installed-files.txt')
+ # use and short-circuit to check for None
+ package['files'] = file_list and sorted(file_list)
+ yield package
+
+
+def print_results(distributions, list_all_files):
+ """
+ Print the informations from installed distributions found.
+ """
+ for dist in distributions:
+ logger.notify("---")
+ logger.notify("Name: %s" % dist['name'])
+ logger.notify("Version: %s" % dist['version'])
+ logger.notify("Location: %s" % dist['location'])
+ logger.notify("Requires: %s" % ', '.join(dist['requires']))
+ if list_all_files:
+ logger.notify("Files:")
+ if dist['files'] is not None:
+ for line in dist['files']:
+ logger.notify(" %s" % line.strip())
+ else:
+ logger.notify("Cannot locate installed-files.txt")