Contributing¶
Thanks for considering a contribution! This project follows a Code of Conduct — by participating you agree to uphold it.
Development setup¶
git clone https://github.com/isaac-cf-wong/dependency-support-policy-action
cd dependency-support-policy-action
uv sync --all-groups
uv run prek install
Canonical checks¶
All of these must pass before a change is merged (CI runs the same):
uv run prek run --all-files
uv run pytest
uv run mypy src
uv build
Unit tests mock the package registry; the GitHub Actions integration tests in
.github/workflows/ci.yml run the local action against the fixture projects
in tests/data/action/ (these hit the real PyPI JSON API with a fixed
reference-date, so results are reproducible).
Commit and PR conventions¶
- Commit messages and PR titles follow
Conventional Commits (
feat:,fix:,docs:,chore:...). PR titles are linted. - The changelog is generated from commits by git-cliff — write messages you would want to read in release notes.
Release process¶
- Every push to
mainrefreshes the draft release (next-release). - A scheduled release runs every Tuesday: if there are new commits since
the last tag, CI and CodeQL are re-run, a semver tag is derived from the
conventional commits, the GitHub release is published, and the floating
major tag (e.g.
v1) is moved. - The static
versioninpyproject.tomlis cosmetic; release versions come from git tags.
Adding a support policy¶
- Subclass
SupportPolicyinsrc/dependency_support_policy/policies.pyand register it in_POLICIES. - Add tests for its windows and floor behaviour.
- Document it in the README.