Exemple #1
0
def write_to_req_files(file_reqs, session, env_filename, uniq_reqs,
                       installations):
    # first step process the requirements and split them into separate for each of the file
    for filename in file_reqs:  # type: str
        _, content = get_file_content(filename, session=session)

        orig_lines = enumerate(content.splitlines(), start=1)
        joined_lines = req_file.join_lines(orig_lines)
        lines = OrderedDict(joined_lines)

        # 1. save new requirements
        if filename == env_filename:
            installed = set(installations.keys()).difference(
                set(uniq_reqs.keys()))
            for new_req in installed:
                line_num = len(lines) + 1
                lines[line_num] = str(installations[new_req]).strip()

        for req in file_reqs[filename]:
            frozenrequirement = installations.get(req.name)
            if frozenrequirement:
                # 2. updates
                lines[req.line_num] = str(frozenrequirement).strip()
            else:
                # 3. removals
                lines.pop(req.line_num)

        # 4. finally write to file
        with open(filename, "wb") as f:
            for line in lines:
                cnt = lines[line].strip()
                if cnt:
                    f.write((cnt + "\n").encode("utf-8"))
Exemple #2
0
 def test_last_line_with_escape(self):
     lines = enumerate([
         'line 1',
         'line 2 \\',
     ], start=1)
     expect = [
         (1, 'line 1'),
         (2, 'line 2 '),
     ]
     assert expect == list(join_lines(lines))
Exemple #3
0
 def test_last_line_with_escape(self):
     lines = enumerate([
         'line 1',
         'line 2 \\',
     ], start=1)
     expect = [
         (1, 'line 1'),
         (2, 'line 2 '),
     ]
     assert expect == list(join_lines(lines))
Exemple #4
0
 def test_join_lines(self):
     lines = enumerate([
         'line 1', 'line 2:1 \\', 'line 2:2', 'line 3:1 \\', 'line 3:2 \\',
         'line 3:3', 'line 4'
     ],
                       start=1)
     expect = [
         (1, 'line 1'),
         (2, 'line 2:1 line 2:2'),
         (4, 'line 3:1 line 3:2 line 3:3'),
         (7, 'line 4'),
     ]
     assert expect == list(join_lines(lines))
Exemple #5
0
 def test_last_line_with_escape(self) -> None:
     lines = enumerate(
         [
             "line 1",
             "line 2 \\",
         ],
         start=1,
     )
     expect = [
         (1, "line 1"),
         (2, "line 2 "),
     ]
     assert expect == list(join_lines(lines))
Exemple #6
0
 def test_join_lines(self):
     lines = enumerate([
         'line 1',
         'line 2:1 \\',
         'line 2:2',
         'line 3:1 \\',
         'line 3:2 \\',
         'line 3:3',
         'line 4'
     ], start=1)
     expect = [
         (1, 'line 1'),
         (2, 'line 2:1 line 2:2'),
         (4, 'line 3:1 line 3:2 line 3:3'),
         (7, 'line 4'),
     ]
     assert expect == list(join_lines(lines))
Exemple #7
0
 def test_join_lines(self) -> None:
     lines = enumerate(
         [
             "line 1",
             "line 2:1 \\",
             "line 2:2",
             "line 3:1 \\",
             "line 3:2 \\",
             "line 3:3",
             "line 4",
         ],
         start=1,
     )
     expect = [
         (1, "line 1"),
         (2, "line 2:1 line 2:2"),
         (4, "line 3:1 line 3:2 line 3:3"),
         (7, "line 4"),
     ]
     assert expect == list(join_lines(lines))