Mercurial > repos > bcclaywell > argo_navis
diff venv/lib/python2.7/site-packages/pip/req/req_file.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/req/req_file.py Mon Oct 12 17:43:33 2015 -0400 @@ -0,0 +1,137 @@ +from __future__ import absolute_import + +import os +import re + +from pip._vendor.six.moves.urllib import parse as urllib_parse + +from pip.download import get_file_content +from pip.req.req_install import InstallRequirement +from pip.utils import normalize_name + +_scheme_re = re.compile(r'^(http|https|file):', re.I) + + +def _remove_prefixes(line, short_prefix, long_prefix): + if line.startswith(short_prefix): + return line[len(short_prefix):].lstrip() + else: + return _remove_prefix(line, long_prefix) + + +def _remove_prefix(line, prefix): + """Remove the prefix and eventually one '=' or spaces""" + return re.sub(r'\s*=?\s*', '', line[len(prefix):]) + + +def parse_requirements(filename, finder=None, comes_from=None, options=None, + session=None): + if session is None: + raise TypeError( + "parse_requirements() missing 1 required keyword argument: " + "'session'" + ) + + skip_match = None + skip_regex = options.skip_requirements_regex if options else None + if skip_regex: + skip_match = re.compile(skip_regex) + reqs_file_dir = os.path.dirname(os.path.abspath(filename)) + filename, content = get_file_content( + filename, + comes_from=comes_from, + session=session, + ) + for line_number, line in enumerate(content.splitlines(), 1): + line = line.strip() + + # Remove comments from file and all spaces before it + line = re.sub(r"(^|\s)+#.*$", "", line) + + if not line: + continue + if skip_match and skip_match.search(line): + continue + if line.startswith(('-r', '--requirement')): + req_url = _remove_prefixes(line, '-r', '--requirement') + if _scheme_re.search(filename): + # Relative to a URL + req_url = urllib_parse.urljoin(filename, req_url) + elif not _scheme_re.search(req_url): + req_url = os.path.join(os.path.dirname(filename), req_url) + for item in parse_requirements( + req_url, finder, + comes_from=filename, + options=options, + session=session): + yield item + elif line.startswith(('-Z', '--always-unzip')): + # No longer used, but previously these were used in + # requirement files, so we'll ignore. + pass + elif line.startswith(('-f', '--find-links')): + find_links = _remove_prefixes(line, '-f', '--find-links') + # FIXME: it would be nice to keep track of the source of + # the find_links: + # support a find-links local path relative to a requirements file + relative_to_reqs_file = os.path.join(reqs_file_dir, find_links) + if os.path.exists(relative_to_reqs_file): + find_links = relative_to_reqs_file + if finder: + finder.find_links.append(find_links) + elif line.startswith(('-i', '--index-url')): + index_url = _remove_prefixes(line, '-i', '--index-url') + if finder: + finder.index_urls = [index_url] + elif line.startswith('--extra-index-url'): + line = _remove_prefix(line, '--extra-index-url') + if finder: + finder.index_urls.append(line) + elif line.startswith('--use-wheel'): + # Default in 1.5 + pass + elif line.startswith('--no-use-wheel'): + if finder: + finder.use_wheel = False + elif line.startswith('--no-index'): + if finder: + finder.index_urls = [] + elif line.startswith("--allow-external"): + line = _remove_prefix(line, '--allow-external') + if finder: + finder.allow_external |= set([normalize_name(line).lower()]) + elif line.startswith("--allow-all-external"): + if finder: + finder.allow_all_external = True + # Remove in 7.0 + elif line.startswith("--no-allow-external"): + pass + # Remove in 7.0 + elif line.startswith("--no-allow-insecure"): + pass + # Remove after 7.0 + elif line.startswith("--allow-insecure"): + line = _remove_prefix(line, '--allow-insecure') + if finder: + finder.allow_unverified |= set([normalize_name(line).lower()]) + elif line.startswith("--allow-unverified"): + line = _remove_prefix(line, '--allow-unverified') + if finder: + finder.allow_unverified |= set([normalize_name(line).lower()]) + else: + comes_from = '-r %s (line %s)' % (filename, line_number) + if line.startswith(('-e', '--editable')): + editable = _remove_prefixes(line, '-e', '--editable') + req = InstallRequirement.from_editable( + editable, + comes_from=comes_from, + default_vcs=options.default_vcs if options else None, + isolated=options.isolated_mode if options else False, + ) + else: + req = InstallRequirement.from_line( + line, + comes_from, + isolated=options.isolated_mode if options else False, + ) + yield req