diff options
Diffstat (limited to 'jython-tosca-parser/src/main/resources/Lib/site-packages/pip/req/req_file.py')
-rw-r--r-- | jython-tosca-parser/src/main/resources/Lib/site-packages/pip/req/req_file.py | 122 |
1 files changed, 122 insertions, 0 deletions
diff --git a/jython-tosca-parser/src/main/resources/Lib/site-packages/pip/req/req_file.py b/jython-tosca-parser/src/main/resources/Lib/site-packages/pip/req/req_file.py new file mode 100644 index 0000000..c94e104 --- /dev/null +++ b/jython-tosca-parser/src/main/resources/Lib/site-packages/pip/req/req_file.py @@ -0,0 +1,122 @@ +import os +import re + +from pip.backwardcompat import urlparse +from pip.download import PipSession, get_file_content +from pip.req.req_install import InstallRequirement +from pip.util import normalize_name + +_scheme_re = re.compile(r'^(http|https|file):', re.I) + + +def parse_requirements(filename, finder=None, comes_from=None, options=None, + session=None): + if session is None: + session = PipSession() + + 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()): + line_number += 1 + line = line.strip() + + # Remove comments from file + line = re.sub(r"(^|\s)#.*$", "", line) + + if not line or line.startswith('#'): + continue + if skip_match and skip_match.search(line): + continue + if line.startswith('-r') or line.startswith('--requirement'): + if line.startswith('-r'): + req_url = line[2:].strip() + else: + req_url = line[len('--requirement'):].strip().strip('=') + if _scheme_re.search(filename): + # Relative to a URL + req_url = urlparse.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') or line.startswith('--always-unzip'): + # No longer used, but previously these were used in + # requirement files, so we'll ignore. + pass + elif line.startswith('-f') or line.startswith('--find-links'): + if line.startswith('-f'): + line = line[2:].strip() + else: + line = line[len('--find-links'):].strip().lstrip('=') + # 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, line) + if os.path.exists(relative_to_reqs_file): + line = relative_to_reqs_file + if finder: + finder.find_links.append(line) + elif line.startswith('-i') or line.startswith('--index-url'): + if line.startswith('-i'): + line = line[2:].strip() + else: + line = line[len('--index-url'):].strip().lstrip('=') + if finder: + finder.index_urls = [line] + elif line.startswith('--extra-index-url'): + line = line[len('--extra-index-url'):].strip().lstrip('=') + if finder: + finder.index_urls.append(line) + elif line.startswith('--use-wheel'): + finder.use_wheel = True + elif line.startswith('--no-index'): + finder.index_urls = [] + elif line.startswith("--allow-external"): + line = line[len("--allow-external"):].strip().lstrip("=") + finder.allow_external |= set([normalize_name(line).lower()]) + elif line.startswith("--allow-all-external"): + finder.allow_all_external = True + # Remove in 1.7 + elif line.startswith("--no-allow-external"): + pass + # Remove in 1.7 + elif line.startswith("--no-allow-insecure"): + pass + # Remove after 1.7 + elif line.startswith("--allow-insecure"): + line = line[len("--allow-insecure"):].strip().lstrip("=") + finder.allow_unverified |= set([normalize_name(line).lower()]) + elif line.startswith("--allow-unverified"): + line = line[len("--allow-unverified"):].strip().lstrip("=") + finder.allow_unverified |= set([normalize_name(line).lower()]) + else: + comes_from = '-r %s (line %s)' % (filename, line_number) + if line.startswith('-e') or line.startswith('--editable'): + if line.startswith('-e'): + line = line[2:].strip() + else: + line = line[len('--editable'):].strip().lstrip('=') + req = InstallRequirement.from_editable( + line, + comes_from=comes_from, + default_vcs=options.default_vcs if options else None + ) + else: + req = InstallRequirement.from_line( + line, + comes_from, + prereleases=getattr(options, "pre", None) + ) + yield req |