Skip to content

Commit

Permalink
Merge pull request #809 from sirosen/validate-python-requires
Browse files Browse the repository at this point in the history
Validate Requires-Python metadata against the "mindeps" build in CI config
  • Loading branch information
sirosen authored Oct 4, 2023
2 parents 4cbda72 + b113409 commit 933d677
Show file tree
Hide file tree
Showing 3 changed files with 73 additions and 0 deletions.
2 changes: 2 additions & 0 deletions .github/workflows/build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -86,3 +86,5 @@ jobs:
run: python -m pip install -U tox
- name: check package metadata
run: python -m tox -e twine-check,poetry-check
- name: check min version is tested in CI
run: python -m tox r -e check-min-python-is-tested
63 changes: 63 additions & 0 deletions scripts/ensure_min_python_is_tested.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
# this script should only be called via
# tox run -e check-min-python-is-tested
#
# no other usages are supported
import pathlib
import subprocess
import sys

import ruamel.yaml

YAML = ruamel.yaml.YAML(typ="safe")
REPO_ROOT = pathlib.Path(__file__).parent.parent

proc = subprocess.run(
["python", "-m", "mddj", "read", "requires-python", "--lower-bound"],
check=True,
capture_output=True,
cwd=REPO_ROOT,
)
requires_python_version = proc.stdout.decode().strip()

with open(REPO_ROOT / ".github" / "workflows" / "build.yaml") as f:
workflow = YAML.load(f)
try:
test_mindeps_job = workflow["jobs"]["test-mindeps"]
except KeyError:
raise ValueError("Could not find the test-mindeps job. Perhaps it has moved?")

job_steps = test_mindeps_job["steps"]
for step in job_steps:
if "uses" in step and "actions/setup-python" in step["uses"]:
setup_python_step = step
break
else:
raise ValueError("Could not find the setup-python step.")

python_version = setup_python_step["with"]["python-version"]
if python_version != requires_python_version:
print("ERROR: ensure_min_python_is_tested.py failed!")
print(
f"\nPackage data sets 'Requires-Python: >={requires_python_version}', "
f"but the test-mindeps job is configured to test '{python_version}'.\n",
file=sys.stderr,
)
sys.exit(1)


proc = subprocess.run(
["python", "-m", "mddj", "read", "tox", "min-version"],
check=True,
capture_output=True,
cwd=REPO_ROOT,
)
tox_min_python_version = proc.stdout.decode().strip()
if tox_min_python_version != requires_python_version:
print("ERROR: ensure_min_python_is_tested.py failed!")
print(
f"\nPackage data sets 'Requires-Python: >={requires_python_version}', "
"but tox is configured to test with a minimum of "
f"'{tox_min_python_version}'.\n",
file=sys.stderr,
)
sys.exit(1)
8 changes: 8 additions & 0 deletions tox.ini
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,14 @@ commands =
py311: pip-compile --strip-extras -q -U --resolver=backtracking docs.in -o py{py_dot_ver}/docs.txt
py311: pip-compile --strip-extras -q -U --resolver=backtracking typing.in -o py{py_dot_ver}/typing.txt

[testenv:check-min-python-is-tested]
description = Check the Requires-Python metadata against CI config
skip_install = true
deps =
ruamel.yaml<0.18
mddj==0.0.6
commands = python scripts/ensure_min_python_is_tested.py

[testenv:prepare-release]
skip_install = true
deps = scriv
Expand Down

0 comments on commit 933d677

Please sign in to comment.