CI (.github/workflows/python-package.yml) runs on every push across the full 5-version Python matrix (3.10–3.14), even when a change touches no code.
PR #102 was docs-only (README.md, +19/-0) yet triggered the entire job (lint + offline pytest suite) on all matrix versions — wasted CI minutes for a change that can't affect any check.
Proposal
Add path filters so the workflow skips docs-only / irrelevant changes. Options:
on.push.paths-ignore for **.md, docs/**, LICENSE, etc., or
paths allowlist for the code/test/requirements paths that actually matter.
Watch out for branch-protection required checks: a skipped workflow leaves required checks pending. If checks are required, use a path filter + a no-op "success" fallback job (or required-check-aware skip) so docs-only PRs can still merge.
Done when
A docs-only change (e.g. editing only README.md) no longer triggers python-package.yml, and code/test changes still run the full matrix; docs-only PRs remain mergeable under branch protection.
CI (
.github/workflows/python-package.yml) runs on every push across the full 5-version Python matrix (3.10–3.14), even when a change touches no code.PR #102 was docs-only (
README.md, +19/-0) yet triggered the entire job (lint + offline pytest suite) on all matrix versions — wasted CI minutes for a change that can't affect any check.Proposal
Add path filters so the workflow skips docs-only / irrelevant changes. Options:
on.push.paths-ignorefor**.md,docs/**,LICENSE, etc., orpathsallowlist for the code/test/requirements paths that actually matter.Watch out for branch-protection required checks: a skipped workflow leaves required checks pending. If checks are required, use a path filter + a no-op "success" fallback job (or required-check-aware skip) so docs-only PRs can still merge.
Done when
A docs-only change (e.g. editing only
README.md) no longer triggerspython-package.yml, and code/test changes still run the full matrix; docs-only PRs remain mergeable under branch protection.