scikit-image
39 строк · 1.1 Кб
1#!/usr/bin/env python
2"""Generate requirements/*.txt files from pyproject.toml."""
3
4import sys
5from pathlib import Path
6
7try: # standard module since Python 3.11
8import tomllib as toml
9except ImportError:
10try: # available for older Python via pip
11import tomli as toml
12except ImportError:
13sys.exit("Please install `tomli` first: `pip install tomli`")
14
15script_pth = Path(__file__)
16repo_dir = script_pth.parent.parent
17script_relpth = script_pth.relative_to(repo_dir)
18header = [
19f"# Generated via {script_relpth.as_posix()} and pre-commit hook.",
20"# Do not edit this file; modify pyproject.toml instead.",
21]
22
23
24def generate_requirement_file(name: str, req_list: list[str]) -> None:
25req_fname = repo_dir / "requirements" / f"{name}.txt"
26req_fname.write_text("\n".join(header + req_list) + "\n")
27
28
29def main() -> None:
30pyproject = toml.loads((repo_dir / "pyproject.toml").read_text())
31
32generate_requirement_file("default", pyproject["project"]["dependencies"])
33
34for key, opt_list in pyproject["project"]["optional-dependencies"].items():
35generate_requirement_file(key, opt_list)
36
37
38if __name__ == "__main__":
39main()
40