def load_pip_requirements(self, files_map=None, freeze=True):
        if files_map is None:
            files_map = self.default_pip_files
        for group, requirements_txt in files_map.items():
            path = Path(requirements_txt)
            if not path.exists() and group.lower() == "all" and freeze:
                cmd = envoy.run("pip freeze")
                self[group].loads(cmd.std_out)
            elif path.exists():
                self[group].load(path)
def test_parse_sections():
    simple_mariofile_sections = dict(mariofile.parse_sections(SIMPLE_MARIOFILE.splitlines(True)))
    assert len(simple_mariofile_sections) == 3
    complex_mariofile_sections = dict(mariofile.parse_sections(COMPLEX_MARIOFILE.splitlines(True)))
    assert len(complex_mariofile_sections) == 2
    assert sorted(complex_mariofile_sections.keys()) == ['DEFAULT', 'section']
    assert complex_mariofile_sections['DEFAULT'] == ['default text\n', '\n']
    with pytest.raises(mariofile.ConfigurationFileError):
        dict(mariofile.parse_sections(GARBAGE_MARIOFILE.splitlines(True)))
    with pytest.raises(mariofile.ConfigurationFileError):
        dict(mariofile.parse_sections(INVALID_SECTION_MARIOFILE.splitlines(True)))
    more_complex_mariofile_sections = dict(
            mariofile.parse_sections(MORE_COMPLEX_MARIOFILE.splitlines(True))
    )
    more_complex_mariofile_sections_keys = ['DEFAULT', 'section_one', 'section_two', 'three']
    assert sorted(more_complex_mariofile_sections.keys()) == more_complex_mariofile_sections_keys
    assert more_complex_mariofile_sections['three'] == []