Skip to content

Commit a40c4ed

Browse files
authored
Sync updates to generate_requirements.py from scikit-image (numpy#485)
1 parent 94ef7f0 commit a40c4ed

7 files changed

+44
-13
lines changed

.pre-commit-config.yaml

+3-3
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@ repos:
4141

4242
- repo: local
4343
hooks:
44-
- id: pyproject.toml
45-
name: pyproject.toml
44+
- id: generate_requirements.py
45+
name: generate_requirements.py
4646
language: system
4747
entry: python tools/generate_requirements.py
48-
files: "pyproject.toml|requirements/.*\\.txt|tools/.*generate.*"
48+
files: "pyproject.toml|requirements/.*\\.txt|tools/generate_requirements.py"

pyproject.toml

+4
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,10 @@ Homepage = 'https://numpydoc.readthedocs.io'
4343
Source = 'https://github.com/numpy/numpydoc/'
4444

4545
[project.optional-dependencies]
46+
developer = [
47+
'pre-commit>=3.3',
48+
"tomli; python_version < '3.11'",
49+
]
4650
doc = [
4751
'numpy>=1.22',
4852
'matplotlib>=3.5',

requirements/default.txt

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
# Generated via tools/generate_requirements.py and pre-commit hook.
2+
# Do not edit this file; modify pyproject.toml instead.
3+
sphinx>=5
4+
Jinja2>=2.10
5+
tabulate>=0.8.10
6+
tomli>=1.1.0;python_version<'3.11'

requirements/developer.txt

+2
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,4 @@
1+
# Generated via tools/generate_requirements.py and pre-commit hook.
2+
# Do not edit this file; modify pyproject.toml instead.
13
pre-commit>=3.3
24
tomli; python_version < '3.11'

requirements/doc.txt

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
# Generated from pyproject.toml
1+
# Generated via tools/generate_requirements.py and pre-commit hook.
2+
# Do not edit this file; modify pyproject.toml instead.
23
numpy>=1.22
34
matplotlib>=3.5
45
pydata-sphinx-theme>=0.13

requirements/test.txt

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
# Generated from pyproject.toml
1+
# Generated via tools/generate_requirements.py and pre-commit hook.
2+
# Do not edit this file; modify pyproject.toml instead.
23
pytest
34
pytest-cov
45
matplotlib

tools/generate_requirements.py

+25-8
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,28 @@
1212
except ImportError:
1313
sys.exit("Please install `tomli` first: `pip install tomli`")
1414

15-
repo_dir = (Path(__file__).parent / "..").resolve()
16-
req_dir = repo_dir / "requirements"
17-
pyproject = toml.loads((repo_dir / "pyproject.toml").read_text())
18-
19-
for key, opt_list in pyproject["project"]["optional-dependencies"].items():
20-
lines = ["# Generated from pyproject.toml"] + opt_list
21-
req_fname = req_dir / f"{key}.txt"
22-
req_fname.write_text("\n".join(lines) + "\n")
15+
script_pth = Path(__file__)
16+
repo_dir = script_pth.parent.parent
17+
script_relpth = script_pth.relative_to(repo_dir)
18+
header = [
19+
f"# Generated via {script_relpth.as_posix()} and pre-commit hook.",
20+
"# Do not edit this file; modify pyproject.toml instead.",
21+
]
22+
23+
24+
def generate_requirement_file(name: str, req_list: list[str]) -> None:
25+
req_fname = repo_dir / "requirements" / f"{name}.txt"
26+
req_fname.write_text("\n".join(header + req_list) + "\n")
27+
28+
29+
def main() -> None:
30+
pyproject = toml.loads((repo_dir / "pyproject.toml").read_text())
31+
32+
generate_requirement_file("default", pyproject["project"]["dependencies"])
33+
34+
for key, opt_list in pyproject["project"]["optional-dependencies"].items():
35+
generate_requirement_file(key, opt_list)
36+
37+
38+
if __name__ == "__main__":
39+
main()

0 commit comments

Comments
 (0)