Mercurial > repos > bcclaywell > argo_navis
diff venv/lib/python2.7/site-packages/pip/operations/freeze.py @ 0:d67268158946 draft
planemo upload commit a3f181f5f126803c654b3a66dd4e83a48f7e203b
author | bcclaywell |
---|---|
date | Mon, 12 Oct 2015 17:43:33 -0400 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/venv/lib/python2.7/site-packages/pip/operations/freeze.py Mon Oct 12 17:43:33 2015 -0400 @@ -0,0 +1,111 @@ +from __future__ import absolute_import + +import logging +import re + +import pip +from pip.compat import stdlib_pkgs +from pip.req import InstallRequirement +from pip.utils import get_installed_distributions +from pip._vendor import pkg_resources + + +logger = logging.getLogger(__name__) + +# packages to exclude from freeze output +freeze_excludes = stdlib_pkgs + ['setuptools', 'pip', 'distribute'] + + +def freeze( + requirement=None, + find_links=None, local_only=None, user_only=None, skip_regex=None, + find_tags=False, + default_vcs=None, + isolated=False): + find_links = find_links or [] + skip_match = None + + if skip_regex: + skip_match = re.compile(skip_regex) + + dependency_links = [] + + for dist in pkg_resources.working_set: + if dist.has_metadata('dependency_links.txt'): + dependency_links.extend( + dist.get_metadata_lines('dependency_links.txt') + ) + for link in find_links: + if '#egg=' in link: + dependency_links.append(link) + for link in find_links: + yield '-f %s' % link + installations = {} + for dist in get_installed_distributions(local_only=local_only, + skip=freeze_excludes, + user_only=user_only): + req = pip.FrozenRequirement.from_dist( + dist, + dependency_links, + find_tags=find_tags, + ) + installations[req.name] = req + + if requirement: + with open(requirement) as req_file: + for line in req_file: + if (not line.strip() or + line.strip().startswith('#') or + (skip_match and skip_match.search(line)) or + line.startswith(( + '-r', '--requirement', + '-Z', '--always-unzip', + '-f', '--find-links', + '-i', '--index-url', + '--extra-index-url'))): + yield line.rstrip() + continue + + if 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=default_vcs, + isolated=isolated, + ) + else: + line_req = InstallRequirement.from_line( + line, + isolated=isolated, + ) + + if not line_req.name: + logger.info( + "Skipping line because it's not clear what it " + "would install: %s", + line.strip(), + ) + logger.info( + " (add #egg=PackageName to the URL to avoid" + " this warning)" + ) + elif line_req.name not in installations: + logger.warning( + "Requirement file contains %s, but that package is" + " not installed", + line.strip(), + ) + else: + yield str(installations[line_req.name]).rstrip() + del installations[line_req.name] + + yield( + '## The following requirements were added by ' + 'pip freeze:' + ) + for installation in sorted( + installations.values(), key=lambda x: x.name.lower()): + yield str(installation).rstrip()