예제 #1
0
 def test_comments_and_joins_case2(self):
     content = textwrap.dedent("""\
       req1\\
       # comment
     """)
     result = preprocess(content, None)
     assert list(result) == [(1, 'req1')]
예제 #2
0
 def test_comments_and_joins_case2(self):
     content = textwrap.dedent("""\
       req1\\
       # comment
     """)
     result = preprocess(content, None)
     assert list(result) == [(1, 'req1')]
예제 #3
0
 def test_comments_and_joins_case3(self):
     content = textwrap.dedent("""\
       req1 \\
       # comment
       req2
     """)
     result = preprocess(content)
     assert list(result) == [(1, 'req1'), (3, 'req2')]
예제 #4
0
 def test_comments_and_joins_case1(self) -> None:
     content = textwrap.dedent("""\
       req1 \\
       # comment \\
       req2
     """)
     result = preprocess(content)
     assert list(result) == [(1, "req1"), (3, "req2")]
예제 #5
0
 def test_skip_regex_after_joining_case2(self, options):
     content = textwrap.dedent("""\
       pattern \\
       line2
       line3
     """)
     skip_requirements_regex = 'pattern'
     result = preprocess(content, skip_requirements_regex)
     assert list(result) == [(3, 'line3')]
예제 #6
0
 def test_skip_regex_after_joining_case2(self, options):
     content = textwrap.dedent("""\
       pattern \\
       line2
       line3
     """)
     options.skip_requirements_regex = 'pattern'
     result = preprocess(content, options)
     assert list(result) == [(3, 'line3')]
예제 #7
0
 def test_skip_regex_after_joining_case1(self, options):
     content = textwrap.dedent("""\
       patt\\
       ern
       line2
     """)
     options.skip_requirements_regex = 'pattern'
     result = preprocess(content, options)
     assert list(result) == [(3, 'line2')]
def parse_requirements(content, session=PipSession(), *args, **kwargs):
    """Customize pip parse_requirements."""
    _content = get_file_content(content, session=session)

    lines_enum = pip_req.preprocess(_content, None)

    for line_number, line in lines_enum:
        try:
            req_iter = pip_req.process_line(line, 'requirements.txt', line_number, None,
                                            None, None, session, None,
                                            use_pep517=None, constraint=None)
            for req in req_iter:
                if req.name:
                    yield normalize_name(req.name)
        except Exception as _exc:
            logger.error('IGNORE: {} T(EXC):{} T(con):{}'
                         .format(str(_exc), type(_exc), type(content)))
            logger.error('IGNORE CONTENT: {}'.format(content))
예제 #9
0
def parse_install_requirements(
        requirements_lock: str,
        extra_pip_args: List[str]) -> List[Tuple[InstallRequirement, str]]:
    ps = PipSession()
    # This is roughly taken from pip._internal.req.req_file.parse_requirements
    # (https://github.com/pypa/pip/blob/21.0.1/src/pip/_internal/req/req_file.py#L127) in order to keep
    # the original line (sort-of, its preprocessed) from the requirements_lock file around, to pass to sub repos
    # as the requirement.
    line_parser = get_line_parser(finder=None)
    parser = RequirementsFileParser(ps, line_parser)
    install_req_and_lines: List[Tuple[InstallRequirement, str]] = []
    _, content = get_file_content(requirements_lock, ps)
    for parsed_line, (_, line) in zip(
            parser.parse(requirements_lock, constraint=False),
            preprocess(content)):
        if parsed_line.is_requirement:
            install_req_and_lines.append(
                (constructors.install_req_from_line(parsed_line.requirement),
                 line))

        else:
            extra_pip_args.extend(shlex.split(line))
    return install_req_and_lines
예제 #10
0
 def test_skip_regex_no_options(self):
     pattern = None
     line = '--extra-index-url Good'
     assert [(1, line)] == list(preprocess(line, pattern))