diff options
author | 2017-03-29 13:35:45 +0300 | |
---|---|---|
committer | 2017-03-29 13:35:45 +0300 | |
commit | e2cc2530fc6d54ebc975c01a4ff887ce12f0a736 (patch) | |
tree | 38385867295c8a09fb0d7f8eaf5fa78179e5b13a /jython-tosca-parser/src/main/resources/Lib/site-packages/pip/commands/freeze.py | |
parent | bccebaa9888906f8ff78172f62ec592956066d82 (diff) |
[SDC-6] sdc-distribution-client 1707 rebasing
Change-Id: I322a05fd79beb6ba4fee4d32afffecf531b86e98
Signed-off-by: Pavel Aharoni <pa0916@att.com>
Diffstat (limited to 'jython-tosca-parser/src/main/resources/Lib/site-packages/pip/commands/freeze.py')
-rw-r--r-- | jython-tosca-parser/src/main/resources/Lib/site-packages/pip/commands/freeze.py | 133 |
1 files changed, 133 insertions, 0 deletions
diff --git a/jython-tosca-parser/src/main/resources/Lib/site-packages/pip/commands/freeze.py b/jython-tosca-parser/src/main/resources/Lib/site-packages/pip/commands/freeze.py new file mode 100644 index 0000000..2d5b10d --- /dev/null +++ b/jython-tosca-parser/src/main/resources/Lib/site-packages/pip/commands/freeze.py @@ -0,0 +1,133 @@ +import re +import sys +import pip + +from pip.backwardcompat import stdlib_pkgs +from pip.req import InstallRequirement +from pip.log import logger +from pip.basecommand import Command +from pip.util import get_installed_distributions + +# packages to exclude from freeze output +freeze_excludes = stdlib_pkgs + ['setuptools', 'pip', 'distribute'] + + +class FreezeCommand(Command): + """ + Output installed packages in requirements format. + + packages are listed in a case-insensitive sorted order. + """ + name = 'freeze' + usage = """ + %prog [options]""" + summary = 'Output installed packages in requirements format.' + + def __init__(self, *args, **kw): + super(FreezeCommand, self).__init__(*args, **kw) + + self.cmd_opts.add_option( + '-r', '--requirement', + dest='requirement', + action='store', + default=None, + metavar='file', + help="Use the order in the given requirements file and its " + "comments when generating output.") + self.cmd_opts.add_option( + '-f', '--find-links', + dest='find_links', + action='append', + default=[], + metavar='URL', + help='URL for finding packages, which will be added to the ' + 'output.') + self.cmd_opts.add_option( + '-l', '--local', + dest='local', + action='store_true', + default=False, + help='If in a virtualenv that has global access, do not output ' + 'globally-installed packages.') + + self.parser.insert_option_group(0, self.cmd_opts) + + def setup_logging(self): + logger.move_stdout_to_stderr() + + def run(self, options, args): + requirement = options.requirement + find_links = options.find_links or [] + local_only = options.local + # FIXME: Obviously this should be settable: + find_tags = False + skip_match = None + + skip_regex = options.skip_requirements_regex + if skip_regex: + skip_match = re.compile(skip_regex) + + f = sys.stdout + + for link in find_links: + f.write('-f %s\n' % link) + installations = {} + for dist in get_installed_distributions(local_only=local_only, + skip=freeze_excludes): + req = pip.FrozenRequirement.from_dist(dist, find_tags=find_tags) + installations[req.name] = req + if requirement: + req_f = open(requirement) + for line in req_f: + if not line.strip() or line.strip().startswith('#'): + f.write(line) + continue + if skip_match and skip_match.search(line): + f.write(line) + continue + elif line.startswith('-e') or line.startswith('--editable'): + if line.startswith('-e'): + line = line[2:].strip() + else: + line = line[len('--editable'):].strip().lstrip('=') + line_req = InstallRequirement.from_editable( + line, + default_vcs=options.default_vcs + ) + elif (line.startswith('-r') + or line.startswith('--requirement') + or line.startswith('-Z') + or line.startswith('--always-unzip') + or line.startswith('-f') + or line.startswith('-i') + or line.startswith('--extra-index-url') + or line.startswith('--find-links') + or line.startswith('--index-url')): + f.write(line) + continue + else: + line_req = InstallRequirement.from_line(line) + if not line_req.name: + logger.notify( + "Skipping line because it's not clear what it would " + "install: %s" % line.strip() + ) + logger.notify( + " (add #egg=PackageName to the URL to avoid" + " this warning)" + ) + continue + if line_req.name not in installations: + logger.warn( + "Requirement file contains %s, but that package is not" + " installed" % line.strip() + ) + continue + f.write(str(installations[line_req.name])) + del installations[line_req.name] + f.write( + '## The following requirements were added by pip --freeze:\n' + ) + for installation in sorted( + installations.values(), key=lambda x: x.name.lower()): + f.write(str(installation)) |